From 1d512dde0bf2a26f75b61502f59f3b66ec8e2ed0 Mon Sep 17 00:00:00 2001 From: Antonio Garcia-Dominguez Date: Wed, 18 Dec 2024 18:29:11 +0100 Subject: [PATCH] rdf.dt: use the setErrorMessage for reporting invalid tags --- .../rdf/dt/RDFModelConfigurationDialog.java | 70 +++++++++---------- .../org/eclipse/epsilon/emc/rdf/RDFModel.java | 4 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/bundles/org.eclipse.epsilon.emc.rdf.dt/src/org/eclipse/epsilon/emc/rdf/dt/RDFModelConfigurationDialog.java b/bundles/org.eclipse.epsilon.emc.rdf.dt/src/org/eclipse/epsilon/emc/rdf/dt/RDFModelConfigurationDialog.java index df48e28..0c50455 100644 --- a/bundles/org.eclipse.epsilon.emc.rdf.dt/src/org/eclipse/epsilon/emc/rdf/dt/RDFModelConfigurationDialog.java +++ b/bundles/org.eclipse.epsilon.emc.rdf.dt/src/org/eclipse/epsilon/emc/rdf/dt/RDFModelConfigurationDialog.java @@ -15,10 +15,10 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Locale; -import java.util.StringJoiner; +import java.util.Set; import java.util.stream.Collectors; import org.eclipse.core.resources.IFile; @@ -35,10 +35,10 @@ import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; @@ -80,7 +80,7 @@ protected Object getValue(Object element) { protected void setValue(Object element, Object value) { ((NamespaceMappingTableEntry)element).prefix = String.valueOf(value); viewer.update(element, null); - validateURLs(); + validateForm(); } } @@ -113,7 +113,7 @@ protected Object getValue(Object element) { protected void setValue(Object element, Object value) { ((NamespaceMappingTableEntry)element).url = String.valueOf(value); viewer.update(element, null); - validateURLs(); + validateForm(); } } @@ -146,12 +146,12 @@ protected Object getValue(Object element) { protected void setValue(Object element, Object value) { ((URLTableEntry)element).url = String.valueOf(value); viewer.update(element, null); - validateURLs(); + validateForm(); } } protected class NamespaceMappingTableEntry { - public String prefix, url, languagePreference; + public String prefix, url; } protected class URLTableEntry { @@ -353,6 +353,7 @@ public void widgetSelected(SelectionEvent e) { urls.remove(it.next()); } urlList.refresh(); + validateForm(); } } }); @@ -364,6 +365,7 @@ public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) { urls.clear(); urlList.refresh(); + validateForm(); } }); @@ -375,38 +377,22 @@ public void widgetSelected(SelectionEvent e) { protected Label languagePreferenceLabel; protected Text languagePreferenceText; - protected Label languagePreferenceErrorLabel; private Composite createLanguagePreferenceGroup(Composite parent) { final Composite groupContent = DialogUtil.createGroupContainer(parent, "Language tag preference", 1); languagePreferenceLabel = new Label(groupContent, SWT.NONE); - languagePreferenceLabel.setText("Language tag preference in order: "); + languagePreferenceLabel.setText("Comma-separated preferred language tags, in descending priority:"); languagePreferenceText = new Text(groupContent, SWT.BORDER); - languagePreferenceText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - languagePreferenceText.addVerifyListener(new VerifyListener() { + languagePreferenceText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + languagePreferenceText.addModifyListener(new ModifyListener() { @Override - public void verifyText(VerifyEvent event) { - String text = languagePreferenceText.getText() + event.text; - text = text.replaceAll("\\s", ""); - - if (text.length() > 0) { - StringJoiner invalidTags = new StringJoiner(" "); - invalidTags.add("\nInvalid tags: "); - for (String tag : text.split(",")) { - if (!RDFModel.isValidLanguageTag(tag)) { - invalidTags.add(tag); - } - } - languagePreferenceErrorLabel.setText(invalidTags.toString()); - } - } + public void modifyText(ModifyEvent event) { + validateForm(); + } }); - languagePreferenceErrorLabel = new Label(groupContent,SWT.NONE); - languagePreferenceErrorLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - groupContent.layout(); groupContent.pack(); return groupContent; @@ -437,11 +423,11 @@ protected void loadProperties(){ } } - languagePreferenceText.setText(properties.getProperty(RDFModel.PROPERTY_LANGUAGEPREFERENCE)); + languagePreferenceText.setText(properties.getProperty(RDFModel.PROPERTY_LANGUAGE_PREFERENCE)); this.urlList.refresh(); this.nsMappingTable.refresh(); - validateURLs(); + validateForm(); } @Override @@ -458,12 +444,26 @@ protected void storeProperties(){ .map(e -> e.prefix + "=" + e.url) .collect(Collectors.toList()))); - - properties.put(RDFModel.PROPERTY_LANGUAGEPREFERENCE, + properties.put(RDFModel.PROPERTY_LANGUAGE_PREFERENCE, languagePreferenceText.getText().replaceAll("\\s", "")); } - protected void validateURLs() { + protected void validateForm() { + String text = languagePreferenceText.getText().strip(); + if (text.length() > 0) { + Set invalidTags = new HashSet<>(); + for (String tag : text.split(",")) { + if (!RDFModel.isValidLanguageTag(tag)) { + invalidTags.add(tag); + } + } + if (!invalidTags.isEmpty()) { + setErrorMessage(String.format( + "Invalid tags: %s", String.join(" ", invalidTags))); + return; + } + } + for (URLTableEntry entry : this.urls) { String errorMessage = validateURL(entry.url); if (errorMessage != null) { diff --git a/bundles/org.eclipse.epsilon.emc.rdf/src/org/eclipse/epsilon/emc/rdf/RDFModel.java b/bundles/org.eclipse.epsilon.emc.rdf/src/org/eclipse/epsilon/emc/rdf/RDFModel.java index 1b62e64..3fc5175 100644 --- a/bundles/org.eclipse.epsilon.emc.rdf/src/org/eclipse/epsilon/emc/rdf/RDFModel.java +++ b/bundles/org.eclipse.epsilon.emc.rdf/src/org/eclipse/epsilon/emc/rdf/RDFModel.java @@ -39,7 +39,7 @@ public class RDFModel extends CachedModel { - public static final String PROPERTY_LANGUAGEPREFERENCE = "lanuguagePreference"; + public static final String PROPERTY_LANGUAGE_PREFERENCE = "lanuguagePreference"; public static final String PROPERTY_URIS = "uris"; @@ -160,7 +160,7 @@ public void load(StringProperties properties, IRelativePathResolver resolver) th } this.languagePreference.clear(); - for (String tag : properties.getProperty(PROPERTY_LANGUAGEPREFERENCE).split(",")) { + for (String tag : properties.getProperty(PROPERTY_LANGUAGE_PREFERENCE).split(",")) { this.languagePreference.add(tag.strip()); }