|
14 | 14 | import org.eclipse.swt.graphics.ImageDataProvider;
|
15 | 15 | import org.eclipse.ui.model.WorkbenchLabelProvider;
|
16 | 16 |
|
| 17 | +import io.snyk.eclipse.plugin.utils.SnykLogger; |
| 18 | + |
17 | 19 | public class BaseTreeNode extends TreeNode {
|
18 | 20 | private ImageDescriptor imageDescriptor;
|
19 | 21 | private String text = "";
|
@@ -58,16 +60,34 @@ public void removeChildren() {
|
58 | 60 | public void setImageDescriptor(ImageDescriptor imageDescriptor) {
|
59 | 61 | this.imageDescriptor = imageDescriptor;
|
60 | 62 | }
|
61 |
| - |
| 63 | + |
62 | 64 | protected ImageDescriptor getImageDescriptor(IResource object) {
|
63 |
| - ILabelProvider labelProvider = WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider(); |
| 65 | + ILabelProvider labelProvider = null; |
| 66 | + Image image = null; |
| 67 | + |
64 | 68 | try {
|
65 |
| - Image image = labelProvider.getImage(object); |
66 |
| - if (image == null || image.isDisposed()) |
| 69 | + labelProvider = WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider(); |
| 70 | + image = labelProvider.getImage(object); |
| 71 | + |
| 72 | + if (image == null || image.isDisposed()) { |
67 | 73 | return null;
|
68 |
| - |
| 74 | + } |
| 75 | + |
69 | 76 | return getImageDescriptorFromImage(image);
|
| 77 | + |
| 78 | + } catch (Exception e) { |
| 79 | + SnykLogger.logError(e); |
| 80 | + return null; |
70 | 81 | } finally {
|
| 82 | + disposeResources(labelProvider, image); |
| 83 | + } |
| 84 | + } |
| 85 | + |
| 86 | + private void disposeResources(ILabelProvider labelProvider, Image image) { |
| 87 | + if (image != null && !image.isDisposed()) { |
| 88 | + image.dispose(); |
| 89 | + } |
| 90 | + if (labelProvider != null) { |
71 | 91 | labelProvider.dispose();
|
72 | 92 | }
|
73 | 93 | }
|
@@ -107,7 +127,7 @@ public String getDetails() {
|
107 | 127 |
|
108 | 128 | protected ImageDescriptor getImageDescriptorFromImage(Image image) {
|
109 | 129 | final var data = image.getImageData();
|
110 |
| - |
| 130 | + |
111 | 131 | ImageDataProvider provider = new ImageDataProvider() {
|
112 | 132 | @Override
|
113 | 133 | public ImageData getImageData(int zoom) {
|
|
0 commit comments