1 5 package com.nightlabs.base.entitylist; 6 7 import java.util.ArrayList ; 8 import java.util.Collection ; 9 import java.util.HashMap ; 10 import java.util.Iterator ; 11 import java.util.Map ; 12 import java.util.Set ; 13 14 import org.eclipse.jface.viewers.ISelectionChangedListener; 15 import org.eclipse.swt.widgets.Composite; 16 import org.eclipse.ui.IPartListener2; 17 import org.eclipse.ui.IWorkbenchPartReference; 18 import org.eclipse.ui.PartInitException; 19 import org.eclipse.ui.part.ViewPart; 20 21 26 public abstract class AbstractEntityListView extends ViewPart implements EntityManagementViewStateChangedListener 27 { 28 29 private Map entityLists; 30 private String activeManagementViewID; 31 32 38 public abstract String getViewID(); 39 40 private class EntityManagementViewListener implements IPartListener2 41 { 42 private AbstractEntityListView elv; 43 public EntityManagementViewListener(AbstractEntityListView elv) 44 { 45 this.elv = elv; 46 } 47 48 public void partActivated(IWorkbenchPartReference partRef) 49 { 50 Object o = partRef.getPart(false); 51 if(o instanceof EntityManagementView) 52 elv.viewActivated(partRef.getId()); 53 } 54 55 public void partBroughtToTop(IWorkbenchPartReference partRef) 56 { 57 } 59 60 public void partClosed(IWorkbenchPartReference partRef) 61 { 62 if (partRef.getId().equals(elv.activeManagementViewID)) 63 elv.activeManagementViewID = null; 64 } 65 66 public void partDeactivated(IWorkbenchPartReference partRef) 67 { 68 } 69 70 public void partOpened(IWorkbenchPartReference partRef) 71 { 72 } 74 75 public void partHidden(IWorkbenchPartReference partRef) 76 { 77 } 78 79 public void partVisible(IWorkbenchPartReference partRef) 80 { 81 } 83 84 public void partInputChanged(IWorkbenchPartReference partRef) 85 { 86 } 87 88 } 89 private EntityManagementViewListener emvListener; 90 91 92 public AbstractEntityListView() 93 { 94 super(); 95 entityLists = new HashMap (); 96 } 97 98 public abstract void createEntityListControl(Composite parent); 99 100 public void createPartControl(Composite parent) { 101 createEntityListControl(parent); 102 103 emvListener = new EntityManagementViewListener(this); 104 getViewSite().getPage().addPartListener(emvListener); 105 106 Collection registeredEntityLists = EntityListRegistry.getSharedInstance().getEntityLists(getViewID()); 107 if (registeredEntityLists != null) { 108 int i = 0; 109 String selectEntityID = null; 110 for (Iterator iter = registeredEntityLists.iterator(); iter.hasNext();) { 111 EntityList el = (EntityList) iter.next(); 112 addEntityList(el); 113 if (i == 0) 114 selectEntityID = el.getID(); 115 ++i; 116 } 117 setSelectedEntityList(selectEntityID); 118 showManagerViews(selectEntityID); 119 } 120 } 121 122 public abstract void setFocus(); 123 124 131 protected abstract ISelectionChangedListener createListChangeListener(); 132 133 134 private static Collection EMPTY_COLLECTION = new ArrayList (); 135 136 public abstract void refresh(); 137 138 public abstract String getSelectedListID(); 139 140 public abstract void setSelectedEntityList(String entityListID); 141 142 private void addEntityList(EntityList el) 143 { 144 if(!entityLists.containsValue(el)) 145 { 146 entityLists.put(el.getID(), el); 147 entityListAdded(el); 148 } 149 } 150 151 protected abstract void entityListAdded(EntityList el); 152 153 154 protected void showManagerViews(String entityListID) 155 { 156 try 157 { 158 Set entityManagers = EntityManagerViewRegistry.getSharedInstance().getManagerViewsForEntityID( 159 getViewID(), 160 entityListID 161 ); 162 163 if(entityManagers == null) 164 return; 165 166 if(activeManagementViewID != null) 167 { 168 if(entityManagers.contains(activeManagementViewID)) 169 return; 170 } 171 172 if (entityManagers != null) { 173 for (Iterator iter = entityManagers.iterator(); iter.hasNext();) { 174 String viewID = (String ) iter.next(); 175 getViewSite().getPage().showView(viewID); 176 activeManagementViewID = viewID; 177 } 178 } 179 } 180 catch (PartInitException e) 181 { 182 throw new RuntimeException (e); 183 } 184 } 185 186 protected void entityListSelected(String entityListID) { 187 showManagerViews(entityListID); 188 } 189 190 191 public void viewActivated(String viewID) 192 { 193 Set lists = EntityManagerViewRegistry.getSharedInstance().getManagedEntitiesForManagerViewID(viewID); 194 if(lists == null) 195 return; 196 Iterator i = lists.iterator(); 197 String showLid = null; 198 while(i.hasNext()) 199 { 200 String lid = (String )i.next(); 201 if(lid.equals(getSelectedListID())) 202 { 203 refresh(); 204 return; 205 } 206 else 207 showLid = lid; 208 } 209 if(showLid != null) 210 setSelectedEntityList(showLid); 211 } 212 213 protected Map getEntityLists() { 214 return entityLists; 215 } 216 217 public void dispose() 218 { 219 super.dispose(); 220 getViewSite().getPage().removePartListener(emvListener); 221 } 222 223 } 224 | Popular Tags |