1 19 20 package org.netbeans.modules.debugger.ui.views; 21 22 import java.beans.PropertyChangeEvent ; 23 import java.util.ArrayList ; 24 import java.util.List ; 25 import javax.swing.JComponent ; 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 55 public class ViewModelListener extends DebuggerManagerAdapter { 56 57 private String viewType; 58 private JComponent view; 59 private List models = new ArrayList (11); 60 61 private String propertiesHelpID = null; 65 66 ViewModelListener( 67 String viewType, 68 JComponent view, 69 String propertiesHelpID 70 ) { 71 this.viewType = viewType; 72 this.view = view; 73 this.propertiesHelpID = propertiesHelpID; 74 setUp(); 75 } 76 78 ViewModelListener ( 79 String viewType, 80 JComponent 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 e) { 107 updateModel (); 108 } 109 110 private List joinLookups(DebuggerEngine e, DebuggerManager dm, Class service) { 111 List es = e.lookup (viewType, service); 112 List 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 treeModels; 123 List treeModelFilters; 124 List treeExpansionModels; 125 List nodeModels; 126 List nodeModelFilters; 127 List tableModels; 128 List tableModelFilters; 129 List nodeActionsProviders; 130 List nodeActionsProviderFilters; 131 List columnModels; 132 List 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 Models.CompoundModel newModel = Models.createCompoundModel (models, propertiesHelpID); 181 182 Models.setModelsToView ( 183 view, 184 newModel 185 ); 186 188 } 189 190 191 193 private static class EmptyModel implements NodeModel { 194 public EmptyModel () { 195 } 196 197 public String getDisplayName (Object node) throws UnknownTypeException { 198 if (node == TreeModel.ROOT) { 199 return "Name"; } 201 throw new UnknownTypeException (node); 202 } 203 204 public String getIconBase (Object 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 getShortDescription (Object 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 |