]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.ui/src/org/simantics/ui/contribution/OpenWithMenuContribution.java
Modified OpenWith for further customization.
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / contribution / OpenWithMenuContribution.java
index f09dd23ce286ec0a4ae1eb6d97f8aefb9b843099..c8a88f27dff64315f7d67ae52a6f34daba3fbf91 100644 (file)
@@ -49,7 +49,7 @@ public class OpenWithMenuContribution extends DynamicMenuContribution implements
 
     private static final boolean DEBUG_ADAPTERS = false;
 
-    private ResourceManager resourceManager;
+    protected ResourceManager resourceManager;
 
     private String editorId = null;
     public OpenWithMenuContribution() {
@@ -73,6 +73,10 @@ public class OpenWithMenuContribution extends DynamicMenuContribution implements
        }
     }
     
+    public String getEditorId() {
+               return editorId;
+       }
+    
     public void setEditorId(String editorId) {
                this.editorId = editorId;
        }
@@ -123,18 +127,7 @@ public class OpenWithMenuContribution extends DynamicMenuContribution implements
 
                         if (editorAdapters.length > 0) {
                             // Sort the open with actions in descending priority order.
-                            Adapter[] adapters = new Adapter[editorAdapters.length];
-                            for (int i = 0; i < editorAdapters.length; i++)
-                                adapters[i] = new Adapter(editorAdapters[i], r, true);
-                            Arrays.sort(adapters, new Comparator<Adapter>() {
-                                @Override
-                                public int compare(Adapter o1, Adapter o2) {
-                                    int delta = o2.getPriority() - o1.getPriority();
-                                    if (delta != 0)
-                                        return delta;
-                                    return AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getText(), o2.getText());
-                                }
-                            });
+                               Adapter[] adapters = toAdapters(editorAdapters, r);
 
                             for (Adapter a : adapters)
                                 addMenuItem(subMenu, a, r);
@@ -144,6 +137,22 @@ public class OpenWithMenuContribution extends DynamicMenuContribution implements
         };
     }
     
+    protected Adapter[] toAdapters(EditorAdapter[] editorAdapters, Object r) {
+        Adapter[] adapters = new Adapter[editorAdapters.length];
+         for (int i = 0; i < editorAdapters.length; i++)
+             adapters[i] = new Adapter(editorAdapters[i], r, true);
+         Arrays.sort(adapters, new Comparator<Adapter>() {
+             @Override
+             public int compare(Adapter o1, Adapter o2) {
+                 int delta = o2.getPriority() - o1.getPriority();
+                 if (delta != 0)
+                     return delta;
+                 return AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getText(), o2.getText());
+             }
+         });
+         return adapters;
+    }
+    
     protected EditorAdapter[] filter(EditorAdapter[] adapters, String id) {
        if (id == null)
                return adapters;
@@ -170,7 +179,7 @@ public class OpenWithMenuContribution extends DynamicMenuContribution implements
         item.addSelectionListener(adapter);
     }
 
-    static class Adapter extends ResourceEditorAdapterAction implements SelectionListener {
+    protected static class Adapter extends ResourceEditorAdapterAction implements SelectionListener {
         boolean remember;
 
         public Adapter(EditorAdapter adapter, Object r, boolean remember) {