/** | |
* <copyright> | |
* | |
* Copyright (c) 2013 itemis 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: | |
* itemis - Initial API and implementation | |
* | |
* </copyright> | |
*/ | |
package org.eclipse.sphinx.examples.hummingbird20.diagram.gmf.part; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.core.runtime.IPath; | |
import org.eclipse.core.runtime.IStatus; | |
import org.eclipse.core.runtime.Path; | |
import org.eclipse.core.runtime.Platform; | |
import org.eclipse.core.runtime.Status; | |
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.IItemLabelProvider; | |
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; | |
import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; | |
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; | |
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; | |
import org.eclipse.jface.resource.ImageDescriptor; | |
import org.eclipse.sphinx.examples.hummingbird20.common.edit.Common20ItemProviderAdapterFactory; | |
import org.eclipse.sphinx.examples.hummingbird20.diagram.gmf.edit.policies.Hummingbird20BaseItemSemanticEditPolicy; | |
import org.eclipse.sphinx.examples.hummingbird20.diagram.gmf.providers.ElementInitializers; | |
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.edit.InstanceModel20ItemProviderAdapterFactory; | |
import org.eclipse.sphinx.examples.hummingbird20.typemodel.edit.TypeModel20ItemProviderAdapterFactory; | |
import org.eclipse.swt.graphics.Image; | |
import org.eclipse.ui.plugin.AbstractUIPlugin; | |
import org.osgi.framework.BundleContext; | |
/** | |
* @generated | |
*/ | |
public class Hummingbird20DiagramEditorPlugin extends AbstractUIPlugin { | |
/** | |
* @generated | |
*/ | |
public static final String ID = "org.eclipse.sphinx.examples.hummingbird20.diagram"; //$NON-NLS-1$ | |
/** | |
* @generated | |
*/ | |
public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(ID); | |
/** | |
* @generated | |
*/ | |
private static Hummingbird20DiagramEditorPlugin instance; | |
/** | |
* @generated | |
*/ | |
private ComposedAdapterFactory adapterFactory; | |
/** | |
* @generated | |
*/ | |
private Hummingbird20DocumentProvider documentProvider; | |
/** | |
* @generated | |
*/ | |
private Hummingbird20BaseItemSemanticEditPolicy.LinkConstraints linkConstraints; | |
/** | |
* @generated | |
*/ | |
private ElementInitializers initializers; | |
/** | |
* @generated | |
*/ | |
public Hummingbird20DiagramEditorPlugin() { | |
} | |
/** | |
* @generated | |
*/ | |
@Override | |
public void start(BundleContext context) throws Exception { | |
super.start(context); | |
instance = this; | |
PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT, getPreferenceStore()); | |
adapterFactory = createAdapterFactory(); | |
} | |
/** | |
* @generated | |
*/ | |
@Override | |
public void stop(BundleContext context) throws Exception { | |
adapterFactory.dispose(); | |
adapterFactory = null; | |
linkConstraints = null; | |
initializers = null; | |
instance = null; | |
super.stop(context); | |
} | |
/** | |
* @generated | |
*/ | |
public static Hummingbird20DiagramEditorPlugin getInstance() { | |
return instance; | |
} | |
/** | |
* @generated | |
*/ | |
protected ComposedAdapterFactory createAdapterFactory() { | |
ArrayList<AdapterFactory> factories = new ArrayList<AdapterFactory>(); | |
fillItemProviderFactories(factories); | |
return new ComposedAdapterFactory(factories); | |
} | |
/** | |
* @generated | |
*/ | |
protected void fillItemProviderFactories(List<AdapterFactory> factories) { | |
factories.add(new Common20ItemProviderAdapterFactory()); | |
factories.add(new TypeModel20ItemProviderAdapterFactory()); | |
factories.add(new InstanceModel20ItemProviderAdapterFactory()); | |
factories.add(new EcoreItemProviderAdapterFactory()); | |
factories.add(new ResourceItemProviderAdapterFactory()); | |
factories.add(new ReflectiveItemProviderAdapterFactory()); | |
} | |
/** | |
* @generated | |
*/ | |
public AdapterFactory getItemProvidersAdapterFactory() { | |
return adapterFactory; | |
} | |
/** | |
* @generated | |
*/ | |
public ImageDescriptor getItemImageDescriptor(Object item) { | |
IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class); | |
if (labelProvider != null) { | |
return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item)); | |
} | |
return null; | |
} | |
/** | |
* Returns an image descriptor for the image file at the given plug-in relative path. | |
* | |
* @generated | |
* @param path | |
* the path | |
* @return the image descriptor | |
*/ | |
public static ImageDescriptor getBundledImageDescriptor(String path) { | |
return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path); | |
} | |
/** | |
* Respects images residing in any plug-in. If path is relative, then this bundle is looked up for the image, | |
* otherwise, for absolute path, first segment is taken as id of plug-in with image | |
* | |
* @generated | |
* @param path | |
* the path to image, either absolute (with plug-in id as first segment), or relative for bundled images | |
* @return the image descriptor | |
*/ | |
public static ImageDescriptor findImageDescriptor(String path) { | |
final IPath p = new Path(path); | |
if (p.isAbsolute() && p.segmentCount() > 1) { | |
return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p.removeFirstSegments(1).makeAbsolute().toString()); | |
} else { | |
return getBundledImageDescriptor(p.makeAbsolute().toString()); | |
} | |
} | |
/** | |
* Returns an image for the image file at the given plug-in relative path. Client do not need to dispose this image. | |
* Images will be disposed automatically. | |
* | |
* @generated | |
* @param path | |
* the path | |
* @return image instance | |
*/ | |
public Image getBundledImage(String path) { | |
Image image = getImageRegistry().get(path); | |
if (image == null) { | |
getImageRegistry().put(path, getBundledImageDescriptor(path)); | |
image = getImageRegistry().get(path); | |
} | |
return image; | |
} | |
/** | |
* Returns string from plug-in's resource bundle | |
* | |
* @generated | |
*/ | |
public static String getString(String key) { | |
return Platform.getResourceString(getInstance().getBundle(), "%" + key); //$NON-NLS-1$ | |
} | |
/** | |
* @generated | |
*/ | |
public Hummingbird20DocumentProvider getDocumentProvider() { | |
if (documentProvider == null) { | |
documentProvider = new Hummingbird20DocumentProvider(); | |
} | |
return documentProvider; | |
} | |
/** | |
* @generated | |
*/ | |
public Hummingbird20BaseItemSemanticEditPolicy.LinkConstraints getLinkConstraints() { | |
return linkConstraints; | |
} | |
/** | |
* @generated | |
*/ | |
public void setLinkConstraints(Hummingbird20BaseItemSemanticEditPolicy.LinkConstraints lc) { | |
linkConstraints = lc; | |
} | |
/** | |
* @generated | |
*/ | |
public ElementInitializers getElementInitializers() { | |
return initializers; | |
} | |
/** | |
* @generated | |
*/ | |
public void setElementInitializers(ElementInitializers i) { | |
initializers = i; | |
} | |
/** | |
* @generated | |
*/ | |
public void logError(String error) { | |
logError(error, null); | |
} | |
/** | |
* @generated | |
*/ | |
public void logError(String error, Throwable throwable) { | |
if (error == null && throwable != null) { | |
error = throwable.getMessage(); | |
} | |
getLog().log(new Status(IStatus.ERROR, Hummingbird20DiagramEditorPlugin.ID, IStatus.OK, error, throwable)); | |
debug(error, throwable); | |
} | |
/** | |
* @generated | |
*/ | |
public void logInfo(String message) { | |
logInfo(message, null); | |
} | |
/** | |
* @generated | |
*/ | |
public void logInfo(String message, Throwable throwable) { | |
if (message == null && throwable != null) { | |
message = throwable.getMessage(); | |
} | |
getLog().log(new Status(IStatus.INFO, Hummingbird20DiagramEditorPlugin.ID, IStatus.OK, message, throwable)); | |
debug(message, throwable); | |
} | |
/** | |
* @generated | |
*/ | |
private void debug(String message, Throwable throwable) { | |
if (!isDebugging()) { | |
return; | |
} | |
if (message != null) { | |
System.err.println(message); | |
} | |
if (throwable != null) { | |
throwable.printStackTrace(); | |
} | |
} | |
} |