Revision 7971

View differences:

trunk/frameworks/_fwAndami/src/com/iver/andami/preferences/GenericDlgPreferences.java
216 216
		super.add(getJSplitPaneCenter(), java.awt.BorderLayout.CENTER);
217 217
		getJSplitPaneCenter().setLeftComponent(getJScrollPane());
218 218
		getJSplitPaneCenter().setRightComponent(getJPanelNorth());
219

  
220

  
221

  
222 219
		treeModel = new DefaultTreeModel(root);
223 220
	}
224 221

  
......
283 280
	 */
284 281
	private JTree getJTreePlugins() {
285 282
		if (jTreePlugins == null) {
286
			jTreePlugins = new JTree() {
287
				public void repaint() {
288
					if (dirtyTree) {
289
						// rebuild page tree
290
						ArrayList prefList = new ArrayList(preferences.values());
291
						ArrayList alreadyAdded = new ArrayList();
292
						DefaultTreeModel model = new DefaultTreeModel(root);
293
						while (prefList.size()>0) {
294
							IPreference pref = (IPreference) prefList.get(0);
295
							while (pref.getParentID() != null &&
296
									!alreadyAdded.contains(preferences.get(pref.getParentID()))) {
297
								pref = (IPreference) preferences.get(pref.getParentID());
298
							}
299
							doInsertNode(model, pref);
300
							prefList.remove(pref);
301
							alreadyAdded.add(pref);
302
						}
303
						treeModel = model;
304
						jTreePlugins.setModel(model);
305
						dirtyTree = false;
306
					}
307

  
308
					super.repaint();
309
				}
310
			};
283
			jTreePlugins = new JTree();
311 284
			jTreePlugins.setRootVisible(false);
312 285
			MyTreeCellRenderer treeCellRenderer = new MyTreeCellRenderer();
313 286
			treeCellRenderer.setOpenIcon(null);
314 287
			treeCellRenderer.setClosedIcon(null);
315 288
			treeCellRenderer.setLeafIcon(null);
316 289

  
317

  
318

  
319 290
			jTreePlugins.setCellRenderer(treeCellRenderer);
320 291
			jTreePlugins.setShowsRootHandles(true);
321 292
			jTreePlugins
......
345 316
		preferences.put(page.getID(), page);
346 317
		page.initializeValues(); // init values from the last settings
347 318
		//page.storeValues();		 // apply them
319
		if (dirtyTree) {
320
			// rebuild page tree
321
			ArrayList prefList = new ArrayList(preferences.values());
322
			ArrayList alreadyAdded = new ArrayList();
323
			DefaultTreeModel model = new DefaultTreeModel(root);
324
			while (prefList.size()>0) {
325
				IPreference pref = (IPreference) prefList.get(0);
326
				while (pref.getParentID() != null &&
327
						!alreadyAdded.contains(preferences.get(pref.getParentID()))) {
328
					pref = (IPreference) preferences.get(pref.getParentID());
329
				}
330
				doInsertNode(model, pref);
331
				prefList.remove(pref);
332
				alreadyAdded.add(pref);
333
			}
334
			treeModel = model;
335
			jTreePlugins.setModel(model);
336
			dirtyTree = false;
337
		}
348 338
		doInsertNode(treeModel, page);
349 339
		getJTreePlugins().setModel(treeModel);
350
		dirtyTree = true;
340
		getJTreePlugins().repaint();
351 341
	}
352 342

  
353 343
	private DefaultMutableTreeNode findNode(String searchID)
......
373 363
	private void doInsertNode(DefaultTreeModel treeModel, IPreference page)
374 364
	{
375 365

  
366
		dirtyTree = ((page.getParentID() != null) && (findNode(page.getParentID())==null));
376 367
		if (findNode(page.getID()) != null) // It is already added
377 368
			return;
378 369
		if (page.getParentID() != null)

Also available in: Unified diff