1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
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
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.g2d.element.handler.impl;
14 import java.util.Collections;
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;
25 * @author Antti Villberg
27 public class SimpleElementLayers implements ElementLayers {
29 public static final SimpleElementLayers INSTANCE = new SimpleElementLayers();
31 private static final long serialVersionUID = 379502115902223354L;
34 public boolean isVisible(IElement e, ILayers layers) {
37 assert(layers != null);
39 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
40 if (elementLayers == null)
43 return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
48 public boolean isVisible(IElement e, ILayer layer) {
50 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
51 if (elementLayers == null)
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));
58 return elementLayers.contains(layer);
63 public boolean isFocusable(IElement e, ILayers layers) {
66 assert(layers != null);
68 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
69 if (elementLayers == null)
72 return !Collections.disjoint(layers.getVisibleLayers(), elementLayers);
77 public boolean isFocusable(IElement e, ILayer layer) {
79 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
80 if (elementLayers == null)
83 return elementLayers.contains(layer);
88 public boolean setVisibility(IElement e, ILayer layer, boolean value) {
90 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
91 if (elementLayers == null)
94 if (value) result = elementLayers.add(layer);
95 else result = elementLayers.remove(layer);
98 for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
99 ell.visibilityChanged(e, layer, value);
107 public boolean setFocusability(IElement e, ILayer layer, boolean value) {
109 Set<ILayer> elementLayers = (Set<ILayer>)e.getHint(ElementHints.KEY_FOCUS_LAYERS);
110 if (elementLayers == null)
113 if(value) result = elementLayers.add(layer);
114 else result = elementLayers.remove(layer);
117 for (ElementLayerListener ell : e.getElementClass().getItemsByClass(ElementLayerListener.class)) {
118 ell.focusabilityChanged(e, layer, value);