]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/element/handler/impl/SimpleElementLayers.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / element / handler / impl / SimpleElementLayers.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.g2d.element.handler.impl;
13
14 import java.util.Collections;
15 import java.util.Set;
16
17 import org.simantics.g2d.element.ElementHints;
18 import org.simantics.g2d.element.IElement;
19 import org.simantics.g2d.element.handler.ElementLayerListener;
20 import org.simantics.g2d.element.handler.ElementLayers;
21 import org.simantics.g2d.layers.ILayer;
22 import org.simantics.g2d.layers.ILayers;
23
24 /**
25  * @author Antti Villberg
26  */
27 public class SimpleElementLayers implements ElementLayers {
28
29     public static final SimpleElementLayers INSTANCE = new SimpleElementLayers();
30
31     private static final long serialVersionUID = 379502115902223354L;
32
33     @Override
34     public boolean isVisible(IElement e, ILayers layers) {
35
36         assert(e != null);
37         assert(layers != null);
38
39         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
40         if (elementLayers == null)
41             return true;
42
43         return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
44
45     }
46
47     @Override
48     public boolean isVisible(IElement e, ILayer layer) {
49
50         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
51         if (elementLayers == null)
52             return true;
53
54 //              System.out.println("Testing: '" + layer.getName() + "'");
55 //              for(ILayer l : elementLayers) System.out.println("elementLayer: '" + l.getName() + "'");
56 //              System.out.println("result = " + elementLayers.contains(layer));
57
58         return elementLayers.contains(layer);
59
60     }
61
62     @Override
63     public boolean isFocusable(IElement e, ILayers layers) {
64
65         assert(e != null);
66         assert(layers != null);
67
68         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
69         if (elementLayers == null)
70             return true;
71
72         return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
73
74     }
75
76     @Override
77     public boolean isFocusable(IElement e, ILayer layer) {
78
79         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
80         if (elementLayers == null)
81             return true;
82
83         return elementLayers.contains(layer);
84
85     }
86
87     @Override
88     public boolean setVisibility(IElement e, ILayer layer, boolean value) {
89
90         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
91         if (elementLayers == null)
92             return false;
93         boolean result;
94         if (value) result = elementLayers.add(layer);
95         else result = elementLayers.remove(layer);
96
97         if (result) {
98             for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
99                 ell.visibilityChanged(e, layer, value);
100             }
101         }
102
103         return result;
104     }
105
106     @Override
107     public boolean setFocusability(IElement e, ILayer layer, boolean value) {
108
109         Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
110         if (elementLayers == null)
111             return false;
112         boolean result;
113         if(value) result = elementLayers.add(layer);
114         else result = elementLayers.remove(layer);
115
116         if (result) {
117             for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
118                 ell.focusabilityChanged(e, layer, value);
119             }
120         }
121
122         return result;
123     }
124
125 }