1 /*
2 * Created on Jan 19, 2004
3 *
4 * Copyright (C) 2004 Sean Ruff
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20 package org.un4gvn.editorviewer.internal;
21
22 import java.net.URL;
23
24 import org.eclipse.core.runtime.IPluginDescriptor;
25 import org.eclipse.core.runtime.Path;
26 import org.eclipse.jface.resource.ImageDescriptor;
27 import org.eclipse.swt.graphics.Image;
28 import org.eclipse.ui.IEditorReference;
29 import org.eclipse.ui.IWorkbench;
30 import org.eclipse.ui.IWorkbenchPage;
31 import org.eclipse.ui.IWorkbenchWindow;
32 import org.eclipse.ui.plugin.AbstractUIPlugin;
33
34 /***
35 * AbstractUIPlugin subclass to provide common functionality
36 * <p>
37 * @author Sean Ruff
38 */
39 public class EditorViewerPlugin extends AbstractUIPlugin {
40
41 /***
42 * Singleton instance
43 */
44 private static EditorViewerPlugin helper = null;
45
46 /***
47 * Plugin ID
48 */
49 public static final String PLUGIN_ID = Messages.getString("EditorViewerPlugin.0"); //$NON-NLS-1$
50
51
52 ////////////////////////////////////////////////////////////////
53 ////////////// HIERARCHY MODE /////////////////////
54 ////////////////////////////////////////////////////////////////
55 /***
56 * Structured Mode - Mimic the Structure found in the Navigator
57 */
58 public static final int HIERARCHICAL_MODE = 0;
59
60 /***
61 * Every Editor will be in a sub-folder of a single parent folder
62 * made up up the full path to all parent folders
63 */
64 public static final int SEMI_FLAT_MODE = 1;
65
66 /***
67 * Completely Flat with all files at the root level
68 */
69 public static final int FLAT_MODE = 2;
70
71 /***
72 * Every editor will be placed into a folder by it's Extension (Type)
73 */
74 public static final int TYPE_MODE = 3;
75
76
77 ////////////////////////////////////////////////////////////////
78 ////////////// SORT MODE /////////////////////
79 ////////////////////////////////////////////////////////////////
80
81 /***
82 * Indicates no sorting will take place
83 */
84 public static final int NONE_SORT_MODE = 0;
85
86 /***
87 * Indicates the sort should be performed by Name
88 */
89 public static final int NAME_SORT_MODE = 1;
90
91 /***
92 * Indicates the sort should be performed by type, then name
93 */
94 public static final int TYPE_SORT_MODE = 2;
95
96
97 ////////////////////////////////////////////////////////////////
98 ////////////// LINK MODE /////////////////////
99 ////////////////////////////////////////////////////////////////
100
101 /***
102 * Inidcates the selection in the view is linked to the active editor
103 */
104 public static final int LINKED_MODE = 0;
105
106 /***
107 * Inidcates the selection in the view is NOT linked to the active editor
108 */
109 public static final int NON_LINKED_MODE = 1;
110
111
112 /***
113 * Initialize the Plugin
114 * @param desc
115 */
116 public EditorViewerPlugin(IPluginDescriptor desc){
117 super(desc);
118 helper = this;
119 }
120
121 /***
122 * Retreive the singleton instance
123 * @return
124 */
125 public static EditorViewerPlugin getInstance(){
126 return helper;
127 }
128
129 /***
130 * Retreive the Active window from the Workbench
131 * @return
132 */
133 public IWorkbenchWindow getActiveWindow(){
134 return getWorkbench().getActiveWorkbenchWindow();
135 }
136
137 /***
138 * Get a list of currently open editors
139 * @return IEditorReference[]
140 */
141 public IEditorReference[] getOpenEditors(){
142 IWorkbench bench = getWorkbench();
143 if ( bench == null )
144 return new IEditorReference[]{};
145 IWorkbenchWindow window = bench.getActiveWorkbenchWindow();
146 if ( window == null )
147 return new IEditorReference[]{};
148 IWorkbenchPage page = window.getActivePage();
149 if ( page == null )
150 return new IEditorReference[]{};
151 IEditorReference[] editors = page.getEditorReferences();
152 return ( editors == null ) ? new IEditorReference[]{} : editors;
153 }
154
155 /***
156 * Get a shared image descriptor from the workbench SharedImages
157 * @param id String id of the image descriptor to return
158 * @return ImageDescriptor
159 */
160 private ImageDescriptor getSharedImageDescriptor(String id){
161 return getWorkbench().getSharedImages().getImageDescriptor(id);
162 }
163
164 /***
165 * Get a ImageDescriptor for an image via a path
166 * @param path Path to the image to retreive the description for
167 * @return
168 */
169 private ImageDescriptor getLocalImageDescriptor(String path){
170 URL url = this.getDescriptor().find(new Path(path));
171 if ( url == null )
172 return null;
173 return ImageDescriptor.createFromURL(url);
174 }
175
176 public ImageDescriptor getImageDescriptor(String key){
177 ImageDescriptor desc = this.getImageRegistry().getDescriptor(key);
178 if ( desc != null )
179 return desc;
180 desc = getLocalImageDescriptor(key);
181 if ( desc != null ){
182 this.getImageRegistry().put(key,desc);
183 return desc;
184 }
185 desc = getSharedImageDescriptor(key);
186 if ( desc != null ){
187 this.getImageRegistry().put(key,desc);
188 return desc;
189 }
190 return null;
191 }
192
193 public Image getImage(String key){
194 Image img = this.getImageRegistry().get(key);
195 if ( img != null )
196 return img;
197 ImageDescriptor desc = getImageDescriptor(key);
198 if ( desc == null )
199 return null;
200 return this.getImageRegistry().get(key);
201
202 }
203
204
205
206 }
This page was automatically generated by Maven