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