1 27 28 package org.nightlabs.editor2d.edit.tree; 29 30 import java.util.ArrayList ; 31 import java.util.Iterator ; 32 import java.util.List ; 33 34 import org.eclipse.gef.EditPolicy; 35 import org.eclipse.gef.editpolicies.RootComponentEditPolicy; 36 import org.eclipse.jface.resource.ImageDescriptor; 37 import org.eclipse.swt.graphics.Image; 38 import org.eclipse.ui.views.properties.IPropertySource; 39 40 import org.nightlabs.editor2d.DrawComponent; 41 import org.nightlabs.editor2d.EditorPlugin; 42 import org.nightlabs.editor2d.Layer; 43 import org.nightlabs.editor2d.MultiLayerDrawComponent; 44 import org.nightlabs.editor2d.editpolicy.DrawComponentContainerEditPolicy; 45 import org.nightlabs.editor2d.editpolicy.tree.MultiLayerDrawComponentTreeEditPolicy; 46 import org.nightlabs.editor2d.model.MultiLayerDrawComponentPropertySource; 47 import org.nightlabs.editor2d.outline.filter.FilterManager; 48 49 50 public class MultiLayerDrawComponentTreeEditPart 51 extends DrawComponentContainerTreeEditPart 52 { 53 55 58 public MultiLayerDrawComponentTreeEditPart(MultiLayerDrawComponent model, FilterManager filterMan) { 59 super(model); 60 this.filterMan = filterMan; 61 } 62 66 protected FilterManager filterMan; 67 public FilterManager getFilterMan() { 68 return filterMan; 69 } 70 71 public MultiLayerDrawComponent getMultiLayerDrawComponent() { 72 return (MultiLayerDrawComponent) getModel(); 73 } 74 75 78 public Image getImage() { 79 return null; 80 } 81 82 85 protected void createEditPolicies() 86 { 87 super.createEditPolicies(); 88 installEditPolicy(EditPolicy.CONTAINER_ROLE, new DrawComponentContainerEditPolicy()); 89 installEditPolicy(EditPolicy.TREE_CONTAINER_ROLE, new MultiLayerDrawComponentTreeEditPolicy()); 90 installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy()); 92 } 93 94 protected List getModelChildren() 95 { 96 if (getFilterMan().isAllFilterSet()) { 97 return getMultiLayerDrawComponent().getDrawComponents(); 98 } 99 else { 100 List filterChildren = new ArrayList (); 101 for (Iterator itFilter = getFilterMan().getFilters().iterator(); itFilter.hasNext(); ) { 102 Class filter = (Class ) itFilter.next(); 103 for (Iterator itLayers = getDrawComponentContainer().getDrawComponents().iterator(); itLayers.hasNext(); ) { 104 Layer l = (Layer) itLayers.next(); 105 for (Iterator itDrawOrder = l.getDrawComponents().iterator(); itDrawOrder.hasNext(); ) { 106 DrawComponent dc = (DrawComponent) itDrawOrder.next(); 107 if (filter.isAssignableFrom(dc.getClass())) { 108 filterChildren.add(dc); 109 } 110 } 111 } 112 } 113 return filterChildren; 114 } 115 } 116 117 protected IPropertySource getPropertySource() 118 { 119 if (propertySource == null) 120 { 121 propertySource = 122 new MultiLayerDrawComponentPropertySource(getMultiLayerDrawComponent()); 123 } 124 return propertySource; 125 } 126 } 127 | Popular Tags |