/*******************************************************************************
* 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.jsf.ui.editor.model.commands;
import java.util.*;
import org.jboss.tools.common.model.ui.dnd.DnDUtil;
import org.eclipse.gef.commands.Command;
import org.jboss.tools.common.meta.action.XAction;
import org.jboss.tools.common.meta.action.XActionInvoker;
import org.jboss.tools.common.model.XModelObject;
public class JSFCompoundCommand extends Command {
private List<Object> elements = new ArrayList<Object>();
private String actionName;
public JSFCompoundCommand(String actionName) {
super();
this.actionName = actionName;
}
public boolean canExecute() {
if(elements.size() > 0){
XModelObject[] objects = (XModelObject[])elements.toArray(new XModelObject[]{});
XModelObject object= objects[0];
if(elements.size() == 1) objects = null;
XAction action = DnDUtil.getEnabledAction(object, objects, actionName);
if(action != null) return true;
}
return false;
}
public boolean canUndo() {
return false;
}
public void add(Object element){
elements.add(element);
}
public void execute() {
XModelObject[] objects = (XModelObject[])elements.toArray(new XModelObject[]{});
XModelObject object= objects[0];
if(elements.size() == 1) objects = null;
XActionInvoker.invoke(actionName, object, objects, null);
}
}