/* * Copyright (c) 2009 Borland Software Corporation * * 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: * Tatiana Fesenko (Borland) - initial API and implementation */ package org.eclipse.uml2.diagram.common; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.uml2.diagram.common.providers.AlternativeUMLItemProviderAdapterFactory; import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory; import org.osgi.framework.BundleContext; public class UMLCommonPlugin extends AbstractUIPlugin { public static final String IMAGE_PLUS = "icons/plus.gif"; //$NON-NLS-1$ public static final String IMAGE_MINUS = "icons/minus.gif"; //$NON-NLS-1$ private static UMLCommonPlugin plugin; private ComposedAdapterFactory adapterFactory; /** * The constructor. */ public UMLCommonPlugin() { super(); plugin = this; } @Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; adapterFactory = createAdapterFactory(); } @Override public void stop(BundleContext context) throws Exception { adapterFactory.dispose(); adapterFactory = null; super.stop(context); } private ComposedAdapterFactory createAdapterFactory() { ArrayList<AdapterFactory> factories = new ArrayList<AdapterFactory>(); fillItemProviderFactories(factories); return new ComposedAdapterFactory(factories); } private void fillItemProviderFactories(List factories) { //custom icons for diagram elements factories.add(new AlternativeUMLItemProviderAdapterFactory(getPreferenceStore())); factories.add(new UMLItemProviderAdapterFactory()); factories.add(new EcoreItemProviderAdapterFactory()); factories.add(new ResourceItemProviderAdapterFactory()); factories.add(new ReflectiveItemProviderAdapterFactory()); } public AdapterFactory getItemProvidersAdapterFactory() { return adapterFactory; } /** * Returns the shared instance. * * @return the plugin instance */ public static UMLCommonPlugin getInstance() { return plugin; } /** * Retrieves the unique identifier of this plug-in. * * @return A non-empty string which is unique within the plug-in registry. */ public static String getPluginId() { return getInstance().getBundle().getSymbolicName(); } @Override protected void initializeImageRegistry(ImageRegistry reg) { super.initializeImageRegistry(reg); addImage(reg, IMAGE_PLUS); addImage(reg, IMAGE_MINUS); } private void addImage(ImageRegistry registry, String pluginPath) { registry.put(pluginPath, ImageDescriptor.createFromURL(FileLocator.find(getBundle(), new Path(pluginPath), null))); } }