ref #7056: add possibility to show preview of the image in media view
authorKatja Luther <k.luther@bgbm.org>
Mon, 6 Nov 2017 14:07:00 +0000 (15:07 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 6 Nov 2017 14:07:00 +0000 (15:07 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewLabelProvider.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/e4/MediaViewPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MediaPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java

index 90ba5d3626d393fdff16e9a3acbef446ad4533c7..2a1b94c28042de4c21fd591a62802d791e50127c 100644 (file)
@@ -12,13 +12,17 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
  * @version $Id: $
  */
 public class MediaLabelProvider extends ColumnLabelProvider {
-       
+
        /** {@inheritDoc} */
-       public String getText(Object element) {
+       @Override
+    public String getText(Object element) {
                if(element instanceof IdentifiableEntity){
                        return ((IdentifiableEntity) element).getTitleCache();
                }
-               
+
                return element.toString();
        }
+
+
+
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewLabelProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewLabelProvider.java
new file mode 100755 (executable)
index 0000000..09dbdbb
--- /dev/null
@@ -0,0 +1,110 @@
+// $Id$
+/**
+* Copyright (C) 2017 EDIT
+* 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.editor.view.media;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.common.UriUtils;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author k.luther
+ * @date 11.10.2017
+ *
+ */
+public class MediaViewLabelProvider extends LabelProvider implements IStyledLabelProvider {
+
+    @Override
+    public StyledString getStyledText(Object element) {
+        if (element instanceof IdentifiableEntity) {
+            IdentifiableEntity identifiableEntity= (IdentifiableEntity) element;
+            StyledString styledString = new StyledString(identifiableEntity.getTitleCache());
+
+            return styledString;
+        }
+        return null;
+    }
+
+    @Override
+    public Image getImage(Object element) {
+        Image image = null;
+        if (element instanceof Media && PreferencesUtil.isShowMediaPreview()){
+            Set<MediaRepresentation> representations = ((Media)element).getRepresentations();
+            if(representations.iterator().hasNext()){
+                MediaRepresentation rep = representations.iterator().next();
+                List<MediaRepresentationPart> parts = rep.getParts();
+                URI uri = parts.get(0).getUri();
+                if (uri == null){
+                    return null;
+                }
+                InputStream imageStream;
+                try {
+                    imageStream = UriUtils.getInputStream(uri);
+                    image = new Image(Display.getCurrent(), imageStream);
+                    int height = image.getBounds().height;
+                    int width = image.getBounds().width;
+                    int scale = 50;
+                    if (height>width){
+                        width = width/(height/scale);
+                        height = scale;
+                    }else{
+                        height = height/(width/scale);
+                        width = scale;
+                    }
+                    Image scaled = new Image(Display.getDefault(), scale, scale);
+
+                    GC gc = new GC(scaled);
+                    gc.setAntialias(SWT.ON);
+                    gc.setInterpolation(SWT.HIGH);
+
+
+                    gc.drawImage(image, 0, 0,
+                    image.getBounds().width, image.getBounds().height,
+                    0, 0, width, height);
+
+                    gc.dispose();
+                    image.dispose(); // don't forget about me!
+                    return scaled;
+
+                } catch (Exception e) {
+                    // TODO Auto-generated catch block
+                   return null;
+                }
+
+            }
+
+        }
+        return image;
+    }
+
+    @Override
+    public void dispose() {
+        // garbage collection system resources
+
+    }
+
+
+
+}
index 737fc4cdbb75c0a79bbcf5d73761b436557e3071..f48b568dc70135b6ea86b3678ed7c0c70667d7a1 100644 (file)
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.editor.view.concept.e4.ConceptViewPartE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
 import eu.etaxonomy.taxeditor.editor.view.media.MediaContentProvider;
-import eu.etaxonomy.taxeditor.editor.view.media.MediaLabelProvider;
+import eu.etaxonomy.taxeditor.editor.view.media.MediaViewLabelProvider;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
@@ -54,7 +54,12 @@ public class MediaViewPartE4 extends AbstractCdmEditorPartE4
                                | SWT.V_SCROLL | SWT.FULL_SELECTION));
 
                treeViewer.setContentProvider(new MediaContentProvider());
-               treeViewer.setLabelProvider(new MediaLabelProvider());
+               treeViewer.setLabelProvider(new MediaViewLabelProvider());
+
+//             TreeViewerColumn imagePreview = new TreeViewerColumn(treeViewer, SWT.NONE);
+//             imagePreview.setLabelProvider(new DelegatingStyledCellLabelProvider(
+//                new MediaViewLabelProvider(createImageDescriptor())));
+
                treeViewer.setAutoExpandLevel(2);
                viewer = treeViewer;
 
@@ -127,4 +132,6 @@ public class MediaViewPartE4 extends AbstractCdmEditorPartE4
                return Messages.MediaViewPart_MEDIA;
        }
 
+
+
 }
index f58fd1df97178bd22894a506cabaca2a96cef83c..977a1aee135ec948dfb15a7f7a128180c53e2735 100644 (file)
@@ -146,7 +146,7 @@ public interface IPreferenceKeys {
     public static final String CHECKLIST_SYMBOL = "eu.etaxonomy.taxeditor.checklist.checklistSymbol";
     public static final String CHECKLIST_SHOW_RANK = "eu.etaxonomy.taxeditor.checklist.checklistShowRank";
 
-    public static final String SHOW_ADVANCED_MEDIA_SECTION = "eu.etaxonomy.taxeditor.media.showAdvancedMedia";
+
     public static final String SHOW_SIMPLE_NAME_DETAILS_SECTION = "eu.etaxonomy.taxeditor.name.showSimpleName";
     public static final String SHOW_SIMPLE_NAME_DETAILS_TAXON = "eu.etaxonomy.taxeditor.name.showNameTaxon";
     public static final String SHOW_NAME_DETAILS_SECTION_LSID = "eu.etaxonomy.taxeditor.name.showNameLsid";
@@ -217,6 +217,9 @@ public interface IPreferenceKeys {
 
     public static final String BIOCASE_PROVIDER_LIST = "eu.etaxonomy.taxeditor.abcd_import.biocaseProviderList";
 
+    public static final String SHOW_ADVANCED_MEDIA_SECTION = "eu.etaxonomy.taxeditor.media.showAdvancedMedia";
+    public static final String SHOW_MEDIA_PREVIEW = "eu.etaxonomy.taxeditor.media.showMediaPreview";
+
 
 
 
index 9d3963ca622d7c4eda7cad6c3f7a8c846ae665c4..62c1d837333ab979ba51f69584ee70d164bcc407 100644 (file)
@@ -36,6 +36,9 @@ public class MediaPreferences extends FieldEditorPreferencePage implements IWork
         addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_ADVANCED_MEDIA_SECTION,
                 "Show Advanced Media Section",
                 getFieldEditorParent()));
+        addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_MEDIA_PREVIEW,
+                "Show Preview in Media View",
+                getFieldEditorParent()));
 
     }
 
index 6ed9f3739177478a011171076a81c58da7a122a1..11f53743fb9c9459b57f26af188a3c73a693c433 100644 (file)
@@ -267,6 +267,11 @@ public class PreferencesUtil implements IPreferenceKeys {
            return null;
        }
 
+       public static boolean isShowMediaPreview(){
+        boolean isShowMediaPreview = getPreferenceStore().getBoolean(SHOW_MEDIA_PREVIEW);
+        return isShowMediaPreview;
+    }
+
        /**
         * Get the match strategy for the given class that was stored in preferences
         * or the default strategy if it was not stored in preferences