Enhance handling of simple and advanced media view
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / media / MediaRepresentationPartElement.java
index 5a295254788c851528ec31c0a1eb5e141f4d2b17..663848da419d2bef3ba02e2b78c73f4c0911f147 100644 (file)
@@ -58,8 +58,14 @@ public class MediaRepresentationPartElement<T extends MediaRepresentationPart> e
                        text_size.setText(FileUtils.byteCountToDisplaySize(entity.getSize()));
                }
                if(entity.getUri() != null){
-                       text_uri.setText(entity.getUri().toString());
-               }
+                       text_uri.setUri(entity.getUri());
+               } else {
+            String uriBuffer = getParentMediaDetailElement().getUriBuffer();
+            if(uriBuffer!=null){
+                text_uri.setText(uriBuffer);
+                text_uri.getUri();//just to update the error label
+            }
+        }
        }
 
        @Override
@@ -67,8 +73,27 @@ public class MediaRepresentationPartElement<T extends MediaRepresentationPart> e
                if(eventSource == text_uri){
                    URI uri = text_uri.getUri();
                    getEntity().setUri(uri);
+                   if(uri==null){
+                //buffer URI if parsing error occurred
+                MediaDetailElement parentMediaDetailElement = getParentMediaDetailElement();
+                if(parentMediaDetailElement!=null){
+                    parentMediaDetailElement.setUriBuffer(text_uri.getText());
+                }
+            }
+
                    firePropertyChangeEvent(this);
                }
        }
 
+    protected MediaDetailElement getParentMediaDetailElement() {
+        ICdmFormElement parentElement = getParentElement();
+        while(parentElement!=null){
+            parentElement = parentElement.getParentElement();
+            if(parentElement instanceof MediaDetailElement){
+                return (MediaDetailElement) parentElement;
+            }
+        }
+        return null;
+    }
+
 }