KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > base > entitylist > AbstractEntityListView


1 /*
2  * Created on 05.11.2004
3  *
4  */

5 package com.nightlabs.base.entitylist;
6
7 import java.util.ArrayList JavaDoc;
8 import java.util.Collection JavaDoc;
9 import java.util.HashMap JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.Map JavaDoc;
12 import java.util.Set JavaDoc;
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 /**
22  * @author Niklas Schiffler <nick@nightlabs.de>
23  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
24  *
25  */

26 public abstract class AbstractEntityListView extends ViewPart implements EntityManagementViewStateChangedListener
27 {
28   
29     private Map JavaDoc entityLists;
30     private String JavaDoc activeManagementViewID;
31
32     /**
33      * Should return the ID of the extending view.
34      * Will be used to find EntityList and EntityManagerView registrations.
35      *
36      * @return This views ID.
37      */

38     public abstract String JavaDoc 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 JavaDoc o = partRef.getPart(false);
51         if(o instanceof EntityManagementView)
52             elv.viewActivated(partRef.getId());
53     }
54
55     public void partBroughtToTop(IWorkbenchPartReference partRef)
56     {
57 // System.out.println(partRef.getId() + " : brought to top");
58
}
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 // System.out.println(partRef.getId() + " : opened");
73
}
74
75     public void partHidden(IWorkbenchPartReference partRef)
76     {
77     }
78
79     public void partVisible(IWorkbenchPartReference partRef)
80     {
81 // System.out.println(partRef.getId() + " : visible");
82
}
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 JavaDoc();
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 JavaDoc registeredEntityLists = EntityListRegistry.getSharedInstance().getEntityLists(getViewID());
107         if (registeredEntityLists != null) {
108             int i = 0;
109             String JavaDoc selectEntityID = null;
110             for (Iterator JavaDoc 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     /**
125      * Should return a new SelectionChangeListener that
126      * will be notified when this views selection has changed.
127      * Null may be returned also.
128      *
129      * @return New ISelectionChangedListener or null
130      */

131     protected abstract ISelectionChangedListener createListChangeListener();
132     
133     
134     private static Collection JavaDoc EMPTY_COLLECTION = new ArrayList JavaDoc();
135     
136   public abstract void refresh();
137
138   public abstract String JavaDoc getSelectedListID();
139   
140   public abstract void setSelectedEntityList(String JavaDoc 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 JavaDoc entityListID)
155     {
156         try
157         {
158             Set JavaDoc 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 JavaDoc iter = entityManagers.iterator(); iter.hasNext();) {
174                     String JavaDoc viewID = (String JavaDoc) iter.next();
175                     getViewSite().getPage().showView(viewID);
176                     activeManagementViewID = viewID;
177                 }
178             }
179         }
180         catch (PartInitException e)
181         {
182             throw new RuntimeException JavaDoc(e);
183         }
184     }
185
186     protected void entityListSelected(String JavaDoc entityListID) {
187         showManagerViews(entityListID);
188     }
189     
190     
191     public void viewActivated(String JavaDoc viewID)
192     {
193         Set JavaDoc lists = EntityManagerViewRegistry.getSharedInstance().getManagedEntitiesForManagerViewID(viewID);
194         if(lists == null)
195             return;
196         Iterator JavaDoc i = lists.iterator();
197         String JavaDoc showLid = null;
198         while(i.hasNext())
199         {
200             String JavaDoc lid = (String JavaDoc)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 JavaDoc 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