]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/element/handler/impl/SimpleElementLayers.java
622e5322eb19baba8b6ddfa580b336b5d6c6fb4b
[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.ElementLayers;
20 import org.simantics.g2d.layers.ILayer;
21 import org.simantics.g2d.layers.ILayers;
22
23 /**
24  * @author Antti Villberg
25  */
26 public class SimpleElementLayers implements ElementLayers {
27
28     public static final SimpleElementLayers INSTANCE = new SimpleElementLayers();
29
30     private static final long serialVersionUID = 379502115902223354L;
31
32     @Override
33     public boolean isVisible(IElement e, ILayers layers) {
34
35         assert (e != null);
36         assert (layers != null);
37
38         Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
39         if (elementLayers == null)
40             return true;
41
42         return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
43
44     }
45
46     @Override
47     public boolean isVisible(IElement e, ILayer layer) {
48
49         Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
50         if (elementLayers == null)
51             return true;
52
53 //              System.out.println("Testing: '" + layer.getName() + "'");
54 //              for(ILayer l : elementLayers) System.out.println("elementLayer: '" + l.getName() + "'");
55 //              System.out.println("result = " + elementLayers.contains(layer));
56
57         return elementLayers.contains(layer);
58
59     }
60
61     @Override
62     public boolean isFocusable(IElement e, ILayers layers) {
63
64         assert (e != null);
65         assert (layers != null);
66
67         Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_FOCUS_LAYERS);
68         if (elementLayers == null)
69             return true;
70
71         return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
72
73     }
74
75     @Override
76     public boolean isFocusable(IElement e, ILayer layer) {
77
78         Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_FOCUS_LAYERS);
79         if (elementLayers == null)
80             return true;
81
82         return elementLayers.contains(layer);
83
84     }
85
86 }