]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.charts.ui;\r
2 \r
3 import java.util.Arrays;\r
4 \r
5 import org.eclipse.jface.action.IAction;\r
6 import org.eclipse.jface.action.IContributionItem;\r
7 import org.simantics.charts.editor.HideItemsAction;\r
8 import org.simantics.charts.ontology.ChartResource;\r
9 import org.simantics.databoard.Bindings;\r
10 import org.simantics.db.ReadGraph;\r
11 import org.simantics.db.Resource;\r
12 import org.simantics.db.exception.DatabaseException;\r
13 import org.simantics.ui.contribution.DynamicMenuContribution;\r
14 import org.simantics.ui.utils.ResourceAdaptionUtils;\r
15 \r
16 /**\r
17  * @author Tuukka Lehtonen\r
18  */\r
19 public class HideItemsContribution extends DynamicMenuContribution {\r
20 \r
21     public HideItemsContribution() {\r
22     }\r
23 \r
24     public HideItemsContribution(String id) {\r
25         super(id);\r
26     }\r
27 \r
28     @Override\r
29     protected Object[] getSelectedObjects() {\r
30         return ResourceAdaptionUtils.toResources(getSelection());\r
31     }\r
32 \r
33     @Override\r
34     protected boolean preAcceptSelection(Object[] selection) {\r
35         return selection.length > 0;\r
36     }\r
37 \r
38     @Override\r
39     protected IContributionItem[] getContributionItems(ReadGraph graph, Object[] input) throws DatabaseException {\r
40         Resource[] resources = (Resource[]) input;\r
41 \r
42         ChartResource CHART = ChartResource.getInstance(graph);\r
43 \r
44         int hidden = 0;\r
45         int visible = 0;\r
46         for (Resource r : resources) {\r
47             if (!graph.isInstanceOf(r, CHART.Chart_Item))\r
48                 return NONE;\r
49             Boolean isHidden = graph.getPossibleRelatedValue(r, CHART.Chart_Item_hidden, Bindings.BOOLEAN);\r
50             if (Boolean.TRUE.equals(isHidden))\r
51                 ++hidden;\r
52             else\r
53                 ++visible;\r
54         }\r
55 \r
56         IAction hide = visible > 0 ? new HideItemsAction("Hide Items", true, Arrays.asList(resources)) : null;\r
57         IAction show = hidden > 0 ? new HideItemsAction("Unhide Items", false, Arrays.asList(resources)) : null;\r
58         if (hidden > 0 && visible > 0)\r
59             return toContributionItems(hide, show);\r
60         if (hidden > 0)\r
61             return toContributionItems(show);\r
62         return toContributionItems(hide);\r
63     }\r
64 \r
65 }\r