You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/09/04 15:11:22 UTC

svn commit: r1520007 - in /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model: JcrNode.java LinkHelper.java

Author: stefanegli
Date: Wed Sep  4 13:11:21 2013
New Revision: 1520007

URL: http://svn.apache.org/r1520007
Log:
SLING-2985 : link-with-editor support (part 2) added for content browser (selection change in project explorer activates corresponding editor if that's already open)

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1520007&r1=1520006&r2=1520007&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Wed Sep  4 13:11:21 2013
@@ -525,5 +525,9 @@ public class JcrNode implements IAdaptab
 	public JcrNode getParent() {
 		return parent;
 	}
+	
+	IResource getResource() {
+		return resource;
+	}
 
 }

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java?rev=1520007&r1=1520006&r2=1520007&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java Wed Sep  4 13:11:21 2013
@@ -27,7 +27,10 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.ide.ResourceUtil;
 import org.eclipse.ui.navigator.ILinkHelper;
 import org.w3c.dom.Node;
@@ -83,8 +86,45 @@ public class LinkHelper implements ILink
 	@Override
 	public void activateEditor(IWorkbenchPage aPage,
 			IStructuredSelection aSelection) {
-		// nothing done here at the moment. 
-		// PackageExplorerOpenActionProvider currently takes care of opening jcr nodes in an editor
+		final Object selectedElement = aSelection.getFirstElement();
+		if (!(selectedElement instanceof JcrNode)) {
+			return;
+		}
+		final JcrNode node = (JcrNode) selectedElement;
+		final IResource resource = node.getResource();
+		if (resource==null || !(resource instanceof IFile)) {
+			return;
+		}
+		final IFile selectedFile = (IFile)resource;
+		final IEditorReference[] editorReferences = aPage.getEditorReferences();
+		for (int i = 0; i < editorReferences.length; i++) {
+			final IEditorReference reference = editorReferences[i];
+			if (reference==null) {
+				continue;
+			}
+			final IEditorInput editorInput;
+			try {
+				editorInput = reference.getEditorInput();
+			} catch (PartInitException e) {
+				//TODO proper logging
+				e.printStackTrace();
+				continue;
+			}
+			if (editorInput==null) {
+				continue;
+			}
+			if (!(editorInput instanceof IFileEditorInput)) {
+				continue;
+			}
+			final IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+			final IFile file = fileEditorInput.getFile();
+			if (file==null) {
+				continue;
+			}
+			if (file.equals(selectedFile)) {
+				aPage.activate(reference.getEditor(true));
+			}
+		}
 	}
 
 }