+ private static Collection<IElement> filterSelectionByLayers(IDiagram diagram, Collection<IElement> elements) {
+ ILayers layers = diagram.getHint(DiagramHints.KEY_LAYERS);
+ if (layers != null && !layers.getIgnoreFocusSettings()) {
+ List<IElement> filteredElements = new ArrayList<IElement>();
+ for (IElement element : elements) {
+ ElementClass ec = element.getElementClass();
+ ElementLayers el = ec.getAtMostOneItemOfClass(ElementLayers.class);
+ if (el == null || el.isFocusable(element, layers)) {
+ filteredElements.add(element);
+ }
+ }
+ return filteredElements;
+ } else {
+ return elements;
+ }
+ }