/*******************************************************************************
* Copyright (c) 2006, 2012 Oracle 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.commands;
import org.eclipse.bpel.common.ui.editmodel.AbstractEditModelCommand;
import org.eclipse.bpel.ui.BPELEditor;
import org.eclipse.bpel.ui.util.ModelHelper;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.viewers.StructuredSelection;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Jun 1, 2007
*
*/
public class SetSelectionCommand extends AbstractEditModelCommand {
protected EObject fTarget;
protected boolean fOnUndo = false;
private BPELPasteCommand fPasteCommand;
/**
* @param eObj
* @param onUndo
*/
public SetSelectionCommand ( EObject eObj , boolean onUndo) {
fTarget = eObj;
fOnUndo = onUndo;
}
/**
* Brand new shiny SetSelection command that will select
* the result of the last paste operation.
*
* @param cmd the paste command.
* @param onUndo whether to select on undo
*/
public SetSelectionCommand ( BPELPasteCommand cmd , boolean onUndo) {
fPasteCommand = cmd ;
fOnUndo = onUndo;
}
protected void select () {
if (fPasteCommand == null) {
BPELEditor editor = ModelHelper.getBPELEditor(fTarget);
if (editor != null) {
editor.selectModelObject(fTarget);
}
} else if (fPasteCommand != null ) {
fPasteCommand.fBpelEditor.getAdaptingSelectionProvider().setSelection(
new StructuredSelection( fPasteCommand.getPastedObjects() ) ) ;
}
}
/**
* @see org.eclipse.gef.commands.Command#execute()
*/
@Override
public void execute() {
if (fOnUndo == false) {
select();
}
}
/**
* @see org.eclipse.gef.commands.Command#undo()
*/
@Override
public void undo() {
if (fOnUndo) {
select();
}
}
/**
* @see org.eclipse.bpel.common.ui.editmodel.AbstractEditModelCommand#getResources()
*/
@Override
public Resource[] getResources() {
return EMPTY_RESOURCE_ARRAY;
}
}