/** * Copyright (c) 2002-2006 IBM Corporation 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: * IBM - Initial API and implementation */ package org.eclipse.emf.mapping.action; import java.util.Collection; import java.util.EventObject; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.common.command.CommandWrapper; import org.eclipse.emf.edit.command.CommandActionDelegate; import org.eclipse.emf.edit.command.CommandParameter; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.ui.action.CommandAction; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.emf.mapping.MappingPlugin; import org.eclipse.emf.mapping.command.CreateMappingCommand; import org.eclipse.emf.mapping.domain.MappingDomain; import org.eclipse.emf.mapping.provider.MappingItemProvider; /** */ public class CreateOneSidedMappingAction extends CommandAction implements CommandStackListener { @Override public void setActiveWorkbenchPart(IWorkbenchPart workbenchPart) { if (editingDomain != null) { editingDomain.getCommandStack().removeCommandStackListener(this); } super.setActiveWorkbenchPart(workbenchPart); if (editingDomain != null) { editingDomain.getCommandStack().addCommandStackListener(this); } } public void commandStackChanged(EventObject event) { selectionChanged(action, ((ISelectionProvider)workbenchPart).getSelection()); } /** * This returns the image that is used if the command does not provide an override. */ protected Object getDefaultImage() { return MappingPlugin.getPlugin().getImage("full/etool16/CreateOneToOneMapping"); } public static class DelegateCommand extends CommandWrapper implements CommandActionDelegate { protected MappingDomain mappingDomain; protected Collection<?> collection; public DelegateCommand(EditingDomain editingDomain, CommandParameter commandParameter) { super(CreateMappingCommand.create((MappingDomain)editingDomain, commandParameter.getCollection())); mappingDomain = (MappingDomain)editingDomain; collection = commandParameter.getCollection(); } /** * This returns the icon, if any, of the action. */ public Object getImage() { return "Placeholder"; } public String getText() { return getLabel(); } /** * This returns the tool tip text, if any, of the action. */ public String getToolTipText() { return getDescription(); } } @Override protected ImageDescriptor objectToImageDescriptor(Object object) { MappingDomain mappingDomain = (MappingDomain)editingDomain; ((Action)action).setHoverImageDescriptor (ExtendedImageRegistry.getInstance().getImageDescriptor (MappingItemProvider.getImage(mappingDomain.getMappingRoot(), "full/ctool16/Create", collection, true))); ((Action)action).setDisabledImageDescriptor (ExtendedImageRegistry.getInstance().getImageDescriptor (MappingItemProvider.getImage(mappingDomain.getMappingRoot(), "full/dtool16/Create", collection, true))); ((Action)action).setEnabled(!action.isEnabled()); ((Action)action).setEnabled(!action.isEnabled()); ImageDescriptor result= ExtendedImageRegistry.getInstance().getImageDescriptor (MappingItemProvider.getImage(mappingDomain.getMappingRoot(), "full/etool16/Create", collection, true)); ((Action)action).setEnabled(!action.isEnabled()); ((Action)action).setImageDescriptor(result); ((Action)action).setEnabled(!action.isEnabled()); return result; } /** * Create the command for this action */ @Override protected Command createActionCommand(EditingDomain editingDomain, Collection<?> collection) { return editingDomain.createCommand(DelegateCommand.class, new CommandParameter(null, null, collection)); } }