KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > debugger > ui > views > ViewModelListener


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.debugger.ui.views;
21
22 import java.beans.PropertyChangeEvent JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import java.util.List JavaDoc;
25 import javax.swing.JComponent JavaDoc;
26
27 import org.netbeans.api.debugger.DebuggerEngine;
28 import org.netbeans.api.debugger.DebuggerManager;
29 import org.netbeans.api.debugger.DebuggerManagerAdapter;
30 import org.netbeans.spi.viewmodel.Model;
31 import org.netbeans.spi.viewmodel.Models;
32 import org.netbeans.spi.viewmodel.ColumnModel;
33 import org.netbeans.spi.viewmodel.TableModelFilter;
34 import org.netbeans.spi.viewmodel.NodeActionsProvider;
35 import org.netbeans.spi.viewmodel.NodeActionsProviderFilter;
36 import org.netbeans.spi.viewmodel.NodeModel;
37 import org.netbeans.spi.viewmodel.NodeModelFilter;
38 import org.netbeans.spi.viewmodel.TableModel;
39 import org.netbeans.spi.viewmodel.TreeExpansionModel;
40 import org.netbeans.spi.viewmodel.TreeModel;
41 import org.netbeans.spi.viewmodel.TreeModelFilter;
42 import org.netbeans.spi.viewmodel.ModelListener;
43 import org.netbeans.spi.viewmodel.UnknownTypeException;
44
45
46 /**
47  * This delegating CompoundModelImpl loads all models from DebuggerManager.
48  * getDefault ().getCurrentEngine ().lookup (viewType, ..) lookup.
49  *
50  * <p>
51  * This class is identical to org.netbeans.modules.debugger.jpda.ui.views.ViewModelListener.
52  *
53  * @author Jan Jancura
54  */

