package org.xmind.ui.internal.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.handlers.IHandlerService; import org.xmind.ui.internal.MindMapUIPlugin; import org.xmind.ui.internal.ShareOption; import org.xmind.ui.internal.dialogs.ShareDialog; /** * * @author Frank Shaka * @since 3.6.50 */ public class ShowShareOptionsHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = HandlerUtil .getActiveWorkbenchWindowChecked(event); share(window); return null; } private void share(IWorkbenchWindow window) { ShareDialog optionDialog = new ShareDialog(window.getShell(), MindMapUIPlugin.getDefault().getShareOptionRegistry()); optionDialog.open(); final ShareOption option = optionDialog.getSelectedOption(); if (option == null) return; final IHandlerService handlerService = window .getService(IHandlerService.class); Assert.isNotNull(handlerService); SafeRunner.run(new SafeRunnable() { public void run() throws Exception { handlerService.executeCommand(option.getCommandId(), null); } }); } }