]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ComponentTypeViewer.java
Support for creating shared ontology dump to git
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / componentTypeEditor / ComponentTypeViewer.java
index 38f24b4f7ddb53d8d7b6b3dafc84403c35042533..089d0bdbc649336b608829bacaf7d70e1927ba03 100644 (file)
@@ -12,8 +12,6 @@
 package org.simantics.modeling.ui.componentTypeEditor;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
 import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.jface.resource.JFaceResources;
@@ -34,26 +32,19 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.simantics.Simantics;
-import org.simantics.browsing.ui.graph.impl.GetEnumerationValue;
 import org.simantics.databoard.Bindings;
 import org.simantics.databoard.binding.Binding;
-import org.simantics.databoard.binding.error.BindingException;
 import org.simantics.databoard.type.Datatype;
-import org.simantics.databoard.type.NumberType;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.common.NamedResource;
-import org.simantics.db.common.request.IsEnumeratedValue;
-import org.simantics.db.common.request.UniqueRead;
-import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.db.procedure.Listener;
 import org.simantics.db.request.Read;
 import org.simantics.layer0.Layer0;
 import org.simantics.modeling.ui.Activator;
-import org.simantics.operation.Layer0X;
-import org.simantics.structural.stubs.StructuralResource2;
+import org.simantics.modeling.utils.ComponentTypePropertiesResult;
+import org.simantics.modeling.utils.ComponentTypeViewerPropertyInfo;
 import org.simantics.utils.ui.ErrorLogger;
 import org.simantics.utils.ui.SWTUtils;
 
@@ -167,94 +158,7 @@ public class ComponentTypeViewer {
     }
     
     private void createGraphListener() {
-        Simantics.getSession().asyncRequest(new UniqueRead<ComponentTypePropertiesResult>() {
-            @Override
-            public ComponentTypePropertiesResult perform(ReadGraph graph) throws DatabaseException {
-                List<ComponentTypeViewerPropertyInfo> result = new ArrayList<>();
-                List<NamedResource> connectionPoints = new ArrayList<>();
-                Layer0 L0 = Layer0.getInstance(graph);
-                Layer0X L0X = Layer0X.getInstance(graph);
-                StructuralResource2 STR = StructuralResource2.getInstance(graph);
-
-                boolean typeIsImmutable = graph.isImmutable(data.componentType)
-                        || graph.hasStatement(data.componentType, STR.ComponentType_Locked)
-                        || Layer0Utils.isPublished(graph, data.componentType)
-                        || Layer0Utils.isContainerPublished(graph, data.componentType);
-
-                for(Resource relation : graph.getObjects(data.componentType, L0.DomainOf)) {
-                    if(graph.isSubrelationOf(relation, L0.HasProperty)) {
-                        String name = graph.getRelatedValue(relation, L0.HasName);
-                        String type =  graph.getPossibleRelatedValue(relation, L0.RequiresValueType);
-                        String label = graph.getPossibleRelatedValue(relation, L0.HasLabel);
-                        if (label == null)
-                            label = ""; //$NON-NLS-1$
-                        String description = graph.getPossibleRelatedValue(relation, L0.HasDescription);
-                        if (description == null)
-                            description = ""; //$NON-NLS-1$
-                        NumberType numberType = null;
-                        if(type == null)
-                            type = "Double"; //$NON-NLS-1$
-                        String unit = graph.getPossibleRelatedValue(relation, L0X.HasUnit, Bindings.STRING);
-                        String defaultValue = "0"; //$NON-NLS-1$
-                        String expression = null;
-                        
-                        for(Resource assertion : graph.getAssertedObjects(data.componentType, relation)) {
-                            try {
-                                expression = graph.getPossibleRelatedValue(assertion, L0.SCLValue_expression, Bindings.STRING);
-                                if(expression != null) {
-                                       defaultValue = "=" + expression; //$NON-NLS-1$
-                                } else if (graph.sync(new IsEnumeratedValue(assertion))) {
-                                    defaultValue = GetEnumerationValue.getEnumerationValueName(graph, assertion);
-                                } else {
-                                       Datatype dt = getPossibleDatatype(graph, assertion);
-                                       if (dt == null)
-                                           continue;
-                                       if (dt instanceof NumberType)
-                                           numberType = (NumberType) dt;
-                                       Binding binding = Bindings.getBinding(dt);
-                                       Object value = graph.getValue(assertion, binding);
-                                       try {
-                                           defaultValue = binding.toString(value, true);
-                                       } catch (BindingException e) {
-                                           ErrorLogger.defaultLogError(e);
-                                       }
-                                }
-                            } catch(DatabaseException e) {
-                                ErrorLogger.defaultLogError(e);
-                            }
-                        }
-                        
-                        String valid = expression != null ? DerivedPropertiesSection.validateMonitorExpression(graph, data.componentType, relation, expression) : null; 
-
-                        boolean immutable = typeIsImmutable || graph.isImmutable(relation);
-                        ComponentTypeViewerPropertyInfo info =
-                                new ComponentTypeViewerPropertyInfo(relation, name, type, defaultValue, numberType, unit, label, description, expression, valid, immutable);
-                        
-                        Object sectionSpecificData = null;
-                        double priority = Double.NEGATIVE_INFINITY;
-                        for(ComponentTypeViewerSection section : sections) {
-                            Object temp = section.getSectionSpecificData(graph, info);
-                            if(temp != null) {
-                                double sectionPriority = section.getDataPriority();
-                                if(sectionPriority > priority) {
-                                    sectionSpecificData = temp;
-                                    priority = sectionPriority;
-                                }
-                            }
-                        }
-                        info.sectionSpecificData = sectionSpecificData;
-                        
-                        result.add(info);
-
-                    } else if (graph.isInstanceOf(relation, STR.ConnectionRelation)) {
-                        NamedResource nr = new NamedResource(NameUtils.getSafeName(graph, relation), relation);
-                        connectionPoints.add(nr);
-                    }
-                }
-                Collections.sort(result);
-                return new ComponentTypePropertiesResult(result, connectionPoints, typeIsImmutable);
-            }
-        }, new Listener<ComponentTypePropertiesResult>() {
+        Simantics.getSession().asyncRequest(new ComponentTypePropertiesResultRequest(this.data.componentType, this.sections), new Listener<ComponentTypePropertiesResult>() {
             @Override
             public void execute(final ComponentTypePropertiesResult result) {  
                 SWTUtils.asyncExec(data.form.getDisplay(), new Runnable() {
@@ -284,16 +188,6 @@ public class ComponentTypeViewer {
         });
     }
 
-    protected Datatype getPossibleDatatype(ReadGraph graph, Resource literal) throws DatabaseException {
-        Binding binding = Bindings.getBindingUnchecked(Datatype.class);
-        for (Resource dataTypeResource : graph.getObjects(literal, Layer0.getInstance(graph).HasDataType)) {
-            Datatype dt = graph.getPossibleValue(dataTypeResource, binding);
-            if (dt != null)
-                return dt;
-        }
-        return null;
-    }
-
     public void setFocus() {
         data.form.setFocus();
     }