blob: 175f1aa0dac251a2ed58612ba4826ef069c26fd7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Christian Pontesegger 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:
* Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.ease.ui.scripts.ui;
import java.util.HashMap;
import org.eclipse.ease.ui.scripts.handler.EditScript;
import org.eclipse.ease.ui.scripts.handler.RunScript;
import org.eclipse.ease.ui.scripts.repository.IScript;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ui.menus.AbstractContributionFactory;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.menus.CommandContributionItemParameter;
import org.eclipse.ui.menus.IContributionRoot;
import org.eclipse.ui.services.IServiceLocator;
/**
* Provide context menu entries for macros.
*/
public class ScriptContextMenuEntries extends AbstractContributionFactory implements ISelectionChangedListener {
private IStructuredSelection fLastSelection;
/**
* Constructor.
*
* @param location
* location to add factory to.
*/
public ScriptContextMenuEntries(final String location) {
super(location, null);
}
@Override
public final void createContributionItems(final IServiceLocator serviceLocator, final IContributionRoot additions) {
if ((fLastSelection != null) && (!fLastSelection.isEmpty())) {
final StringBuffer names = new StringBuffer();
for (final Object object : fLastSelection.toArray()) {
if (object instanceof IScript)
names.append(((IScript) object).getPath()).append(';');
}
if (names.length() > 0) {
names.deleteCharAt(names.length() - 1);
final HashMap<String, String> parameters = new HashMap<>();
// add "run" entry
parameters.put(RunScript.PARAMETER_NAME, names.toString());
final CommandContributionItemParameter contributionParameter = new CommandContributionItemParameter(serviceLocator, null, RunScript.COMMAND_ID,
CommandContributionItem.STYLE_PUSH);
contributionParameter.label = "Run";
contributionParameter.visibleEnabled = true;
contributionParameter.parameters = parameters;
CommandContributionItem contribution = new CommandContributionItem(contributionParameter);
additions.addContributionItem(contribution, null);
// add separator
additions.addContributionItem(new Separator(), null);
// add "edit" entry
parameters.clear();
parameters.put(EditScript.PARAMETER_NAME, names.toString());
contributionParameter.commandId = EditScript.COMMAND_ID;
contributionParameter.label = "Edit";
contribution = new CommandContributionItem(contributionParameter);
additions.addContributionItem(contribution, null);
}
}
}
@Override
public void selectionChanged(final SelectionChangedEvent event) {
fLastSelection = (event.getSelection() instanceof IStructuredSelection) ? (IStructuredSelection) event.getSelection() : null;
}
}