55 public class ViewModelListener extends DebuggerManagerAdapter {
56     
57     private String JavaDoc viewType;
58     private JComponent JavaDoc view;
59     private List JavaDoc models = new ArrayList JavaDoc(11);
60     
61     // <RAVE>
62
// Store the propertiesHelpID to pass to the Model object that is
63
// used in generating the nodes for the view
64
private String JavaDoc propertiesHelpID = null;
65     
66     ViewModelListener(
67         String JavaDoc viewType,
68         JComponent JavaDoc view,
69         String JavaDoc propertiesHelpID
70     ) {
71         this.viewType = viewType;
72         this.view = view;
73         this.propertiesHelpID = propertiesHelpID;
74         setUp();
75     }
76     // </RAVE>
77

78     ViewModelListener (
79         String JavaDoc viewType,
80         JComponent JavaDoc view
81     ) {
82         this.viewType = viewType;
83         this.view = view;
84         setUp();
85     }
86     
87     void setUp() {
88         DebuggerManager.getDebuggerManager ().addDebuggerListener (
89             DebuggerManager.PROP_CURRENT_ENGINE,
90             this
91         );
92         updateModel ();
93     }
94
95     void destroy () {
96         DebuggerManager.getDebuggerManager ().removeDebuggerListener (
97             DebuggerManager.PROP_CURRENT_ENGINE,
98             this
99         );
100         Models.setModelsToView (
101             view,
102             Models.EMPTY_MODEL
103         );
104     }
105     
106     public void propertyChange (PropertyChangeEvent JavaDoc e) {
107         updateModel ();
108     }
109     
110     private List JavaDoc joinLookups(DebuggerEngine e, DebuggerManager dm, Class JavaDoc service) {
111         List JavaDoc es = e.lookup (viewType, service);
112         List JavaDoc ms = dm.lookup(viewType, service);
113         ms.removeAll(es);
114         es.addAll(ms);
115         return es;
116     }
117     
118     private synchronized void updateModel () {
119         DebuggerManager dm = DebuggerManager.getDebuggerManager ();
120         DebuggerEngine e = dm.getCurrentEngine ();
121         
122         List JavaDoc treeModels;
123         List JavaDoc treeModelFilters;
124         List JavaDoc treeExpansionModels;
125         List JavaDoc nodeModels;
126         List JavaDoc nodeModelFilters;
127         List JavaDoc tableModels;
128         List JavaDoc tableModelFilters;
129         List JavaDoc nodeActionsProviders;
130         List JavaDoc nodeActionsProviderFilters;
131         List JavaDoc columnModels;
132         List JavaDoc mm;
133         if (e != null) {
134             treeModels = joinLookups(e, dm, TreeModel.class);
135             treeModelFilters = joinLookups(e, dm, TreeModelFilter.class);
136             treeExpansionModels = joinLookups(e, dm, TreeExpansionModel.class);
137             nodeModels = joinLookups(e, dm, NodeModel.class);
138             nodeModelFilters = joinLookups(e, dm, NodeModelFilter.class);
139             tableModels = joinLookups(e, dm, TableModel.class);
140             tableModelFilters = joinLookups(e, dm, TableModelFilter.class);
141             nodeActionsProviders = joinLookups(e, dm, NodeActionsProvider.class);
142             nodeActionsProviderFilters = joinLookups(e, dm, NodeActionsProviderFilter.class);
143             columnModels = joinLookups(e, dm, ColumnModel.class);
144             mm = joinLookups(e, dm, Model.class);
145         } else {
146             treeModels = dm.lookup (viewType, TreeModel.class);
147             treeModelFilters = dm.lookup (viewType, TreeModelFilter.class);
148             treeExpansionModels = dm.lookup (viewType, TreeExpansionModel.class);
149             nodeModels = dm.lookup (viewType, NodeModel.class);
150             nodeModelFilters = dm.lookup (viewType, NodeModelFilter.class);
151             tableModels = dm.lookup (viewType, TableModel.class);
152             tableModelFilters = dm.lookup (viewType, TableModelFilter.class);
153             nodeActionsProviders = dm.lookup (viewType, NodeActionsProvider.class);
154             nodeActionsProviderFilters = dm.lookup (viewType, NodeActionsProviderFilter.class);
155             columnModels = dm.lookup (viewType, ColumnModel.class);
156             mm = dm.lookup (viewType, Model.class);
157         }
158         
159         models.clear();
160         models.add(treeModels);
161         models.add(treeModelFilters);
162         models.add(treeExpansionModels);
163         models.add(nodeModels);
164         models.add(nodeModelFilters);
165         models.add(tableModels);
166         models.add(tableModelFilters);
167         models.add(nodeActionsProviders);
168         models.add(nodeActionsProviderFilters);
169         models.add(columnModels);
170         models.add(mm);
171         
172         // <RAVE>
173
// Store the propertiesHelpID in the tree model to be retrieved later
174
// by the TreeModelNode objects
175
// Models.setModelsToView (
176
// view,
177
// Models.createCompoundModel (models)
178
// );
179
// ====
180
Models.CompoundModel newModel = Models.createCompoundModel (models, propertiesHelpID);
181
182         Models.setModelsToView (
183             view,
184             newModel
185         );
186         // </RAVE>
187

188     }
189
190     
191     // innerclasses ............................................................
192

193     private static class EmptyModel implements NodeModel {
194         public EmptyModel () {
195         }
196         
197         public String JavaDoc getDisplayName (Object JavaDoc node) throws UnknownTypeException {
198             if (node == TreeModel.ROOT) {
199                 return "Name"; // TODO: Localized ???
200
}
201             throw new UnknownTypeException (node);
202         }
203         
204         public String JavaDoc getIconBase (Object JavaDoc node) throws UnknownTypeException {
205             if (node == TreeModel.ROOT) {
206                 return "org/netbeans/modules/debugger/resources/DebuggerTab";
207             }
208             throw new UnknownTypeException (node);
209         }
210         
211         public String JavaDoc getShortDescription (Object JavaDoc node)
212         throws UnknownTypeException {
213             throw new UnknownTypeException (node);
214         }
215         
216         public void addModelListener (ModelListener l) {}
217         public void removeModelListener (ModelListener l) {}
218     }
219 }
220
Popular Tags