*/
package eu.etaxonomy.taxeditor.ui.section.media;
+import java.io.IOException;
import java.net.URI;
import java.util.List;
import java.util.Set;
+import org.apache.http.HttpException;
+
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
import eu.etaxonomy.cdm.model.media.MediaUtils;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ImageElement;
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
* Used to store the URI even if it is invalid and thus cannot be stored in CDM
*/
private String uriBuffer;
+ private ImageElement element_image;
+
+ private final Runnable postRunnable = new Runnable(){
+ @Override
+ public void run() {
+ AbstractUtility.reflowDetailsViewer();
+ AbstractUtility.reflowSupplementalViewer();
+ }
+ };
public MediaDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
super(formFactory, formElement);
if(uri==null){
uriBuffer=textUri.getText();
}
+ try {
+ loadImage(singleMediaRepresentationPart.getUri(), true);
+ } catch (Exception e) {
+ handleException(e);
+ }
}
}
if(textUri!=null){
removeElementsAndControls(textUri);
}
+ if(element_image!=null){
+ element_image.dispose();
+ element_image = null;
+ }
section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), parentFormElement, style);
section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
section_mediaRepresentation.setEntity(getEntity());
textUri.parseText();
}
textUri.getLayoutComposite().layout();
+
+ element_image = formFactory.createImageElement(parentFormElement, null, style);
+ try {
+ loadImage(singleMediaRepresentationPart.getUri(), false);
+ } catch (Exception e) {
+ handleException(e);
+ }
}
}
isAdvancedMediaView = false;
}
+ private void loadImage(URI uri, boolean updateDimensions) throws IOException, HttpException{
+ element_image.initImageUri(uri);
+ element_image.loadImage(postRunnable);
+ if(uri == null){
+ return;
+ }
+ }
+
+ private void handleException(Exception e) {
+ element_image.unloadImage(postRunnable);
+ element_image.loadImage(new Runnable(){
+ @Override
+ public void run() {
+ AbstractUtility.reflowDetailsViewer();
+ AbstractUtility.reflowSupplementalViewer();
+ }
+ });
+ }
public boolean isAdvancedMediaView() {
return isAdvancedMediaView;
}