/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Control;
/**
*
* @author sundl
*/
public abstract class PrefARESElementContentProvider extends ARESElementContentProvider {
protected TreeViewer viewer;
protected Object input;
private IPropertyChangeListener propertyListener;
public PrefARESElementContentProvider() {
IPreferenceStore store = ARESUI.getDefault().getPreferenceStore();
propertyListener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
propertyChanged(event);
}
};
store.addPropertyChangeListener(propertyListener);
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = (TreeViewer)viewer;
this.input = newInput;
super.inputChanged(viewer, oldInput, newInput);
}
protected abstract void propertyChanged(PropertyChangeEvent event);
protected void safeRefresh() {
Control ctrl = viewer.getTree();
if (!ctrl.isDisposed()) {
if (ctrl.getDisplay().getThread() == Thread.currentThread()) {
refresh();
} else {
viewer.getTree().getDisplay().asyncExec(new Runnable() {
public void run() {
refresh();
}
});
}
}
}
protected void refresh() {
viewer.getTree().setRedraw(false);
viewer.refresh();
viewer.getTree().setRedraw(true);
}
@Override
public void dispose() {
super.dispose();
IPreferenceStore store = ARESUI.getDefault().getPreferenceStore();
store.removePropertyChangeListener(propertyListener);
}
}