KickJava   Java API By Example, From Geeks To Geeks.

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

58 class ViewModelListener extends DebuggerManagerAdapter {
59     
60     private static boolean verbose =
61         System.getProperty ("netbeans.debugger.models") != null;
62
63     private String JavaDoc viewType;
64     private JComponent JavaDoc view;
65     private List JavaDoc models = new ArrayList JavaDoc(11);
66     
67     
68     ViewModelListener (
69         String JavaDoc viewType,
70         JComponent JavaDoc view
71     ) {
72         this.viewType = viewType;
73         this.view = view;
74         setUp();
75     }
76     
77     void setUp() {
78         DebuggerManager.getDebuggerManager ().addDebuggerListener (
79             DebuggerManager.PROP_CURRENT_ENGINE,
80             this
81         );
82         updateModel ();
83     }
84
85     void destroy () {
86         DebuggerManager.getDebuggerManager ().removeDebuggerListener (
87             DebuggerManager.PROP_CURRENT_ENGINE,
88             this
89         );
90         Models.setModelsToView (
91             view,
92             Models.EMPTY_MODEL
93         );
94     }
95
96     public void propertyChange (PropertyChangeEvent JavaDoc e) {
97         updateModel ();
98     }
99     
100     private List JavaDoc joinLookups(DebuggerEngine e, DebuggerManager dm, Class JavaDoc service) {
101         List JavaDoc es = e.lookup (viewType, service);
102         List JavaDoc ms = dm.lookup(viewType, service);
103         ms.removeAll(es);
104         es.addAll(ms);
105         return es;
106     }
107     
108     private synchronized void updateModel () {
109         DebuggerManager dm = DebuggerManager.getDebuggerManager ();
110         DebuggerEngine e = dm.getCurrentEngine ();
111         
112         List JavaDoc treeModels;
113         List JavaDoc treeModelFilters;
114         List JavaDoc treeExpansionModels;
115         List JavaDoc nodeModels;
116         List JavaDoc nodeModelFilters;
117         List JavaDoc tableModels;
118         List JavaDoc tableModelFilters;
119         List JavaDoc nodeActionsProviders;
120         List JavaDoc nodeActionsProviderFilters;
121         List JavaDoc columnModels;
122         List JavaDoc mm;
123         if (e != null) {
124             treeModels = joinLookups(e, dm, TreeModel.class);
125             treeModelFilters = joinLookups(e, dm, TreeModelFilter.class);
126             treeExpansionModels = joinLookups(e, dm, TreeExpansionModel.class);
127             nodeModels = joinLookups(e, dm, NodeModel.class);
128             nodeModelFilters = joinLookups(e, dm, NodeModelFilter.class);
129             tableModels = joinLookups(e, dm, TableModel.class);
130             tableModelFilters = joinLookups(e, dm, TableModelFilter.class);
131             nodeActionsProviders = joinLookups(e, dm, NodeActionsProvider.class);
132             nodeActionsProviderFilters = joinLookups(e, dm, NodeActionsProviderFilter.class);
133             columnModels = joinLookups(e, dm, ColumnModel.class);
134             mm = joinLookups(e, dm, Model.class);
135         } else {
136             treeModels = dm.lookup (viewType, TreeModel.class);
137             treeModelFilters = dm.lookup (viewType, TreeModelFilter.class);
138             treeExpansionModels = dm.lookup (viewType, TreeExpansionModel.class);
139             nodeModels = dm.lookup (viewType, NodeModel.class);
140             nodeModelFilters = dm.lookup (viewType, NodeModelFilter.class);
141             tableModels = dm.lookup (viewType, TableModel.class);
142             tableModelFilters = dm.lookup (viewType, TableModelFilter.class);
143             nodeActionsProviders = dm.lookup (viewType, NodeActionsProvider.class);
144             nodeActionsProviderFilters = dm.lookup (viewType, NodeActionsProviderFilter.class);
145             columnModels = dm.lookup (viewType, ColumnModel.class);
146             mm = dm.lookup (viewType, Model.class);
147         }
148         
149         models.clear();
150         models.add(treeModels);
151         models.add(treeModelFilters);
152         models.add(treeExpansionModels);
153         models.add(nodeModels);
154         models.add(nodeModelFilters);
155         models.add(tableModels);
156         models.add(tableModelFilters);
157         models.add(nodeActionsProviders);
158         models.add(nodeActionsProviderFilters);
159         models.add(columnModels);
160         models.add(mm);
161         
162         Models.setModelsToView (
163             view,
164             Models.createCompoundModel (models)
165         );
166     }
167
168     
169     // innerclasses ............................................................
170

171     private static class EmptyModel implements NodeModel {
172         
173         public String JavaDoc getDisplayName (Object JavaDoc node) throws UnknownTypeException {
174             if (node == TreeModel.ROOT) {
175                 return "Name"; // TODO: Localized ???
176
}
177             throw new UnknownTypeException (node);
178         }
179         
180         public String JavaDoc getIconBase (Object JavaDoc node) throws UnknownTypeException {
181             if (node == TreeModel.ROOT) {
182                 return "org/netbeans/modules/debugger/resources/DebuggerTab";
183             }
184             throw new UnknownTypeException (node);
185         }
186         
187         public String JavaDoc getShortDescription (Object JavaDoc node)
188         throws UnknownTypeException {
189             throw new UnknownTypeException (node);
190         }
191         
192         public void addModelListener (ModelListener l) {}
193         public void removeModelListener (ModelListener l) {}
194     }
195 }
196
Popular Tags