01895419a1647cd73c4493212fadf3111188f353
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / media / MediaViewLabelProvider.java
1 // $Id$
2 /**
3 * Copyright (C) 2017 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.editor.view.media;
11
12 import java.io.InputStream;
13 import java.net.URI;
14 import java.util.List;
15 import java.util.Set;
16
17 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
18 import org.eclipse.jface.viewers.LabelProvider;
19 import org.eclipse.jface.viewers.StyledString;
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.graphics.GC;
22 import org.eclipse.swt.graphics.Image;
23 import org.eclipse.swt.widgets.Display;
24
25 import eu.etaxonomy.cdm.common.UriUtils;
26 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
27 import eu.etaxonomy.cdm.model.media.Media;
28 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
29 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
30 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
31
32 /**
33 * @author k.luther
34 * @date 11.10.2017
35 *
36 */
37 public class MediaViewLabelProvider extends LabelProvider implements IStyledLabelProvider {
38
39 /**
40 * {@inheritDoc}
41 */
42 @Override
43 public String getText(Object element) {
44 return getStyledText(element).getString();
45 }
46
47 @Override
48 public StyledString getStyledText(Object element) {
49 if (element instanceof IdentifiableEntity) {
50 IdentifiableEntity<?> identifiableEntity= (IdentifiableEntity<?>) element;
51 if(identifiableEntity.getId()==0){
52 return new StyledString(identifiableEntity.generateTitle());
53 }
54 else{
55 return new StyledString(identifiableEntity.getTitleCache());
56 }
57 }
58 return null;
59 }
60
61 @Override
62 public Image getImage(Object element) {
63 Image image = null;
64 if (element instanceof Media && PreferencesUtil.isShowMediaPreview()){
65 Set<MediaRepresentation> representations = ((Media)element).getRepresentations();
66 if(representations.iterator().hasNext()){
67 MediaRepresentation rep = representations.iterator().next();
68 List<MediaRepresentationPart> parts = rep.getParts();
69 MediaRepresentationPart smallestPart = null;
70 for (MediaRepresentationPart part: parts){
71 if (smallestPart != null){
72 if (smallestPart.getSize() != null && part.getSize() != null) {
73 if (smallestPart.getSize() > part.getSize()){
74 smallestPart = part;
75 }
76 }
77 }else{
78 smallestPart = part;
79 }
80
81 }
82 URI uri = parts.get(0).getUri();
83 if (uri == null){
84 return null;
85 }
86 InputStream imageStream;
87 try {
88 imageStream = UriUtils.getInputStream(uri);
89 image = new Image(Display.getCurrent(), imageStream);
90 int height = image.getBounds().height;
91 int width = image.getBounds().width;
92 int scale = 50;
93 if (height>width){
94 width = width/(height/scale);
95 height = scale;
96 }else{
97 height = height/(width/scale);
98 width = scale;
99 }
100 Image scaled = new Image(Display.getDefault(), scale, scale);
101
102 GC gc = new GC(scaled);
103 gc.setAntialias(SWT.ON);
104 gc.setInterpolation(SWT.HIGH);
105
106
107 gc.drawImage(image, 0, 0,
108 image.getBounds().width, image.getBounds().height,
109 0, 0, width, height);
110
111 gc.dispose();
112 image.dispose(); // don't forget about me!
113 return scaled;
114
115 } catch (Exception e) {
116 // TODO Auto-generated catch block
117 return null;
118 }
119
120 }
121
122 }
123 return image;
124 }
125
126 @Override
127 public void dispose() {
128 // garbage collection system resources
129
130 }
131
132
133
134 }