package com.mobilesorcery.sdk.ui.internal.properties;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import com.mobilesorcery.sdk.core.MoSyncBuilder;
import com.mobilesorcery.sdk.core.ParameterResolver;
import com.mobilesorcery.sdk.core.build.CommandLineBuildStep;
import com.mobilesorcery.sdk.core.build.CommandLineBuildStep.Factory;
import com.mobilesorcery.sdk.core.build.CopyBuildResultBuildStep;
import com.mobilesorcery.sdk.ui.BuildConfigurationsContentProvider;
import com.mobilesorcery.sdk.ui.BuildConfigurationsLabelProvider;
import com.mobilesorcery.sdk.ui.BuildStepEditor;
import com.mobilesorcery.sdk.ui.ParameterResolverContentProvider;
import com.mobilesorcery.sdk.ui.UIUtils;
import com.mobilesorcery.sdk.ui.UpdateListener;
import com.mobilesorcery.sdk.ui.UpdateListener.IUpdatableControl;
public class CopyBuildStepEditor extends BuildStepEditor implements IUpdatableControl {
private Button suppressCopying;
private ComboViewer cfgs;
private Button allButton;
private Button oneButton;
private CopyBuildResultBuildStep.Factory getFactory() {
return (CopyBuildResultBuildStep.Factory) factory;
}
@Override
public void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Edit Copy Build Result Build Step");
}
@Override
public Control createDialogArea(Composite parent) {
UpdateListener listener = new UpdateListener(this);
Composite main = (Composite) super.createDialogArea(parent);
main.setLayoutData(new GridData(GridData.FILL));
main.setLayout(new GridLayout(2, false));
suppressCopying = new Button(main, SWT.CHECK);
suppressCopying.setText("&Do not copy to release package folder");
suppressCopying.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, true, false, 2, 1));
allButton = new Button(main, SWT.RADIO);
allButton.setText("&Build All Configurations");
allButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, true, false, 2, 1));
oneButton = new Button(main, SWT.RADIO);
oneButton.setText("&Build Only this Configuration:");
BuildConfigurationsContentProvider cp = new BuildConfigurationsContentProvider(project);
cfgs = new ComboViewer(main, SWT.READ_ONLY);
cfgs.setContentProvider(cp);
cfgs.setLabelProvider(new BuildConfigurationsLabelProvider(project));
cfgs.setInput(project);
cfgs.getControl().addListener(SWT.Selection, listener);
suppressCopying.addListener(SWT.Selection, listener);
allButton.addListener(SWT.Selection, listener);
oneButton.addListener(SWT.Selection, listener);
suppressCopying.setSelection(!getFactory().isActive());
String cfgId = getFactory().getConfigurationId();
if (cfgId != null) {
cfgs.setSelection(new StructuredSelection(cfgId));
}
allButton.setSelection(cfgId == null);
oneButton.setSelection(cfgId != null);
return main;
}
@Override
public void updateUI() {
boolean enableCfgs = !suppressCopying.getSelection();
cfgs.getControl().setEnabled(enableCfgs && oneButton.getSelection());
allButton.setEnabled(enableCfgs);
oneButton.setEnabled(enableCfgs);
boolean isValid = !oneButton.getSelection() || getCfgId() != null;
getButton(Dialog.OK).setEnabled(isValid);
}
private String getCfgId() {
String cfgId = (String) ((IStructuredSelection) cfgs.getSelection()).getFirstElement();
return cfgId;
}
@Override
public void okPressed() {
boolean useOne = oneButton.getSelection();
getFactory().setConfigurationId(useOne ? getCfgId() : null);
getFactory().setActive(!suppressCopying.getSelection());
super.okPressed();
}
}