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.SafeRunner; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; import org.xmind.ui.IWordContextProvider; import org.xmind.ui.internal.spelling.SpellingCheckDialog; public class CheckSpellingHandler extends AbstractHandler { private boolean dialogOpened = false; public Object execute(ExecutionEvent event) throws ExecutionException { final IWorkbenchPart editor = HandlerUtil.getActivePart(event); if (editor != null && (editor instanceof IWordContextProvider || editor.getAdapter(IWordContextProvider.class) != null)) { SafeRunner.run(new SafeRunnable() { public void run() throws Exception { SpellingCheckDialog dialog = new SpellingCheckDialog( editor.getSite().getShell()) { public int open() { dialogOpened = true; return super.open(); } public boolean close() { dialogOpened = false; return super.close(); } }; if (!dialogOpened) dialog.open(); } }); } return null; } }