1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 18:56:02 +02:00

[172492] patch from Uwe to make tree viewer safe

This commit is contained in:
David McKnight 2007-02-01 17:30:41 +00:00
parent 461e061e8f
commit fa408d21d5
3 changed files with 153 additions and 4 deletions

View file

@ -51,7 +51,6 @@ import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.SameShellProvider;
import org.eclipse.rse.core.SystemAdapterHelpers;
@ -149,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 TreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener,
public class SystemView extends SystemViewSafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener,
ISelectionChangedListener, ISelectionProvider, ITreeViewerListener, ISystemResourceChangeEvents, ISystemDeleteTarget, ISystemRenameTarget, ISystemSelectAllTarget
{

View file

@ -51,7 +51,6 @@ import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.SameShellProvider;
import org.eclipse.rse.core.SystemAdapterHelpers;
@ -149,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 TreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener,
public class SystemView extends SystemViewSafeTreeViewer implements ISystemTree, ISystemResourceChangeListener, ISystemRemoteChangeListener, IMenuListener,
ISelectionChangedListener, ISelectionProvider, ITreeViewerListener, ISystemResourceChangeEvents, ISystemDeleteTarget, ISystemRenameTarget, ISystemSelectAllTarget
{

View file

@ -0,0 +1,151 @@
/********************************************************************************
* Copyright (c) 2007 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Uwe Stieber (Wind River) - initial API and implementation.
********************************************************************************/
package org.eclipse.rse.ui.view;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Item;
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.
*/
public class SystemViewSafeTreeViewer extends TreeViewer {
/**
* Constructor.
*
* @param parent The parant control.
*/
public SystemViewSafeTreeViewer(Composite parent) {
super(parent);
}
/**
* Constructor.
*
* @param tree The tree control.
*/
public SystemViewSafeTreeViewer(Tree tree) {
super(tree);
}
/**
* Constructor.
*
* @param parent The parent control.
* @param style The SWT style bits passed to the tree creation.
*/
public SystemViewSafeTreeViewer(Composite parent, int style) {
super(parent, style);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#doUpdateItem(org.eclipse.swt.widgets.Item, java.lang.Object)
*/
protected void doUpdateItem(Item item, Object element) {
if (item != null && item.isDisposed()) return;
super.doUpdateItem(item, element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.AbstractTreeViewer#doUpdateItem(org.eclipse.swt.widgets.Widget, java.lang.Object, boolean)
*/
protected void doUpdateItem(Widget widget, Object element, boolean fullMap) {
if (widget != null && widget.isDisposed()) return;
super.doUpdateItem(widget, element, fullMap);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getItemCount(org.eclipse.swt.widgets.Control)
*/
protected int getItemCount(Control widget) {
if (widget != null && widget.isDisposed()) return 0;
return super.getItemCount(widget);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getItemCount(org.eclipse.swt.widgets.Item)
*/
protected int getItemCount(Item item) {
if (item != null && item.isDisposed()) return 0;
return super.getItemCount(item);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#showItem(org.eclipse.swt.widgets.Item)
*/
protected void showItem(Item item) {
if (item != null && item.isDisposed()) return;
super.showItem(item);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#updatePlus(org.eclipse.swt.widgets.Item, java.lang.Object)
*/
protected void updatePlus(Item item, Object element) {
if (item != null && item.isDisposed()) return;
super.updatePlus(item, element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#createChildren(org.eclipse.swt.widgets.Widget)
*/
protected void createChildren(Widget widget) {
if (widget != null && widget.isDisposed()) return;
super.createChildren(widget);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getChild(org.eclipse.swt.widgets.Widget, int)
*/
protected Item getChild(Widget widget, int index) {
if (widget != null && widget.isDisposed()) return null;
return super.getChild(widget, index);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getChildren(org.eclipse.swt.widgets.Widget)
*/
protected Item[] getChildren(Widget widget) {
if (widget != null && widget.isDisposed()) return new Item[0];
return super.getChildren(widget);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getExpanded(org.eclipse.swt.widgets.Item)
*/
protected boolean getExpanded(Item item) {
if (item != null && item.isDisposed()) return false;
return super.getExpanded(item);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getItems(org.eclipse.swt.widgets.Item)
*/
protected Item[] getItems(Item item) {
if (item != null && item.isDisposed()) return new Item[0];
return super.getItems(item);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.TreeViewer#getParentItem(org.eclipse.swt.widgets.Item)
*/
protected Item getParentItem(Item item) {
if (item != null && item.isDisposed()) return null;
return super.getParentItem(item);
}
}