/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.action;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.jboss.tools.common.meta.action.XAction;
import org.jboss.tools.common.meta.key.WizardKeys;
/**
* Converts action description of XModel into Eclipse action.
* @author glory
*/
public class ActionX extends Action {
XAction action;
XModelObjectAction wrapper;
public ActionX(XModelObjectAction a) {
wrapper = a;
this.action = a.action;
boolean enabled = (wrapper.targets == null) ? action.isEnabled(wrapper.object) : action.isEnabled(wrapper.object, wrapper.targets);
String displayName = WizardKeys.getMenuItemDisplayName(action, wrapper.object == null ? null : wrapper.object.getModelEntity());
String baseName = action.getBaseActionName();
if("Copy".equals(baseName)) {
setAccelerator(SWT.CONTROL | 'C');
displayName += '\t' + "Ctrl + C";
} else if("Cut".equals(baseName)) {
setAccelerator(SWT.CONTROL | 'X');
displayName += '\t' + "Ctrl + X";
} else if("Delete".equals(baseName)) {
setAccelerator(SWT.DEL);
displayName += '\t' + "Delete";
} else if("Paste".equals(baseName)) {
setAccelerator(SWT.CONTROL | 'V');
displayName += '\t' + "Ctrl + V";
} else if("Open".equals(baseName)) {
setAccelerator(SWT.F3);
displayName += '\t' + "F3";
}
setText(displayName);
setImageDescriptor(new XImageDescriptor(getImage()));
setEnabled(enabled);
}
public Image getImage() {
return action.getMetaModel().getIconList().getImage(action.getIconKey());
}
class XImageDescriptor extends ImageDescriptor {
Image image;
XImageDescriptor(Image image) {
this.image = image;
}
public Image createImage() {
return image;
}
public Image createImage(boolean returnMissingImageOnError, Device device) {
return image;
}
@Override
public ImageData getImageData() {
return null;
}
}
public void run() {
wrapper.actionPerformed();
}
}