--- /dev/null
+/*
+ * Copyright (c) 2003-2004 Christopher Lenz and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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
+ *
+ * Contributors:
+ * Christopher Lenz - initial API and implementation
+ *
+ * $Id: CssUI.java,v 1.1 2004-09-02 18:11:51 jsurfer Exp $
+ */
+
+package net.sourceforge.phpeclipse.css.ui;
+
+import java.net.URL;
+
+import net.sourceforge.phpeclipse.css.ui.internal.CssUIPreferences;
+import net.sourceforge.phpeclipse.css.ui.internal.properties.CssPropertiesAdapterFactory;
+import net.sourceforge.phpeclipse.css.ui.text.CssTextTools;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.editors.text.TextEditorPreferenceConstants;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The main plugin class.
+ */
+public final class CssUI extends AbstractUIPlugin {
+
+ // Constants ---------------------------------------------------------------
+
+ public static final String ICON_STYLE_SHEET =
+ "style_sheet_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_AT_RULE =
+ "at_rule_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_STYLE_RULE =
+ "style_rule_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_PROPERTY =
+ "property_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_SHORTHAND =
+ "shorthand_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_PSEUDO_CLASS =
+ "pseudo_class_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_IMPORTANT =
+ "important_obj.gif"; //$NON-NLS-1$
+ public static final String ICON_OVERLAY_ERROR =
+ "full/ovr16/error_co.gif"; //$NON-NLS-1$
+ public static final String ICON_OVERLAY_WARNING =
+ "full/ovr16/warning_co.gif"; //$NON-NLS-1$
+
+ // Class Variables ---------------------------------------------------------
+
+ /**
+ * Singleton instance of the plugin.
+ */
+ private static CssUI plugin;
+
+ // Instance Variables ------------------------------------------------------
+
+ /**
+ * The text tools collection.
+ */
+ private CssTextTools textTools;
+
+ // Constructors ------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @param descriptor the plugin descriptor.
+ */
+ public CssUI() {
+ plugin = this;
+ }
+
+ // Static Methods ----------------------------------------------------------
+
+ /**
+ * Returns the singleton instance of the plugin.
+ *
+ * @return the plugin instance
+ */
+ public static CssUI getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns the plugin ID.
+ *
+ * @return the plugin ID
+ */
+ public static String getPluginId() {
+ return getDefault().getBundle().getSymbolicName();
+ }
+
+ // Public Methods ----------------------------------------------------------
+
+ /**
+ * Returns the CSS text tools that are used primarily for partitioning and
+ * syntax highlighting of CSS source.
+ *
+ * @return the CSS text tools
+ */
+ public synchronized CssTextTools getTextTools() {
+ if (textTools == null) {
+ textTools = new CssTextTools(getPreferenceStore());
+ }
+ return textTools;
+ }
+
+ /**
+ * Returns an image descriptor for the image corresponding to the specified
+ * key (which is the name of the image file).
+ *
+ * @param key The key of the image
+ * @return The descriptor for the requested image, or <code>null</code> if
+ * the image could not be found
+ */
+ public ImageDescriptor getImageDescriptor(String key) {
+ try {
+ URL url = getBundle().getEntry("/icons/" + key); //$NON-NLS-1$
+ return ImageDescriptor.createFromURL(url);
+ } catch (IllegalStateException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Writes a status message and the associated exception stack trace (if
+ * provided) to the error log.
+ *
+ * @param status the status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ if (status.getException() != null) {
+ status.getException().printStackTrace(System.err);
+ }
+ }
+
+ /**
+ * Writes the specified error message and exception stack trace to the error
+ * log.
+ *
+ * @param message the error message
+ * @param e the exception that caused the error, or <tt>null</tt> to omit
+ * the stack trace in the log
+ */
+ public static void log(String message, Throwable e) {
+ IStatus status = new Status(IStatus.ERROR, getPluginId(), IStatus.ERROR,
+ message, e);
+ log(status);
+ }
+
+ /**
+ * Writes the specified error message to the error log.
+ *
+ * @param message the error message
+ */
+ public static void log(String message) {
+ IStatus status = new Status(IStatus.ERROR, getPluginId(), IStatus.ERROR,
+ message, null);
+ log(status);
+ }
+
+ /**
+ * Writes the stack trace of the given exception to the error log.
+ *
+ * @param e the exception that caused the error
+ */
+ public static void log(Throwable e) {
+ log(e.getMessage(), e);
+ }
+
+ // AbstractUIPlugin Implementation -----------------------------------------
+
+ /*
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ CssPropertiesAdapterFactory.register(Platform.getAdapterManager());
+ }
+
+ /*
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ try {
+ if (textTools != null) {
+ textTools.dispose();
+ textTools = null;
+ }
+ } finally {
+ super.stop(context);
+ }
+ }
+
+ /*
+ * @see AbstractUIPlugin#initializeDefaultPreferences(IPreferenceStore)
+ */
+ protected void initializeDefaultPreferences(IPreferenceStore store) {
+ TextEditorPreferenceConstants.initializeDefaultValues(store);
+ CssUIPreferences.initializeDefaultValues(store);
+ }
+
+ /*
+ * @see AbstractUIPlugin#initializeImageRegistry(ImageRegistry)
+ */
+ protected void initializeImageRegistry(ImageRegistry reg) {
+ reg.put(ICON_AT_RULE, getImageDescriptor(ICON_AT_RULE));
+ reg.put(ICON_STYLE_RULE, getImageDescriptor(ICON_STYLE_RULE));
+ reg.put(ICON_STYLE_SHEET, getImageDescriptor(ICON_STYLE_SHEET));
+ reg.put(ICON_PROPERTY, getImageDescriptor(ICON_PROPERTY));
+ reg.put(ICON_SHORTHAND, getImageDescriptor(ICON_SHORTHAND));
+ reg.put(ICON_PSEUDO_CLASS, getImageDescriptor(ICON_PSEUDO_CLASS));
+ reg.put(ICON_IMPORTANT, getImageDescriptor(ICON_IMPORTANT));
+ reg.put(ICON_OVERLAY_ERROR, getImageDescriptor(ICON_OVERLAY_ERROR));
+ reg.put(ICON_OVERLAY_WARNING, getImageDescriptor(ICON_OVERLAY_WARNING));
+ }
+
+}