]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/NewConnectionPoint.java
Externalize strings
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / NewConnectionPoint.java
index 6865775d4ac395e58aef359bde1c779da3239069..2d6074ec8bd7583d9dbd848a2a977b5d071a1eca 100644 (file)
-package org.simantics.modeling.ui.actions;\r
-\r
-import java.util.Collection;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.dialogs.IDialogSettings;\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.window.Window;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.ui.PlatformUI;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.common.request.PossibleIndexRoot;\r
-import org.simantics.db.common.request.UniqueRead;\r
-import org.simantics.db.common.request.WriteRequest;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.adapter.ActionFactory;\r
-import org.simantics.db.layer0.adapter.Instances;\r
-import org.simantics.db.layer0.util.Layer0Utils;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.modeling.ModelingResources;\r
-import org.simantics.modeling.ui.Activator;\r
-import org.simantics.modeling.userComponent.ComponentTypeCommands;\r
-import org.simantics.structural.stubs.StructuralResource2;\r
-import org.simantics.ui.workbench.dialogs.ResourceSelectionDialog3;\r
-import org.simantics.utils.datastructures.Pair;\r
-import org.simantics.utils.ui.ErrorLogger;\r
-\r
-public class NewConnectionPoint implements ActionFactory {\r
-\r
-    @Override\r
-    public Runnable create(Object target) {\r
-        if (!(target instanceof Resource))\r
-            return null;\r
-        final Resource componentType = (Resource)target;\r
-        return new Runnable() {\r
-            @Override\r
-            public void run() {\r
-                try {\r
-                    \r
-                    Map<Resource, Pair<String, ImageDescriptor>> map = Simantics.sync(new UniqueRead<Map<Resource,Pair<String,ImageDescriptor>>>() {\r
-\r
-                        @Override\r
-                        public Map<Resource, Pair<String, ImageDescriptor>> perform(ReadGraph graph) throws DatabaseException {\r
-                            \r
-                            HashMap<Resource, Pair<String,ImageDescriptor>> map = new HashMap<Resource, Pair<String,ImageDescriptor>>(); \r
-                            \r
-                            Layer0 L0 = Layer0.getInstance(graph);\r
-                            \r
-                            StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
-                            ModelingResources MOD = ModelingResources.getInstance(graph);\r
-                            \r
-                            Instances query = graph.adapt(STR.ConnectionRelation, Instances.class);\r
-                            \r
-                            Resource model = graph.sync(new PossibleIndexRoot(componentType));\r
-                            \r
-//                            List<String> domainNames = new ArrayList<String>();\r
-                            \r
-                            for(Resource _res : query.find(graph, model)) {\r
-\r
-                                boolean isDiagramRelation = graph.hasStatement(_res, MOD.DiagramConnectionRelationToConnectionRelation);\r
-                                if (isDiagramRelation)\r
-                                    continue;\r
-\r
-                                Collection<Resource> domains = graph.getObjects(_res, L0.HasDomain);\r
-                                \r
-                                String name = null;\r
-                                if(domains.size() == 0) {\r
-                                    continue;\r
-                                } else if (domains.size() > 1) {\r
-                                    StringBuilder sb = new StringBuilder();\r
-                                    sb.append(NameUtils.getSafeName(graph, _res));\r
-//                                    domainNames.clear();\r
-//                                    for (Resource domain : domains)\r
-//                                        domainNames.add(NameUtils.getSafeName(graph, domain));\r
-//                                    Collections.sort(domainNames, AlphanumComparator.CASE_INSENSITIVE_COMPARATOR);\r
-//                                    String prefix = findLongestCommonPrefix(domainNames);\r
-//                                    sb.append(" - ").append(prefix).append("{");\r
-//                                    boolean first = true;\r
-//                                    for (String s : domainNames) {\r
-//                                        if (!first)\r
-//                                            sb.append(",");\r
-//                                        first = false;\r
-//                                        sb.append(s.substring(prefix.length()));\r
-//                                    }\r
-//                                    sb.append("}");\r
-                                    name = sb.toString();\r
-                                } else {\r
-                                    // domains.size() == 1\r
-                                    name = NameUtils.getSafeName(graph, _res) + " (" + graph.getURI(domains.iterator().next()) + ")";\r
-                                }\r
-                                map.put(_res, new Pair<String, ImageDescriptor>(name, null));\r
-                                \r
-                            }\r
-                            \r
-                            return map;\r
-                            \r
-                        }\r
-\r
-                    });\r
-                    \r
-                    final Resource[] cps = queryCps(map);\r
-                    if(cps.length == 0) return;\r
-                    \r
-                    Simantics.getSession().async(new WriteRequest() {\r
-                        @Override\r
-                        public void perform(WriteGraph graph) throws DatabaseException {\r
-                            graph.markUndoPoint();\r
-                            for (Resource cp : cps)\r
-                                ComponentTypeCommands.createConnectionPoint(graph, componentType, cp);\r
-                            Layer0Utils.addCommentMetadata(graph, createConnectionPointComment(graph, componentType, cps));\r
-                        }\r
-                        String createConnectionPointComment(ReadGraph graph, Resource target, Resource[] cps) throws DatabaseException {\r
-                            StringBuilder result = new StringBuilder();\r
-                            result.append("Created connection point");\r
-                            if (cps.length > 1)\r
-                                result.append('s');\r
-                            result.append(" for ")\r
-                            .append(NameUtils.getSafeName(graph, componentType))\r
-                            .append(":\n");\r
-                            for (int i = 0; i < cps.length; ++i) {\r
-                                result.append('\t');\r
-                                result.append(NameUtils.getSafeName(graph, cps[i]));\r
-                                result.append('\n');\r
-                            }\r
-                            return result.toString();\r
-                        }\r
-                    });\r
-                    \r
-                } catch (DatabaseException e1) {\r
-                    ErrorLogger.defaultLogError(e1);\r
-                }\r
-            }\r
-        };\r
-    }\r
-\r
-//    private static String findLongestCommonPrefix(List<String> strs) {\r
-//        int count = strs.size();\r
-//        if (count == 0)\r
-//            return "";\r
-//        if (count == 1)\r
-//            return strs.get(0);\r
-//        int maxLen = Integer.MAX_VALUE;\r
-//        for (int n = 0; n < count; ++n)\r
-//            maxLen = Math.min(maxLen, strs.get(n).length());\r
-//        int i = 0;\r
-//        chars:\r
-//            for (; i < maxLen; ++i) {\r
-//                char ch = strs.get(0).charAt(i);\r
-//                for (int n = 1; n < count; ++n) {\r
-//                    if (strs.get(n).charAt(i) != ch)\r
-//                        break chars;\r
-//                }\r
-//            }\r
-//        return strs.get(0).substring(0, Math.max(0, i));\r
-//    }\r
-\r
-    private Resource[] queryCps(Map<Resource, Pair<String, ImageDescriptor>> map) {\r
-\r
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();\r
-        ResourceSelectionDialog3<Resource> dialog = new ResourceSelectionDialog3<Resource>(shell, map, "Select connection point type") {\r
-            @Override\r
-            protected IDialogSettings getBaseDialogSettings() {\r
-                return Activator.getDefault().getDialogSettings();\r
-            }\r
-        };\r
-        if (dialog.open() == Window.OK) {\r
-            Object[] result = dialog.getResult();\r
-            if (result != null && result.length > 0) {\r
-                final Resource[] res = new Resource[result.length];\r
-                System.arraycopy(result, 0, res, 0, result.length);\r
-                return res;\r
-            }\r
-        }\r
-        return Resource.NONE;\r
-        \r
-    }\r
-}\r
+package org.simantics.modeling.ui.actions;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.request.PossibleIndexRoot;
+import org.simantics.db.common.request.UniqueRead;
+import org.simantics.db.common.request.WriteRequest;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.ActionFactory;
+import org.simantics.db.layer0.adapter.Instances;
+import org.simantics.db.layer0.util.Layer0Utils;
+import org.simantics.layer0.Layer0;
+import org.simantics.modeling.ModelingResources;
+import org.simantics.modeling.ui.Activator;
+import org.simantics.modeling.userComponent.ComponentTypeCommands;
+import org.simantics.structural.stubs.StructuralResource2;
+import org.simantics.ui.workbench.dialogs.ResourceSelectionDialog3;
+import org.simantics.utils.datastructures.Pair;
+import org.simantics.utils.ui.ErrorLogger;
+
+public class NewConnectionPoint implements ActionFactory {
+
+    @Override
+    public Runnable create(Object target) {
+        if (!(target instanceof Resource))
+            return null;
+        final Resource componentType = (Resource)target;
+        return new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    
+                    Map<Resource, Pair<String, ImageDescriptor>> map = Simantics.sync(new UniqueRead<Map<Resource,Pair<String,ImageDescriptor>>>() {
+
+                        @Override
+                        public Map<Resource, Pair<String, ImageDescriptor>> perform(ReadGraph graph) throws DatabaseException {
+                            
+                            HashMap<Resource, Pair<String,ImageDescriptor>> map = new HashMap<Resource, Pair<String,ImageDescriptor>>(); 
+                            
+                            Layer0 L0 = Layer0.getInstance(graph);
+                            
+                            StructuralResource2 STR = StructuralResource2.getInstance(graph);
+                            ModelingResources MOD = ModelingResources.getInstance(graph);
+                            
+                            Instances query = graph.adapt(STR.ConnectionRelation, Instances.class);
+                            
+                            Resource model = graph.sync(new PossibleIndexRoot(componentType));
+                            
+//                            List<String> domainNames = new ArrayList<String>();
+                            
+                            for(Resource _res : query.find(graph, model)) {
+
+                                boolean isDiagramRelation = graph.hasStatement(_res, MOD.DiagramConnectionRelationToConnectionRelation);
+                                if (isDiagramRelation)
+                                    continue;
+
+                                Collection<Resource> domains = graph.getObjects(_res, L0.HasDomain);
+                                
+                                String name = null;
+                                if(domains.size() == 0) {
+                                    continue;
+                                } else if (domains.size() > 1) {
+                                    StringBuilder sb = new StringBuilder();
+                                    sb.append(NameUtils.getSafeName(graph, _res));
+//                                    domainNames.clear();
+//                                    for (Resource domain : domains)
+//                                        domainNames.add(NameUtils.getSafeName(graph, domain));
+//                                    Collections.sort(domainNames, AlphanumComparator.CASE_INSENSITIVE_COMPARATOR);
+//                                    String prefix = findLongestCommonPrefix(domainNames);
+//                                    sb.append(" - ").append(prefix).append("{");
+//                                    boolean first = true;
+//                                    for (String s : domainNames) {
+//                                        if (!first)
+//                                            sb.append(",");
+//                                        first = false;
+//                                        sb.append(s.substring(prefix.length()));
+//                                    }
+//                                    sb.append("}");
+                                    name = sb.toString();
+                                } else {
+                                    // domains.size() == 1
+                                    name = NameUtils.getSafeName(graph, _res) + " (" + graph.getURI(domains.iterator().next()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+                                }
+                                map.put(_res, new Pair<String, ImageDescriptor>(name, null));
+                                
+                            }
+                            
+                            return map;
+                            
+                        }
+
+                    });
+                    
+                    final Resource[] cps = queryCps(map);
+                    if(cps.length == 0) return;
+                    
+                    Simantics.getSession().async(new WriteRequest() {
+                        @Override
+                        public void perform(WriteGraph graph) throws DatabaseException {
+                            graph.markUndoPoint();
+                            for (Resource cp : cps)
+                                ComponentTypeCommands.createConnectionPoint(graph, componentType, cp);
+                            Layer0Utils.addCommentMetadata(graph, createConnectionPointComment(graph, componentType, cps));
+                        }
+                        String createConnectionPointComment(ReadGraph graph, Resource target, Resource[] cps) throws DatabaseException {
+                            StringBuilder result = new StringBuilder();
+                            result.append("Created connection point"); //$NON-NLS-1$
+                            if (cps.length > 1)
+                                result.append('s');
+                            result.append(" for ") //$NON-NLS-1$
+                            .append(NameUtils.getSafeName(graph, componentType))
+                            .append(":\n"); //$NON-NLS-1$
+                            for (int i = 0; i < cps.length; ++i) {
+                                result.append('\t');
+                                result.append(NameUtils.getSafeName(graph, cps[i]));
+                                result.append('\n');
+                            }
+                            return result.toString();
+                        }
+                    });
+                    
+                } catch (DatabaseException e1) {
+                    ErrorLogger.defaultLogError(e1);
+                }
+            }
+        };
+    }
+
+//    private static String findLongestCommonPrefix(List<String> strs) {
+//        int count = strs.size();
+//        if (count == 0)
+//            return "";
+//        if (count == 1)
+//            return strs.get(0);
+//        int maxLen = Integer.MAX_VALUE;
+//        for (int n = 0; n < count; ++n)
+//            maxLen = Math.min(maxLen, strs.get(n).length());
+//        int i = 0;
+//        chars:
+//            for (; i < maxLen; ++i) {
+//                char ch = strs.get(0).charAt(i);
+//                for (int n = 1; n < count; ++n) {
+//                    if (strs.get(n).charAt(i) != ch)
+//                        break chars;
+//                }
+//            }
+//        return strs.get(0).substring(0, Math.max(0, i));
+//    }
+
+    private Resource[] queryCps(Map<Resource, Pair<String, ImageDescriptor>> map) {
+
+        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+        ResourceSelectionDialog3<Resource> dialog = new ResourceSelectionDialog3<Resource>(shell, map, Messages.NewConnectionPoint_SelectConnectionPointType) {
+            @Override
+            protected IDialogSettings getBaseDialogSettings() {
+                return Activator.getDefault().getDialogSettings();
+            }
+        };
+        if (dialog.open() == Window.OK) {
+            Object[] result = dialog.getResult();
+            if (result != null && result.length > 0) {
+                final Resource[] res = new Resource[result.length];
+                System.arraycopy(result, 0, res, 0, result.length);
+                return res;
+            }
+        }
+        return Resource.NONE;
+        
+    }
+}