diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java index 106ee1c985a..b9221de2ef6 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java @@ -148,7 +148,7 @@ import org.eclipse.ui.views.framelist.GoIntoAction; /* * At one time implemented the following as well: MenuListener, IDoubleClickListener, ArmListener, IWireEventTarget */ -public class SystemView extends SystemViewSafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener, +public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener, ISelectionChangedListener, ISelectionProvider, ITreeViewerListener, ISystemResourceChangeEvents, ISystemDeleteTarget, ISystemRenameTarget, ISystemSelectAllTarget { diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemViewSafeTreeViewer.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SafeTreeViewer.java similarity index 84% rename from rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemViewSafeTreeViewer.java rename to rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SafeTreeViewer.java index b37b908659f..3c05dfc998f 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemViewSafeTreeViewer.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SafeTreeViewer.java @@ -10,6 +10,7 @@ ********************************************************************************/ package org.eclipse.rse.ui.view; +import org.eclipse.jface.viewers.IDelayedLabelDecorator; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -18,19 +19,28 @@ import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Widget; /** - * Delayed label provider can trigger tree item updates called in the - * viewer after the tree item itself got disposed. This happens especially - * if items appear and disappear very fast within the tree which then will - * lead to nasty SWT Widget already disposed exceptions. + * The SafeTreeViewer wraps an SWT TreeViewer in order to avoid + * exceptions due to accessing already disposed items. + * + * The main reason for this wrapping is that delayed label providers + * (i.e. instances of {@link IDelayedLabelDecorator}) can trigger tree + * item updates called in the viewer after the tree item itself got + * disposed already. This happens especially if items appear and + * disappear very fast within the tree which then will lead to nasty + * SWT Widget already disposed exceptions. + * + * Clients may subclass this class. + * + * @since RSE 2.0 */ -public class SystemViewSafeTreeViewer extends TreeViewer { +public class SafeTreeViewer extends TreeViewer { /** * Constructor. * * @param parent The parant control. */ - public SystemViewSafeTreeViewer(Composite parent) { + public SafeTreeViewer(Composite parent) { super(parent); } @@ -39,7 +49,7 @@ public class SystemViewSafeTreeViewer extends TreeViewer { * * @param tree The tree control. */ - public SystemViewSafeTreeViewer(Tree tree) { + public SafeTreeViewer(Tree tree) { super(tree); } @@ -49,7 +59,7 @@ public class SystemViewSafeTreeViewer extends TreeViewer { * @param parent The parent control. * @param style The SWT style bits passed to the tree creation. */ - public SystemViewSafeTreeViewer(Composite parent, int style) { + public SafeTreeViewer(Composite parent, int style) { super(parent, style); } diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemView.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemView.java index 106ee1c985a..b9221de2ef6 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemView.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/SystemView.java @@ -148,7 +148,7 @@ import org.eclipse.ui.views.framelist.GoIntoAction; /* * At one time implemented the following as well: MenuListener, IDoubleClickListener, ArmListener, IWireEventTarget */ -public class SystemView extends SystemViewSafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener, +public class SystemView extends SafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener, ISelectionChangedListener, ISelectionProvider, ITreeViewerListener, ISystemResourceChangeEvents, ISystemDeleteTarget, ISystemRenameTarget, ISystemSelectAllTarget {