/******************************************************************************* * 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.handlers; import java.text.MessageFormat; import java.util.Properties; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.*; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.ui.ILaunchShortcut; import org.eclipse.jface.viewers.*; import org.eclipse.ui.IObjectActionDelegate; import org.jboss.tools.common.meta.action.impl.AbstractHandler; import org.jboss.tools.common.model.XModelException; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.common.model.plugin.ModelPlugin; import org.jboss.tools.common.model.util.extension.ExtensionPointUtil; /** * @author victor */ public class RunAntHandler extends AbstractHandler { public boolean isEnabled(XModelObject object) { return (object != null && object.isActive()); } public void executeHandler(XModelObject object, Properties p) throws XModelException { ILaunchShortcut sc = findLaunchShortcut("org.eclipse.ant.ui.antShortcutWithDialog"); //$NON-NLS-1$ IFile file = (IFile)object.getAdapter(IFile.class); sc.launch(new StructuredSelection(file), ILaunchManager.RUN_MODE); } static IObjectActionDelegate findPopupMenusObjectAction(String pluginId, String actionId) { Platform.getBundle(pluginId); try { return (IObjectActionDelegate)ExtensionPointUtil.findClassByElementId("org.eclipse.ui.popupMenus", actionId); //$NON-NLS-1$ } catch (IllegalArgumentException ex) { //ignore } catch (CoreException ex) { //ignore } catch (ClassCastException ex) { ModelPlugin.getPluginLog().logError(ex); } return null; } static ILaunchShortcut findLaunchShortcut(String shortcutId) throws XModelException { String pointId = "org.eclipse.debug.ui.launchShortcuts"; //$NON-NLS-1$ IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(pointId); if(point == null) throw new XModelException(MessageFormat.format("Cannot find extension point {0}", pointId)); IConfigurationElement[] es = point.getConfigurationElements(); for (int i = 0; i < es.length; i++) { if(!shortcutId.equals(es[i].getAttribute("id"))) continue; //$NON-NLS-1$ try { return (ILaunchShortcut)es[i].createExecutableExtension("class"); //$NON-NLS-1$ } catch (CoreException e) { throw new XModelException(e); } } throw new XModelException(MessageFormat.format("Cannot find launch shortcut {0}", shortcutId)); } }