diff options
author | Darin Wright | 2003-02-10 21:01:21 +0000 |
---|---|---|
committer | Darin Wright | 2003-02-10 21:01:21 +0000 |
commit | d75c154674bceaf11b8b1507dd2802fbd15b263d (patch) | |
tree | a59e83c225b444321bd0cd0b28cba3e89e7f7d42 | |
parent | 969187ffbdce710790ab8cd55aa7671c04108f95 (diff) | |
download | eclipse.platform.debug-d75c154674bceaf11b8b1507dd2802fbd15b263d.tar.gz eclipse.platform.debug-d75c154674bceaf11b8b1507dd2802fbd15b263d.tar.xz eclipse.platform.debug-d75c154674bceaf11b8b1507dd2802fbd15b263d.zip |
bug 29815 - Ant artwork
19 files changed, 302 insertions, 70 deletions
diff --git a/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/outline/PlantyContentOutlinePage.java b/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/outline/PlantyContentOutlinePage.java index fe95eda45..762b35a17 100644 --- a/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/outline/PlantyContentOutlinePage.java +++ b/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/outline/PlantyContentOutlinePage.java @@ -38,6 +38,7 @@ import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITreeContentProvider; @@ -55,6 +56,7 @@ import org.eclipse.ui.externaltools.internal.ant.editor.PlantyException; import org.eclipse.ui.externaltools.internal.ant.editor.xml.IAntEditorConstants; import org.eclipse.ui.externaltools.internal.ant.editor.xml.XmlAttribute; import org.eclipse.ui.externaltools.internal.ant.editor.xml.XmlElement; +import org.eclipse.ui.externaltools.internal.model.AntImageDescriptor; import org.eclipse.ui.externaltools.internal.model.ExternalToolsImages; import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin; import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants; @@ -175,22 +177,32 @@ public class PlantyContentOutlinePage extends ContentOutlinePage { XmlElement projectNode= tempElement.getParentNode(); XmlAttribute attribute= projectNode.getAttributeNamed(IAntEditorConstants.ATTR_DEFAULT); String defaultTarget= ""; //$NON-NLS-1$ + ImageDescriptor base = null; + int flags = 0; + if (attribute != null) { defaultTarget= attribute.getValue(); } if (tempElement.getAttributeNamed(IAntEditorConstants.ATTR_NAME).getValue().equals(defaultTarget)) { - //TODO:replace with default target icon when available Bug 29815 - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMAGE_ID_TARGET); + flags = flags | AntImageDescriptor.DEFAULT_TARGET; + } + if (tempElement.isErrorNode()) { + flags = flags | AntImageDescriptor.HAS_ERRORS; + } + if (tempElement.getAttributeNamed(IAntEditorConstants.ATTR_DESCRIPTION) == null) { + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET_PRIVATE); } else { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMAGE_ID_TARGET); + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET); } + return ExternalToolsImages.getImage(new AntImageDescriptor(base, flags)); } if("project".equals(tempElement.getName())) { //$NON-NLS-1$ + int flags = 0; + ImageDescriptor base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_PROJECT); if (tempElement.isErrorNode()) { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_PROJECT_ERROR); - } else { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_PROJECT); + flags = flags | AntImageDescriptor.HAS_ERRORS; } + return ExternalToolsImages.getImage(new AntImageDescriptor(base, flags)); } if (tempElement.isErrorNode()) { diff --git a/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/xml/IAntEditorConstants.java b/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/xml/IAntEditorConstants.java index d111eed6a..a60aef9c2 100644 --- a/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/xml/IAntEditorConstants.java +++ b/org.eclipse.ui.externaltools/Ant Editor/org/eclipse/ui/externaltools/internal/ant/editor/xml/IAntEditorConstants.java @@ -21,6 +21,7 @@ public interface IAntEditorConstants { public static final String ATTR_COMMAND= "command"; //$NON-NLS-1$ public static final String ATTR_EXECUTABLE= "executable"; //$NON-NLS-1$ public static final String ATTR_TYPE= "type"; //$NON-NLS-1$ + public static final String ATTR_DESCRIPTION= "description"; //$NON-NLS-1$ /** * Values of the type attribute stored in XmlElements */ diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/launchConfigurations/AntTargetLabelProvider.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/launchConfigurations/AntTargetLabelProvider.java index b71c41a12..5a2f29c27 100644 --- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/launchConfigurations/AntTargetLabelProvider.java +++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/launchConfigurations/AntTargetLabelProvider.java @@ -10,11 +10,13 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ import org.eclipse.ant.core.TargetInfo; +import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.externaltools.internal.model.AntImageDescriptor; import org.eclipse.ui.externaltools.internal.model.ExternalToolsImages; -import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants; +import org.eclipse.ui.externaltools.internal.ui.IExternalToolsUIConstants; /** * Ant target label provider @@ -49,7 +51,18 @@ public class AntTargetLabelProvider extends LabelProvider { */ public Image getImage(Object element) { if (viewer == null || viewer.getControl().isEnabled()) { - return ExternalToolsImages.getImage(IExternalToolConstants.IMG_TAB_ANT_TARGETS); + TargetInfo target = (TargetInfo)element; + ImageDescriptor base = null; + int flags = 0; + if (target.isDefault()) { + flags = flags | AntImageDescriptor.DEFAULT_TARGET; + } + if (target.getDescription() == null) { + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET_PRIVATE); + } else { + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET); + } + return ExternalToolsImages.getImage(new AntImageDescriptor(base, flags)); } return null; } diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntTargetsLabelProvider.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntTargetsLabelProvider.java deleted file mode 100644 index c44823409..000000000 --- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntTargetsLabelProvider.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.eclipse.ui.externaltools.internal.ant.view; -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. All rights reserved. -This file is made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html -**********************************************************************/ -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.externaltools.internal.ant.view.elements.TargetNode; -import org.eclipse.ui.externaltools.internal.model.ExternalToolsImages; -import org.eclipse.ui.externaltools.internal.ui.IExternalToolsUIConstants; - -public class AntTargetsLabelProvider implements ILabelProvider { - - public Image getImage(Object element) { - if (element instanceof TargetNode) { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_TARGET); - } - return null; - } - - public String getText(Object element) { - if (element instanceof TargetNode) { - TargetNode node= (TargetNode) element; - StringBuffer buffer= new StringBuffer(node.getName()); - if (node.equals(node.getProject().getDefaultTarget())) { - buffer.append(AntViewMessages.getString("TargetNode.default")); //$NON-NLS-1$ - } - buffer.append(" [").append(node.getProject().getName()).append(']'); //$NON-NLS-1$ - return buffer.toString(); - } - return element.toString(); - } - - public void addListener(ILabelProviderListener listener) { - } - - public void dispose() { - } - - public boolean isLabelProperty(Object element, String property) { - return false; - } - - public void removeListener(ILabelProviderListener listener) { - } - -} diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntView.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntView.java index 982fb12f5..1a1d5a3c0 100644 --- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntView.java +++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntView.java @@ -417,7 +417,7 @@ public class AntView extends ViewPart implements IResourceChangeListener { targetContentProvider.addTarget((TargetNode) targets.next()); } } - targetViewer.setLabelProvider(new AntTargetsLabelProvider()); + targetViewer.setLabelProvider(new AntViewLabelProvider()); // The content provider doesn't use the input, but it input has to be set to something. targetViewer.setInput(ResourcesPlugin.getWorkspace()); targetViewer.addSelectionChangedListener(new ISelectionChangedListener() { diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntViewLabelProvider.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntViewLabelProvider.java index 2ff4453ea..c92a486cc 100644 --- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntViewLabelProvider.java +++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/AntViewLabelProvider.java @@ -7,11 +7,14 @@ which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html **********************************************************************/ +import org.eclipse.jface.resource.CompositeImageDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.externaltools.internal.ant.view.elements.ProjectNode; import org.eclipse.ui.externaltools.internal.ant.view.elements.TargetNode; +import org.eclipse.ui.externaltools.internal.model.AntImageDescriptor; import org.eclipse.ui.externaltools.internal.model.ExternalToolsImages; import org.eclipse.ui.externaltools.internal.ui.IExternalToolsUIConstants; @@ -27,20 +30,28 @@ public class AntViewLabelProvider implements ILabelProvider { public Image getImage(Object element) { if (element instanceof ProjectNode) { ProjectNode project= (ProjectNode) element; + int flags = 0; if (project.isErrorNode()) { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_PROJECT_ERROR); - } else { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_PROJECT); + flags = flags | AntImageDescriptor.HAS_ERRORS; } + CompositeImageDescriptor descriptor = new AntImageDescriptor(ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_PROJECT), flags); + return ExternalToolsImages.getImage(descriptor); } else if (element instanceof TargetNode) { TargetNode target= (TargetNode) element; - if (target.isErrorNode()) { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_TARGET_ERROR); - } else if (target.equals(target.getProject().getDefaultTarget())){ - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_DEFAULT_TARGET); + int flags = 0; + ImageDescriptor base = null; + if (target.getDescription() == null) { + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET_PRIVATE); } else { - return ExternalToolsImages.getImage(IExternalToolsUIConstants.IMG_ANT_TARGET); + base = ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_ANT_TARGET); + } + if (target.isErrorNode()) { + flags = flags | AntImageDescriptor.HAS_ERRORS; + } + if (target.equals(target.getProject().getDefaultTarget())){ + flags = flags | AntImageDescriptor.DEFAULT_TARGET; } + return ExternalToolsImages.getImage(new AntImageDescriptor(base, flags)); } return null; } diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/AntImageDescriptor.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/AntImageDescriptor.java new file mode 100644 index 000000000..8c5f17293 --- /dev/null +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/AntImageDescriptor.java @@ -0,0 +1,125 @@ +package org.eclipse.ui.externaltools.internal.model; + +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ + +import org.eclipse.jface.resource.CompositeImageDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.ui.externaltools.internal.ui.IExternalToolsUIConstants; + +/** + * A JDIImageDescriptor consists of a main icon and several adornments. The adornments + * are computed according to flags set on creation of the descriptor. + */ +public class AntImageDescriptor extends CompositeImageDescriptor { + + /** Flag to render the default target adornment */ + public final static int DEFAULT_TARGET= 0x0001; + /** Flag to render the may be out of synch adornment */ + public final static int HAS_ERRORS= 0x0002; + + private ImageDescriptor fBaseImage; + private int fFlags; + private Point fSize; + + /** + * Create a new JDIImageDescriptor. + * + * @param baseImage an image descriptor used as the base image + * @param flags flags indicating which adornments are to be rendered + * + */ + public AntImageDescriptor(ImageDescriptor baseImage, int flags) { + setBaseImage(baseImage); + setFlags(flags); + } + + /** + * @see CompositeImageDescriptor#getSize() + */ + protected Point getSize() { + if (fSize == null) { + ImageData data= getBaseImage().getImageData(); + setSize(new Point(data.width, data.height)); + } + return fSize; + } + + /** + * @see Object#equals(java.lang.Object) + */ + public boolean equals(Object object) { + if (!(object instanceof AntImageDescriptor)){ + return false; + } + + AntImageDescriptor other= (AntImageDescriptor)object; + return (getBaseImage().equals(other.getBaseImage()) && getFlags() == other.getFlags()); + } + + /** + * @see Object#hashCode() + */ + public int hashCode() { + return getBaseImage().hashCode() | getFlags(); + } + + /** + * @see CompositeImageDescriptor#drawCompositeImage(int, int) + */ + protected void drawCompositeImage(int width, int height) { + ImageData bg= getBaseImage().getImageData(); + if (bg == null) { + bg= DEFAULT_IMAGE_DATA; + } + drawImage(bg, 0, 0); + drawOverlays(); + } + + /** + * Add any overlays to the image as specified in the flags. + */ + protected void drawOverlays() { + int flags= getFlags(); + int x= 0; + int y= 0; + ImageData data= null; + if ((flags & HAS_ERRORS) != 0) { + x= getSize().x; + y= 0; + data= ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_OVR_ERROR).getImageData(); + x -= data.width; + drawImage(data, x, y); + } else if ((flags & DEFAULT_TARGET) != 0) { + x= getSize().x; + y= 0; + data= ExternalToolsImages.getImageDescriptor(IExternalToolsUIConstants.IMG_OVR_DEFAULT).getImageData();; + x -= data.width; + drawImage(data, x, y); + } + } + + protected ImageDescriptor getBaseImage() { + return fBaseImage; + } + + protected void setBaseImage(ImageDescriptor baseImage) { + fBaseImage = baseImage; + } + + protected int getFlags() { + return fFlags; + } + + protected void setFlags(int flags) { + fFlags = flags; + } + + protected void setSize(Point size) { + fSize = size; + } +}
\ No newline at end of file diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java index 24e21007a..28d1d011d 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java @@ -15,6 +15,7 @@ import java.util.HashMap; import java.util.Map; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.graphics.Image; @@ -31,6 +32,11 @@ public class ExternalToolsImages { private static ImageRegistry imageRegistry; /** + * The registry for composite images + */ + private static ImageDescriptorRegistry imageDescriptorRegistry; + + /** * A table of all the <code>ImageDescriptor</code>s. */ private static Map imageDescriptors; @@ -79,9 +85,10 @@ public class ExternalToolsImages { declareRegistryImage(IExternalToolsUIConstants.IMG_GO_TO_FILE, LOCALTOOL + "gotoobj_tsk.gif"); //$NON-NLS-1$ declareRegistryImage(IExternalToolsUIConstants.IMG_TOGGLE, LOCALTOOL + "toggle.gif"); //$NON-NLS-1$ // Ant View Labels - declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_PROJECT, OBJECT + "file_obj.gif"); //$NON-NLS-1$ + declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_PROJECT, OBJECT + "ant_buildfile.gif"); //$NON-NLS-1$ declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_PROJECT_ERROR, OBJECT + "ant_project_err.gif"); //$NON-NLS-1$ - declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_TARGET, OBJECT + "ant_target.gif"); //$NON-NLS-1$ + declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_TARGET, OBJECT + "target_pub.gif"); //$NON-NLS-1$ + declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_TARGET_PRIVATE, OBJECT + "target_priv.gif"); //$NON-NLS-1$ declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_DEFAULT_TARGET, OBJECT + "ant_default_target.gif"); //$NON-NLS-1$ declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_TARGET_ERROR, OBJECT + "ant_target_err.gif"); //$NON-NLS-1$ declareRegistryImage(IExternalToolsUIConstants.IMG_ANT_TARGET_ELEMENTS, OBJECT + "elements.gif"); //$NON-NLS-1$ @@ -98,6 +105,10 @@ public class ExternalToolsImages { declareRegistryImage(IExternalToolConstants.IMG_PROPERTY, OBJECT + "prop_ps.gif"); //$NON-NLS-1$ //ANT object declareRegistryImage(IExternalToolConstants.IMG_TAB_ANT_TARGETS, LOCALTOOL + "ant_tsk_check.gif"); //$NON-NLS-1$ + + // Overlays + declareRegistryImage(IExternalToolsUIConstants.IMG_OVR_DEFAULT, OVR + "run_co.gif"); //$NON-NLS-1$ + declareRegistryImage(IExternalToolsUIConstants.IMG_OVR_ERROR, OVR + "error_co.gif"); //$NON-NLS-1$ } /** @@ -235,7 +246,23 @@ public class ExternalToolsImages { ExternalToolsPlugin.getDefault().log(e); return ImageDescriptor.getMissingImageDescriptor(); } - } + } + + /** + * Returns the image for the given composite descriptor. + */ + public static Image getImage(CompositeImageDescriptor imageDescriptor) { + if (imageDescriptorRegistry == null) { + imageDescriptorRegistry = new ImageDescriptorRegistry(); + } + return imageDescriptorRegistry.get(imageDescriptor); + } + + public static void disposeImageDescriptorRegistry() { + if (imageDescriptorRegistry != null) { + imageDescriptorRegistry.dispose(); + } + } } diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties index 2a7654668..27cd4a545 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties @@ -18,3 +18,4 @@ ToolUtil.argumentVarExpandFailed = The variable named ''{0}'' for the arguments ExternalToolVariable.componentErrorMessage = Problem displaying UI component of selected variable. ToolUtil.No_expansion=The variable {0} with argument {1} could not be expanded to a valid path. +ImageDescriptorRegistry.Allocating_image_for_wrong_display_1=Allocating image for wrong display diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java index 00dda64a4..6faba2270 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java @@ -209,6 +209,7 @@ public final class ExternalToolsPlugin extends AbstractUIPlugin { public void shutdown() throws CoreException { super.shutdown(); ColorManager.getDefault().dispose(); + ExternalToolsImages.disposeImageDescriptorRegistry(); } /** diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ImageDescriptorRegistry.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ImageDescriptorRegistry.java new file mode 100644 index 000000000..8262cc10b --- /dev/null +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ImageDescriptorRegistry.java @@ -0,0 +1,85 @@ +package org.eclipse.ui.externaltools.internal.model; + +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ + +import java.util.HashMap; +import java.util.Iterator; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.util.Assert; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +/** + * A registry that maps <code>ImageDescriptors</code> to <code>Image</code>. + */ +public class ImageDescriptorRegistry { + + private HashMap fRegistry= new HashMap(10); + private Display fDisplay; + + /** + * Creates a new image descriptor registry for the current or default display, + * respectively. + */ + public ImageDescriptorRegistry() { + this(ExternalToolsPlugin.getStandardDisplay()); + } + + /** + * Creates a new image descriptor registry for the given display. All images + * managed by this registry will be disposed when the display gets disposed. + * + * @param diaplay the display the images managed by this registry are allocated for + */ + public ImageDescriptorRegistry(Display display) { + fDisplay= display; + Assert.isNotNull(fDisplay); + hookDisplay(); + } + + /** + * Returns the image associated with the given image descriptor. + * + * @param descriptor the image descriptor for which the registry manages an image + * @return the image associated with the image descriptor or <code>null</code> + * if the image descriptor can't create the requested image. + */ + public Image get(ImageDescriptor descriptor) { + if (descriptor == null) + descriptor= ImageDescriptor.getMissingImageDescriptor(); + + Image result= (Image)fRegistry.get(descriptor); + if (result != null) + return result; + + Assert.isTrue(fDisplay == ExternalToolsPlugin.getStandardDisplay(), ExternalToolsModelMessages.getString("ImageDescriptorRegistry.Allocating_image_for_wrong_display_1")); //$NON-NLS-1$ + result= descriptor.createImage(); + if (result != null) + fRegistry.put(descriptor, result); + return result; + } + + /** + * Disposes all images managed by this registry. + */ + public void dispose() { + for (Iterator iter= fRegistry.values().iterator(); iter.hasNext(); ) { + Image image= (Image)iter.next(); + image.dispose(); + } + fRegistry.clear(); + } + + private void hookDisplay() { + fDisplay.disposeExec(new Runnable() { + public void run() { + dispose(); + } + }); + } +} + diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java index ef1f26fea..6b73fb14f 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java @@ -42,10 +42,16 @@ public interface IExternalToolsUIConstants { public static final String IMG_ANT_PROJECT= IExternalToolConstants.PLUGIN_ID + ".antProject"; //$NON-NLS-1$ public static final String IMG_ANT_PROJECT_ERROR = IExternalToolConstants.PLUGIN_ID + ".antProjectError"; //$NON-NLS-1$ public static final String IMG_ANT_TARGET= IExternalToolConstants.PLUGIN_ID + ".antTarget"; //$NON-NLS-1$ + public static final String IMG_ANT_TARGET_PRIVATE = IExternalToolConstants.PLUGIN_ID + ".antPrivateTarget"; //$NON-NLS-1$ public static final String IMG_ANT_DEFAULT_TARGET= IExternalToolConstants.PLUGIN_ID + ".antDefaultTarget"; //$NON-NLS-1$ public static final String IMG_ANT_TARGET_ERROR = IExternalToolConstants.PLUGIN_ID + ".antTargetError"; //$NON-NLS-1$ public static final String IMG_ANT_TARGET_ELEMENTS= IExternalToolConstants.PLUGIN_ID + ".antTargetElements"; //$NON-NLS-1$ public static final String IMG_ANT_TARGET_ELEMENT= IExternalToolConstants.PLUGIN_ID + ".antTargetElement"; //$NON-NLS-1$ + + // Overlays + public static final String IMG_OVR_DEFAULT = IExternalToolConstants.PLUGIN_ID + ".ovrDefault"; //$NON-NLS-1$ + public static final String IMG_OVR_ERROR = IExternalToolConstants.PLUGIN_ID + ".ovrError"; //$NON-NLS-1$ + public static final String DIALOGSTORE_LASTEXTJAR= IExternalToolConstants.PLUGIN_ID + ".lastextjar"; //$NON-NLS-1$ public static final String DIALOGSTORE_LASTEXTFILE= IExternalToolConstants.PLUGIN_ID + ".lastextfile"; //$NON-NLS-1$ diff --git a/org.eclipse.ui.externaltools/icons/full/obj16/ant_buildfile.gif b/org.eclipse.ui.externaltools/icons/full/obj16/ant_buildfile.gif Binary files differnew file mode 100644 index 000000000..1aa3ae048 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/obj16/ant_buildfile.gif diff --git a/org.eclipse.ui.externaltools/icons/full/obj16/ant_target.gif b/org.eclipse.ui.externaltools/icons/full/obj16/ant_target.gif Binary files differdeleted file mode 100644 index 2eeebb43d..000000000 --- a/org.eclipse.ui.externaltools/icons/full/obj16/ant_target.gif +++ /dev/null diff --git a/org.eclipse.ui.externaltools/icons/full/obj16/file_obj.gif b/org.eclipse.ui.externaltools/icons/full/obj16/file_obj.gif Binary files differdeleted file mode 100644 index 6b86d0797..000000000 --- a/org.eclipse.ui.externaltools/icons/full/obj16/file_obj.gif +++ /dev/null diff --git a/org.eclipse.ui.externaltools/icons/full/obj16/target_priv.gif b/org.eclipse.ui.externaltools/icons/full/obj16/target_priv.gif Binary files differnew file mode 100644 index 000000000..0e2924267 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/obj16/target_priv.gif diff --git a/org.eclipse.ui.externaltools/icons/full/obj16/target_pub.gif b/org.eclipse.ui.externaltools/icons/full/obj16/target_pub.gif Binary files differnew file mode 100644 index 000000000..b5129152c --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/obj16/target_pub.gif diff --git a/org.eclipse.ui.externaltools/icons/full/ovr16/error_co.gif b/org.eclipse.ui.externaltools/icons/full/ovr16/error_co.gif Binary files differnew file mode 100644 index 000000000..8612eaff5 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/ovr16/error_co.gif diff --git a/org.eclipse.ui.externaltools/icons/full/ovr16/run_co.gif b/org.eclipse.ui.externaltools/icons/full/ovr16/run_co.gif Binary files differnew file mode 100644 index 000000000..e179837a0 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/ovr16/run_co.gif |