Revision 47c992a7
Added by Patrick Plitzner almost 5 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaDetailElement.java | ||
---|---|---|
76 | 76 |
} |
77 | 77 |
singleMediaRepresentationPart.getMediaRepresentation().setMimeType(imageInfo.getMimeType()); |
78 | 78 |
singleMediaRepresentationPart.getMediaRepresentation().setSuffix(imageInfo.getSuffix()); |
79 |
disposeImage(); |
|
79 | 80 |
element_image = formFactory.createImageElement(parentFormElement, uri, style); |
80 | 81 |
StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true); |
81 | 82 |
try { |
82 | 83 |
element_image.initImageUri(uri); |
83 | 84 |
} catch (IOException | HttpException e) { |
84 |
exception(e, uri);
|
|
85 |
exception(e); |
|
85 | 86 |
} |
86 | 87 |
element_image.loadImage(); |
87 | 88 |
disposeErrorLabel(); |
88 | 89 |
}); |
89 | 90 |
} catch (IOException|HttpException e){ |
90 |
exception(e, uri);
|
|
91 |
exception(e); |
|
91 | 92 |
} |
92 | 93 |
return Status.OK_STATUS; |
93 | 94 |
} |
... | ... | |
145 | 146 |
} |
146 | 147 |
} |
147 | 148 |
|
148 |
private void exception(Exception e, URI uri){
|
|
149 |
private void exception(Exception e){ |
|
149 | 150 |
getLayoutComposite().getDisplay().asyncExec(()->{ |
151 |
String exceptionString; |
|
150 | 152 |
if(e.getCause()!=null && e.getCause().getClass().equals(ImageReadException.class)){ |
151 | 153 |
disposeErrorLabel(); |
152 |
handleException(uri, "No preview available for this file type");
|
|
154 |
exceptionString = "No preview available for this file type";
|
|
153 | 155 |
} |
154 | 156 |
else{ |
155 | 157 |
disposeErrorLabel(); |
156 |
handleException(uri, "No file found");
|
|
158 |
exceptionString = "No file found";
|
|
157 | 159 |
} |
160 |
disposeImage(); |
|
161 |
if(lblNoImage==null){ |
|
162 |
lblNoImage = formFactory.createLabel(getLayoutComposite(), exceptionString); |
|
163 |
lblNoImage.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); |
|
164 |
lblNoImage.setAlignment(SWT.CENTER); |
|
165 |
} |
|
166 |
getLayoutComposite().redraw(); |
|
158 | 167 |
}); |
159 | 168 |
} |
160 | 169 |
|
170 |
private void disposeImage(){ |
|
171 |
if(element_image!=null){ |
|
172 |
element_image.unloadImage(); |
|
173 |
element_image.dispose(); |
|
174 |
element_image = null; |
|
175 |
} |
|
176 |
} |
|
177 |
|
|
161 | 178 |
private void disposeErrorLabel() { |
162 | 179 |
if(lblNoImage!=null){ |
163 | 180 |
lblNoImage.dispose(); |
... | ... | |
237 | 254 |
isAdvancedMediaView = false; |
238 | 255 |
} |
239 | 256 |
|
240 |
private void handleException(URI uri, String labelText) { |
|
241 |
if(element_image!=null){ |
|
242 |
element_image.unloadImage(); |
|
243 |
element_image.loadImage(); |
|
244 |
element_image.dispose(); |
|
245 |
} |
|
246 |
if(lblNoImage==null){ |
|
247 |
lblNoImage = formFactory.createLabel(getLayoutComposite(), labelText); |
|
248 |
lblNoImage.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); |
|
249 |
lblNoImage.setAlignment(SWT.CENTER); |
|
250 |
} |
|
251 |
} |
|
252 |
|
|
253 | 257 |
public boolean isAdvancedMediaView() { |
254 | 258 |
return isAdvancedMediaView; |
255 | 259 |
} |
Also available in: Unified diff
ref #8129 Fix image disposing