]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/query/DiagramRequests.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / query / DiagramRequests.java
index 919d63e794698387317a3e6ae6b161f62d97308e..a25fbc39f56ec53fb6604f44a0b43b15b7ed507b 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.diagram.query;\r
-\r
-import java.util.Set;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.Statement;\r
-import org.simantics.db.common.ResourceArray;\r
-import org.simantics.db.common.request.ResourceRead;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.procedure.Listener;\r
-import org.simantics.db.request.AsyncRead;\r
-import org.simantics.db.request.Read;\r
-import org.simantics.diagram.adapter.IDiagramLoader;\r
-import org.simantics.diagram.adapter.NodeRequest;\r
-import org.simantics.diagram.connection.ConnectionVisuals;\r
-import org.simantics.diagram.content.TerminalMap;\r
-import org.simantics.diagram.flag.FlagUtil;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;\r
-import org.simantics.g2d.canvas.ICanvasContext;\r
-import org.simantics.g2d.diagram.IDiagram;\r
-import org.simantics.g2d.element.ElementClass;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.page.DiagramDesc;\r
-import org.simantics.structural.stubs.StructuralResource2;\r
-import org.simantics.structural2.modelingRules.CPConnection;\r
-import org.simantics.structural2.modelingRules.CPTerminal;\r
-import org.simantics.structural2.modelingRules.IConnectionPoint;\r
-import org.simantics.structural2.modelingRules.IModelingRules;\r
-import org.simantics.utils.datastructures.hints.IHintObservable;\r
-import org.simantics.utils.page.PageDesc;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class DiagramRequests {\r
-\r
-    /**\r
-     * @param diagram\r
-     * @return\r
-     */\r
-    public static Read<PageDesc> getPageDesc(final Resource diagram, final PageDesc defaultValue) {\r
-        return new Read<PageDesc>() {\r
-            @Override\r
-            public PageDesc perform(ReadGraph graph) throws DatabaseException {\r
-                return DiagramGraphUtil.getPageDesc(graph, diagram, defaultValue);\r
-            }\r
-        };\r
-    }\r
-\r
-    public static Read<DiagramDesc> getDiagramDesc(final Resource diagram) {\r
-        return new DiagramDescRead(diagram);\r
-    }\r
-\r
-    /**\r
-     * Adapt a diagram Element type resource into an {@link ElementClass}.\r
-     * \r
-     * @param elementType\r
-     * @param hints\r
-     * @return\r
-     */\r
-    public static AsyncRead<ElementClass> getElementClass(Resource elementType, IHintObservable hints) {\r
-        return new ElementClassQuery(elementType, hints);\r
-    }\r
-\r
-    /**\r
-     * @param canvas\r
-     * @param diagram\r
-     * @param element\r
-     * @param loadListener\r
-     * @return\r
-     */\r
-    public static AsyncRead<IElement> getElement(ICanvasContext canvas, IDiagram diagram, Resource element, Listener<IElement> loadListener) {\r
-        return new NodeRequest(canvas, diagram, element, loadListener);\r
-    }\r
-\r
-    /**\r
-     * @param monitor\r
-     * @param resource\r
-     * @param structuralPath\r
-     * @param loader\r
-     * @param initialHints\r
-     * @return\r
-     */\r
-    public static Read<IDiagram> loadDiagram(IProgressMonitor monitor, Resource model, Resource resource, Resource runtime, ResourceArray structuralPath,\r
-            IDiagramLoader loader, IHintObservable initialHints) {\r
-        return new DiagramLoadQuery(monitor, model, resource, runtime, structuralPath, loader, initialHints);\r
-    }\r
-\r
-    /**\r
-     * @param diagram\r
-     * @return\r
-     */\r
-    public static Read<IModelingRules> getModelingRules(final Resource diagram, final IModelingRules defaultValue) {\r
-        return new Read<IModelingRules>() {\r
-            @Override\r
-            public IModelingRules perform(ReadGraph graph) throws DatabaseException {\r
-                StructuralResource2 sr = StructuralResource2.getInstance(graph);\r
-                Resource rules = graph.getPossibleObject(diagram, sr.HasModelingRules);\r
-                if (rules == null)\r
-                    return defaultValue;\r
-                return graph.adapt(rules, IModelingRules.class);\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param connectionType\r
-     * @return\r
-     */\r
-    public static Read<ConnectionVisuals> getConnectionVisuals(Resource connectionType) {\r
-        return new ConnectionVisualsRequest(connectionType);\r
-    }\r
-\r
-    /**\r
-     * @param flag\r
-     * @return\r
-     */\r
-    public static Read<String[]> getFlagText(Resource flag) {\r
-        return new FlagTextQuery(flag);\r
-    }\r
-\r
-    public static Read<Resource> getFlagPair(Resource flag) {\r
-        return new FlagPairQuery(flag);\r
-    }\r
-\r
-    /**\r
-     * @param element\r
-     * @return\r
-     */\r
-    public static Read<TerminalMap> elementTypeTerminals(Resource elementType) {\r
-        return new ResourceRead<TerminalMap>(elementType) {\r
-            @Override\r
-            public TerminalMap perform(ReadGraph graph) throws DatabaseException {\r
-                return DiagramGraphUtil.getElementTypeTerminals(graph, resource);\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param element\r
-     * @return\r
-     */\r
-    public static Read<TerminalMap> elementTerminals(Resource element) {\r
-        return new ResourceRead<TerminalMap>(element) {\r
-            @Override\r
-            public TerminalMap perform(ReadGraph graph) throws DatabaseException {\r
-                return DiagramGraphUtil.getElementTerminals(graph, resource);\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * Browses all diagram connections that are related to {@code connection} by flags.\r
-     * Adds the connections to set {@code conns} and all related connection points to set {@code cps}.\r
-     */\r
-       public static void expandConnections(ReadGraph graph, Resource connection, Set<Resource> conns, Set<IConnectionPoint> cps) throws DatabaseException {\r
-\r
-               if(!conns.add(connection)) return;\r
-\r
-               DiagramResource DIA = DiagramResource.getInstance(graph);\r
-               StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
-\r
-               cps.add(new CPConnection(connection));\r
-               for(Resource connector : graph.getObjects(connection, DIA.HasConnector)) {\r
-                       for(Statement stm : graph.getStatements(connector, STR.Connects)) {\r
-                               Resource element = stm.getObject();\r
-                               if(element.equals(connection)) continue;\r
-                               if(graph.isInstanceOf(element, DIA.Flag)) {\r
-                                       FlagUtil.forCounterparts(graph, element, (otherFlag) -> {\r
-                                               Resource flagConnector = graph.getPossibleObject(otherFlag, DIA.Flag_ConnectionPoint);\r
-                                               if(flagConnector != null) {\r
-                                                       Resource otherConnection = graph.getPossibleObject(flagConnector, DIA.IsConnectorOf);\r
-                                                       if(otherConnection != null) {\r
-                                                               expandConnections(graph, otherConnection, conns, cps);\r
-                                                       }\r
-                                               }\r
-                                       });\r
-                               } else {\r
-                                       Resource connectionPoint = graph.getInverse(stm.getPredicate());\r
-                                       //System.err.println("term: " + NameUtils.getSafeName(graph, element) + " : " + NameUtils.getSafeName(graph, connectionPoint));\r
-                                       cps.add(new CPTerminal(element, connectionPoint));\r
-                               }\r
-                       }\r
-               }\r
-\r
-       }\r
-    \r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.diagram.query;
+
+import java.util.Set;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Statement;
+import org.simantics.db.common.ResourceArray;
+import org.simantics.db.common.request.ResourceRead;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.procedure.Listener;
+import org.simantics.db.request.AsyncRead;
+import org.simantics.db.request.Read;
+import org.simantics.diagram.adapter.IDiagramLoader;
+import org.simantics.diagram.adapter.NodeRequest;
+import org.simantics.diagram.connection.ConnectionVisuals;
+import org.simantics.diagram.content.TerminalMap;
+import org.simantics.diagram.flag.FlagUtil;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;
+import org.simantics.g2d.canvas.ICanvasContext;
+import org.simantics.g2d.diagram.IDiagram;
+import org.simantics.g2d.element.ElementClass;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.page.DiagramDesc;
+import org.simantics.structural.stubs.StructuralResource2;
+import org.simantics.structural2.modelingRules.CPConnection;
+import org.simantics.structural2.modelingRules.CPTerminal;
+import org.simantics.structural2.modelingRules.IConnectionPoint;
+import org.simantics.structural2.modelingRules.IModelingRules;
+import org.simantics.utils.datastructures.hints.IHintObservable;
+import org.simantics.utils.page.PageDesc;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class DiagramRequests {
+
+    /**
+     * @param diagram
+     * @return
+     */
+    public static Read<PageDesc> getPageDesc(final Resource diagram, final PageDesc defaultValue) {
+        return new Read<PageDesc>() {
+            @Override
+            public PageDesc perform(ReadGraph graph) throws DatabaseException {
+                return DiagramGraphUtil.getPageDesc(graph, diagram, defaultValue);
+            }
+        };
+    }
+
+    public static Read<DiagramDesc> getDiagramDesc(final Resource diagram) {
+        return new DiagramDescRead(diagram);
+    }
+
+    /**
+     * Adapt a diagram Element type resource into an {@link ElementClass}.
+     * 
+     * @param elementType
+     * @param hints
+     * @return
+     */
+    public static AsyncRead<ElementClass> getElementClass(Resource elementType, IHintObservable hints) {
+        return new ElementClassQuery(elementType, hints);
+    }
+
+    /**
+     * @param canvas
+     * @param diagram
+     * @param element
+     * @param loadListener
+     * @return
+     */
+    public static AsyncRead<IElement> getElement(ICanvasContext canvas, IDiagram diagram, Resource element, Listener<IElement> loadListener) {
+        return new NodeRequest(canvas, diagram, element, loadListener);
+    }
+
+    /**
+     * @param monitor
+     * @param resource
+     * @param structuralPath
+     * @param loader
+     * @param initialHints
+     * @return
+     */
+    public static Read<IDiagram> loadDiagram(IProgressMonitor monitor, Resource model, Resource resource, Resource runtime, ResourceArray structuralPath,
+            IDiagramLoader loader, IHintObservable initialHints) {
+        return new DiagramLoadQuery(monitor, model, resource, runtime, structuralPath, loader, initialHints);
+    }
+
+    /**
+     * @param diagram
+     * @return
+     */
+    public static Read<IModelingRules> getModelingRules(final Resource diagram, final IModelingRules defaultValue) {
+        return new Read<IModelingRules>() {
+            @Override
+            public IModelingRules perform(ReadGraph graph) throws DatabaseException {
+                StructuralResource2 sr = StructuralResource2.getInstance(graph);
+                Resource rules = graph.getPossibleObject(diagram, sr.HasModelingRules);
+                if (rules == null)
+                    return defaultValue;
+                return graph.adapt(rules, IModelingRules.class);
+            }
+        };
+    }
+
+    /**
+     * @param connectionType
+     * @return
+     */
+    public static Read<ConnectionVisuals> getConnectionVisuals(Resource connectionType) {
+        return new ConnectionVisualsRequest(connectionType);
+    }
+
+    /**
+     * @param flag
+     * @return
+     */
+    public static Read<String[]> getFlagText(Resource flag) {
+        return new FlagTextQuery(flag);
+    }
+
+    public static Read<Resource> getFlagPair(Resource flag) {
+        return new FlagPairQuery(flag);
+    }
+
+    /**
+     * @param element
+     * @return
+     */
+    public static Read<TerminalMap> elementTypeTerminals(Resource elementType) {
+        return new ResourceRead<TerminalMap>(elementType) {
+            @Override
+            public TerminalMap perform(ReadGraph graph) throws DatabaseException {
+                return DiagramGraphUtil.getElementTypeTerminals(graph, resource);
+            }
+        };
+    }
+
+    /**
+     * @param element
+     * @return
+     */
+    public static Read<TerminalMap> elementTerminals(Resource element) {
+        return new ResourceRead<TerminalMap>(element) {
+            @Override
+            public TerminalMap perform(ReadGraph graph) throws DatabaseException {
+                return DiagramGraphUtil.getElementTerminals(graph, resource);
+            }
+        };
+    }
+
+    /**
+     * Browses all diagram connections that are related to {@code connection} by flags.
+     * Adds the connections to set {@code conns} and all related connection points to set {@code cps}.
+     */
+       public static void expandConnections(ReadGraph graph, Resource connection, Set<Resource> conns, Set<IConnectionPoint> cps) throws DatabaseException {
+
+               if(!conns.add(connection)) return;
+
+               DiagramResource DIA = DiagramResource.getInstance(graph);
+               StructuralResource2 STR = StructuralResource2.getInstance(graph);
+
+               cps.add(new CPConnection(connection));
+               for(Resource connector : graph.getObjects(connection, DIA.HasConnector)) {
+                       for(Statement stm : graph.getStatements(connector, STR.Connects)) {
+                               Resource element = stm.getObject();
+                               if(element.equals(connection)) continue;
+                               if(graph.isInstanceOf(element, DIA.Flag)) {
+                                       FlagUtil.forCounterparts(graph, element, (otherFlag) -> {
+                                               Resource flagConnector = graph.getPossibleObject(otherFlag, DIA.Flag_ConnectionPoint);
+                                               if(flagConnector != null) {
+                                                       Resource otherConnection = graph.getPossibleObject(flagConnector, DIA.IsConnectorOf);
+                                                       if(otherConnection != null) {
+                                                               expandConnections(graph, otherConnection, conns, cps);
+                                                       }
+                                               }
+                                       });
+                               } else {
+                                       Resource connectionPoint = graph.getInverse(stm.getPredicate());
+                                       //System.err.println("term: " + NameUtils.getSafeName(graph, element) + " : " + NameUtils.getSafeName(graph, connectionPoint));
+                                       cps.add(new CPTerminal(element, connectionPoint));
+                               }
+                       }
+               }
+
+       }
+    
+}