1 8 package com.nightlabs.editor2d.edit.tree; 9 10 import java.util.ArrayList ; 11 import java.util.Iterator ; 12 import java.util.List ; 13 14 import org.eclipse.gef.EditPolicy; 15 import org.eclipse.gef.editpolicies.RootComponentEditPolicy; 16 import org.eclipse.jface.resource.ImageDescriptor; 17 import org.eclipse.swt.graphics.Image; 18 19 import com.nightlabs.editor2d.DrawComponent; 20 import com.nightlabs.editor2d.EditorPlugin; 21 import com.nightlabs.editor2d.Layer; 22 import com.nightlabs.editor2d.MultiLayerDrawComponent; 23 import com.nightlabs.editor2d.editpolicy.DrawComponentContainerEditPolicy; 24 import com.nightlabs.editor2d.editpolicy.tree.MultiLayerDrawComponentTreeEditPolicy; 25 import com.nightlabs.editor2d.filter.FilterManager; 26 27 28 public class MultiLayerDrawComponentTreeEditPart 29 extends DrawComponentContainerTreeEditPart 30 { 31 public static Image SUN_ICON = ImageDescriptor.createFromFile(EditorPlugin.class, "icons/sun16.gif").createImage(); 32 33 36 public MultiLayerDrawComponentTreeEditPart(MultiLayerDrawComponent model, FilterManager filterMan) { 37 super(model); 38 this.filterMan = filterMan; 39 } 40 44 protected FilterManager filterMan; 45 public FilterManager getFilterMan() { 46 return filterMan; 47 } 48 49 public MultiLayerDrawComponent getMultiLayerDrawComponent() { 50 return (MultiLayerDrawComponent) getModel(); 51 } 52 53 56 public Image getImage() { 57 return SUN_ICON; 58 } 59 60 63 protected void createEditPolicies() 64 { 65 super.createEditPolicies(); 66 installEditPolicy(EditPolicy.CONTAINER_ROLE, new DrawComponentContainerEditPolicy()); 67 installEditPolicy(EditPolicy.TREE_CONTAINER_ROLE, new MultiLayerDrawComponentTreeEditPolicy()); 68 installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy()); 70 } 71 72 protected List getModelChildren() 73 { 74 if (getFilterMan().isAllFilterSet()) { 75 return getMultiLayerDrawComponent().getDrawComponents(); 76 } 77 else { 78 List filterChildren = new ArrayList (); 79 for (Iterator itFilter = getFilterMan().getFilters().iterator(); itFilter.hasNext(); ) { 80 Class filter = (Class ) itFilter.next(); 81 for (Iterator itLayers = getDrawComponentContainer().getDrawComponents().iterator(); itLayers.hasNext(); ) { 82 Layer l = (Layer) itLayers.next(); 83 for (Iterator itDrawOrder = l.getDrawComponents().iterator(); itDrawOrder.hasNext(); ) { 84 DrawComponent dc = (DrawComponent) itDrawOrder.next(); 85 if (filter.isAssignableFrom(dc.getClass())) { 86 filterChildren.add(dc); 87 } 88 } 89 } 90 } 91 return filterChildren; 92 } 93 } 94 } 95 | Popular Tags |