[338281] Provide an error message when entering an invalid auto activation delay
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
index efe3540..2477721 100644
--- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/preferences/ui/HTMLContentAssistPreferencePage.java
@@ -10,12 +10,10 @@
*******************************************************************************/
package org.eclipse.wst.html.ui.internal.preferences.ui;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
@@ -32,6 +30,7 @@
import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
import org.eclipse.wst.sse.ui.preferences.CodeAssistCyclingConfigurationBlock;
import org.eclipse.wst.sse.ui.preferences.ICompletionProposalCategoriesConfigurationWriter;
+import org.eclipse.wst.xml.ui.internal.XMLUIMessages;
/**
* <p>Defines the preference page for allowing the user to change the content
@@ -48,7 +47,6 @@
private Text fAutoProposeDelay;
private Label fAutoProposeLabel;
private Text fAutoProposeText;
- private final Pattern delayPattern = Pattern.compile("\\d{0,4}"); //$NON-NLS-1$
/** configuration block for changing preference having to do with the content assist categories */
private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
@@ -138,42 +136,43 @@
fAutoProposeDelayLabel = createLabel(contentAssistGroup, HTMLUIMessages.Auto_Activation_Delay);
fAutoProposeDelay = createTextField(contentAssistGroup);
- fAutoProposeDelay.addVerifyListener(new VerifyListener() {
+ fAutoProposeDelay.setTextLimit(4);
+ fAutoProposeDelay.addModifyListener(new ModifyListener() {
- public void verifyText(VerifyEvent e) {
- verifyDelay(e);
- }
+ public void modifyText(ModifyEvent e) {
+ verifyDelay();
+ }
});
fAutoProposeLabel = createLabel(contentAssistGroup, HTMLUIMessages.Prompt_when_these_characte_UI_);
fAutoProposeText = createTextField(contentAssistGroup);
}
- private void verifyDelay(VerifyEvent e) {
- StringBuffer textToVerify = new StringBuffer();
- textToVerify.append(fAutoProposeDelay.getText());
- if (e.start == e.end) {
- textToVerify.insert(e.start, e.text);
- } else {
- textToVerify.replace(e.start, e.end, e.text);
+ private void verifyDelay() {
+ final String text = fAutoProposeDelay.getText();
+ boolean valid = true;
+ try {
+ final int delay = Integer.parseInt(text);
+ if (delay < 0) {
+ valid = false;
+ }
}
-
- Matcher m = delayPattern.matcher(textToVerify.toString());
- if (m.matches()) {
- e.doit = true;
- if (textToVerify.toString().trim().length() == 0) {
- setValid(false);
- }
- else {
- setValid(true);
- }
+ catch (NumberFormatException e) {
+ valid = false;
+ }
+ if (!valid) {
+ if (text.trim().length() > 0)
+ setErrorMessage(NLS.bind(XMLUIMessages.Not_an_integer, text));
+ else
+ setErrorMessage(XMLUIMessages.Missing_integer);
+ setValid(false);
}
else {
- e.doit = false;
+ setErrorMessage(null);
+ setValid(true);
}
-
}
-
+
/**
* <p>Create the contents for the content assist cycling preference group</p>
* @param parent {@link Composite} parent of the group
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
index 993b902..8c49190 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIMessages.java
@@ -227,6 +227,8 @@
public static String XMLContentAssistPreferencePage_Cycling_UI_;
public static String Automatically_make_suggest_UI_;
public static String Auto_Activation_Delay;
+ public static String Not_an_integer;
+ public static String Missing_integer;
public static String Prompt_when_these_characte_UI_;
public static String Formatting_UI_;
public static String Line_width__UI_;
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
index ade148e..bf0a60c 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/XMLUIPluginResources.properties
@@ -258,6 +258,8 @@
XMLContentAssistPreferencePage_Cycling_UI_=Cycling
Automatically_make_suggest_UI_=Automatically ma&ke suggestions
Auto_Activation_Delay=Auto activation dela&y (ms):
+Not_an_integer=''{0}'' is not a positive integer.
+Missing_integer=A positive integer must be specified.
Prompt_when_these_characte_UI_=P&rompt when these characters are inserted:
Formatting_UI_=Formatting
Line_width__UI_=Line &width:
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
index 2b7e3e4..b22f44e 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/preferences/XMLContentAssistPreferencePage.java
@@ -11,13 +11,12 @@
package org.eclipse.wst.xml.ui.internal.preferences;
import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
@@ -52,7 +51,6 @@
private Text fAutoProposeText;
private Combo fSuggestionStrategyCombo;
private Vector fSuggestionStrategies = null;
- private final Pattern delayPattern = Pattern.compile("\\d{0,4}"); //$NON-NLS-1$
/** configuration block for changing preference having to do with the content assist categories */
private CodeAssistCyclingConfigurationBlock fConfigurationBlock;
@@ -142,11 +140,12 @@
fAutoProposeDelayLabel = createLabel(contentAssistGroup, XMLUIMessages.Auto_Activation_Delay);
fAutoProposeDelay = createTextField(contentAssistGroup);
- fAutoProposeDelay.addVerifyListener(new VerifyListener() {
+ fAutoProposeDelay.setTextLimit(4);
+ fAutoProposeDelay.addModifyListener(new ModifyListener() {
- public void verifyText(VerifyEvent e) {
- verifyDelay(e);
- }
+ public void modifyText(ModifyEvent e) {
+ verifyDelay();
+ }
});
@@ -163,28 +162,29 @@
fSuggestionStrategies.add(XMLUIPreferenceNames.SUGGESTION_STRATEGY_VALUE_STRICT);
}
- private void verifyDelay(VerifyEvent e) {
- StringBuffer textToVerify = new StringBuffer();
- textToVerify.append(fAutoProposeDelay.getText());
- if (e.start == e.end) {
- textToVerify.insert(e.start, e.text);
- } else {
- textToVerify.replace(e.start, e.end, e.text);
+ private void verifyDelay() {
+ final String text = fAutoProposeDelay.getText();
+ boolean valid = true;
+ try {
+ final int delay = Integer.parseInt(text);
+ if (delay < 0) {
+ valid = false;
+ }
}
- Matcher m = delayPattern.matcher(textToVerify.toString());
- if (m.matches()) {
- e.doit = true;
- if (textToVerify.toString().trim().length() == 0) {
- setValid(false);
- }
- else {
- setValid(true);
- }
+ catch (NumberFormatException e) {
+ valid = false;
+ }
+ if (!valid) {
+ if (text.trim().length() > 0)
+ setErrorMessage(NLS.bind(XMLUIMessages.Not_an_integer, text));
+ else
+ setErrorMessage(XMLUIMessages.Missing_integer);
+ setValid(false);
}
else {
- e.doit = false;
+ setErrorMessage(null);
+ setValid(true);
}
-
}
/**