package org.codemap.layers; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.codemap.resources.MapValues; import org.eclipse.swt.events.DragDetectEvent; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.graphics.GC; public class CompositeLayer extends Layer implements Iterable<Layer> { private List<Layer> children = new ArrayList<Layer>(); @Override public void paintMap(MapValues map, GC gc) { for (Layer each: children ) each.paintMap(map, gc); } @Override public void setRoot(CodemapVisualization root) { super.setRoot(root); for (Layer each: children) { each.setRoot(root); } } public CompositeLayer add(Layer layer) { children.add(layer); layer.setRoot(getRoot()); return this; } public CompositeLayer remove(Layer layer) { children.remove(layer); layer.setRoot(null); return this; } public boolean contains(Layer layer) { return children.contains(layer); } @Override public void dragDetected(DragDetectEvent e) { for (Layer each: children ) each.dragDetected(e); } @Override public void mouseDoubleClick(MouseEvent e) { for (Layer each: children ) each.mouseDoubleClick(e); } @Override public void mouseDown(MouseEvent e) { for (Layer each: children ) each.mouseDown(e); } @Override public void mouseEnter(MouseEvent e) { for (Layer each: children ) each.mouseEnter(e); } @Override public void mouseExit(MouseEvent e) { for (Layer each: children ) each.mouseExit(e); } @Override public void mouseHover(MouseEvent e) { for (Layer each: children ) each.mouseHover(e); } @Override public void mouseMove(MouseEvent e) { for (Layer each: children ) each.mouseMove(e); } @Override public void mouseUp(MouseEvent e) { for (Layer each: children ) each.mouseUp(e); } @Override public void mouseScrolled(MouseEvent e) { for (Layer each: children ) each.mouseScrolled(e); } @Override public Iterator<Layer> iterator() { return children.iterator(); } @Override public void keyReleased(KeyEvent e) { for (Layer each: children ) each.keyReleased(e); } @Override public void keyPressed(KeyEvent e) { for (Layer each: children ) each.keyPressed(e); } }