return;
}
+ Collections.sort(matchingTemplates, TemplateListPanel.TEMPLATE_COMPARATOR);
showTemplatesLookup(project, editor, prefix, matchingTemplates);
}
@NotNull String prefix, List<TemplateImpl> matchingTemplates) {
final LookupImpl lookup = (LookupImpl)LookupManager.getInstance(project).createLookup(editor, LookupElement.EMPTY_ARRAY, prefix, LookupArranger.DEFAULT);
+ lookup.setArranger(new LookupArranger() {
+ /*
+ @Override
+ public Comparator<LookupElement> getItemComparator() {
+ return new Comparator<LookupElement>() {
+ @Override
+ public int compare(LookupElement o1, LookupElement o2) {
+ return o1.getLookupString().compareToIgnoreCase(o2.getLookupString());
+ }
+ };
+ }
+ */
+
+ @Override
+ public Classifier<LookupElement> createRelevanceClassifier() {
+ return new ComparingClassifier<LookupElement>(ClassifierFactory.<LookupElement>listClassifier(), "preferPrefix") {
+ @NotNull
+ @Override
+ public Comparable getWeight(LookupElement element) {
+ return !element.getLookupString().startsWith(lookup.itemPattern(element));
+ }
+ };
+ }
+ });
for (TemplateImpl template : matchingTemplates) {
lookup.addItem(createTemplateElement(template), new PlainPrefixMatcher(prefix));
}
private static final String TEMPLATE_SETTINGS = "TemplateSettings";
private static final TemplateImpl MOCK_TEMPLATE = new TemplateImpl("mockTemplate-xxx", "mockTemplateGroup-yyy");
public static final String ABBREVIATION = "<abbreviation>";
+ public static final Comparator<TemplateImpl> TEMPLATE_COMPARATOR = new Comparator<TemplateImpl>() {
+ public int compare(final TemplateImpl o1, final TemplateImpl o2) {
+ return o1.getKey().compareToIgnoreCase(o2.getKey());
+ }
+ };
static {
MOCK_TEMPLATE.setString("");
TreePath[] paths = myTree.getSelectionPaths();
if (paths == null) return;
-
+
for (TreePath path : paths) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
Object o = node.getUserObject();
}
})
.install();
-
+
if (myTemplateGroups.size() > 0) {
myTree.setSelectionInterval(0, 0);
}
if (enabled) {
Set<String> oldGroups = getAllGroups(templates);
-
+
removeAll();
SchemesManager<TemplateGroup, TemplateGroup> schemesManager = TemplateSettings.getInstance().getSchemesManager();
-
+
for (TemplateGroup group : getTemplateGroups()) {
final String newGroupName = group.getName();
if (!oldGroups.contains(newGroupName) && !schemesManager.isShared(group)) {
private void addTemplateNodes(TemplateGroup group, CheckedTreeNode groupNode) {
List<TemplateImpl> templates = new ArrayList<TemplateImpl>(group.getElements());
- Collections.sort(templates, new Comparator<TemplateImpl>() {
- public int compare(final TemplateImpl o1, final TemplateImpl o2) {
- return o1.getKey().compareToIgnoreCase(o2.getKey());
- }
- });
+ Collections.sort(templates, TEMPLATE_COMPARATOR);
for (final TemplateImpl template : templates) {
myTemplateOptions.put(getKey(template), template.createOptions());
myTemplateContext.put(getKey(template), template.createContext());