package com.mobilesorcery.sdk.ui.internal.properties;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.core.MoSyncTool;
import com.mobilesorcery.sdk.core.PropertyUtil;
import com.mobilesorcery.sdk.ui.MoSyncPropertyPage;
import com.mobilesorcery.sdk.ui.UIUtils;
public class ProfileDBPropertyPage extends MoSyncPropertyPage {
private final class ProfileTypeListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getPropertyName() == MoSyncProject.PROFILE_MANAGER_TYPE_KEY) {
updateProfileTypeButton();
}
}
}
private Button profileTypeButton;
private ProfileTypeListener profileTypeListener;
public ProfileDBPropertyPage() {
super(true);
}
@Override
protected Control createContents(Composite parent) {
profileTypeListener = new ProfileTypeListener();
getProject().addPropertyChangeListener(profileTypeListener);
Composite main = new Composite(parent, SWT.NONE);
main.setLayout(UIUtils.newPrefsLayout(1));
profileTypeButton = new Button(main, SWT.CHECK);
profileTypeButton
.setText("Use &platform based profiles (new projects always uses this)");
updateProfileTypeButton();
return main;
}
public void dispose() {
getProject().removePropertyChangeListener(profileTypeListener);
super.dispose();
}
private void updateProfileTypeButton() {
Integer pmt = getProject().getProfileManagerType();
profileTypeButton.setSelection(pmt != null
&& pmt == MoSyncTool.DEFAULT_PROFILE_TYPE);
}
@Override
public boolean performOk() {
int newProfileManagerType = profileTypeButton
.getSelection() ? MoSyncTool.DEFAULT_PROFILE_TYPE
: MoSyncTool.LEGACY_PROFILE_TYPE;
boolean changeToDeviceBased = getProject().getProfileManagerType() == MoSyncTool.DEFAULT_PROFILE_TYPE &&
newProfileManagerType == MoSyncTool.LEGACY_PROFILE_TYPE;
if (!changeToDeviceBased || MessageDialog.openConfirm(getShell(), "Change of profile type", "Changing to using device based profiles may cause some project functionality to stop working. Continue anyway?")) {
getProject().setProfileManagerType(newProfileManagerType);
return super.performOk();
} else {
return false;
}
}
@Override
public void performDefaults() {
profileTypeButton.setSelection(true);
}
}