package org.eclipselabs.spray.xtext.ui.wizard; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.PojoObservables; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.wb.swt.ResourceManager; public class SprayGeneratorSettingsPage extends WizardPage { private DataBindingContext m_bindingContext; private Text textBasePackage; private Text txtDiagramPackage; private Text txtFeaturesPackage; private Text txtPropertyPackage; private Text txtSrc; private Text txtSrcgen; private Text txtModel; private SprayProjectInfo projectInfo; private Label lblJavaMainSrcDir; private Label lblJavaGeneratedSources; private Label lblSprayModelFolder; private Label lblNewLabel_1; private Label lblNewLabel; private Label lblFeaturePackage; private Button btnCheckDefaultNaming; private Label lblResourceFoldermanual; private Text txtResources; private Label lblResourceFoldergenerated; private Text txtResourceGen; private Button btnGenerateTimestamp; /** * Create the wizard. */ public SprayGeneratorSettingsPage() { super("wizardPage"); setImageDescriptor(ResourceManager.getPluginImageDescriptor("org.eclipselabs.spray.xtext.ui", "icons/Spray-Logo-Project-Wizard.png")); setTitle("Spray Project"); setDescription("Specify settings for the Spray generator"); } /** * Create contents of the wizard. * * @param parent */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new GridLayout(1, false)); Group grpProjectStructure = new Group(container, SWT.NONE); GridData gd_grpProjectStructure = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_grpProjectStructure.widthHint = 583; grpProjectStructure.setLayoutData(gd_grpProjectStructure); grpProjectStructure.setText("Project structure"); grpProjectStructure.setLayout(new GridLayout(2, false)); final Button btnCheckDefaultStructure = new Button(grpProjectStructure, SWT.CHECK); btnCheckDefaultStructure.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setProjectStructure(btnCheckDefaultStructure.getSelection()); } }); btnCheckDefaultStructure.setSelection(true); btnCheckDefaultStructure.setText("Use default structure"); new Label(grpProjectStructure, SWT.NONE); lblSprayModelFolder = new Label(grpProjectStructure, SWT.NONE); lblSprayModelFolder.setText("Spray model folder"); txtModel = new Text(grpProjectStructure, SWT.BORDER); txtModel.setEnabled(false); txtModel.setText("model"); txtModel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblJavaMainSrcDir = new Label(grpProjectStructure, SWT.NONE); lblJavaMainSrcDir.setText("Java source folder (manual)"); txtSrc = new Text(grpProjectStructure, SWT.BORDER); txtSrc.setEnabled(false); txtSrc.setText("src"); txtSrc.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); txtSrc.setEditable(false); lblJavaGeneratedSources = new Label(grpProjectStructure, SWT.NONE); lblJavaGeneratedSources.setText("Java source folder (generated)"); txtSrcgen = new Text(grpProjectStructure, SWT.BORDER); txtSrcgen.setEnabled(false); txtSrcgen.setText("src-gen"); txtSrcgen.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); txtSrcgen.setEditable(false); lblResourceFoldermanual = new Label(grpProjectStructure, SWT.NONE); lblResourceFoldermanual.setText("Resource folder (manual)"); txtResources = new Text(grpProjectStructure, SWT.BORDER); txtResources.setEnabled(false); txtResources.setText("resource"); txtResources.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblResourceFoldergenerated = new Label(grpProjectStructure, SWT.NONE); lblResourceFoldergenerated.setText("Resource folder (generated)"); txtResourceGen = new Text(grpProjectStructure, SWT.BORDER); txtResourceGen.setEnabled(false); txtResourceGen.setText("resource-gen"); txtResourceGen.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); txtResourceGen.setEditable(false); Group grpPackageNames = new Group(container, SWT.NONE); grpPackageNames.setText("Package names"); grpPackageNames.setLayout(new GridLayout(2, false)); GridData gd_grpPackageNames = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_grpPackageNames.widthHint = 582; grpPackageNames.setLayoutData(gd_grpPackageNames); btnCheckDefaultNaming = new Button(grpPackageNames, SWT.CHECK); btnCheckDefaultNaming.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setNamingScheme(btnCheckDefaultNaming.getSelection()); } }); btnCheckDefaultNaming.setSelection(true); btnCheckDefaultNaming.setText("Use default naming"); new Label(grpPackageNames, SWT.NONE); lblNewLabel_1 = new Label(grpPackageNames, SWT.NONE); lblNewLabel_1.setText("Base backage"); textBasePackage = new Text(grpPackageNames, SWT.BORDER); textBasePackage.setEnabled(false); textBasePackage.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblNewLabel = new Label(grpPackageNames, SWT.NONE); lblNewLabel.setToolTipText("Diagram Type Provider, Feature Provider, Tool Behavior Provider, Image Provider"); lblNewLabel.setText("Diagram package"); txtDiagramPackage = new Text(grpPackageNames, SWT.BORDER); txtDiagramPackage.setEnabled(false); txtDiagramPackage.setText("diagram"); txtDiagramPackage.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblFeaturePackage = new Label(grpPackageNames, SWT.NONE); lblFeaturePackage.setText("Feature package"); txtFeaturesPackage = new Text(grpPackageNames, SWT.BORDER); txtFeaturesPackage.setEnabled(false); txtFeaturesPackage.setText("features"); txtFeaturesPackage.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); Label lblNewLabel_2 = new Label(grpPackageNames, SWT.NONE); lblNewLabel_2.setText("Property package"); txtPropertyPackage = new Text(grpPackageNames, SWT.BORDER); txtPropertyPackage.setEnabled(false); txtPropertyPackage.setText("property"); txtPropertyPackage.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); btnGenerateTimestamp = new Button(container, SWT.CHECK); btnGenerateTimestamp.setToolTipText("If checked a timestamp will be generated into the generated sources"); btnGenerateTimestamp.setSelection(true); btnGenerateTimestamp.setText("Generate timestamp"); m_bindingContext = initDataBindings(); setNamingScheme(true); setProjectStructure(true); } protected void setNamingScheme(boolean useDefault) { textBasePackage.setEnabled(!useDefault); txtDiagramPackage.setEnabled(!useDefault); txtFeaturesPackage.setEnabled(!useDefault); txtPropertyPackage.setEnabled(!useDefault); if (useDefault) { if (projectInfo.getProjectName().endsWith("." + projectInfo.getDiagramTypeName())) { textBasePackage.setText(projectInfo.getProjectName().toLowerCase()); } else { textBasePackage.setText(projectInfo.getProjectName().toLowerCase() + "." + projectInfo.getDiagramTypeName().toLowerCase()); } txtDiagramPackage.setText("diagram"); txtFeaturesPackage.setText("features"); txtPropertyPackage.setText("property"); } } protected void setProjectStructure(boolean useDefault) { txtSrc.setEnabled(!useDefault); txtSrcgen.setEnabled(!useDefault); txtModel.setEnabled(!useDefault); txtResources.setEnabled(!useDefault); txtResourceGen.setEnabled(!useDefault); if (useDefault) { txtSrc.setText("src"); txtSrcgen.setText("src-gen"); txtModel.setText("model"); txtResources.setText("resource"); txtResourceGen.setText("resource-gen"); } } public SprayProjectInfo getProjectInfo() { return projectInfo; } public void setProjectInfo(SprayProjectInfo projectInfo) { this.projectInfo = projectInfo; } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue txtSrcObserveTextObserveWidget = SWTObservables.observeText(txtSrc, SWT.Modify); IObservableValue projectInfoJavaMainSrcDirObserveValue = PojoObservables.observeValue(projectInfo, "javaMainSrcDir"); bindingContext.bindValue(txtSrcObserveTextObserveWidget, projectInfoJavaMainSrcDirObserveValue, null, null); // IObservableValue txtSrcgenObserveTextObserveWidget = SWTObservables.observeText(txtSrcgen, SWT.Modify); IObservableValue projectInfoJavaGenSrcDirObserveValue = PojoObservables.observeValue(projectInfo, "javaGenSrcDir"); bindingContext.bindValue(txtSrcgenObserveTextObserveWidget, projectInfoJavaGenSrcDirObserveValue, null, null); // IObservableValue txtModelObserveTextObserveWidget = SWTObservables.observeText(txtModel, SWT.Modify); IObservableValue projectInfoSprayModelDirObserveValue = PojoObservables.observeValue(projectInfo, "sprayModelDir"); bindingContext.bindValue(txtModelObserveTextObserveWidget, projectInfoSprayModelDirObserveValue, null, null); // IObservableValue textBasePackageObserveTextObserveWidget = SWTObservables.observeText(textBasePackage, SWT.Modify); IObservableValue projectInfoBasePackageObserveValue = PojoObservables.observeValue(projectInfo, "basePackage"); bindingContext.bindValue(textBasePackageObserveTextObserveWidget, projectInfoBasePackageObserveValue, null, null); // IObservableValue txtDiagramPackageObserveTextObserveWidget = SWTObservables.observeText(txtDiagramPackage, SWT.Modify); IObservableValue projectInfoDiagramPackageObserveValue = PojoObservables.observeValue(projectInfo, "diagramPackage"); bindingContext.bindValue(txtDiagramPackageObserveTextObserveWidget, projectInfoDiagramPackageObserveValue, null, null); // IObservableValue txtFeaturesPackageObserveTextObserveWidget = SWTObservables.observeText(txtFeaturesPackage, SWT.Modify); IObservableValue projectInfoFeaturePackageObserveValue = PojoObservables.observeValue(projectInfo, "featurePackage"); bindingContext.bindValue(txtFeaturesPackageObserveTextObserveWidget, projectInfoFeaturePackageObserveValue, null, null); // IObservableValue txtPropertyPackageObserveTextObserveWidget = SWTObservables.observeText(txtPropertyPackage, SWT.Modify); IObservableValue projectInfoPropertyPackageObserveValue = PojoObservables.observeValue(projectInfo, "propertyPackage"); bindingContext.bindValue(txtPropertyPackageObserveTextObserveWidget, projectInfoPropertyPackageObserveValue, null, null); // IObservableValue txtResourcesObserveTextObserveWidget = SWTObservables.observeText(txtResources, SWT.Modify); IObservableValue projectInfoResourceManDirObserveValue = PojoObservables.observeValue(projectInfo, "resourceManDir"); bindingContext.bindValue(txtResourcesObserveTextObserveWidget, projectInfoResourceManDirObserveValue, null, null); // IObservableValue txtResourceGenObserveTextObserveWidget = SWTObservables.observeText(txtResourceGen, SWT.Modify); IObservableValue projectInfoResourceGenDirObserveValue = PojoObservables.observeValue(projectInfo, "resourceGenDir"); bindingContext.bindValue(txtResourceGenObserveTextObserveWidget, projectInfoResourceGenDirObserveValue, null, null); // IObservableValue btnGenerateTimestampObserveSelectionObserveWidget = SWTObservables.observeSelection(btnGenerateTimestamp); IObservableValue projectInfoCreateTimestampObserveValue = PojoObservables.observeValue(projectInfo, "createTimestamp"); bindingContext.bindValue(btnGenerateTimestampObserveSelectionObserveWidget, projectInfoCreateTimestampObserveValue, null, null); // return bindingContext; } }