| Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/handlers/OpenFileHandler.java
|
| diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/handlers/OpenFileHandler.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/handlers/OpenFileHandler.java
|
| index 83a1f97637a1c0905f68e9deacbc7bc36f61c99e..509f5fea923a85e3e5adc3b9c55dc64a3d9dbdac 100644
|
| --- a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/handlers/OpenFileHandler.java
|
| +++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/handlers/OpenFileHandler.java
|
| @@ -58,23 +58,13 @@ public class OpenFileHandler extends AbstractHandler {
|
|
|
| private static final String FILTER_PATH_KEY = "openFileFilterPath"; //$NON-NLS-1$
|
|
|
| - @Override
|
| - public Object execute(ExecutionEvent event) throws ExecutionException {
|
| - Shell shell = HandlerUtil.getActiveShell(event);
|
| - return execute(shell);
|
| - }
|
| -
|
| - public Object execute(Shell shell) throws ExecutionException {
|
| - String selectedFilePath = promptForFile(shell);
|
| - if (selectedFilePath == null) {
|
| - return null;
|
| - }
|
| - final File selectedFile = new File(selectedFilePath);
|
| - if (!selectedFile.exists()) {
|
| - return null;
|
| - }
|
| - final DartLibrary[] libFile = new DartLibrary[1];
|
| - final IFile[] files = new IFile[1];
|
| + /**
|
| + * Opens {@link DartLibrary} using {@link DartCore#openLibrary(File, IProgressMonitor)} and then
|
| + * opens the given file from this library in an editor.
|
| + */
|
| + public static void openFile(Shell shell, final File file) throws ExecutionException {
|
| + final DartLibrary[] library = new DartLibrary[1];
|
| + final IFile[] resource = new IFile[1];
|
| try {
|
| PlatformUI.getWorkbench().getProgressService().run(true, true,
|
| new WorkbenchRunnableAdapter(new IWorkspaceRunnable() {
|
| @@ -82,20 +72,20 @@ public class OpenFileHandler extends AbstractHandler {
|
| public void run(IProgressMonitor monitor) throws CoreException {
|
|
|
| monitor.beginTask(HandlerMessages.OpenFile_taskName, 30);
|
| - libFile[0] = DartCore.openLibrary(selectedFile, new NullProgressMonitor());
|
| - if (libFile[0] != null) {
|
| - libFile[0].setTopLevel(true);
|
| + library[0] = DartCore.openLibrary(file, new NullProgressMonitor());
|
| + if (library[0] != null) {
|
| + library[0].setTopLevel(true);
|
| }
|
| monitor.worked(1);
|
| - IFile[] resources = ResourceUtil.getResources(selectedFile);
|
| + IFile[] resources = ResourceUtil.getResources(file);
|
| if (resources.length == 0) {
|
| - files[0] = null;
|
| + resource[0] = null;
|
| } else if (resources.length == 1) {
|
| - files[0] = resources[0];
|
| - } else if (libFile[0] != null) {
|
| + resource[0] = resources[0];
|
| + } else if (library[0] != null) {
|
| for (IFile file : resources) {
|
| - if (file.getProject().equals(libFile[0].getDartProject().getProject())) {
|
| - files[0] = file;
|
| + if (file.getProject().equals(library[0].getDartProject().getProject())) {
|
| + resource[0] = file;
|
| }
|
| }
|
| }
|
| @@ -111,17 +101,39 @@ public class OpenFileHandler extends AbstractHandler {
|
| }
|
|
|
| try {
|
| - if (files[0] != null) {
|
| - EditorUtility.openInEditor(files[0], true);
|
| - } else if (libFile[0] == null) {
|
| + if (resource[0] != null) {
|
| + EditorUtility.openInEditor(resource[0], true);
|
| + } else if (library[0] == null) {
|
| MessageDialog.openError(shell, HandlerMessages.OpenFile_label,
|
| - Messages.format(HandlerMessages.OpenFile_errorFileNotInLibrary, selectedFile.getName()));
|
| + Messages.format(HandlerMessages.OpenFile_errorFileNotInLibrary, file.getName()));
|
| }
|
| } catch (PartInitException e) {
|
| - throwFailedToOpen(selectedFile, e);
|
| + throwFailedToOpen(file, e);
|
| } catch (DartModelException e) {
|
| - throwFailedToOpen(selectedFile, e);
|
| + throwFailedToOpen(file, e);
|
| + }
|
| + }
|
| +
|
| + private static void throwFailedToOpen(File file, Exception e) throws ExecutionException {
|
| + throw new ExecutionException("Failed to open " + file, e);
|
| + }
|
| +
|
| + @Override
|
| + public Object execute(ExecutionEvent event) throws ExecutionException {
|
| + Shell shell = HandlerUtil.getActiveShell(event);
|
| + return execute(shell);
|
| + }
|
| +
|
| + public Object execute(Shell shell) throws ExecutionException {
|
| + String selectedFilePath = promptForFile(shell);
|
| + if (selectedFilePath == null) {
|
| + return null;
|
| + }
|
| + final File selectedFile = new File(selectedFilePath);
|
| + if (!selectedFile.exists()) {
|
| + return null;
|
| }
|
| + openFile(shell, selectedFile);
|
| return null;
|
| }
|
|
|
| @@ -176,8 +188,4 @@ public class OpenFileHandler extends AbstractHandler {
|
| }
|
| return result;
|
| }
|
| -
|
| - private void throwFailedToOpen(File file, Exception e) throws ExecutionException {
|
| - throw new ExecutionException("Failed to open " + file, e);
|
| - }
|
| }
|
|
|