]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.charts/src/org/simantics/charts/ui/HideItemsContribution.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.charts / src / org / simantics / charts / ui / HideItemsContribution.java
diff --git a/bundles/org.simantics.charts/src/org/simantics/charts/ui/HideItemsContribution.java b/bundles/org.simantics.charts/src/org/simantics/charts/ui/HideItemsContribution.java
new file mode 100644 (file)
index 0000000..ed4e06b
--- /dev/null
@@ -0,0 +1,65 @@
+package org.simantics.charts.ui;\r
+\r
+import java.util.Arrays;\r
+\r
+import org.eclipse.jface.action.IAction;\r
+import org.eclipse.jface.action.IContributionItem;\r
+import org.simantics.charts.editor.HideItemsAction;\r
+import org.simantics.charts.ontology.ChartResource;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.ui.contribution.DynamicMenuContribution;\r
+import org.simantics.ui.utils.ResourceAdaptionUtils;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public class HideItemsContribution extends DynamicMenuContribution {\r
+\r
+    public HideItemsContribution() {\r
+    }\r
+\r
+    public HideItemsContribution(String id) {\r
+        super(id);\r
+    }\r
+\r
+    @Override\r
+    protected Object[] getSelectedObjects() {\r
+        return ResourceAdaptionUtils.toResources(getSelection());\r
+    }\r
+\r
+    @Override\r
+    protected boolean preAcceptSelection(Object[] selection) {\r
+        return selection.length > 0;\r
+    }\r
+\r
+    @Override\r
+    protected IContributionItem[] getContributionItems(ReadGraph graph, Object[] input) throws DatabaseException {\r
+        Resource[] resources = (Resource[]) input;\r
+\r
+        ChartResource CHART = ChartResource.getInstance(graph);\r
+\r
+        int hidden = 0;\r
+        int visible = 0;\r
+        for (Resource r : resources) {\r
+            if (!graph.isInstanceOf(r, CHART.Chart_Item))\r
+                return NONE;\r
+            Boolean isHidden = graph.getPossibleRelatedValue(r, CHART.Chart_Item_hidden, Bindings.BOOLEAN);\r
+            if (Boolean.TRUE.equals(isHidden))\r
+                ++hidden;\r
+            else\r
+                ++visible;\r
+        }\r
+\r
+        IAction hide = visible > 0 ? new HideItemsAction("Hide Items", true, Arrays.asList(resources)) : null;\r
+        IAction show = hidden > 0 ? new HideItemsAction("Unhide Items", false, Arrays.asList(resources)) : null;\r
+        if (hidden > 0 && visible > 0)\r
+            return toContributionItems(hide, show);\r
+        if (hidden > 0)\r
+            return toContributionItems(show);\r
+        return toContributionItems(hide);\r
+    }\r
+\r
+}\r