Author: koen.aers(a)jboss.com
Date: 2011-11-22 14:53:40 -0500 (Tue, 22 Nov 2011)
New Revision: 36541
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/META-INF/MANIFEST.MF
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/OpenPostProcessor.java
Log:
JBIDE-10203:
- open <file> shows file in editor whether in workspace or not
- open <folder> selects folder in project and/or pacakage explorer if folder is in
workspace
Modified: trunk/forge/plugins/org.jboss.tools.forge.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/forge/plugins/org.jboss.tools.forge.ui/META-INF/MANIFEST.MF 2011-11-22 17:42:29
UTC (rev 36540)
+++ trunk/forge/plugins/org.jboss.tools.forge.ui/META-INF/MANIFEST.MF 2011-11-22 19:53:40
UTC (rev 36541)
@@ -16,7 +16,8 @@
org.eclipse.jdt.core,
org.eclipse.ui.views,
org.jboss.tools.forge.core;bundle-version="1.0.0",
- org.eclipse.core.filesystem;bundle-version="1.3.100"
+ org.eclipse.core.filesystem;bundle-version="1.3.100",
+ org.eclipse.ui.navigator;bundle-version="3.5.100"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.jboss.tools.forge.ui.ForgeUIPlugin
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/OpenPostProcessor.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/OpenPostProcessor.java 2011-11-22
17:42:29 UTC (rev 36540)
+++
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/OpenPostProcessor.java 2011-11-22
19:53:40 UTC (rev 36541)
@@ -4,29 +4,33 @@
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.navigator.CommonNavigator;
+import org.eclipse.ui.part.ISetSelectionTarget;
import org.jboss.tools.forge.ui.ForgeUIPlugin;
public class OpenPostProcessor {
public void postProcess(String line, String currentResourcePath) {
- try {
- String resourceToOpen = currentResourcePath + File.separator +
line.substring(5).trim();
- IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(resourceToOpen));
- if (fileStore.fetchInfo().isDirectory()) {
- expandDirectoryInExplorer(resourceToOpen);
- } else {
- openFileInEditor(fileStore);
- }
- IWorkbenchPage workbenchPage =
ForgeCommandPostProcessorHelper.getActiveWorkbenchPage();
- if (workbenchPage != null) {
- IDE.openEditorOnFileStore(workbenchPage, fileStore);
- }
- } catch (PartInitException e) {
- ForgeUIPlugin.log(e);
+ String resourceToOpen = currentResourcePath + File.separator +
line.substring(5).trim();
+ IPath path = new Path(resourceToOpen);
+ IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(resourceToOpen));
+ if (fileStore.fetchInfo().isDirectory()) {
+ expandDirectoryInExplorer(path);
+ } else {
+ openFileInEditor(fileStore);
}
}
@@ -41,8 +45,42 @@
}
}
- private void expandDirectoryInExplorer(String resourceToOpen) {
-
+ private void expandDirectoryInExplorer(IPath path) {
+ IWorkbenchPage workbenchPage =
ForgeCommandPostProcessorHelper.getActiveWorkbenchPage();
+ IContainer objectToSelect =
ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(path);
+ if (objectToSelect != null && workbenchPage != null) {
+ IViewPart projectExplorer =
workbenchPage.findView("org.eclipse.ui.navigator.ProjectExplorer");
+ if (projectExplorer != null && projectExplorer instanceof CommonNavigator) {
+ expandInProjectExplorer((CommonNavigator)projectExplorer, objectToSelect);
+ }
+ IViewPart packageExplorer =
workbenchPage.findView("org.eclipse.jdt.ui.PackageExplorer");
+ if (packageExplorer == null && projectExplorer == null) {
+ try {
+ packageExplorer =
workbenchPage.showView("org.eclipse.jdt.ui.PackageExplorer");
+ } catch (PartInitException e) {
+ ForgeUIPlugin.log(e);
+ }
+ }
+ if (packageExplorer != null) {
+ expandInPackageExplorer(packageExplorer, objectToSelect);
+ }
+ }
}
-
+
+ private void expandInProjectExplorer(CommonNavigator projectExplorer, IContainer
container) {
+ projectExplorer.selectReveal(new StructuredSelection(container));
+ TreeViewer treeViewer = projectExplorer.getCommonViewer();
+ treeViewer.expandToLevel(container, 1);
+ }
+
+ private void expandInPackageExplorer(IViewPart packageExplorer, IContainer container) {
+ if (packageExplorer instanceof ISetSelectionTarget) {
+ ((ISetSelectionTarget)packageExplorer).selectReveal(new
StructuredSelection(container));
+ }
+ Object treeViewer = packageExplorer.getAdapter(ISelectionProvider.class);
+ if (treeViewer != null && treeViewer instanceof TreeViewer) {
+ ((TreeViewer)treeViewer).expandToLevel(JavaCore.create(container), 1);
+ }
+ }
+
}
Show replies by date