/*******************************************************************************
* 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.meta.action;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.jboss.tools.common.meta.XModelEntity;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.plugin.ModelPlugin;
public class XActionInvoker {
static SpecialWizard sw = SpecialWizardFactory.createSpecialWizard("org.jboss.tools.common.model.ui.action.XModelObjectActionInvoker"); //$NON-NLS-1$
public static void invoke(String invokerEntity, String actionPath, XModelObject object, Properties runningProperties) {
if(object == null) {
ModelPlugin.getPluginLog().logError("Cannot invoke action " + actionPath + " on null object."); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
XModelEntity entity = object.getModel().getMetaData().getEntity(invokerEntity);
if(entity == null) {
ModelPlugin.getPluginLog().logError("Entity " + invokerEntity + " is not found."); //$NON-NLS-1$ //$NON-NLS-2$
}
invoke(entity, actionPath, object, runningProperties);
}
public static void invoke(String actionPath, XModelObject object, Properties runningProperties) {
if(object == null) {
ModelPlugin.getPluginLog().logError("Cannot invoke action " + actionPath + " on null object."); //$NON-NLS-1$ //$NON-NLS-2$
} else {
invoke(object.getModelEntity(), actionPath, object, runningProperties);
}
}
public static void invoke(XModelEntity invoker, String actionPath, XModelObject object, Properties runningProperties) {
if(sw == null) {
ModelPlugin.getPluginLog().logError("XActionInvoker could not be loaded"); //$NON-NLS-1$
} else {
XAction a = getAction(invoker, actionPath);
if(a == null) {
ModelPlugin.getPluginLog().logError("Cannot find action " + actionPath + " in entity " + invoker.getName()); //$NON-NLS-1$ //$NON-NLS-2$
} else {
sw.setObject(new Object[]{a, object, runningProperties});
sw.execute();
}
}
}
public static void invoke(String actionPath, XModelObject object, XModelObject[] targets, Properties runningProperties) {
invoke(object.getModelEntity(), actionPath, object, targets, runningProperties);
}
public static void invoke(XModelEntity invoker, String actionPath, XModelObject object, XModelObject[] targets, Properties runningProperties) {
if(sw == null) {
ModelPlugin.getPluginLog().logError("XActionInvoker could not be loaded"); //$NON-NLS-1$
} else {
XAction a = getAction(invoker, actionPath);
if(a == null) {
ModelPlugin.getPluginLog().logError("Cannot find action " + actionPath + " in entity " + invoker.getName()); //$NON-NLS-1$ //$NON-NLS-2$
} else {
sw.setObject(new Object[]{a, object, runningProperties, targets});
sw.execute();
}
}
}
public static XAction getAction(String actionPath, XModelObject object) {
return object == null ? null : getAction(object.getModelEntity(), actionPath);
}
public static XAction getAction(XModelEntity invoker, String actionPath) {
return invoker.getActionList().getAction(actionPath);
}
static Set<String> reportedMessages = new HashSet<String>();
}