From: Patrick Plitzner Date: Wed, 24 Jun 2015 17:55:55 +0000 (+0200) Subject: Show URI parsing exceptions below URI text field (fixes #5055, #5003, #4587) X-Git-Tag: 3.7.0~1^2~32 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/191f23285adaebc695b6d131cf68c3687ea6a858 Show URI parsing exceptions below URI text field (fixes #5055, #5003, #4587) --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java index 8e1ff1927..ee6867db2 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java @@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.element; import java.net.URI; -import java.net.URISyntaxException; - +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Label; /** * @author n.hoffmann @@ -22,35 +22,33 @@ import java.net.URISyntaxException; */ public class UriWithLabelElement extends TextWithLabelElement { - /** - * @param formFactory - * @param parentElement - * @param labelString - * @param initialText - * @param textHeight - * @param style - */ + private final Label labelException; + protected UriWithLabelElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString, URI initialUri, Integer textHeight, int style) { super(formFactory, parentElement, labelString, null, textHeight, style); + + labelException = formFactory.createLabel(getLayoutComposite(), "", SWT.WRAP); + labelException.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); + addControl(labelException); setUri(initialUri); } - /** - * - */ public void setUri(URI uri) { if(uri != null){ super.setText(uri.toString()); } } - public URI getUri() throws URISyntaxException{ - if(super.getText()!=null){ - return new URI(super.getText()); - } - return null; + public URI getUri(){ + try { + labelException.setText(""); + return new URI(super.getText()); + } catch (Exception e) { + labelException.setText(e.getMessage()); + return null; + } } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java index 098620fd7..ffa008b59 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java @@ -1,9 +1,9 @@ // $Id$ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -20,6 +20,7 @@ import org.eclipse.swt.events.SelectionListener; import eu.etaxonomy.cdm.common.media.ImageInfo; import eu.etaxonomy.cdm.model.media.ImageFile; +import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; @@ -42,16 +43,17 @@ public class ImageFileElement extends MediaRepresentationPartElement private NumberWithLabelElement text_width; private KeyValueViewerElement element_keyValue; private ImageElement element_image; - - - private Runnable postRunnable = new Runnable(){ - public void run() { + + + private final Runnable postRunnable = new Runnable(){ + @Override + public void run() { StoreUtil.reflowDetailsViewer(); StoreUtil.reflowSupplementalViewer(); } }; - - + + /** *

Constructor for ImageFileElement.

* @@ -66,12 +68,12 @@ public class ImageFileElement extends MediaRepresentationPartElement SelectionListener removeListener, int style) { super(cdmFormFactory, section, element, removeListener, style); } - + /** {@inheritDoc} */ @Override public void createControls(ICdmFormElement formElement, int style) { super.createControls(formElement, style); - + text_height = formFactory.createNumberTextWithLabelElement(formElement, "Height", null, style); text_height.setEnabled(false); text_width = formFactory.createNumberTextWithLabelElement(formElement, "Width", null, style); @@ -79,7 +81,7 @@ public class ImageFileElement extends MediaRepresentationPartElement element_image = formFactory.createImageElement(formElement, null, style); element_keyValue = formFactory.createKeyValueViewerElement(formElement, "Key", "Value", null); } - + /** {@inheritDoc} */ @Override public void setEntity(ImageFile entity) { @@ -87,41 +89,40 @@ public class ImageFileElement extends MediaRepresentationPartElement text_height.setNumber(entity.getHeight()); text_width.setNumber(entity.getWidth()); try { - loadImage(entity.getUri(), false); + loadImage(entity.getUri(), false); } catch (Exception e) { handleException(e); } } - + private void loadImage(URI uri, boolean updateDimensions) throws IOException, HttpException{ element_image.initImageUri(uri); - + element_image.loadImage(postRunnable ); - - + + if(uri == null){ return; } - + ImageInfo imageInfo = ImageInfo.NewInstanceWithMetaData(uri, 10000); - + element_keyValue.setInput(imageInfo.getMetaData()); - + if(updateDimensions){ text_size.setText(FileUtils.byteCountToDisplaySize(imageInfo.getLength())); - // KLUDGE this is not save for very large files, because of the int cast. + // KLUDGE this is not save for very large files, because of the int cast. // But then, I don't think we will handle such large files in the near future getEntity().setSize((int) imageInfo.getLength()); - + text_height.setNumber(imageInfo.getHeight()); getEntity().setHeight(imageInfo.getHeight()); - + text_width.setNumber(imageInfo.getWidth()); getEntity().setWidth(imageInfo.getWidth()); } - - - element_messages.setText(""); + + } /* @@ -136,29 +137,29 @@ public class ImageFileElement extends MediaRepresentationPartElement String uriString = text_uri.getText(); URI uri = StringUtils.isNotEmpty(uriString) ? new URI(uriString) : null; getEntity().setUri(uri); - - + + loadImage(getEntity().getUri(), true); - + firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null)); } catch (Exception e) { handleException(e); - } finally { + } finally { firePropertyChangeEvent(this); } } } protected void handleException(Exception e) { - super.handleException(e); element_image.unloadImage(postRunnable); text_height.setNumber(0); text_width.setNumber(0); - + element_image.loadImage(new Runnable(){ - public void run() { - StoreUtil.reflowDetailsViewer(); - StoreUtil.reflowSupplementalViewer(); + @Override + public void run() { + AbstractUtility.reflowDetailsViewer(); + AbstractUtility.reflowSupplementalViewer(); } }); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaDetailElement.java index 09b8b8991..e05ed4064 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaDetailElement.java @@ -9,7 +9,6 @@ */ package eu.etaxonomy.taxeditor.ui.section.media; -import java.net.URISyntaxException; import java.util.List; import java.util.Set; @@ -19,7 +18,6 @@ import eu.etaxonomy.cdm.model.media.MediaRepresentationPart; import eu.etaxonomy.cdm.model.media.MediaUtils; import eu.etaxonomy.taxeditor.preference.IPreferenceKeys; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; -import eu.etaxonomy.taxeditor.preference.Resources; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; @@ -62,14 +60,10 @@ public class MediaDetailElement extends AbstractCdmDetailElement{ } @Override - public void handleEvent(Object eventSource) { + public void handleEvent(Object eventSource){ if(eventSource==textUri){ textUri.setBackground(getPersistentBackground()); - try { - singleMediaRepresentationPart.setUri(textUri.getUri()); - } catch (URISyntaxException e) { - textUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR)); - } + singleMediaRepresentationPart.setUri(textUri.getUri()); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartElement.java index a5ef67341..5a2952547 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartElement.java @@ -1,9 +1,9 @@ // $Id$ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -13,16 +13,14 @@ package eu.etaxonomy.taxeditor.ui.section.media; import java.net.URI; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.StringUtils; import org.eclipse.swt.events.SelectionListener; import eu.etaxonomy.cdm.model.media.MediaRepresentationPart; import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; -import eu.etaxonomy.taxeditor.ui.element.LabelElement; import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement; -import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement; import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement; /** @@ -35,36 +33,22 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement; public class MediaRepresentationPartElement extends AbstractEntityCollectionElement { - protected TextWithLabelElement text_uri; + protected UriWithLabelElement text_uri; protected NumberWithLabelElement text_size; - protected LabelElement element_messages; - - /** - *

Constructor for AbstractMediaRepresentationPartElement.

- * - * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object. - * @param section a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object. - * @param element a T object. - * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object. - * @param style a int. - * @param a T object. - */ public MediaRepresentationPartElement(CdmFormFactory formFactory, AbstractFormSection section, T element, SelectionListener removeListener, int style) { super(formFactory, section, element, removeListener, null, style); } - + /** {@inheritDoc} */ @Override public void createControls(ICdmFormElement element, int style) { - text_uri = formFactory.createTextWithLabelElement(element, "URI", null, style); + text_uri = formFactory.createUriWithLabelElement(element, "URI", null, style); text_size = formFactory.createNumberTextWithLabelElement(element, "Size", null, style); text_size.setEnabled(false); - - element_messages = formFactory.createLabel(element, ""); } @Override @@ -76,27 +60,15 @@ public class MediaRepresentationPartElement e if(entity.getUri() != null){ text_uri.setText(entity.getUri().toString()); } - element_messages.setText("We currrently do not know how to display this generic MediaRepresentationPart to you."); } @Override public void handleEvent(Object eventSource) { if(eventSource == text_uri){ - try { - String uriString = text_uri.getText(); - URI uri = StringUtils.isNotEmpty(uriString) ? new URI(uriString) : null; - getEntity().setUri(uri); - } catch (Exception e) { - handleException(e); - } finally { - firePropertyChangeEvent(this); - } - } - } - - protected void handleException(Exception e) { - element_messages.setText(e.getMessage()); - text_size.setText(""); + URI uri = text_uri.getUri(); + getEntity().setUri(uri); + firePropertyChangeEvent(this); + } } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java index 5896a5e2a..aa7a3ef6b 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java @@ -11,7 +11,6 @@ package eu.etaxonomy.taxeditor.ui.section.name; import java.net.URI; -import java.net.URISyntaxException; import org.eclipse.swt.events.SelectionListener; @@ -22,14 +21,13 @@ import eu.etaxonomy.cdm.model.media.MediaRepresentation; import eu.etaxonomy.cdm.model.media.MediaRepresentationPart; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.Reference; -import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.ISelectableElement; import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator; -import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement; import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled; import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement; @@ -44,7 +42,7 @@ public class ProtologueElement extends AbstractEntityCollectionElement getEntity().setLabel(text_label.getText()); getEntity().setTitleCache(null); } else if (eventSource == text_description) { - getEntity().getRepresentation(Language.getDefaultLanguage()).setText(text_description.getText()); - } else if (eventSource == uri_uri) { - - try { - getEntity().setUri(uri_uri.getUri()); - } catch (URISyntaxException e) { - - e.printStackTrace(); - } + getEntity().setUri(uri_uri.getUri()); } else if (eventSource == text_abbreviatedLabel) { getEntity().getRepresentation(Language.getDefaultLanguage()).setAbbreviatedLabel(text_abbreviatedLabel.getText()); } else if (eventSource == timePeriod_validPeriod) { diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java index e1aea5b8f..5f62d2417 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java @@ -1,19 +1,15 @@ // $Id$ /** * Copyright (C) 2009 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ package eu.etaxonomy.taxeditor.ui.section.vocabulary; -import java.net.URISyntaxException; - import eu.etaxonomy.cdm.model.common.TermVocabulary; -import eu.etaxonomy.taxeditor.model.MessagingUtils; -import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement; @@ -41,7 +37,7 @@ public class TermVocabularyDetailElement extends AbstractTermBaseDetailElement