private void initializeListeners() { ITargetChangedListener listener = new ITargetChangedListener() { public void contentsChanged( ITargetDefinition definition, Object source, boolean resolve, boolean forceResolve) { boolean setCancelled = false; if (forceResolve || (resolve && !definition.isResolved())) { try { getContainer() .run( true, true, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { getTargetDefinition().resolve(new ResolutionProgressMonitor(monitor)); if (monitor.isCanceled()) { throw new InterruptedException(); } } }); } catch (InvocationTargetException e) { PDECore.log(e); } catch (InterruptedException e) { setCancelled = true; } } if (fContentTree != source) { if (setCancelled) { fContentTree .setCancelled(); // If the user cancelled the resolve, change the text to say it // was cancelled } else { fContentTree.setInput(definition); } } if (fLocationTree != source) { fLocationTree.setInput(definition); } if (definition.isResolved() && definition.getStatus().getSeverity() == IStatus.ERROR) { fLocationTab.setImage( PlatformUI.getWorkbench() .getSharedImages() .getImage(ISharedImages.IMG_OBJS_ERROR_TSK)); } else { fLocationTab.setImage(null); } } }; fContentTree.addTargetChangedListener(listener); fLocationTree.addTargetChangedListener(listener); }