1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.g2d.element.handler.impl;
\r
14 import java.util.Collections;
\r
15 import java.util.Set;
\r
17 import org.simantics.g2d.element.ElementHints;
\r
18 import org.simantics.g2d.element.IElement;
\r
19 import org.simantics.g2d.element.handler.ElementLayerListener;
\r
20 import org.simantics.g2d.element.handler.ElementLayers;
\r
21 import org.simantics.g2d.layers.ILayer;
\r
22 import org.simantics.g2d.layers.ILayers;
\r
25 * @author Antti Villberg
\r
27 public class SimpleElementLayers implements ElementLayers {
\r
29 public static final SimpleElementLayers INSTANCE = new SimpleElementLayers();
\r
31 private static final long serialVersionUID = 379502115902223354L;
\r
34 public boolean isVisible(IElement e, ILayers layers) {
\r
37 assert(layers != null);
\r
39 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
\r
40 if (elementLayers == null)
\r
43 return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
\r
48 public boolean isVisible(IElement e, ILayer layer) {
\r
50 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
\r
51 if (elementLayers == null)
\r
54 // System.out.println("Testing: '" + layer.getName() + "'");
\r
55 // for(ILayer l : elementLayers) System.out.println("elementLayer: '" + l.getName() + "'");
\r
56 // System.out.println("result = " + elementLayers.contains(layer));
\r
58 return elementLayers.contains(layer);
\r
63 public boolean isFocusable(IElement e, ILayers layers) {
\r
66 assert(layers != null);
\r
68 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
\r
69 if (elementLayers == null)
\r
72 return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
\r
77 public boolean isFocusable(IElement e, ILayer layer) {
\r
79 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
\r
80 if (elementLayers == null)
\r
83 return elementLayers.contains(layer);
\r
88 public boolean setVisibility(IElement e, ILayer layer, boolean value) {
\r
90 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
\r
91 if (elementLayers == null)
\r
94 if (value) result = elementLayers.add(layer);
\r
95 else result = elementLayers.remove(layer);
\r
98 for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
\r
99 ell.visibilityChanged(e, layer, value);
\r
107 public boolean setFocusability(IElement e, ILayer layer, boolean value) {
\r
109 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
\r
110 if (elementLayers == null)
\r
113 if(value) result = elementLayers.add(layer);
\r
114 else result = elementLayers.remove(layer);
\r
117 for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
\r
118 ell.focusabilityChanged(e, layer, value);
\r