package org.zend.php.zendserver.deployment.ui.editors; import org.eclipse.jface.viewers.StructuredSelection; 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.TreeItem; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; import org.zend.php.zendserver.deployment.core.descriptor.DeploymentDescriptorFactory; import org.zend.php.zendserver.deployment.core.descriptor.IModelObject; import org.zend.php.zendserver.deployment.core.descriptor.IParameter; import org.zend.php.zendserver.deployment.core.descriptor.IVariable; import org.zend.php.zendserver.deployment.core.internal.descriptor.Feature; import org.zend.php.zendserver.deployment.core.internal.descriptor.Parameter; import org.zend.php.zendserver.deployment.core.internal.descriptor.Variable; import org.zend.php.zendserver.deployment.ui.HelpContextIds; import org.zend.php.zendserver.deployment.ui.Messages; public class AutomationPage extends DescriptorEditorPage { private ScriptsSection scripts; private DescriptorMasterDetailsBlock variablesBlock; public AutomationPage(DeploymentDescriptorEditor editor, String id, String title) { super(editor, id, title); VarsAndParamsMasterDetailsProvider variablesProvider = new VarsAndParamsMasterDetailsProvider(); variablesBlock = new ParametersVariablesBlock(editor, variablesProvider, Messages.ScriptsPage_VarsAndParams, variablesProvider.getDescription()); scripts = new ScriptsSection(editor); } @Override protected void createFormContent(IManagedForm managedForm) { super.createFormContent(managedForm); ScrolledForm form = managedForm.getForm(); FormToolkit toolkit = managedForm.getToolkit(); form.getBody().setLayout( FormLayoutFactory.createFormTableWrapLayout(true, 1)); final Composite body = managedForm.getForm().getBody(); Composite up = toolkit.createComposite(body); TableWrapLayout layout = FormLayoutFactory.createFormTableWrapLayout(true, 2); up.setBackground(body.getBackground()); layout.bottomMargin = layout.horizontalSpacing = layout.verticalSpacing = layout.leftMargin = layout.rightMargin = layout.topMargin = 0; up.setLayout(layout); up.setLayoutData(new GridData(GridData.FILL_BOTH)); scripts.createDeploymentScriptsSection(managedForm, up); createInfoSection(toolkit, up); variablesBlock.createContent(managedForm); showMarkers(); } private void createInfoSection(FormToolkit toolkit, Composite parent) { Section section = toolkit.createSection(parent, Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED); section.marginWidth = 5; section.setText(Messages.AutomationPage_WhatsAutomation); section.setDescription(Messages.AutomationPage_Description); Composite sectionClient = toolkit.createComposite(section); section.setClient(sectionClient); section.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP)); sectionClient.setLayout(new GridLayout(3, false)); } public void refresh() { variablesBlock.refresh(); scripts.refresh(); } @Override public void showMarkers() { super.showMarkers(); variablesBlock.showMarkers(); } private final class ParametersVariablesBlock extends DescriptorMasterDetailsBlock { private ParametersVariablesBlock(DeploymentDescriptorEditor editor, MasterDetailsProvider prov, String title, String description) { super(editor, prov, title, description); } @Override protected void createMasterPart(IManagedForm managedForm, Composite parent) { Composite cp = managedForm.getToolkit().createComposite(parent); TableWrapLayout tw = new TableWrapLayout(); tw.numColumns = 1; cp.setLayout((tw)); super.createMasterPart(managedForm, cp); } protected void createModelElement(IModelObject element) { Feature feature = DeploymentDescriptorFactory .getFeature(element); editor.getModel().add(feature, element); Object[] expanded = viewer.getExpandedElements(); viewer.refresh(); viewer.setExpandedElements(expanded); viewer.setSelection(new StructuredSelection(element)); } @Override protected void addButtons(FormToolkit toolkit, Composite buttons) { Button addButton1 = createButton(toolkit, buttons, Messages.ScriptsPage_AddVariable); addButton1.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO: replace with a wizard IVariable var = new Variable(); var.setName(Messages.VariablesMasterDetailsProvider_DefaultVariableName); createModelElement(var); } }); Button addButton2 = createButton(toolkit, buttons, Messages.ScriptsPage_AddParameter); addButton2.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // TODO: replace with a wizard IParameter param = new Parameter(); param.setId(Messages.ParametersMasterDetailsProvider_newParamName); param.setType(IParameter.STRING); createModelElement(param); } }); removeButton = createButton(toolkit, buttons, Messages.DescriptorMasterDetailsBlock_Remove); removeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { removeElement(viewer.getSelection()); final TreeItem[] expandedElements = viewer.getTree().getItems(); if (expandedElements != null && expandedElements.length > 0) { viewer.getTree().setSelection(expandedElements[0]); } } }); GridData gd1 = (GridData) addButton1.getLayoutData(); GridData gd2 = (GridData) addButton2.getLayoutData(); GridData gd3 = (GridData) removeButton.getLayoutData(); int maxsize = Math.max(Math.max(gd1.widthHint, gd2.widthHint), gd3.widthHint); gd1.widthHint = maxsize; gd2.widthHint = maxsize; gd3.widthHint = maxsize; } } @Override protected String getHelpResource() { return HelpContextIds.TRIGGERS_TAB; } }