annotate dwtx/jface/dialogs/InputDialog.d @ 192:c3583c6ec027

Added missing default cases for switch statements
author Frank Benoit <benoit@tionex.de>
date Mon, 03 Nov 2008 22:52:26 +0100
parents 46a6e0e6ccd4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.dialogs.InputDialog;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwtx.jface.dialogs.IDialogConstants;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.dialogs.Dialog;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.jface.dialogs.IInputValidator;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.DWT;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.events.ModifyEvent;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.events.ModifyListener;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.layout.GridData;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.widgets.Button;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.widgets.Composite;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.Control;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Label;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Shell;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Text;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwtx.jface.resource.StringConverter;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.dwthelper.utils;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * A simple input dialog for soliciting an input string from the user.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * <p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * This concrete dialog class can be instantiated as is, or further subclassed as
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * required.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * </p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 public class InputDialog : Dialog {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * The title of the dialog.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 private String title;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * The message to display, or <code>null</code> if none.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 private String message;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * The input value; the empty string by default.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 private String value = "";//$NON-NLS-1$
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * The input validator, or <code>null</code> if none.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 private IInputValidator validator;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * Ok button widget.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 private Button okButton;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * Input text widget.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 private Text text;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * Error message label widget.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 private Text errorMessageText;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * Error message string.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 private String errorMessage;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * Creates an input dialog with OK and Cancel buttons. Note that the dialog
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * will have no visual representation (no widgets) until it is told to open.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * <p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * Note that the <code>open</code> method blocks for input dialogs.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * </p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @param parentShell
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * the parent shell, or <code>null</code> to create a top-level
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * shell
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * @param dialogTitle
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * the dialog title, or <code>null</code> if none
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * @param dialogMessage
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * the dialog message, or <code>null</code> if none
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * @param initialValue
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * the initial input value, or <code>null</code> if none
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 * (equivalent to the empty string)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * @param validator
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * an input validator, or <code>null</code> if none
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 public this(Shell parentShell, String dialogTitle,
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 String dialogMessage, String initialValue, IInputValidator validator) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 super(parentShell);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 this.title = dialogTitle;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 message = dialogMessage;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 if (initialValue is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 value = "";//$NON-NLS-1$
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 } else {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 value = initialValue;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 this.validator = validator;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 /*
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * (non-Javadoc) Method declared on Dialog.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
117 protected override void buttonPressed(int buttonId) {
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 if (buttonId is IDialogConstants.OK_ID) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 value = text.getText();
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 } else {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 value = null;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 super.buttonPressed(buttonId);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 /*
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * (non-Javadoc)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * @see dwtx.jface.window.Window#configureShell(dwt.widgets.Shell)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
131 protected override void configureShell(Shell shell) {
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 super.configureShell(shell);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 if (title !is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 shell.setText(title);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 /*
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * (non-Javadoc)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 * @see dwtx.jface.dialogs.Dialog#createButtonsForButtonBar(dwt.widgets.Composite)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
143 protected override void createButtonsForButtonBar(Composite parent) {
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 // create OK and Cancel buttons by default
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 okButton = createButton(parent, IDialogConstants.OK_ID,
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 IDialogConstants.OK_LABEL, true);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 createButton(parent, IDialogConstants.CANCEL_ID,
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 IDialogConstants.CANCEL_LABEL, false);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 //do this here because setting the text will set enablement on the ok
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 // button
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 text.setFocus();
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 if (value !is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 text.setText(value);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 text.selectAll();
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 /*
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * (non-Javadoc) Method declared on Dialog.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 15
diff changeset
161 protected override Control createDialogArea(Composite parent) {
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 // create composite
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 Composite composite = cast(Composite) super.createDialogArea(parent);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 // create message
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 if (message !is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 Label label = new Label(composite, DWT.WRAP);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 label.setText(message);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 GridData data = new GridData(GridData.GRAB_HORIZONTAL
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 | GridData.VERTICAL_ALIGN_CENTER);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 label.setLayoutData(data);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 label.setFont(parent.getFont());
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 }
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
175 text = new Text(composite, getInputTextStyle());
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 | GridData.HORIZONTAL_ALIGN_FILL));
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 text.addModifyListener(new class ModifyListener {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 public void modifyText(ModifyEvent e) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 validateInput();
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 });
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 errorMessageText = new Text(composite, DWT.READ_ONLY | DWT.WRAP);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 errorMessageText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 | GridData.HORIZONTAL_ALIGN_FILL));
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 errorMessageText.setBackground(errorMessageText.getDisplay()
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 .getSystemColor(DWT.COLOR_WIDGET_BACKGROUND));
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 // Set the error message text
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=66292
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 setErrorMessage(errorMessage);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 applyDialogFont(composite);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 return composite;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 * Returns the error message label.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 * @return the error message label
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 * @deprecated use setErrorMessage(String) instead
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 protected Label getErrorMessageLabel() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 return null;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * Returns the ok button.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * @return the ok button
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 protected Button getOkButton() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 return okButton;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 * Returns the text area.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 * @return the text area
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 protected Text getText() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 return text;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * Returns the validator.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 * @return the validator
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 protected IInputValidator getValidator() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 return validator;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 * Returns the string typed into this input dialog.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 * @return the input string
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 public String getValue() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 return value;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 * Validates the input.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 * <p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 * The default implementation of this framework method delegates the request
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 * to the supplied input validator object; if it finds the input invalid,
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 * the error message is displayed in the dialog's message line. This hook
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 * method is called whenever the text changes in the input field.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 * </p>
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 protected void validateInput() {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 String errorMessage = null;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 if (validator !is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 errorMessage = validator.isValid(text.getText());
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 // Bug 16256: important not to treat "" (blank error) the same as null
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 // (no error)
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 setErrorMessage(errorMessage);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 /**
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 * Sets or clears the error message.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 * If not <code>null</code>, the OK button is disabled.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 *
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * @param errorMessage
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 * the error message, or <code>null</code> to clear
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 * @since 3.0
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 */
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 public void setErrorMessage(String errorMessage) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 this.errorMessage = errorMessage;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 if (errorMessageText !is null && !errorMessageText.isDisposed()) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 errorMessageText.setText(errorMessage is null ? " \n " : errorMessage); //$NON-NLS-1$
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 // Disable the error message text control if there is no error, or
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 // no error text (empty or whitespace only). Hide it also to avoid
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 // color change.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=130281
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 bool hasError = errorMessage !is null && (StringConverter.removeWhiteSpaces(errorMessage)).length > 0;
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 errorMessageText.setEnabled(hasError);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 errorMessageText.setVisible(hasError);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 errorMessageText.getParent().update();
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 // Access the ok button by id, in case clients have overridden button creation.
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=113643
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 Control button = getButton(IDialogConstants.OK_ID);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 if (button !is null) {
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 button.setEnabled(errorMessage is null);
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 }
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 }
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
289
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
290 /**
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
291 * Returns the style bits that should be used for the input text field.
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
292 * Defaults to a single line entry. Subclasses may override.
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
293 *
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
294 * @return the integer style bits that should be used when creating the
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
295 * input text
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
296 *
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
297 * @since 3.4
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
298 */
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
299 protected int getInputTextStyle() {
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
300 return DWT.SINGLE | DWT.BORDER;
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
301 }
15
db8940420ed8 InputDialog
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 }