]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.network/src/org/simantics/district/network/profile/HideStyle.java
Fix hide style
[simantics/district.git] / org.simantics.district.network / src / org / simantics / district / network / profile / HideStyle.java
1 package org.simantics.district.network.profile;
2
3 import org.simantics.db.ReadGraph;
4 import org.simantics.db.Resource;
5 import org.simantics.db.exception.DatabaseException;
6 import org.simantics.diagram.profile.ProfileKeys;
7 import org.simantics.diagram.profile.StyleBase;
8 import org.simantics.g2d.diagram.IDiagram;
9 import org.simantics.g2d.diagram.handler.DataElementMap;
10 import org.simantics.g2d.element.ElementUtils;
11 import org.simantics.g2d.element.IElement;
12 import org.simantics.scenegraph.INode;
13 import org.simantics.scenegraph.g2d.nodes.SingleElementNode;
14 import org.simantics.scenegraph.profile.DataNodeMap;
15 import org.simantics.scenegraph.profile.EvaluationContext;
16
17 /**
18  * @author Tuukka Lehtonen
19  */
20 public class HideStyle extends StyleBase<Boolean> {
21
22     @Override
23     public Boolean calculateStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource groupItem) throws DatabaseException {
24         return Boolean.TRUE;
25     }
26
27     @Override
28     public void applyStyleForItem(EvaluationContext evaluationContext, DataNodeMap map, Object item, Boolean value) {
29         INode node = map.getNode(item);
30         if (node == null) {
31             evaluationContext.update();
32             return;
33         }
34
35         IDiagram diagram = evaluationContext.getConstant(ProfileKeys.DIAGRAM);
36         DataElementMap emap = diagram.getDiagramClass().getSingleItem(DataElementMap.class);
37         IElement element = emap.getElement(diagram, item);
38         if (element == null)
39             return;
40
41         hideElements(evaluationContext, diagram, element, node);
42     }
43
44     @Override
45     protected void cleanupStyleForItem(EvaluationContext evaluationContext, DataNodeMap map, Object item) {
46         IDiagram diagram = evaluationContext.getConstant(ProfileKeys.DIAGRAM);
47         DataElementMap emap = diagram.getDiagramClass().getSingleItem(DataElementMap.class);
48
49         INode node = map.getNode(item);
50         if (node == null)
51             return;
52         IElement element = emap.getElement(diagram, item);
53         if (element == null)
54             return;
55
56         showElements(diagram, element, node);
57     }
58
59     protected void hideElements(EvaluationContext evaluationContext, IDiagram diagram, IElement element, INode node) {
60         setVisibility(element, node, false);
61     }
62
63     protected void showElements(IDiagram diagram, IElement element, INode node) {
64         setVisibility(element, node, true);
65     }
66
67     protected void setVisibility(IElement element, INode node, boolean visible) {
68         if (element != null)
69             ElementUtils.setHidden(element, !visible);
70         if (node instanceof SingleElementNode) {
71             ((SingleElementNode) node).setHidden(!visible);
72         }
73     }
74
75     @Override
76     public String toString() {
77         return "Hide";
78     }
79
80 }