/*******************************************************************************
* Copyright (c) 2000, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. 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 Corporation - initial API and implementation
* Gerhardt Informatics Kft. - GEFGWT port
*******************************************************************************/
package org.eclipse.gef.ui.actions;
import java.util.List;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.gef.internal.GEFMessages;
import org.eclipse.gef.requests.GroupRequest;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
/**
* An action to delete selected objects.
*/
public class DeleteAction extends SelectionAction {
/** @deprecated Use ActionFactory.DELETE.getId() instead. */
public static final String ID = ActionFactory.DELETE.getId();
/**
* @deprecated use DeleteAction(IWorkbenchPart part)
* @param editor
* The editor this action will be associated with.
*/
public DeleteAction(IEditorPart editor) {
this((IWorkbenchPart) editor);
}
/**
* Creates a <code>DeleteAction</code> with the given label.
*
* @deprecated use DeleteAction(IWorkbenchPart)
* @param editor
* The editor this action will be associated with.
* @param label
* The label to be displayed for this action.
*/
public DeleteAction(IEditorPart editor, String label) {
this((IWorkbenchPart) editor);
setText(label);
}
/**
* Constructs a <code>DeleteAction</code> using the specified part.
*
* @param part
* The part for this action
*/
public DeleteAction(IWorkbenchPart part) {
super(part);
setLazyEnablementCalculation(false);
}
/**
* Returns <code>true</code> if the selected objects can be deleted. Returns
* <code>false</code> if there are no objects selected or the selected
* objects are not {@link EditPart}s.
*
* @return <code>true</code> if the command should be enabled
*/
protected boolean calculateEnabled() {
Command cmd = createDeleteCommand(getSelectedObjects());
if (cmd == null)
return false;
return cmd.canExecute();
}
/**
* Create a command to remove the selected objects.
*
* @param objects
* The objects to be deleted.
* @return The command to remove the selected objects.
*/
public Command createDeleteCommand(List objects) {
if (objects.isEmpty())
return null;
if (!(objects.get(0) instanceof EditPart))
return null;
GroupRequest deleteReq = new GroupRequest(RequestConstants.REQ_DELETE);
deleteReq.setEditParts(objects);
CompoundCommand compoundCmd = new CompoundCommand(
GEFMessages.DeleteAction_ActionDeleteCommandName);
for (int i = 0; i < objects.size(); i++) {
EditPart object = (EditPart) objects.get(i);
Command cmd = object.getCommand(deleteReq);
if (cmd != null)
compoundCmd.add(cmd);
}
return compoundCmd;
}
/**
* Initializes this action's text and images.
*/
protected void init() {
super.init();
setText(GEFMessages.DeleteAction_Label);
setToolTipText(GEFMessages.DeleteAction_Tooltip);
setId(ActionFactory.DELETE.getId());
ISharedImages sharedImages = PlatformUI.getWorkbench()
.getSharedImages();
if (sharedImages != null) {
setImageDescriptor(sharedImages
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
setDisabledImageDescriptor(sharedImages
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));
}
// SzI
// setEnabled(false);
setEnabled(true);
}
/**
* Performs the delete action on the selected objects.
*/
public void run() {
execute(createDeleteCommand(getSelectedObjects()));
}
}