package com.mobilesorcery.sdk.ui.internal;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.core.MoSyncTool;
import com.mobilesorcery.sdk.core.Util;
import com.mobilesorcery.sdk.ui.MosyncUIPlugin;
import com.mobilesorcery.sdk.ui.internal.properties.MoSyncProjectPropertyPage;
public class LegacyProfileViewOpener implements PropertyChangeListener {
private static final String LEGACY_PROFILE_INHIBIT_AUTO_OPEN_PREF = "legacy.profile.inhibit.auto.open";
@Override
public void propertyChange(PropertyChangeEvent event) {
final MoSyncProject[] project = new MoSyncProject[1];
if (event.getPropertyName() == MoSyncProject.PROFILE_MANAGER_TYPE_KEY) {
project[0] = (MoSyncProject) event.getSource();
}
if (event.getPropertyName() == MosyncUIPlugin.CURRENT_PROJECT_CHANGED || project[0] != null) {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
IWorkbenchWindow wWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IPerspectiveDescriptor perspective = wWindow.getActivePage().getPerspective();
boolean introShowing = PlatformUI.getWorkbench().getIntroManager().getIntro() != null;
if (perspective == null || !Util.equals(perspective.getId(), "com.mobilesorcery.ui.perspective") || introShowing) {
// We are only interested if we are in the mosync perspective; the best option
// in 99.99% of the cases.
return;
}
MoSyncProject currentProject = project[0];
if (currentProject == null) {
currentProject = MosyncUIPlugin.getDefault().getCurrentlySelectedProject(wWindow);
}
if (currentProject != null && currentProject.getProfileManagerType() == MoSyncTool.LEGACY_PROFILE_TYPE) {
try {
wWindow.getActivePage().showView("com.mobilesorcery.sdk.finalizer.ui.view");
wWindow.getActivePage().showView("com.mobilesorcery.sdk.profiles.ui.view");
} catch (PartInitException e) {
CoreMoSyncPlugin.getDefault().log(e);
}
setActive(false);
MosyncUIPlugin.getDefault().removeListener(LegacyProfileViewOpener.this);
}
}
});
}
}
public boolean isActive() {
return !MosyncUIPlugin.getDefault().getPreferenceStore().getBoolean(LEGACY_PROFILE_INHIBIT_AUTO_OPEN_PREF);
}
public void setActive(boolean active) {
MosyncUIPlugin.getDefault().getPreferenceStore().setValue(LEGACY_PROFILE_INHIBIT_AUTO_OPEN_PREF, !active);
}
}