blob: a921be06787aa9486617afd30fe8a4977fbc9840 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.launcher;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Font;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class NameValuePairDialog extends Dialog {
private String fName;
private String fValue;
private String fTitle;
private String[] fFieldLabels;
private String[] fInitialValues;
private Label fNameLabel;
private Text fNameText;
private Label fValueLabel;
private Text fValueText;
public NameValuePairDialog(Shell shell, String title, String[] fieldLabels, String[] initialValues) {
super(shell);
fTitle = title;
fFieldLabels = fieldLabels;
fInitialValues = initialValues;
}
/**
* @see Dialog#createDialogArea(Composite)
*/
@Override
protected Control createDialogArea(Composite parent) {
Font font = parent.getFont();
Composite comp = (Composite) super.createDialogArea(parent);
((GridLayout)comp.getLayout()).numColumns=2;
fNameLabel = new Label(comp, SWT.NONE);
fNameLabel.setText(fFieldLabels[0]);
fNameLabel.setFont(font);
ModifyListener listener= new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
updateButtons();
}
};
fNameText = new Text(comp, SWT.BORDER | SWT.SINGLE);
fNameText.setText(fInitialValues[0]);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 300;
fNameText.setLayoutData(gd);
fNameText.setFont(font);
fNameText.addModifyListener(listener);
fValueLabel = new Label(comp, SWT.NONE);
fValueLabel.setText(fFieldLabels[1]);
fValueLabel.setFont(font);
fValueText = new Text(comp, SWT.BORDER | SWT.SINGLE);
fValueText.setText(fInitialValues[1]);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 300;
fValueText.setLayoutData(gd);
fValueText.setFont(font);
fValueText.addModifyListener(listener);
applyDialogFont(comp);
return comp;
}
/**
* Return the name/value pair entered in this dialog. If the cancel button was hit,
* both will be <code>null</code>.
*/
public String[] getNameValuePair() {
return new String[] {fName, fValue};
}
/**
* @see Dialog#buttonPressed(int)
*/
@Override
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.OK_ID) {
fName= fNameText.getText().trim();
fValue = fValueText.getText().trim();
} else {
fName = null;
fValue = null;
}
super.buttonPressed(buttonId);
}
/**
* @see Window#configureShell(Shell)
*/
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
if (fTitle != null) {
shell.setText(fTitle);
}
}
/**
* Enable the OK button if valid input
*/
protected void updateButtons() {
String name = fNameText.getText().trim();
String value = fValueText.getText().trim();
getButton(IDialogConstants.OK_ID).setEnabled((name.length() > 0) &&(value.length() > 0));
}
/**
* Enable the buttons on creation.
*/
@Override
public void create() {
super.create();
updateButtons();
}
}