]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.ui/src/org/simantics/document/ui/dialogs/AnnotationConfigurator.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.document.ui / src / org / simantics / document / ui / dialogs / AnnotationConfigurator.java
index deadf5a6ae76501cd38588e8df8d45f81c6238bc..2c63d61577dd9e10c6dfaa1f4a2c39ff888c937e 100644 (file)
-package org.simantics.document.ui.dialogs;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.StructuredSelection;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.ui.IWorkbenchPartSite;\r
-import org.simantics.Simantics;\r
-import org.simantics.annotation.ontology.AnnotationResource;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.Statement;\r
-import org.simantics.db.VirtualGraph;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.common.request.WriteRequest;\r
-import org.simantics.db.common.request.WriteResultRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.request.Read;\r
-import org.simantics.db.service.VirtualGraphSupport;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.selectionview.ComparableTabContributor;\r
-import org.simantics.selectionview.IPropertyTab;\r
-import org.simantics.selectionview.TabContribution;\r
-import org.simantics.utils.ui.ExceptionUtils;\r
-\r
-/**\r
- * Tool for configuring annotations for a resource before it is instantiated.\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class AnnotationConfigurator {\r
-\r
-       private Resource type;\r
-       private Resource lib;\r
-       boolean useVG = false;\r
-       Variable annotationHolderVariable;\r
-       \r
-       public AnnotationConfigurator(Resource type, Resource lib) {\r
-               this.type = type;\r
-               this.lib = lib;\r
-               \r
-       }\r
-       \r
-       public void createComposite(Composite parent) {\r
-               annotationHolderVariable = createAnnotationHolder2();\r
-               \r
-//             IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();\r
-//             IWorkbenchPartSite site = page.getActivePart().getSite();\r
-               IWorkbenchPartSite site = null;\r
-               \r
-               Collection<ComparableTabContributor> contribution = getAnnotationTab(annotationHolderVariable);\r
-               ISelection selection = new StructuredSelection(annotationHolderVariable);\r
-               for (ComparableTabContributor c : contribution) {\r
-                       \r
-                       IPropertyTab tab = c.create(parent, site, Simantics.getSessionContext(), selection);\r
-                       tab.setInput(Simantics.getSessionContext(), selection, false);\r
-               }\r
-       }\r
-       \r
-       \r
-//     private Resource createAnnotationHolder() {\r
-//             VirtualGraph vg = null;\r
-//             if (useVG) {\r
-//                     VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);\r
-//                     vg = support.getMemoryPersistent("document_annotation");\r
-//             }\r
-//             Resource annotationHolder = null;\r
-//             try {\r
-//                     annotationHolder = Simantics.getSession().syncRequest(new WriteResultRequest<Resource>(vg) {\r
-//                             public Resource perform(WriteGraph graph) throws DatabaseException {\r
-//                                     Layer0 l0 = Layer0.getInstance(graph);\r
-//                                     Resource annotationHolderDoc = graph.newResource();\r
-//                                     graph.claim(annotationHolderDoc, l0.InstanceOf, type);\r
-//                                     graph.claimLiteral(annotationHolderDoc, l0.HasName, "Template");\r
-//                                     graph.claim(lib, l0.ConsistsOf, annotationHolderDoc);\r
-//                                     return annotationHolderDoc;\r
-//                             }\r
-//                     });\r
-//     \r
-//             } catch (DatabaseException e1) {\r
-//                     ExceptionUtils.logAndShowError(e1);\r
-//             }\r
-//             return annotationHolder;\r
-//     }\r
-       \r
-       private Variable createAnnotationHolder2() {\r
-               VirtualGraph vg = null;\r
-               if (useVG) {\r
-                       VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);\r
-                       vg = support.getMemoryPersistent("document_annotation");\r
-               }\r
-               Variable annotationHolder = null;\r
-               try {\r
-                       annotationHolder = Simantics.getSession().syncRequest(new WriteResultRequest<Variable>(vg) {\r
-                               public Variable perform(WriteGraph graph) throws DatabaseException {\r
-                                       Layer0 l0 = Layer0.getInstance(graph);\r
-                                       Resource annotationHolderDoc = graph.newResource();\r
-                                       graph.claim(annotationHolderDoc, l0.InstanceOf, type);\r
-                                       graph.claimLiteral(annotationHolderDoc, l0.HasName, "Template");\r
-                                       graph.claim(lib, l0.ConsistsOf, annotationHolderDoc);\r
-                                       if (graph.isInstanceOf(lib, type)) {\r
-                                               copyAnnotations(graph, lib, annotationHolderDoc);\r
-                                       }\r
-                                       return graph.adapt(annotationHolderDoc, Variable.class);\r
-                               }\r
-                       });\r
-       \r
-               } catch (DatabaseException e1) {\r
-                       ExceptionUtils.logAndShowError(e1);\r
-               }\r
-               return annotationHolder;\r
-       }\r
-       \r
-//     private Variable createAnnotationHolder3() {\r
-//             Resource r = createAnnotationHolder();\r
-//             return new StandardGraphChildVariable(null, null, r);\r
-//     }\r
-       \r
-       private Collection<ComparableTabContributor> getAnnotationTab(final Object selection) {\r
-               try {\r
-                       return Simantics.getSession().syncRequest(new Read<Collection<ComparableTabContributor>>() {\r
-                               @SuppressWarnings({ "rawtypes", "unchecked" })\r
-                               @Override\r
-                               public Collection<ComparableTabContributor> perform(ReadGraph graph)\r
-                                               throws DatabaseException {\r
-                                       AnnotationResource ann = AnnotationResource.getInstance(graph);\r
-                                       TabContribution contribution = graph.adapt(ann.SelectionTabContribution, TabContribution.class);\r
-                                       Collection<ComparableTabContributor> coll = new ArrayList<ComparableTabContributor>();\r
-                                       contribution.contribute(graph, selection, coll);\r
-                                       return coll;\r
-                               }\r
-                       });\r
-               } catch (DatabaseException e) {\r
-                       ExceptionUtils.logAndShowError(e);\r
-                       return null;\r
-               }\r
-       }\r
-       \r
-       public void apply(final Resource to) throws DatabaseException{\r
-               Simantics.getSession().syncRequest(new WriteRequest() {\r
-                       \r
-                       @Override\r
-                       public void perform(WriteGraph graph) throws DatabaseException {\r
-                               apply(graph, to);\r
-                       }\r
-               });\r
-               \r
-       }\r
-       \r
-       public void apply(WriteGraph graph, Resource to) throws DatabaseException{\r
-               Resource from = annotationHolderVariable.getPossibleRepresents(graph);\r
-               copyAnnotations(graph, from, to);\r
-\r
-       }\r
-       \r
-       private void copyAnnotations(WriteGraph graph, Resource from, Resource to) throws DatabaseException{\r
-               Layer0 l0 = Layer0.getInstance(graph);\r
-               AnnotationResource ann = AnnotationResource.getInstance(graph);\r
-               \r
-               List<Statement> annotations = new ArrayList<Statement>();\r
-               for (Statement s : graph.getStatements(from, l0.HasProperty)) {\r
-                       if (graph.isInstanceOf(s.getObject(),ann.Annotation) ){\r
-                               annotations.add(s);\r
-                       }\r
-               }\r
-               \r
-               for (Statement annotation : annotations) {\r
-                       Resource annotationInstance = graph.newResource();\r
-                       graph.claim(to, annotation.getPredicate(), annotationInstance);\r
-                       for (Resource type : graph.getObjects(annotation.getObject(), l0.InstanceOf)) {\r
-                               graph.claim(annotationInstance, l0.InstanceOf, type);\r
-                       }\r
-                       for (Statement property : graph.getStatements(annotation.getObject(), l0.HasProperty)) {\r
-                               if (property.isAsserted(annotation.getObject()))\r
-                                       continue;\r
-                               graph.claimLiteral(annotationInstance, property.getPredicate(), graph.getValue(property.getObject()));\r
-                       }\r
-               }\r
-       }\r
-       \r
-       public void dispose() {\r
-               \r
-               if (useVG) {\r
-                       VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);\r
-                       VirtualGraph vg = support.getMemoryPersistent("document_annotation");\r
-                       support.discard(vg);\r
-               } else {\r
-                       \r
-                       Simantics.getSession().asyncRequest(new WriteRequest() {\r
-                               \r
-                               @Override\r
-                               public void perform(WriteGraph graph) throws DatabaseException {\r
-                                       Resource r = annotationHolderVariable.getPossibleRepresents(graph);\r
-                                       graph.deny(r);\r
-                                       \r
-                               }\r
-                       });\r
-                       \r
-               }\r
-               \r
-       }\r
-}\r
+package org.simantics.document.ui.dialogs;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.simantics.Simantics;
+import org.simantics.annotation.ontology.AnnotationResource;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Statement;
+import org.simantics.db.VirtualGraph;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.request.WriteRequest;
+import org.simantics.db.common.request.WriteResultRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.request.Read;
+import org.simantics.db.service.VirtualGraphSupport;
+import org.simantics.layer0.Layer0;
+import org.simantics.selectionview.ComparableTabContributor;
+import org.simantics.selectionview.IPropertyTab;
+import org.simantics.selectionview.TabContribution;
+import org.simantics.utils.ui.ExceptionUtils;
+
+/**
+ * Tool for configuring annotations for a resource before it is instantiated.
+ * 
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class AnnotationConfigurator {
+
+       private Resource type;
+       private Resource lib;
+       boolean useVG = false;
+       Variable annotationHolderVariable;
+       
+       public AnnotationConfigurator(Resource type, Resource lib) {
+               this.type = type;
+               this.lib = lib;
+               
+       }
+       
+       public void createComposite(Composite parent) {
+               annotationHolderVariable = createAnnotationHolder2();
+               
+//             IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+//             IWorkbenchPartSite site = page.getActivePart().getSite();
+               IWorkbenchPartSite site = null;
+               
+               Collection<ComparableTabContributor> contribution = getAnnotationTab(annotationHolderVariable);
+               ISelection selection = new StructuredSelection(annotationHolderVariable);
+               for (ComparableTabContributor c : contribution) {
+                       
+                       IPropertyTab tab = c.create(parent, site, Simantics.getSessionContext(), selection);
+                       tab.setInput(Simantics.getSessionContext(), selection, false);
+               }
+       }
+       
+       
+//     private Resource createAnnotationHolder() {
+//             VirtualGraph vg = null;
+//             if (useVG) {
+//                     VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);
+//                     vg = support.getMemoryPersistent("document_annotation");
+//             }
+//             Resource annotationHolder = null;
+//             try {
+//                     annotationHolder = Simantics.getSession().syncRequest(new WriteResultRequest<Resource>(vg) {
+//                             public Resource perform(WriteGraph graph) throws DatabaseException {
+//                                     Layer0 l0 = Layer0.getInstance(graph);
+//                                     Resource annotationHolderDoc = graph.newResource();
+//                                     graph.claim(annotationHolderDoc, l0.InstanceOf, type);
+//                                     graph.claimLiteral(annotationHolderDoc, l0.HasName, "Template");
+//                                     graph.claim(lib, l0.ConsistsOf, annotationHolderDoc);
+//                                     return annotationHolderDoc;
+//                             }
+//                     });
+//     
+//             } catch (DatabaseException e1) {
+//                     ExceptionUtils.logAndShowError(e1);
+//             }
+//             return annotationHolder;
+//     }
+       
+       private Variable createAnnotationHolder2() {
+               VirtualGraph vg = null;
+               if (useVG) {
+                       VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);
+                       vg = support.getMemoryPersistent("document_annotation");
+               }
+               Variable annotationHolder = null;
+               try {
+                       annotationHolder = Simantics.getSession().syncRequest(new WriteResultRequest<Variable>(vg) {
+                               public Variable perform(WriteGraph graph) throws DatabaseException {
+                                       Layer0 l0 = Layer0.getInstance(graph);
+                                       Resource annotationHolderDoc = graph.newResource();
+                                       graph.claim(annotationHolderDoc, l0.InstanceOf, type);
+                                       graph.claimLiteral(annotationHolderDoc, l0.HasName, "Template");
+                                       graph.claim(lib, l0.ConsistsOf, annotationHolderDoc);
+                                       if (graph.isInstanceOf(lib, type)) {
+                                               copyAnnotations(graph, lib, annotationHolderDoc);
+                                       }
+                                       return graph.adapt(annotationHolderDoc, Variable.class);
+                               }
+                       });
+       
+               } catch (DatabaseException e1) {
+                       ExceptionUtils.logAndShowError(e1);
+               }
+               return annotationHolder;
+       }
+       
+//     private Variable createAnnotationHolder3() {
+//             Resource r = createAnnotationHolder();
+//             return new StandardGraphChildVariable(null, null, r);
+//     }
+       
+       private Collection<ComparableTabContributor> getAnnotationTab(final Object selection) {
+               try {
+                       return Simantics.getSession().syncRequest(new Read<Collection<ComparableTabContributor>>() {
+                               @SuppressWarnings({ "rawtypes", "unchecked" })
+                               @Override
+                               public Collection<ComparableTabContributor> perform(ReadGraph graph)
+                                               throws DatabaseException {
+                                       AnnotationResource ann = AnnotationResource.getInstance(graph);
+                                       TabContribution contribution = graph.adapt(ann.SelectionTabContribution, TabContribution.class);
+                                       Collection<ComparableTabContributor> coll = new ArrayList<ComparableTabContributor>();
+                                       contribution.contribute(graph, selection, coll);
+                                       return coll;
+                               }
+                       });
+               } catch (DatabaseException e) {
+                       ExceptionUtils.logAndShowError(e);
+                       return null;
+               }
+       }
+       
+       public void apply(final Resource to) throws DatabaseException{
+               Simantics.getSession().syncRequest(new WriteRequest() {
+                       
+                       @Override
+                       public void perform(WriteGraph graph) throws DatabaseException {
+                               apply(graph, to);
+                       }
+               });
+               
+       }
+       
+       public void apply(WriteGraph graph, Resource to) throws DatabaseException{
+               Resource from = annotationHolderVariable.getPossibleRepresents(graph);
+               copyAnnotations(graph, from, to);
+
+       }
+       
+       private void copyAnnotations(WriteGraph graph, Resource from, Resource to) throws DatabaseException{
+               Layer0 l0 = Layer0.getInstance(graph);
+               AnnotationResource ann = AnnotationResource.getInstance(graph);
+               
+               List<Statement> annotations = new ArrayList<Statement>();
+               for (Statement s : graph.getStatements(from, l0.HasProperty)) {
+                       if (graph.isInstanceOf(s.getObject(),ann.Annotation) ){
+                               annotations.add(s);
+                       }
+               }
+               
+               for (Statement annotation : annotations) {
+                       Resource annotationInstance = graph.newResource();
+                       graph.claim(to, annotation.getPredicate(), annotationInstance);
+                       for (Resource type : graph.getObjects(annotation.getObject(), l0.InstanceOf)) {
+                               graph.claim(annotationInstance, l0.InstanceOf, type);
+                       }
+                       for (Statement property : graph.getStatements(annotation.getObject(), l0.HasProperty)) {
+                               if (property.isAsserted(annotation.getObject()))
+                                       continue;
+                               graph.claimLiteral(annotationInstance, property.getPredicate(), graph.getValue(property.getObject()));
+                       }
+               }
+       }
+       
+       public void dispose() {
+               
+               if (useVG) {
+                       VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class);
+                       VirtualGraph vg = support.getMemoryPersistent("document_annotation");
+                       support.discard(vg);
+               } else {
+                       
+                       Simantics.getSession().asyncRequest(new WriteRequest() {
+                               
+                               @Override
+                               public void perform(WriteGraph graph) throws DatabaseException {
+                                       Resource r = annotationHolderVariable.getPossibleRepresents(graph);
+                                       graph.deny(r);
+                                       
+                               }
+                       });
+                       
+               }
+               
+       }
+}