package org.xmind.ui.internal.e4handlers; import java.io.File; import java.net.URI; import javax.inject.Named; import org.eclipse.core.runtime.Assert; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.xmind.ui.internal.MindMapMessages; import org.xmind.ui.internal.MindMapUIPlugin; import org.xmind.ui.internal.editor.LocalFileWorkbookRef; import org.xmind.ui.mindmap.IWorkbookRef; import org.xmind.ui.mindmap.IWorkbookRefFactory; import org.xmind.ui.mindmap.MindMapUI; public class OpenLocalFileHandler { private static final String KEY_COMMAND_PARAMTER_URI = "org.xmind.ui.mindmap.commandparameter.openLocalFile.uri"; //$NON-NLS-1$ @Execute public void run(final IWorkbenchWindow window, final @Named(KEY_COMMAND_PARAMTER_URI) String uri) { if (uri == null || "".equals(uri)) //$NON-NLS-1$ return; @SuppressWarnings("restriction") IWorkbookRefFactory factory = MindMapUIPlugin.getDefault() .getWorkbookRefFactory(); IWorkbookRef workbookRef = factory.createWorkbookRef(URI.create(uri), null); Assert.isTrue(workbookRef instanceof LocalFileWorkbookRef); LocalFileWorkbookRef localWorkbookRef = (LocalFileWorkbookRef) workbookRef; String filePath = localWorkbookRef.getURI().getPath(); if (!new File(filePath).exists()) { showMessageDialog( MindMapMessages.WorkbookHistoryItem_FileMissingMessage); return; } IWorkbenchPage page = window.getActivePage(); Assert.isTrue(page != null); final IEditorInput editorInput = MindMapUI.getEditorInputFactory() .createEditorInput(workbookRef); Assert.isTrue(editorInput != null); try { page.openEditor(editorInput, MindMapUI.MINDMAP_EDITOR_ID); } catch (PartInitException e) { MindMapUIPlugin.log(e, this.getClass().getName() + "--> openEdior"); //$NON-NLS-1$ e.printStackTrace(); } } private void showMessageDialog(String message) { String[] buttonLabels = new String[] { IDialogConstants.CLOSE_LABEL }; MessageDialog dialog = new MessageDialog(null, MindMapMessages.OpenLocalFileHandler_MessageDialog_title, null, message, MessageDialog.WARNING, buttonLabels, 0); dialog.open(); } }