package com.mobilesorcery.sdk.ui.internal.properties;
import java.io.IOException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.util.Policy;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import com.mobilesorcery.sdk.core.MoSyncBuilder;
import com.mobilesorcery.sdk.core.PrivilegedAccess;
import com.mobilesorcery.sdk.core.build.BuildSequence;
import com.mobilesorcery.sdk.ui.MoSyncPropertyPage;
import com.mobilesorcery.sdk.ui.MosyncUIPlugin;
import com.mobilesorcery.sdk.ui.SimpleListEditor;
public class BuildStepsPropertyPage extends MoSyncPropertyPage {
public BuildStepsPropertyPage() {
super(false);
}
private BuildStepListEditor steps;
@Override
protected Control createContents(Composite parent) {
steps = new BuildStepListEditor(parent, SimpleListEditor.REARRANGEABLE);
steps.setProject(getProject());
BuildSequence sequence = new BuildSequence(getProject());
steps.setInput(sequence.getBuildStepFactories());
return steps;
}
@Override
public boolean performOk() {
BuildSequence newSequence = new BuildSequence(getProject());
try {
newSequence.apply(steps.getEditedInput());
boolean requiresPrivilegedAccess = MoSyncBuilder.requiresPrivilegedAccess(newSequence);
// We always auto-grant access for the user
PrivilegedAccess.getInstance().grantAccess(getProject(), requiresPrivilegedAccess);
} catch (IOException e) {
Policy.getStatusHandler().show(new Status(IStatus.ERROR, MosyncUIPlugin.PLUGIN_ID, e.getMessage(), e), "Could not save build step info");
return false;
}
return super.performOk();
}
@Override
public void performDefaults() {
BuildSequence defaultSequence = new BuildSequence(getProject());
defaultSequence.setToDefault();
steps.setInput(defaultSequence.getBuildStepFactories());
}
}