diff options
Diffstat (limited to 'org.eclipse.m2e.core/src/org/eclipse/m2e/core/ui/dialogs/MavenPropertyDialog.java')
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/ui/dialogs/MavenPropertyDialog.java | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/ui/dialogs/MavenPropertyDialog.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/ui/dialogs/MavenPropertyDialog.java new file mode 100644 index 00000000..764714e6 --- /dev/null +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/ui/dialogs/MavenPropertyDialog.java @@ -0,0 +1,192 @@ +/******************************************************************************* + * Copyright (c) 2008-2010 Sonatype, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.core.ui.dialogs; + +// import org.eclipse.debug.ui.StringVariableSelectionDialog; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +import org.eclipse.m2e.core.core.Messages; + + +public class MavenPropertyDialog extends Dialog { + + private final String title; + + private final String initialName; + + private final String initialValue; + + private final VerifyListener verifyListener; + + protected Text nameText; + + protected Text valueText; + + private String name; + + private String value; + + public MavenPropertyDialog(Shell shell, String title, String initialName, String initialValue, VerifyListener verifyListener) { + super(shell); + this.title = title; + this.initialName = initialName; + this.initialValue = initialValue; + this.verifyListener = verifyListener; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + Composite comp = new Composite(parent, SWT.NONE); + GridLayout gridLayout = new GridLayout(2, false); + gridLayout.marginTop = 7; + gridLayout.marginWidth = 12; + comp.setLayout(gridLayout); + + Label nameLabel = new Label(comp, SWT.NONE); + nameLabel.setText(Messages.getString("launch.propertyDialog.name")); //$NON-NLS-1$; + nameLabel.setFont(comp.getFont()); + + nameText = new Text(comp, SWT.BORDER | SWT.SINGLE); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.widthHint = 300; + nameText.setLayoutData(gd); + nameText.setFont(comp.getFont()); + nameText.setText(initialName==null ? "" : initialName); //$NON-NLS-1$ + nameText.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateButtons(); + } + }); + + Label valueLabel = new Label(comp, SWT.NONE); + valueLabel.setText(Messages.getString("launch.propertyDialog.value")); //$NON-NLS-1$; + valueLabel.setFont(comp.getFont()); + + valueText = new Text(comp, SWT.BORDER | SWT.SINGLE); + gd = new GridData(GridData.FILL_HORIZONTAL); + gd.widthHint = 300; + valueText.setLayoutData(gd); + valueText.setFont(comp.getFont()); + valueText.setText(initialValue==null ? "" : initialValue); //$NON-NLS-1$ + valueText.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateButtons(); + } + }); + +// if(variables) { +// Button variablesButton = new Button(comp, SWT.PUSH); +// variablesButton.setText(Messages.getString("launch.propertyDialog.browseVariables")); //$NON-NLS-1$; +// gd = new GridData(GridData.HORIZONTAL_ALIGN_END); +// gd.horizontalSpan = 2; +// int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); +// gd.widthHint = Math.max(widthHint, variablesButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); +// variablesButton.setLayoutData(gd); +// variablesButton.setFont(comp.getFont()); +// +// variablesButton.addSelectionListener(new SelectionAdapter() { +// public void widgetSelected(SelectionEvent se) { +// StringVariableSelectionDialog variablesDialog = new StringVariableSelectionDialog(getShell()); +// if(variablesDialog.open() == IDialogConstants.OK_ID) { +// String variable = variablesDialog.getVariableExpression(); +// if(variable != null) { +// valueText.insert(variable.trim()); +// } +// } +// } +// }); +// } + + return comp; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int) + */ + protected void buttonPressed(int buttonId) { + if(buttonId == IDialogConstants.OK_ID) { + name = nameText.getText(); + value = valueText.getText(); + } else { + name = null; + value = null; + } + super.buttonPressed(buttonId); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + */ + protected void configureShell(Shell shell) { + super.configureShell(shell); + if(title != null) { + shell.setText(title); + } +// if (fInitialValues[0].length() == 0) { +// PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, IAntUIHelpContextIds.ADD_PROPERTY_DIALOG); +// } else { +// PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, IAntUIHelpContextIds.EDIT_PROPERTY_DIALOG); +// } + } + + /** + * Enable the OK button if valid input + */ + protected void updateButtons() { + String name = nameText.getText().trim(); + String value = valueText.getText().trim(); + // verify name + Event e = new Event(); + e.widget = nameText; + VerifyEvent ev = new VerifyEvent(e); + ev.doit = true; + if (verifyListener != null) { + ev.text = name; + verifyListener.verifyText(ev); + } + getButton(IDialogConstants.OK_ID).setEnabled((name.length() > 0) && (value.length() > 0) && ev.doit); + } + + /** + * Enable the buttons on creation. + * + * @see org.eclipse.jface.window.Window#create() + */ + public void create() { + super.create(); + updateButtons(); + } +} |