Skip to main content
summaryrefslogblamecommitdiffstats
blob: d65ef673a42d4a3a4824871bc517f5927a5c68f4 (plain) (tree)




















                                                                                 

                                                  

                                                              
                                                                    


                                       






                                                   
                                                                           











                                              



                               
                        

                              
        








                                                                   
                                                                                                                             
                                                                  
                                                                             



                                                                                 
                                                                                   


                                                                           

                                                                                                                    



                                                                                     
                                                                                                            
                 
                










                                                                  
                                       





                                                 
                                                                                        






                                                                              

                                          






                                                                             
                                  






                                                
                                      







                                                                                

                                                     













                                                                                    
                                       


















                                                                                    
                 
                                                                      

         


                                   











                                                                              
















                                                                                   
                                               


                                                                                           
                                                                                            




                                                                                    
                                                                                                                           


















                                                                              
                                                                

                                 
                                                                                                             



                                                                                    
                                                                                                                           







                                                  
                                                  





                                                                  
                                                             
                                                    

         
/*******************************************************************************
 * Copyright (c) 2004, 2006 Sybase, Inc. and others.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Sybase, Inc. - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.jsf.facesconfig.ui;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jst.jsf.common.ui.internal.guiutils.Alerts;
import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
import org.eclipse.jst.jsf.facesconfig.ui.preference.GEMPreferences;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

/**
 * The main plugin class to be used in the desktop.
 */
public class EditorPlugin extends AbstractUIPlugin {//implements IStartup {

	// The shared instance.
	private static EditorPlugin plugin;

	private Logger log;

	private ResourceBundle resourceBundle;

	private static Alerts alerts;

	private URL pluginBase;

	/**
	 * The constructor.
	 */
	public EditorPlugin() {
		super();
		plugin = this;
	}
	

	/**
	 * This method is called upon plug-in activation
	 */
	public void start(BundleContext context) throws Exception {
		super.start(context);
		try {
			// get resource bundle.
			resourceBundle = ResourceBundle
					.getBundle("org.eclipse.jst.jsf.facesconfig.ui.EditorPluginResources"); //$NON-NLS-1$
			alerts = new Alerts(this, resourceBundle);
			pluginBase = getBundle().getEntry("/"); //$NON-NLS-1$

			// set up logging for this plugin and everthing under it.
			log = new Logger(this.getBundle(), resourceBundle);

			// log.info("log.StartMessage", CommonPlugin.getVersion());
		} catch (Exception ee) {
			// only log if the logger was configured correctly.
			if (log != null) {
				log.error("log.msg", //$NON-NLS-1$
						"Problems starting plug-in Faces Config Editor.", ee); //$NON-NLS-1$
			}

			throw new CoreException(new Status(IStatus.ERROR, getBundle()
					.getSymbolicName(), IStatus.OK,
					"Problems starting plug-in Faces Config Editor", ee)); //$NON-NLS-1$
		}
		
	}

	/**
	 * This method is called when the plug-in is stopped
	 */
	public void stop(BundleContext context) throws Exception {
		super.stop(context);
		plugin = null;
	}

	/**
	 * @return the shared instance.
	 */
	public static EditorPlugin getDefault() {
		return plugin;
	}

	/**
	 * @return the alerts objects associated with this plugin for alerting the user.
	 */
	public static Alerts getAlerts() {
		return alerts;
	}

	/**
	 * Returns a logger for the new class using this plugin for reference.
	 * @param theClass 
	 * @return the default root logger
	 */
	public static Logger getLogger(Class theClass) {
		return getDefault().getRootLogger(); // .getLogger(theClass);
	}

	/**
	 * Returns the plugin's root logger
	 * @return the root logger
	 */
	public Logger getRootLogger() {
		return log;
	}

	/**
	 * Returns the plugin's resource bundle,
	 * @return the resource bundle
	 */
	public ResourceBundle getResourceBundle() {
		return resourceBundle;
	}

	/**
	 * Returns the string from the plugin's resource bundle, or 'key' if not
	 * found.
	 * @param key 
	 * @return the resource bundle string for key
	 */
	public static String getResourceString(String key) {
		ResourceBundle bundle = getDefault().getResourceBundle();
		try {
			return (bundle != null) ? bundle.getString(key) : key;
		} catch (MissingResourceException e) {
			return key;
		}
	}

	/**
	 * Returns the standard display to be used. The method first checks, if the
	 * thread calling this method has an associated dispaly. If so, this display
	 * is returned. Otherwise the method returns the default display.
	 * @return the standard display
	 */
	public static Display getStandardDisplay() {
		Display display;
		display = Display.getCurrent();
		if (display == null) {
			display = Display.getDefault();
		}
		return display;
	}

	/**
	 * Returns the active workbench window.
	 * 
	 * @return the active workbench window. this can be null but I've never seen
	 *         it.
	 */
	public static IWorkbenchWindow getActiveWorkbenchWindow() {
		if (getDefault().getWorkbench() == null) {
			return null;
		}
        return getDefault().getWorkbench().getActiveWorkbenchWindow();
	}

	/**
	 * @return the active shell
	 */
	public static Shell getActiveShell() {
		Shell shell = null;
		IWorkbenchWindow workbenchWindow = getActiveWorkbenchWindow();
		if (workbenchWindow.getShell() != null) {
			shell = workbenchWindow.getShell();
		} else {
			shell = new Shell();
		}
		return shell;
	}

	/**
	 * Returns a shared image for the given name
	 * <p>
	 * Note: Images returned from this method will be automitically disposed of
	 * when this plug-in shuts down. Callers must not dispose of these images
	 * themselves.
	 * </p>
	 * 
	 * @param name
	 *            the image name found in /icons (with extension)
	 * @return the image, null on error or not found.
	 */
	public Image getImage(String name) {
		if (name == null) {
			return null;
		}

		ImageRegistry images = getImageRegistry();
		Image image = images.get(name);
		if (image == null) {
			try {
				ImageDescriptor id = ImageDescriptor.createFromURL(new URL(
						pluginBase, "icons/" + name)); //$NON-NLS-1$
				images.put(name, id);

				image = images.get(name);
			} catch (MalformedURLException ee) {
				// log.EditorPlugin.image.error=Image {0} not found.
				log.error("log.msg", "log.EditorPlugin.image.error", name, ee); //$NON-NLS-1$ //$NON-NLS-2$
			}
		}
		return image;
	}

	/**
	 * Returns an image descriptor for the image file at the given plug-in
	 * relative path.
	 * 
	 * @param path
	 *            the path
	 * @return the image descriptor
	 */
	public ImageDescriptor getImageDescriptor(String path) {
		if (path == null) {
			return null;
		}

		ImageRegistry images = getImageRegistry();
		ImageDescriptor id = images.getDescriptor(path);
		if (id == null) {
			try {
				id = ImageDescriptor.createFromURL(new URL(pluginBase, "icons/" //$NON-NLS-1$
						+ path));
				images.put(path, id);
			} catch (MalformedURLException ee) {
				// log.EditorPlugin.image.error=Image {0} not found.
				log.error("log.msg", "log.EditorPlugin.image.error", path, ee); //$NON-NLS-1$ //$NON-NLS-2$
			}
		}
		return id;
	}

	/**
	 * Returns this plugin's unique identifier
	 * 
	 * @return this plugin's unique identifier
	 * 
	 */
	public static String getPluginId() {
		return getDefault().getBundle().getSymbolicName();
	}

	protected void initializeDefaultPluginPreferences() {
		GEMPreferences.initializeDefaults();
	}
}

Back to the top