|
Lines 247-260
Link Here
|
| 247 |
// System.out.println("node changed notified"); |
247 |
// System.out.println("node changed notified"); |
| 248 |
// System.out.println("selection before = " + |
248 |
// System.out.println("selection before = " + |
| 249 |
// ((StructuredViewer)view).getSelection()); |
249 |
// ((StructuredViewer)view).getSelection()); |
| 250 |
if (node instanceof AttributeList && isShowLogicalOrder()) { |
250 |
if (node instanceof AttributeList) { |
| 251 |
// in this case, we are showing attributes under the element. |
251 |
// attributes are shown under elements, refresh the element object instead |
| 252 |
// refresh the element object instead |
|
|
| 253 |
Iterator iter = node.getDTDFile().getNodes().iterator(); |
252 |
Iterator iter = node.getDTDFile().getNodes().iterator(); |
| 254 |
while (iter.hasNext()) { |
253 |
while (iter.hasNext()) { |
| 255 |
DTDNode currentNode = (DTDNode) iter.next(); |
254 |
final DTDNode currentNode = (DTDNode) iter.next(); |
| 256 |
if (currentNode.getName().equals(node.getName()) && currentNode instanceof Element) { |
255 |
if (currentNode.getName().equals(node.getName()) && currentNode instanceof Element) { |
| 257 |
((StructuredViewer) fViewer).refresh(currentNode, true); |
256 |
|
|
|
257 |
//refresh tree |
| 258 |
fViewer.getControl().getDisplay().asyncExec(new Runnable() { |
| 259 |
public void run() { |
| 260 |
((StructuredViewer) fViewer).refresh(currentNode, true); |
| 261 |
} |
| 262 |
}); |
| 258 |
} |
263 |
} |
| 259 |
} // end of while () |
264 |
} // end of while () |
| 260 |
} |
265 |
} |
|
Lines 315-359
Link Here
|
| 315 |
oldSelectedNode = (DTDNode) firstObj; |
320 |
oldSelectedNode = (DTDNode) firstObj; |
| 316 |
} |
321 |
} |
| 317 |
|
322 |
|
| 318 |
final AbstractTreeViewer abstractTreeViewer = (AbstractTreeViewer) fViewer; |
323 |
this.updateTree(event); |
| 319 |
for (Iterator it = event.getNodes().iterator(); it.hasNext();) { |
|
|
| 320 |
Object node = it.next(); |
| 321 |
final Object parent = getParent(node); |
| 322 |
// Bug 111100 - If it is a top level node (ie. parent is a |
| 323 |
// DTDFile), |
| 324 |
// insert the node directly to improve performance |
| 325 |
if (parent instanceof DTDFile) { |
| 326 |
Object[] objs = getChildren(parent); |
| 327 |
for (int i = 0; i < objs.length; i++) { |
| 328 |
if (objs[i] == node) { |
| 329 |
abstractTreeViewer.insert(parent, node, i); |
| 330 |
break; |
| 331 |
} |
| 332 |
} |
| 333 |
} |
| 334 |
// If the parent node is not a DTDFile, just refresh the |
| 335 |
// parent for now |
| 336 |
else if (parent != null) { |
| 337 |
fViewer.getControl().getDisplay().asyncExec(new Runnable() { |
| 338 |
public void run() { |
| 339 |
if (fViewer.getControl().isDisposed()) |
| 340 |
return; |
| 341 |
abstractTreeViewer.refresh(parent, true); |
| 342 |
} |
| 343 |
}); |
| 344 |
} |
| 345 |
// You should never reach this block, if you do, just refresh |
| 346 |
// the whole tree |
| 347 |
else { |
| 348 |
fViewer.getControl().getDisplay().asyncExec(new Runnable() { |
| 349 |
public void run() { |
| 350 |
if (fViewer.getControl().isDisposed()) |
| 351 |
return; |
| 352 |
abstractTreeViewer.refresh(true); |
| 353 |
} |
| 354 |
}); |
| 355 |
} |
| 356 |
} |
| 357 |
|
324 |
|
| 358 |
Iterator iter = event.getNodes().iterator(); |
325 |
Iterator iter = event.getNodes().iterator(); |
| 359 |
List newSelection = new ArrayList(); |
326 |
List newSelection = new ArrayList(); |
|
Lines 379-385
Link Here
|
| 379 |
abstractTreeViewer.remove(iter.next()); |
346 |
abstractTreeViewer.remove(iter.next()); |
| 380 |
} |
347 |
} |
| 381 |
} |
348 |
} |
| 382 |
|
349 |
|
|
|
350 |
this.updateTree(event); |
| 383 |
} |
351 |
} |
| 384 |
|
352 |
|
| 385 |
/** |
353 |
/** |
|
Lines 395-398
Link Here
|
| 395 |
logicalNodeLists = null; |
363 |
logicalNodeLists = null; |
| 396 |
} |
364 |
} |
| 397 |
} |
365 |
} |
|
|
366 |
|
| 367 |
/** |
| 368 |
* <p>Used to update the tree after a node event such as a node added or removed.</p> |
| 369 |
* @param event the {@link NodesEvent} that caused the tree to need updating |
| 370 |
*/ |
| 371 |
private void updateTree(NodesEvent event) { |
| 372 |
final AbstractTreeViewer abstractTreeViewer = (AbstractTreeViewer) fViewer; |
| 373 |
for (Iterator it = event.getNodes().iterator(); it.hasNext();) { |
| 374 |
Object node = it.next(); |
| 375 |
final Object parent = getParent(node); |
| 376 |
// Bug 111100 - If it is a top level node (ie. parent is a |
| 377 |
// DTDFile), |
| 378 |
// insert the node directly to improve performance |
| 379 |
if (parent instanceof DTDFile) { |
| 380 |
Object[] objs = getChildren(parent); |
| 381 |
for (int i = 0; i < objs.length; i++) { |
| 382 |
if (objs[i] == node) { |
| 383 |
abstractTreeViewer.insert(parent, node, i); |
| 384 |
break; |
| 385 |
} |
| 386 |
} |
| 387 |
} |
| 388 |
// If the parent node is not a DTDFile, just refresh the |
| 389 |
// parent for now |
| 390 |
else if (parent != null) { |
| 391 |
fViewer.getControl().getDisplay().asyncExec(new Runnable() { |
| 392 |
public void run() { |
| 393 |
if (fViewer.getControl().isDisposed()) |
| 394 |
return; |
| 395 |
abstractTreeViewer.refresh(parent, true); |
| 396 |
} |
| 397 |
}); |
| 398 |
} |
| 399 |
// You should never reach this block, if you do, just refresh |
| 400 |
// the whole tree |
| 401 |
else { |
| 402 |
fViewer.getControl().getDisplay().asyncExec(new Runnable() { |
| 403 |
public void run() { |
| 404 |
if (fViewer.getControl().isDisposed()) |
| 405 |
return; |
| 406 |
abstractTreeViewer.refresh(true); |
| 407 |
} |
| 408 |
}); |
| 409 |
} |
| 410 |
} |
| 411 |
} |
| 398 |
} |
412 |
} |