package com.mobilesorcery.sdk.ui.internal.actions;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.ui.MosyncUIPlugin;
import com.mobilesorcery.sdk.ui.UpdateListener.IUpdatableControl;
public abstract class MoSyncProjectWidget extends WorkbenchWindowControlContribution implements
PropertyChangeListener, IUpdatableControl {
protected MoSyncProject project;
protected MoSyncProject getProject() {
return project;
}
protected void noProjectSelected() {
}
@Override
public void propertyChange(PropertyChangeEvent event) {
// Project changed
if (shouldUpdateProject(event)) {
project = MosyncUIPlugin.getDefault().getCurrentlySelectedProject(getWorkbenchWindow());
getWorkbenchWindow().getShell().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
updateUI();
}
});
}
}
protected abstract boolean shouldUpdateProject(PropertyChangeEvent event);
@Override
public void dispose() {
detachListeners();
super.dispose();
}
protected void attachListeners() {
MosyncUIPlugin.getDefault().addListener(this);
MoSyncProject.addGlobalPropertyChangeListener(this);
}
protected void detachListeners() {
MosyncUIPlugin.getDefault().removeListener(this);
MoSyncProject.removeGlobalPropertyChangeListener(this);
}
}