source: trunk/org.modelica.mdt.ui/src/org/modelica/mdt/ui/ModelicaImages.java @ 491

Last change on this file since 491 was 491, checked in by adrpo, 17 years ago
  • mdt 0.7.0 changes
  • fixed some bugs
  • debugging
File size: 9.7 KB
Line 
1/*******************************************************************************
2 * Copyright (c) 2006 MDT Team, PELAB
3 *******************************************************************************/
4
5package org.modelica.mdt.ui;
6
7/*
8 * @author Adrian Pop [adrpo@ida.liu.se, http://www.ida.liu.se/~adrpo]
9 * @author MDT Team
10 */
11
12import java.net.MalformedURLException;
13import java.net.URL;
14
15import org.eclipse.core.runtime.CoreException;
16import org.eclipse.jface.resource.ImageDescriptor;
17import org.eclipse.jface.resource.ImageRegistry;
18import org.eclipse.swt.graphics.Image;
19import org.modelica.mdt.core.IModelicaClass;
20import org.modelica.mdt.core.IModelicaComponent;
21import org.modelica.mdt.core.IModelicaElement;
22import org.modelica.mdt.core.IModelicaExtends;
23import org.modelica.mdt.core.IModelicaImport;
24import org.modelica.mdt.core.IModelicaSourceFile;
25import org.modelica.mdt.core.IStandardLibrary;
26import org.modelica.mdt.core.compiler.CompilerException;
27import org.modelica.mdt.internal.core.ErrorManager;
28
29/**
30 * Bundle of most images used by the Mdt plug-in.
31 */
32public class ModelicaImages 
33{
34    /* Declare Common paths */
35    private static URL ICON_BASE_URL= null;
36
37    static 
38    {
39        String pathSuffix = "icons/"; //$NON-NLS-1$
40        ICON_BASE_URL= UIPlugin.getDefault().getBundle().getEntry(pathSuffix);
41    }
42   
43    // The plugin registry
44    private static ImageRegistry fgImageRegistry = null;
45
46    /*
47     * Available cached Images in the Mdt plug-in image registry.
48     */ 
49    public static final String IMG_OBJS_PACKAGE = "IMG_OBJS_PACKAGE";
50    public static final String IMG_OBJS_CLASS = "IMG_OBJS_CLASS";
51    public static final String IMG_OBJS_MODEL = "IMG_OBJS_MODEL";
52    public static final String IMG_OBJS_FUNCTION = "IMG_OBJS_FUNCTION";
53    public static final String IMG_OBJS_RECORD = "IMG_OBJS_RECORD";
54    public static final String IMG_OBJS_CONNECTOR = "IMG_OBJS_CONNECTOR";
55    public static final String IMG_OBJS_BLOCK = "IMG_OBJS_BLOCK";   
56    public static final String IMG_OBJS_TYPE = "IMG_OBJS_TYPE";
57    public static final String IMG_OBJS_UNIONTYPE = "IMG_OBJS_UNIONTYPE";   
58    public static final String IMG_OBJS_LIBRARY = "IMG_OBJS_LIBRARY";
59    public static final String IMG_OBJS_MO_FILE = "IMG_OBJS_MO_FILE";
60    public static final String IMG_OBJS_PROTECTED_COMPONENT = "IMG_OBJS_PROTECTED_COMPONENT";
61    public static final String IMG_OBJS_PUBLIC_COMPONENT = "IMG_OBJS_PUBLIC_COMPONENT";
62   
63    public static final String IMG_OUTLINE_SYNCED = "IMG_OUTLINE_SYNCED";
64    public static final String IMG_OUTLINE_FILTER = "IMG_OUTLINE_FILTER";
65    public static final String IMG_OUTLINE_SORT = "IMG_OUTLINE_SORT";       
66    public static final String IMG_OUTLINE_HIDE_COMPONENTS = "IMG_OUTLINE_HIDE_COMPONENTS";
67    public static final String IMG_OUTLINE_HIDE_PARAMETERS = "IMG_OUTLINE_HIDE_PARAMETERS";
68    public static final String IMG_OUTLINE_HIDE_PROTECTED = "IMG_OUTLINE_HIDE_PROTECTED";   
69    public static final String IMG_OUTLINE_HIDE_TYPES = "IMG_OUTLINE_HIDE_TYPES";
70
71   
72    public static final String IMG_WIZBAN_PACKAGE = "IMG_WIZBAN_PACKAGE";
73    public static final String IMG_WIZBAN_PROJECT = "IMG_WIZBAN_PROJECT";
74    public static final String IMG_WIZBAN_CLASS = "IMG_WIZBAN_CLASS";
75   
76    public static final String IMG_MDT_STATUS_ONLINE = "IMG_MDT_STATUS_ONLINE";
77    public static final String IMG_MDT_STATUS_OFFLINE = "IMG_MDT_STATUS_OFFLINE";       
78   
79    /*
80     * Set of predefined Image Descriptors.
81     */
82    private static final String T_OBJ= "obj16/";        //$NON-NLS-1$
83    private static final String T_WIZBAN= "wizban/";    //$NON-NLS-1$
84    private static final String T_ELCL= "elcl16/";  //$NON-NLS-1$
85    private static final String T_ETOOL= "etool16/";    //$NON-NLS-1$   
86
87
88   
89    /**
90     * Returns the image managed under the given key in this registry.
91     *
92     * @param key the image's key
93     * @return the image managed under the given key
94     */ 
95    public static Image get(String key) 
96    {
97        return getImageRegistry().get(key);
98    }
99   
100    /**
101     * Returns the <code>ImageDescriptor</code> identified by the given key,
102     * or <code>null</code> if it does not exist.
103     */
104    public static ImageDescriptor getImageDescriptor(String key) 
105    {
106        return getImageRegistry().getDescriptor(key);
107    }   
108   
109    /*
110     * Helper method to access the image registry from the MDT UIPlugin class.
111     */
112    /* package */ static ImageRegistry getImageRegistry() 
113    {
114        if (fgImageRegistry == null) 
115        {
116            initializeImageRegistry();
117        }
118        return fgImageRegistry;
119    }
120   
121    private static void initializeImageRegistry() 
122    {
123        fgImageRegistry = new ImageRegistry(UIPlugin.getStandardDisplay());
124        declareImages();
125    }
126   
127    private static void declareImages() 
128    {
129        declareRegistryImage(IMG_OBJS_PACKAGE, T_OBJ + "package_obj.gif"); //$NON-NLS-1$
130       
131        declareRegistryImage(IMG_OBJS_CLASS, T_OBJ + "class_obj.gif");
132        declareRegistryImage(IMG_OBJS_MODEL, T_OBJ + "model_obj.gif");
133        declareRegistryImage(IMG_OBJS_FUNCTION, T_OBJ + "function_obj.gif");
134        declareRegistryImage(IMG_OBJS_RECORD, T_OBJ + "record_obj.gif");
135        declareRegistryImage(IMG_OBJS_CONNECTOR, T_OBJ + "connector_obj.gif");
136        declareRegistryImage(IMG_OBJS_BLOCK, T_OBJ + "block_obj.gif");
137        declareRegistryImage(IMG_OBJS_MO_FILE, T_OBJ + "mo_file.gif");
138        declareRegistryImage(IMG_OBJS_LIBRARY, T_OBJ + "library_obj.gif");
139        declareRegistryImage(IMG_OBJS_PROTECTED_COMPONENT, T_OBJ + "protected_component_obj.gif");
140        declareRegistryImage(IMG_OBJS_PUBLIC_COMPONENT,  T_OBJ + "public_component_obj.gif");
141        declareRegistryImage(IMG_OBJS_TYPE, T_OBJ + "type_obj.gif");
142        declareRegistryImage(IMG_OBJS_UNIONTYPE, T_OBJ + "uniontype_obj.gif");
143
144        declareRegistryImage(IMG_OUTLINE_SYNCED, T_ELCL + "synced.gif");
145        declareRegistryImage(IMG_OUTLINE_FILTER, T_ELCL + "filter_ps.gif");
146        declareRegistryImage(IMG_OUTLINE_SORT,   T_ELCL + "sort.gif");
147        declareRegistryImage(IMG_OUTLINE_HIDE_COMPONENTS, T_ELCL + "hide_components.gif");
148        declareRegistryImage(IMG_OUTLINE_HIDE_PARAMETERS,  T_ELCL + "hide_parameters.gif");
149        declareRegistryImage(IMG_OUTLINE_HIDE_PROTECTED, T_ELCL + "hide_protected.gif");
150        declareRegistryImage(IMG_OUTLINE_HIDE_TYPES, T_ELCL + "hide_types.gif");       
151       
152        declareRegistryImage(IMG_WIZBAN_PACKAGE, T_WIZBAN + "package_wiz.gif");
153        declareRegistryImage(IMG_WIZBAN_PROJECT, T_WIZBAN + "project_wiz.gif");
154        declareRegistryImage(IMG_WIZBAN_CLASS, T_WIZBAN + "class_wiz.gif");
155        declareRegistryImage(IMG_MDT_STATUS_ONLINE, T_ETOOL + "mdt_online.gif");
156        declareRegistryImage(IMG_MDT_STATUS_OFFLINE, T_ETOOL + "mdt_offline.gif");     
157    }
158   
159    /**
160     * Declare an Image in the registry table.
161     * @param key   The key to use when registering the image
162     * @param path  The path where the image can be found. This path is relative to where
163     *              this plugin class is found (i.e. typically the packages directory)
164     */
165    private final static void declareRegistryImage(String key, String path)
166    {
167        ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
168        try 
169        {
170            desc = ImageDescriptor.createFromURL(makeIconFileURL(path));
171        }
172        catch (MalformedURLException me) 
173        {
174            ErrorManager.logError(me);
175        }
176        fgImageRegistry.put(key, desc);
177    }   
178   
179    private static URL makeIconFileURL(String iconPath) throws MalformedURLException
180    {
181        if (ICON_BASE_URL == null) 
182        {
183            throw new MalformedURLException();
184        }
185           
186        return new URL(ICON_BASE_URL, iconPath);
187    }
188   
189    /**
190     * Get the key to the image used to display certain modelica elements.
191     * @param element the modelica element who's image key to fetch
192     * @return the image key or null if it is unknow which image is used
193     * to visualize provided element
194     */
195    public static String getModelicaElementKey(IModelicaElement element)
196    {
197        if (element instanceof IModelicaClass)
198        {
199            try
200            {
201                switch (((IModelicaClass)element).getRestriction())
202                {
203                case PACKAGE:
204                    return ModelicaImages.IMG_OBJS_PACKAGE;
205                case CLASS:
206                    return ModelicaImages.IMG_OBJS_CLASS;
207                case MODEL:
208                    return ModelicaImages.IMG_OBJS_MODEL;
209                case FUNCTION:
210                    return ModelicaImages.IMG_OBJS_FUNCTION;
211                case RECORD:
212                    return ModelicaImages.IMG_OBJS_RECORD;
213                case CONNECTOR:
214                    return ModelicaImages.IMG_OBJS_CONNECTOR;
215                case BLOCK:
216                    return ModelicaImages.IMG_OBJS_BLOCK;
217                case TYPE:
218                    return ModelicaImages.IMG_OBJS_TYPE;
219                case UNIONTYPE:
220                    return ModelicaImages.IMG_OBJS_UNIONTYPE;
221                default:
222                    ErrorManager.logBug(UIPlugin.getSymbolicName(),
223                            "IModelicaClass object of unexpected restriction " + 
224                            ((IModelicaClass)element).getRestriction() +
225                            " encountered.");
226                }
227            }
228            catch (CompilerException e)
229            {
230                ErrorManager.logError(e);
231            }
232            catch (CoreException e)
233            {
234                ErrorManager.logError(e);
235            }
236
237        }
238        else if (element instanceof IModelicaComponent)
239        {
240            switch (((IModelicaComponent)element).getVisibility())
241            {
242            case PUBLIC:
243                return ModelicaImages.IMG_OBJS_PUBLIC_COMPONENT;
244            case PROTECTED:
245                return ModelicaImages.IMG_OBJS_PROTECTED_COMPONENT;
246            }
247        }
248        else if (element instanceof IModelicaImport)
249        {
250            switch (((IModelicaImport)element).getVisibility())
251            {
252            case PUBLIC:
253                return ModelicaImages.IMG_OBJS_PUBLIC_COMPONENT;
254            case PROTECTED:
255                return ModelicaImages.IMG_OBJS_PROTECTED_COMPONENT;
256            }
257        }
258        else if (element instanceof IModelicaExtends)
259        {
260            switch (((IModelicaExtends)element).getVisibility())
261            {
262            case PUBLIC:
263                return ModelicaImages.IMG_OBJS_PUBLIC_COMPONENT;
264            case PROTECTED:
265                return ModelicaImages.IMG_OBJS_PROTECTED_COMPONENT;
266            }
267        }
268        else if (element instanceof IModelicaSourceFile)
269        {
270            return ModelicaImages.IMG_OBJS_MO_FILE;
271        }
272        else if (element instanceof IStandardLibrary)
273        {
274            return ModelicaImages.IMG_OBJS_LIBRARY;
275        }
276
277        /* we have no idea */
278        return null;
279    }
280}
Note: See TracBrowser for help on using the repository browser.