package com.mobilesorcery.sdk.finalizer.ui.properties; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.core.resources.IProject; 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.Group; import org.eclipse.ui.IWorkbenchPropertyPage; import org.eclipse.ui.dialogs.PropertyPage; import com.mobilesorcery.sdk.core.MoSyncProject; import com.mobilesorcery.sdk.core.PropertyUtil; import com.mobilesorcery.sdk.finalizer.core.FinalizerParser; import com.mobilesorcery.sdk.ui.BuildConfigurationsContentProvider; import com.mobilesorcery.sdk.ui.BuildConfigurationsLabelProvider; // TODO: Auto-switch is not used; we'll keep this for a while as a placeholder public class FinalizerPropertyPage extends PropertyPage implements IWorkbenchPropertyPage, PropertyChangeListener { private Group configurationGroup; private Button changeConfiguration; private ComboViewer configurations; protected Control createContents(Composite parent) { Composite main = new Composite(parent, SWT.NONE); main.setLayout(new GridLayout(1, false)); createConfigurationEditor(main); initUI(); getProject().addPropertyChangeListener(this); return main; } private void initUI() { boolean enabled = getProject().areBuildConfigurationsSupported(); configurations.setContentProvider(new BuildConfigurationsContentProvider(getProject())); configurations.setLabelProvider(new BuildConfigurationsLabelProvider(getProject())); configurations.setInput(getProject()); changeConfiguration.setSelection(enabled && PropertyUtil.getBoolean(getProject(), FinalizerParser.AUTO_CHANGE_CONFIG)); String buildConfigurationId = getProject().getProperty(FinalizerParser.BUILD_CONFIG); if (buildConfigurationId != null) { configurations.setSelection(new StructuredSelection(buildConfigurationId)); } configurationGroup.layout(); configurationGroup.setEnabled(enabled); changeConfiguration.setEnabled(enabled); configurations.getControl().setEnabled(enabled); } private void createConfigurationEditor(Composite control) { configurationGroup = new Group(control, SWT.NONE); configurationGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); configurationGroup.setText("&Configuration"); configurationGroup.setLayout(new GridLayout(1, false)); changeConfiguration = new Button(configurationGroup, SWT.CHECK); changeConfiguration .setText("&Automatically switch to this configuration before finalizing"); configurations = new ComboViewer(configurationGroup, SWT.READ_ONLY | SWT.BORDER); } public boolean performOk() { PropertyUtil.setBoolean(getProject(), FinalizerParser.AUTO_CHANGE_CONFIG, changeConfiguration.getSelection()); String buildConfigId = (String) ((IStructuredSelection) configurations.getSelection()).getFirstElement(); getProject().setProperty(FinalizerParser.BUILD_CONFIG, buildConfigId); return true; } private MoSyncProject getProject() { IProject wrappedProject = (IProject) getElement(); MoSyncProject project = MoSyncProject.create(wrappedProject); return project; } public void propertyChange(PropertyChangeEvent event) { String property = event.getPropertyName(); if (MoSyncProject.BUILD_CONFIGURATION_SUPPORT_CHANGED.equals(property) || MoSyncProject.BUILD_CONFIGURATION_CHANGED.equals(property)) { initUI(); } } public void dispose() { getProject().removePropertyChangeListener(this); super.dispose(); } }