]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/browsecontexts/BrowseContext.java
BrowseContext creation fails when including invalid contributions
[simantics/platform.git] / bundles / org.simantics.browsing.ui.model / src / org / simantics / browsing / ui / model / browsecontexts / BrowseContext.java
index 8e5bf73c7ee88f565f9c3cfab585cd798400b37c..c4f8c26829081fa290a6df3cd35549817f6d3439 100644 (file)
@@ -22,9 +22,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
 import org.simantics.browsing.ui.BuiltinKeys;
 import org.simantics.browsing.ui.CheckedState;
 import org.simantics.browsing.ui.NodeContext;
@@ -59,15 +57,15 @@ import org.simantics.browsing.ui.model.visuals.VisualsContribution;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.RequestProcessor;
 import org.simantics.db.Resource;
+import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.exception.ResourceNotFoundException;
 import org.simantics.db.layer0.variable.Variable;
 import org.simantics.db.request.Read;
-import org.simantics.graphviz.Graph;
-import org.simantics.graphviz.Node;
-import org.simantics.graphviz.ui.GraphvizComponent;
 import org.simantics.scl.reflection.OntologyVersions;
 import org.simantics.viewpoint.ontology.ViewpointResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * BrowseContext holds all contributions related to given set of browse contexts.
@@ -75,7 +73,8 @@ import org.simantics.viewpoint.ontology.ViewpointResource;
  * @author Hannu Niemistö
  */
 public class BrowseContext {
-       
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(BrowseContext.class);
        public static final boolean DEBUG = false;
        
     NodeTypeMultiMap<ChildContribution> childContributions = new NodeTypeMultiMap<ChildContribution>();
@@ -127,24 +126,32 @@ public class BrowseContext {
             
             for(Resource childContributionResource : 
                 g.getObjects(browseContextResource, vr.BrowseContext_HasChildContribution)) {
-                ChildContribution contribution = ChildContribution.create(g, childContributionResource);
-                browseContext.childContributions.put(contribution.getParentNodeType(), contribution);
-                browseContext.parentContributions.put(contribution.getChildNodeType(), contribution);
+                try {
+                    ChildContribution contribution = ChildContribution.create(g, childContributionResource);
+                    browseContext.childContributions.put(contribution.getParentNodeType(), contribution);
+                    browseContext.parentContributions.put(contribution.getChildNodeType(), contribution);
+                } catch (DatabaseException e) {
+                    LOGGER.error("Failed to load child contribution " + NameUtils.getSafeName(g, childContributionResource), e);
+                }
             }
             
             for(Resource visualsContributionResource : 
                 g.getObjects(browseContextResource, vr.BrowseContext_HasVisualsContribution)) {
-                VisualsContribution.load(g, visualsContributionResource,
-                        browseContext.labelContributions,
-                        browseContext.imageContributions,
-                        browseContext.checkedStateContributions,
-                        browseContext.labelDecorationContributions,
-                        browseContext.imageDecorationContributions,
-                        browseContext.modifierContributions,
-                        browseContext.sorterContributions,
-                        browseContext.flatNodeContributions,
-                        browseContext.tooltipContributions
+                try {
+                    VisualsContribution.load(g, visualsContributionResource,
+                            browseContext.labelContributions,
+                            browseContext.imageContributions,
+                            browseContext.checkedStateContributions,
+                            browseContext.labelDecorationContributions,
+                            browseContext.imageDecorationContributions,
+                            browseContext.modifierContributions,
+                            browseContext.sorterContributions,
+                            browseContext.flatNodeContributions,
+                            browseContext.tooltipContributions
                         );
+                } catch (DatabaseException e) {
+                    LOGGER.error("Failed to load visuals contribution " + NameUtils.getSafeName(g, visualsContributionResource), e);
+                }
             }
         }
         //browseContext.visualize();
@@ -160,8 +167,7 @@ public class BrowseContext {
                     try {
                         browseContextResources.add(graph.getResource(browseContext));
                     } catch (ResourceNotFoundException e) {
-                        // Expected result, if no modelled contributions exist.
-                        //System.err.println("Didn't find " + browseContext + " while loading model browser.");
+                        LOGGER.error("Didn't find " + browseContext + " while loading model browser.", e);
                     }
                 }
                 Collection<Resource> allBrowseContextResources = BrowseContext.findSubcontexts(graph, browseContextResources);
@@ -222,9 +228,9 @@ public class BrowseContext {
                Collection<NodeContext> children = contribution.getChildren(graph, parent);
             result.addAll(children);
             if(DEBUG) {
-                   System.err.println("contribution: " + contribution.getIdentifier());
+                   LOGGER.info("contribution: " + contribution.getIdentifier());
                    for(NodeContext ctx : children)
-                       System.err.println("-" + ctx);
+                       LOGGER.info("-" + ctx);
             }
         }
         
@@ -467,36 +473,6 @@ public class BrowseContext {
             return tooltip;
         return null;
     }
-    
-    private Graph toGraph() {
-        Graph graph = new Graph();
-        new Node(graph, "Foo");
-        return graph;
-    }
-
-    @SuppressWarnings("unused")
-    private void visualize() {
-        final Graph graph = toGraph();
-                
-        // Show it
-        new Thread() {
-            public void run() {
-                final Display display = new Display();
-                final Shell shell = new Shell(display);
-
-                GraphvizComponent comp = new GraphvizComponent(shell, 0);
-                comp.setGraph(graph);
-
-                comp.setBounds(0, 0, 800, 600);
-                shell.pack();
-                shell.open ();
-                while (!shell.isDisposed()) {
-                    if (!display.readAndDispatch()) display.sleep();
-                }
-                display.dispose();
-            }
-        }.start();      
-    }
 
     @Override
     public int hashCode() {