下面列出了org.eclipse.ui.commands.ICommandService#getCommand ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* If {@link Preferences#P_TEXT_EDIT_LOCAL} is set, the
* <code> ch.elexis.core.ui.command.startEditLocalDocument </code> command is called with the
* provided {@link IDocumentLetter}, and the provided {@link IViewPart} is hidden.
*
* @param view
* @param document
* @return returns true if edit local is started and view is hidden
*/
public static boolean startEditLocalDocument(IViewPart view, IDocumentLetter document){
if (CoreHub.localCfg.get(Preferences.P_TEXT_EDIT_LOCAL, false) && document != null) {
// open for editing
ICommandService commandService =
(ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
Command command =
commandService.getCommand("ch.elexis.core.ui.command.startEditLocalDocument"); //$NON-NLS-1$
PlatformUI.getWorkbench().getService(IEclipseContext.class)
.set(command.getId().concat(".selection"), new StructuredSelection(document));
try {
command.executeWithChecks(
new ExecutionEvent(command, Collections.EMPTY_MAP, view, null));
} catch (ExecutionException | NotDefinedException | NotEnabledException
| NotHandledException e) {
MessageDialog.openError(view.getSite().getShell(), Messages.TextView_errortitle,
Messages.TextView_errorlocaleditmessage);
}
view.getSite().getPage().hideView(view);
return true;
}
return false;
}
/**
* Define the Command to be used when executing the named kbd macro
*
* @param editor
* @param id - the full command id
* @param name - the short name
* @param category - the category to use in the definition
* @return the Command
*/
Command defineKbdMacro(ITextEditor editor, String id, String name, String category) {
Command command = null;
if (id != null) {
// Now create the executable command
ICommandService ics = (editor != null ) ? (ICommandService) editor.getSite().getService(ICommandService.class) :
(ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
command = ics.getCommand(id);
IParameter[] parameters = null;
try {
// kludge: Eclipse has no way to dynamically define a parameter, so grab it from a known command
IParameter p = ics.getCommand(PARAMETER_CMD).getParameter(PARAMETER);
parameters = new IParameter[] { p };
} catch (Exception e) {
}
command.define(name, String.format(KBD_DESCRIPTION,name), ics.getCategory(category), parameters);
command.setHandler(new KbdMacroNameExecuteHandler(name));
}
return command;
}
@Inject
public void initializeAtStartup(final IWorkbench workbench, final ICommandService commandService) {
/*
* Check the UI state of the IHandler/Command which indicates if the user
* enabled automatic PlusCal conversion.
*/
final Command command = commandService.getCommand("toolbox.command.module.translate.automatially");
final State state = command.getState(RegistryToggleState.STATE_ID);
if (!((Boolean) state.getValue()).booleanValue()) {
return;
}
// This IHander is stateful even across Toolbox restarts. In other words, if the
// user enables automatic PlusCal translation, it will remain enabled even after
// a Toolbox restart. This means we have to register this EventHandler at the
// IEventBroker during Toolbox startup.
// It is vital that we use the Workbench's IEventBroker instance. If e.g. we
// would use an IEventBroker from higher up the IEclipseContext hierarchy, the
// broker would be disposed when a new spec gets opened while the IHandler's state
// remains enabled.
workbench.getService(IEventBroker.class).unsubscribe(this);
Assert.isTrue(workbench.getService(IEventBroker.class).subscribe(TLAEditor.PRE_SAVE_EVENT, this));
}
public static void executeWithParams(PersistentObject parameter){
try {
// get the command
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
ICommandService cmdService = (ICommandService) window.getService(ICommandService.class);
Command cmd = cmdService.getCommand(COMMANDID);
// create the parameter
HashMap<String, Object> param = new HashMap<String, Object>();
param.put(PARAMETERID, parameter);
// build the parameterized command
ParameterizedCommand pc = ParameterizedCommand.generateCommand(cmd, param);
// execute the command
IHandlerService handlerService =
(IHandlerService) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getService(IHandlerService.class);
handlerService.executeCommand(pc, null);
} catch (Exception ex) {
throw new RuntimeException(COMMANDID, ex);
}
}
public boolean test(final Object receiver, final String property,
final Object[] args, final Object expectedValue) {
if (receiver instanceof IServiceLocator && args.length == 1
&& args[0] instanceof String) {
final IServiceLocator locator = (IServiceLocator) receiver;
if (TOGGLE_PROPERTY_NAME.equals(property)) {
final String commandId = args[0].toString();
final ICommandService commandService = (ICommandService) locator
.getService(ICommandService.class);
final Command command = commandService.getCommand(commandId);
final State state = command
.getState(RegistryToggleState.STATE_ID);
if (state != null) {
return state.getValue().equals(expectedValue);
}
}
}
return false;
}
private static Object execute(IViewSite origin, String commandID, Map<String, Object> params){
if (origin == null) {
log.error("origin is null");
return null;
}
IHandlerService handlerService = (IHandlerService) origin.getService(IHandlerService.class);
ICommandService cmdService = (ICommandService) origin.getService(ICommandService.class);
try {
Command command = cmdService.getCommand(commandID);
String name = StringTool.unique("CommandHandler"); //$NON-NLS-1$
paramMap.put(name, params);
Parameterization px = new Parameterization(new DefaultParameter(), name);
ParameterizedCommand parmCommand =
new ParameterizedCommand(command, new Parameterization[] {
px
});
return handlerService.executeCommand(parmCommand, null);
} catch (Exception ex) {
throw new RuntimeException("add.command not found"); //$NON-NLS-1$
}
}
public boolean test(final Object receiver, final String property,
final Object[] args, final Object expectedValue) {
if (receiver instanceof IServiceLocator && args.length == 1
&& args[0] instanceof String) {
final IServiceLocator locator = (IServiceLocator) receiver;
if (TOGGLE_PROPERTY_NAME.equals(property)) {
final String commandId = args[0].toString();
final ICommandService commandService = (ICommandService) locator
.getService(ICommandService.class);
final Command command = commandService.getCommand(commandId);
final State state = command
.getState(RegistryToggleState.STATE_ID);
if (state != null) {
return state.getValue().equals(expectedValue);
}
}
}
return false;
}
/**
* Execute an Eclipse command
*
* @param commandId
* the command to execute
* @param eventData
* the parameter event data (depends on the command)
*/
public void executeCommand ( final String commandId, final Map<String, String> eventData )
{
try
{
final ICommandService commandService = (ICommandService)PlatformUI.getWorkbench ().getService ( ICommandService.class );
final IHandlerService handlerService = (IHandlerService)PlatformUI.getWorkbench ().getService ( IHandlerService.class );
final Command command = commandService.getCommand ( commandId );
final Parameterization[] parameterizations = new Parameterization[eventData.size ()];
int i = 0;
for ( final Map.Entry<String, String> entry : eventData.entrySet () )
{
parameterizations[i] = new Parameterization ( command.getParameter ( entry.getKey () ), entry.getValue () );
i++;
}
final ParameterizedCommand parameterCommand = new ParameterizedCommand ( command, parameterizations );
handlerService.executeCommand ( parameterCommand, null );
}
catch ( final Exception e )
{
logger.warn ( "Failed to execute command", e );
StatusManager.getManager ().handle ( StatusHelper.convertStatus ( Activator.PLUGIN_ID, e ), StatusManager.BLOCK );
}
}
@Test public void testOpenBlankFile() throws Exception {
IFile file = createFile("foo/y.testlanguage", "/* multi line */\n" + "stuff foo\n" + "stuff bar\n" + "// end");
XtextEditor openedEditor = openEditor(file);
assertNotNull(openedEditor);
ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class);
Command command = service.getCommand("org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration");
assertTrue(command.isEnabled());
openedEditor.close(false);
}
/**
* Add the binding to the Emacs+ scheme
*
* @param editor
* @param bindingResult
*/
private void addBinding(ITextEditor editor, IBindingResult bindingResult, String name) {
IBindingService service = (IBindingService) editor.getSite().getService(IBindingService.class);
if (service instanceof BindingService) {
try {
BindingService bindingMgr = (BindingService) service;
if (bindingResult.getKeyBinding() != null) {
// we're overwriting a binding, out with the old
bindingMgr.removeBinding(bindingResult.getKeyBinding());
}
Command command = null;
if (name != null) {
ICommandService ics = (ICommandService) editor.getSite().getService(ICommandService.class);
String id = EmacsPlusUtils.kbdMacroId(name);
// check first, as getCommand will create it if it doesn't already exist
if (ics.getDefinedCommandIds().contains(id)) {
command = ics.getCommand(id);
}
} else {
// use the unexposed category
command = nameKbdMacro(KBD_LNAME + nameid++, editor, KBD_GAZONK);
}
if (command != null) {
Binding binding = new KeyBinding(bindingResult.getTrigger(), new ParameterizedCommand(command, null),
KBD_SCHEMEID, KBD_CONTEXTID, null, null, null, Binding.USER);
bindingMgr.addBinding(binding);
asyncShowMessage(editor, String.format(BOUND, bindingResult.getKeyString()), false);
} else {
asyncShowMessage(editor, String.format(NO_NAME_UNO, name), true);
}
} catch (Exception e) {
asyncShowMessage(editor, String.format(ABORT, bindingResult.getKeyString()), true);
}
}
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException{
Brief brief = (Brief) ElexisEventDispatcher.getSelected(Brief.class);
if (brief != null) {
List<File> attachments = new ArrayList<File>();
Optional<File> tmpFile = getTempFile(brief);
if (tmpFile.isPresent()) {
attachments.add(tmpFile.get());
ICommandService commandService = (ICommandService) HandlerUtil
.getActiveWorkbenchWindow(event).getService(ICommandService.class);
try {
String attachmentsString = getAttachmentsString(attachments);
Command sendMailCommand =
commandService.getCommand("ch.elexis.core.mail.ui.sendMail");
HashMap<String, String> params = new HashMap<String, String>();
params.put("ch.elexis.core.mail.ui.sendMail.attachments", attachmentsString);
Patient patient = ElexisEventDispatcher.getSelectedPatient();
if (patient != null) {
params.put("ch.elexis.core.mail.ui.sendMail.subject",
"Patient: " + patient.getLabel());
}
ParameterizedCommand parametrizedCommmand =
ParameterizedCommand.generateCommand(sendMailCommand, params);
PlatformUI.getWorkbench().getService(IHandlerService.class)
.executeCommand(parametrizedCommmand, null);
} catch (Exception ex) {
throw new RuntimeException("ch.elexis.core.mail.ui.sendMail not found", ex);
}
}
removeTempAttachments(attachments);
}
return null;
}
private void setCommandState(boolean state)
{
ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
Command command = service.getCommand(COMMAND_ID);
State commandState = command.getState(COMMAND_STATE);
if (((Boolean) commandState.getValue()) != state)
{
commandState.setValue(state);
service.refreshElements(COMMAND_ID, null);
}
}
@Override
public void setEnabled(Object evaluationContext)
{
Object activeSite = ((IEvaluationContext) evaluationContext).getVariable(ISources.ACTIVE_SITE_NAME);
Object activeEditor = ((IEvaluationContext) evaluationContext).getVariable(ISources.ACTIVE_EDITOR_NAME);
if (activeSite instanceof IWorkbenchSite && activeEditor instanceof AbstractThemeableEditor)
{
ICommandService commandService = (ICommandService) ((IWorkbenchSite) activeSite)
.getService(ICommandService.class);
Command command = commandService.getCommand(COMMAND_ID);
State state = command.getState(RegistryToggleState.STATE_ID);
state.setValue(((AbstractThemeableEditor) activeEditor).getWordWrapEnabled());
}
}
public void earlyStartup() {
Set<String> unusedCommand = getUnusedCommandSet();
IWorkbench workbench = PlatformUI.getWorkbench();
ICommandService commandService = (ICommandService) workbench.getService(ICommandService.class);
Command command;
for (String commandId : unusedCommand) {
command = commandService.getCommand(commandId);
command.undefine();
}
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException{
ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof StructuredSelection
&& !((StructuredSelection) selection).isEmpty()) {
List<?> iDocuments = ((StructuredSelection) selection).toList();
List<File> attachments = new ArrayList<File>();
for (Object iDocument : iDocuments) {
if (iDocument instanceof IDocument) {
Optional<File> tmpFile = getTempFile((IDocument) iDocument);
if (tmpFile.isPresent()) {
attachments.add(tmpFile.get());
}
}
}
if (!attachments.isEmpty()) {
ICommandService commandService = (ICommandService) HandlerUtil
.getActiveWorkbenchWindow(event).getService(ICommandService.class);
try {
String attachmentsString = getAttachmentsString(attachments);
Command sendMailCommand =
commandService.getCommand("ch.elexis.core.mail.ui.sendMail");
HashMap<String, String> params = new HashMap<String, String>();
params.put("ch.elexis.core.mail.ui.sendMail.attachments", attachmentsString);
Patient patient = ElexisEventDispatcher.getSelectedPatient();
if (patient != null) {
params.put("ch.elexis.core.mail.ui.sendMail.subject",
"Patient: " + patient.getLabel());
}
ParameterizedCommand parametrizedCommmand =
ParameterizedCommand.generateCommand(sendMailCommand, params);
PlatformUI.getWorkbench().getService(IHandlerService.class)
.executeCommand(parametrizedCommmand, null);
} catch (Exception ex) {
throw new RuntimeException("ch.elexis.core.mail.ui.sendMail not found", ex);
}
}
removeTempAttachments(attachments);
}
return null;
}
private Command getCommand() {
final ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
return service.getCommand("org.bonitasoft.studio.application.showHelp");
}
private Command getCommand() {
final ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
return service.getCommand("org.eclipse.ui.window.preferences");
}
@Test
public void testSaveButtonAndMenuNotEnableAtInitiationAndEnableAfterChange() {
// When opening Bonita soft
final Matcher<MenuItem> matcher = withMnemonic(SAVE_BUTTON_TEXT);
bot.waitUntil(Conditions.waitForMenu(bot.activeShell(), matcher));
bot.waitUntil(Conditions.waitForWidget(withId(SWTBotConstants.SWTBOT_ID_SAVE_EDITOR)));
// test button
bot.waitUntil(new AssertionCondition() {
@Override
protected void makeAssert() throws Exception {
Assert.assertFalse("Error: Save button must be disabled when opening Bonita Studio.",
bot.toolbarButtonWithId(SWTBotConstants.SWTBOT_ID_SAVE_EDITOR).isEnabled());
}
});
// test menu
bot.waitUntil(widgetIsDisabled(bot.menu("File").click().menu("Save")));
// When Creating a new Diagram
SWTBotTestUtil.createNewDiagram(bot);
final SWTBotEditor botEditor = bot.activeEditor();
final SWTBotGefEditor gmfEditor = bot.gefEditor(botEditor.getTitle());
final List<SWTBotGefEditPart> runnableEPs = gmfEditor.editParts(new BaseMatcher<EditPart>() {
@Override
public boolean matches(final Object item) {
return item instanceof PoolEditPart;
}
@Override
public void describeTo(final Description description) {
}
});
Assert.assertFalse(runnableEPs.isEmpty());
gmfEditor.select(runnableEPs.get(0));
// test button
bot.waitUntil(new AssertionCondition() {
@Override
protected void makeAssert() throws Exception {
Assert.assertTrue("Error: Save button must be enabled when creating a new diagram.",
bot.toolbarButtonWithId(SWTBotConstants.SWTBOT_ID_SAVE_EDITOR).isEnabled());
}
});
// test menu
bot.waitUntil(Conditions.widgetIsEnabled(bot.menu("File").menu("Save")));
bot.toolbarButtonWithId(SWTBotConstants.SWTBOT_ID_SAVE_EDITOR).click();
// test button
bot.waitUntil(new AssertionCondition() {
@Override
protected void makeAssert() throws Exception {
Assert.assertFalse("Error: Save button must be disabled after saving a diagram.",
bot.toolbarButtonWithId(SWTBotConstants.SWTBOT_ID_SAVE_EDITOR).isEnabled());
}
});
final ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
final Command cmd = service.getCommand(SAVE_COMMAND_ID);
assertFalse(cmd.isEnabled());
}
private Command getOpenLaunchDialogCommand() {
ICommandService commandService = ServiceHelper.getService( workbenchWindow, ICommandService.class );
return commandService.getCommand( OpenLaunchDialogHander.COMMAND_ID );
}
public Object execute(ExecutionEvent event) throws ExecutionException {
if (!isEnabled()) {
return null;
}
IEditorPart editor = HandlerUtil.getActiveEditor(event);
if (editor instanceof IXliffEditor) {
String tshelp = System.getProperties().getProperty("TSHelp");
String tsstate = System.getProperties().getProperty("TSState");
if (tshelp == null || !"true".equals(tshelp) || tsstate == null || !"true".equals(tsstate)) {
LoggerFactory.getLogger(ConcordanceSearchHandler.class).error("Exception:key hs008 is lost.(Can't find the key)");
System.exit(0);
}
IXliffEditor xliffEditor = (IXliffEditor) editor;
String XLIFF_EDITOR_ID = "net.heartsome.cat.ts.ui.xliffeditor.nattable.editor";
IEditorPart editorRefer = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActiveEditor();
if (editorRefer.getSite().getId().equals(XLIFF_EDITOR_ID)) {
// IProject project = ((FileEditorInput) editorRefer.getEditorInput()).getFile().getProject();
IFile file = ((FileEditorInput) editorRefer.getEditorInput()).getFile();
ProjectConfiger projectConfig = ProjectConfigerFactory.getProjectConfiger(file.getProject());
List<DatabaseModelBean> lstDatabase = projectConfig.getAllTmDbs();
if (lstDatabase.size() == 0) {
MessageDialog.openInformation(HandlerUtil.getActiveShell(event),
Messages.getString("handler.ConcordanceSearchHandler.msgTitle"),
Messages.getString("handler.ConcordanceSearchHandler.msg"));
return null;
}
String selectText = xliffEditor.getSelectPureText();
if ((selectText == null || selectText.equals("")) && xliffEditor.getSelectedRowIds().size() == 1) {
selectText = xliffEditor.getXLFHandler().getSrcPureText(xliffEditor.getSelectedRowIds().get(0));
} else if (selectText == null) {
selectText = "";
}
ConcordanceSearchDialog dialog = new ConcordanceSearchDialog(editorRefer.getSite().getShell(), file,
xliffEditor.getSrcColumnName(), xliffEditor.getTgtColumnName(), selectText.trim());
dialog.open();
if (selectText != null && !selectText.trim().equals("")) {
dialog.initGroupIdAndSearch();
IWorkbenchPartSite site = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getSite();
ICommandService commandService = (ICommandService) site.getService(
ICommandService.class);
Command command = commandService
.getCommand(ActionFactory.COPY.getCommandId());
IEvaluationService evalService = (IEvaluationService) site.getService(
IEvaluationService.class);
IEvaluationContext currentState = evalService.getCurrentState();
ExecutionEvent executionEvent = new ExecutionEvent(command, Collections.EMPTY_MAP, this, currentState);
try {
command.executeWithChecks(executionEvent);
} catch (Exception e1) {}
}
}
}
return null;
}