/******************************************************************************* * Copyright (c) 2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.graphical.actions; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.IItemLabelProvider; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.gef.requests.CreationFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IWorkbenchPart; import org.jboss.tools.smooks.configuration.SmooksConstants; import org.jboss.tools.smooks.editor.ISmooksModelProvider; /** * @author Dart * */ public abstract class AddSmooksObjectAction extends AddSmooksModelAction { private ISmooksModelProvider provider; public AddSmooksObjectAction(IWorkbenchPart part, int style, ISmooksModelProvider provider) { super(part, style); this.provider = provider; this.setText(getActionText()); this.setImageDescriptor(getActionImageDescriptor()); } public AddSmooksObjectAction(IWorkbenchPart part, ISmooksModelProvider provider) { super(part); this.provider = provider; this.setText(getActionText()); this.setImageDescriptor(getActionImageDescriptor()); } /* (non-Javadoc) * @see org.jboss.tools.smooks.graphical.actions.AddSmooksModelAction#init() */ @Override protected void init() { } /** * @return the provider */ protected ISmooksModelProvider getProvider() { return provider; } /* * (non-Javadoc) * * @seeorg.jboss.tools.smooks.graphical.actions.AddSmooksModelAction# * getActionImageDescriptor() */ @Override public ImageDescriptor getActionImageDescriptor() { Object object = getNewObject(); if(object == null) return null; object = AdapterFactoryEditingDomain.unwrap(object); AdapterFactoryEditingDomain editDomain = (AdapterFactoryEditingDomain) provider.getEditingDomain(); IItemLabelProvider itemLabelProvider = (IItemLabelProvider) editDomain.getAdapterFactory().adapt(object, IItemLabelProvider.class); ImageDescriptor smallImage = null; if (itemLabelProvider != null) { Object imageObj = itemLabelProvider.getImage(object); smallImage = ExtendedImageRegistry.getInstance().getImageDescriptor(imageObj); } return smallImage; } /* * (non-Javadoc) * * @see * org.jboss.tools.smooks.graphical.actions.AddSmooksModelAction#getActionText * () */ @Override public String getActionText() { Object object = getNewObject(); if(object == null) return ""; //$NON-NLS-1$ object = AdapterFactoryEditingDomain.unwrap(object); AdapterFactoryEditingDomain editDomain = (AdapterFactoryEditingDomain) provider.getEditingDomain(); IItemLabelProvider itemLabelProvider = (IItemLabelProvider) editDomain.getAdapterFactory().adapt(object, IItemLabelProvider.class); if (itemLabelProvider != null) { return itemLabelProvider.getText(object); } return null; } /* * (non-Javadoc) * * @seeorg.jboss.tools.smooks.graphical.actions.AddSmooksModelAction# * getCreationFactory() */ @Override protected CreationFactory getCreationFactory() { return new SmooksObjectCreationFactory(getNewObject(), getNewType()); } protected abstract Object getSmooks12Object(); protected abstract Object getSmooks12Type(); protected Object getNewObject() { // SmooksGraphicsExtType ext = this.getProvider().getSmooksGraphicsExt(); // if (ext == null) // return null; String version = this.getProvider().getPlatformVersion(); if (SmooksConstants.VERSION_1_2.equals(version)) { return getSmooks12Object(); } return null; } protected Object getNewType() { // SmooksGraphicsExtType ext = this.getProvider().getSmooksGraphicsExt(); // if (ext == null) // return null; String version = this.getProvider().getPlatformVersion(); if (SmooksConstants.VERSION_1_2.equals(version)) { return getSmooks12Type(); } return null; } private class SmooksObjectCreationFactory implements CreationFactory { private Object newObject; private Object objectType; public SmooksObjectCreationFactory(Object newObject, Object objectType) { this.newObject = newObject; this.objectType = objectType; } /* * (non-Javadoc) * * @see org.eclipse.gef.requests.CreationFactory#getNewObject() */ public Object getNewObject() { // TODO Auto-generated method stub return newObject; } /* * (non-Javadoc) * * @see org.eclipse.gef.requests.CreationFactory#getObjectType() */ public Object getObjectType() { // TODO Auto-generated method stub return objectType; } } }