2 * Copyright (c) 2004 Christopher Lenz and others
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * Christopher Lenz - initial implementation
11 * $Id: WebUI.java,v 1.9 2007-08-20 02:33:07 toshihiro Exp $
14 package net.sourceforge.phpeclipse.ui;
16 import java.io.IOException;
19 import net.sourceforge.phpeclipse.ui.templates.template.HTMLContextType;
20 import net.sourceforge.phpeclipse.ui.templates.template.JSContextType;
21 import net.sourceforge.phpeclipse.ui.templates.template.SmartyContextType;
22 import net.sourceforge.phpeclipse.ui.templates.template.XMLContextType;
24 import org.eclipse.core.resources.IWorkspace;
25 import org.eclipse.core.resources.ResourcesPlugin;
26 import org.eclipse.core.runtime.IStatus;
27 import org.eclipse.core.runtime.Status;
28 import org.eclipse.jface.preference.IPreferenceStore;
29 import org.eclipse.jface.resource.ImageDescriptor;
30 import org.eclipse.jface.resource.ImageRegistry;
31 import org.eclipse.jface.text.templates.ContextTypeRegistry;
32 import org.eclipse.jface.text.templates.persistence.TemplateStore;
33 import org.eclipse.swt.widgets.Shell;
34 import org.eclipse.ui.IWorkbenchPage;
35 import org.eclipse.ui.IWorkbenchWindow;
36 import org.eclipse.ui.editors.text.templates.ContributionContextTypeRegistry;
37 import org.eclipse.ui.editors.text.templates.ContributionTemplateStore;
38 import org.eclipse.ui.plugin.AbstractUIPlugin;
41 * The web development tools UI plugin.
43 public class WebUI extends AbstractUIPlugin implements IPreferenceConstants {
45 private static final String PLUGIN_ID = "net.sourceforge.phpeclipse.ui";
47 private static final String CUSTOM_TEMPLATES_KEY = "net.sourceforge.phpeclipse.ui.templates"; //$NON-NLS-1$
49 // Constants ---------------------------------------------------------------
51 public static final String ICON_OVERLAY_ERROR = "full/ovr16/error_co.gif"; //$NON-NLS-1$
53 public static final String ICON_OVERLAY_WARNING = "full/ovr16/warning_co.gif"; //$NON-NLS-1$
55 // Instance Variables ------------------------------------------------------
57 /** The shared instance. */
58 private static WebUI plugin;
60 public static IWorkbenchPage getActivePage() {
61 return getDefault().internalGetActivePage();
64 private IWorkbenchPage internalGetActivePage() {
65 return getWorkbench().getActiveWorkbenchWindow().getActivePage();
68 public static Shell getActiveWorkbenchShell() {
69 return getActiveWorkbenchWindow().getShell();
72 public static IWorkbenchWindow getActiveWorkbenchWindow() {
73 return getDefault().getWorkbench().getActiveWorkbenchWindow();
76 // Public Methods ----------------------------------------------------------
79 * Returns the shared instance.
81 public static WebUI getDefault() {
86 * Returns the workspace instance.
88 public static IWorkspace getWorkspace() {
89 return ResourcesPlugin.getWorkspace();
92 /** The context type registry. */
93 private ContributionContextTypeRegistry fRegistry;
95 /** The template store. */
96 private TemplateStore fStore;
98 // Constructors ------------------------------------------------------------
108 * Returns this plug-in's context type registry.
110 * @return the context type registry for this plug-in instance
112 public ContextTypeRegistry getContextTypeRegistry() {
113 if (fRegistry == null) {
114 // create an configure the contexts available in the editor
115 fRegistry = new ContributionContextTypeRegistry();
116 fRegistry.addContextType(XMLContextType.XML_CONTEXT_TYPE);
117 fRegistry.addContextType(HTMLContextType.HTML_CONTEXT_TYPE);
118 fRegistry.addContextType(SmartyContextType.SMARTY_CONTEXT_TYPE);
119 fRegistry.addContextType(JSContextType.JS_CONTEXT_TYPE);
124 // Private Methods ---------------------------------------------------------
127 * Returns an image descriptor for the image corresponding to the specified
128 * key (which is the name of the image file).
131 * The key of the image
132 * @return The descriptor for the requested image, or <code>null</code> if
133 * the image could not be found
135 private ImageDescriptor getImageDescriptor(String key) {
137 URL url = getBundle().getEntry("/icons/" + key); //$NON-NLS-1$
138 return ImageDescriptor.createFromURL(url);
139 } catch (IllegalStateException e) {
145 * Returns this plug-in's template store.
147 * @return the template store of this plug-in instance
149 public TemplateStore getTemplateStore() {
150 if (fStore == null) {
151 fStore = new ContributionTemplateStore(getContextTypeRegistry(),
152 getDefault().getPreferenceStore(), CUSTOM_TEMPLATES_KEY);
155 } catch (IOException e) {
162 "net.sourceforge.phpeclipse.ui", IStatus.OK, "", e)); //$NON-NLS-1$ //$NON-NLS-2$
168 protected void initializeDefaultPreferences(IPreferenceStore store) {
169 store.setDefault(PHP_LOCALHOST_PREF, "http://localhost");
170 store.setDefault(PHP_DOCUMENTROOT_PREF, getWorkspace().getRoot()
171 .getLocation().toString());
172 // store.setDefault(PHP_BOOKMARK_DEFAULT, "");
174 store.setDefault(PHP_AUTO_PREVIEW_DEFAULT, "false");
175 store.setDefault(PHP_BRING_TO_TOP_PREVIEW_DEFAULT, "false");
176 // store.setDefault(PHP_SHOW_HTML_FILES_LOCAL, "true");
177 // store.setDefault(PHP_SHOW_XML_FILES_LOCAL, "false");
181 * @see AbstractUIPlugin#initializeImageRegistry(ImageRegistry)
183 protected void initializeImageRegistry(ImageRegistry reg) {
184 reg.put(ICON_OVERLAY_ERROR, getImageDescriptor(ICON_OVERLAY_ERROR));
185 reg.put(ICON_OVERLAY_WARNING, getImageDescriptor(ICON_OVERLAY_WARNING));
188 // private IWorkbenchPage internalGetActivePage() {
189 // IWorkbenchWindow window = getWorkbench().getActiveWorkbenchWindow();
190 // if (window != null)
191 // return window.getActivePage();
195 public static void log(IStatus status) {
196 getDefault().getLog().log(status);
199 public static void log(Throwable e) {
200 log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, e
201 .getLocalizedMessage(), e));