X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fproperty%2FP3DSelectionProcessor.java;h=4970d0e961c18e01389d7f874f8fde631e85ff1b;hb=d17f8bbf4ab660b5efa42ff9d54cda7bbed02648;hp=54941609764669373b7e182928b25e984e1815d1;hpb=a460e609147d064dd3da464bcf1626845e0f93b4;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/property/P3DSelectionProcessor.java b/org.simantics.plant3d/src/org/simantics/plant3d/property/P3DSelectionProcessor.java index 54941609..4970d0e9 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/property/P3DSelectionProcessor.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/property/P3DSelectionProcessor.java @@ -3,6 +3,7 @@ package org.simantics.plant3d.property; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.function.Consumer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Composite; @@ -26,7 +27,7 @@ import org.simantics.selectionview.BasicPropertyTab; import org.simantics.selectionview.ComparableTabContributor; import org.simantics.selectionview.PropertyTabContributorImpl; import org.simantics.selectionview.SelectionProcessor; -import org.simantics.utils.datastructures.Callback; +import org.simantics.utils.threads.SWTThread; import vtk.vtkProp; @@ -38,87 +39,91 @@ public class P3DSelectionProcessor implements SelectionProcessor result = new ArrayList(); - Collection resourceCollection = AdaptationUtils.adaptToCollection(selection, Resource.class); - Collection structuralResourceCollection = AdaptationUtils.adaptToCollection(selection, StructuralResource.class); - Collection propCollection = AdaptationUtils.adaptToCollection(selection, vtkProp.class); - Collection nodeCollection = AdaptationUtils.adaptToCollection(selection, IG3DNode.class); - boolean readOnly = false; - if (resourceCollection.size() == 0 && structuralResourceCollection.size() > 0) { - for (StructuralResource sr : structuralResourceCollection) { - if (sr.isStructural() && !sr.isStructuralRoot()) - readOnly = true; - resourceCollection.add(sr.getResource()); - } - } - - - if (nodeCollection.size() == 1) { - IG3DNode node = nodeCollection.iterator().next(); - List contributors = PropertyTabUtil.getContributors(node); - int i = 100; - for (PropertyTabContributor c : contributors) { - result.add(new ComparableTabContributor(c, i--, node, c.getId())); - } - } - - if (DEBUG) { - if (propCollection.size() == 1) { - vtkProp prop = propCollection.iterator().next(); - if (prop == null) - throw new NullPointerException(); - result.add(new ComparableTabContributor(new VTKPropertyTabContributor(), -2, prop, "VTK")); - } - - if (resourceCollection.size() > 0) { - if (resourceCollection.size() > 1) - result.add(new ComparableTabContributor(new MultiSelectionTabContibutor(),0, resourceCollection, "Graph")); - else if (resourceCollection.size() == 1){ - try { + Collection result = new ArrayList(); + Collection resourceCollection = AdaptationUtils.adaptToCollection(selection, Resource.class); + Collection structuralResourceCollection = AdaptationUtils.adaptToCollection(selection, StructuralResource.class); + Collection propCollection = AdaptationUtils.adaptToCollection(selection, vtkProp.class); + Collection nodeCollection = AdaptationUtils.adaptToCollection(selection, IG3DNode.class); + boolean readOnly = false; + if (resourceCollection.size() == 0 && structuralResourceCollection.size() > 0) { + for (StructuralResource sr : structuralResourceCollection) { + if (sr.isStructural() && !sr.isStructuralRoot()) + readOnly = true; + resourceCollection.add(sr.getResource()); + } + } + + + if (nodeCollection.size() == 1) { + IG3DNode node = nodeCollection.iterator().next(); + List contributors = PropertyTabUtil.getContributors(node); + int i = 100; + for (PropertyTabContributor c : contributors) { + result.add(new ComparableTabContributor(c, i--, node, c.getId())); + } + } + + if (DEBUG) { + if (propCollection.size() == 1) { + vtkProp prop = propCollection.iterator().next(); + if (prop == null) + throw new NullPointerException(); + result.add(new ComparableTabContributor(new VTKPropertyTabContributor(SWTThread.getThreadAccess()), -2, prop, "VTK")); + } + + if (resourceCollection.size() > 0) { + if (resourceCollection.size() > 1) + result.add(new ComparableTabContributor(new MultiSelectionTabContibutor(),0, resourceCollection, "Graph")); + else if (resourceCollection.size() == 1){ + try { Resource r = resourceCollection.iterator().next(); - result.add(new ComparableTabContributor(new P3DBasicPropertyTab(!readOnly), 0, r, "Graph")); - - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - if(result.size() == 0) { - result.add(new ComparableTabContributor(new NoneSelectionTabContributor(),0, resourceCollection, "Empty")); - } - + result.add(new ComparableTabContributor(new P3DBasicPropertyTab(!readOnly), 0, r, "Graph")); + + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + if(result.size() == 0) { + result.add(new ComparableTabContributor(new NoneSelectionTabContributor(),0, resourceCollection, "Empty")); + } + return result; } - + public class P3DBasicPropertyTab extends BasicPropertyTab { - + boolean enabled; public P3DBasicPropertyTab(boolean enabled) { this.enabled = enabled; } - public void updatePartName(ISelection forSelection, Callback updateCallback) { - Read read = getPartNameReadRequest(forSelection); - if (read == null) { - updateCallback.run("Override to control part name (PropertyTabContributorImpl.updatePartName)"); - } else { - Simantics.getSession().asyncRequest(read, new PartNameListener(updateCallback)); - } - } - public Read getPartNameReadRequest(ISelection forSelection) { - final Resource r = AdaptationUtils.adaptToSingle(forSelection, Resource.class); - if (r == null) - return null; - return new Read() { - @Override + + @Override + public void updatePartName(ISelection forSelection, Consumer updateCallback) { + Read read = getPartNameReadRequest(forSelection); + if (read == null) { + updateCallback.accept("Override to control part name (PropertyTabContributorImpl.updatePartName)"); + } else { + Simantics.getSession().asyncRequest(read, new PartNameListener(updateCallback)); + } + } + + @Override + public Read getPartNameReadRequest(ISelection forSelection) { + final Resource r = AdaptationUtils.adaptToSingle(forSelection, Resource.class); + if (r == null) + return null; + return new Read() { + @Override public String perform(ReadGraph graph) throws DatabaseException { return NameUtils.getSafeName(graph, r); } }; - } - - @Override + } + + @Override public void createControls(Composite body, IWorkbenchSite site, ISessionContext context, WidgetSupport support) { // TODO Auto-generated method stub @@ -126,20 +131,22 @@ public class P3DSelectionProcessor implements SelectionProcessor getPartNameReadRequest(ISelection forSelection) { - final Collection coll = AdaptationUtils.adaptToCollection(forSelection, Resource.class); - if (coll.size() == 0) - return null; - return new Read() { - @Override + final Collection coll = AdaptationUtils.adaptToCollection(forSelection, Resource.class); + if (coll.size() == 0) + return null; + return new Read() { + @Override public String perform(ReadGraph graph) throws DatabaseException { String title = ""; for (Resource r : coll) { @@ -149,21 +156,22 @@ public class P3DSelectionProcessor implements SelectionProcessor updateCallback) { - updateCallback.run("No Selection"); + + //@Override + public void updatePartName(ISelection forSelection, Consumer updateCallback) { + updateCallback.accept("No Selection"); } } - + }