Title: [jbehave] [585] trunk/plugins/eclipse: [FL] F3 through to story components from story text
Revision
585
Author
sirenian
Date
2006-11-27 05:52:36 -0600 (Mon, 27 Nov 2006)

Log Message

[FL] F3 through to story components from story text

Modified Paths


Added Paths

Diff

Added: trunk/plugins/eclipse/.settings/org.eclipse.jdt.core.prefs (0 => 585)

--- trunk/plugins/eclipse/.settings/org.eclipse.jdt.core.prefs	                        (rev 0)
+++ trunk/plugins/eclipse/.settings/org.eclipse.jdt.core.prefs	2006-11-27 11:52:36 UTC (rev 585)
@@ -0,0 +1,12 @@
+#Mon Nov 27 11:25:29 GMT 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

Added: trunk/plugins/eclipse/.settings/org.eclipse.jdt.ui.prefs (0 => 585)

--- trunk/plugins/eclipse/.settings/org.eclipse.jdt.ui.prefs	                        (rev 0)
+++ trunk/plugins/eclipse/.settings/org.eclipse.jdt.ui.prefs	2006-11-27 11:52:36 UTC (rev 585)
@@ -0,0 +1,3 @@
+#Mon Nov 27 11:25:29 GMT 2006
+eclipse.preferences.version=1
+internal.default.compliance=default

Modified: trunk/plugins/eclipse/META-INF/MANIFEST.MF (584 => 585)

--- trunk/plugins/eclipse/META-INF/MANIFEST.MF	2006-11-27 11:06:28 UTC (rev 584)
+++ trunk/plugins/eclipse/META-INF/MANIFEST.MF	2006-11-27 11:52:36 UTC (rev 585)
@@ -17,6 +17,10 @@
  org.eclipse.core.resources,
  org.eclipse.jdt.source,
  org.eclipse.jdt.ui,
- org.eclipse.core.expressions
+ org.eclipse.core.expressions,
+ org.eclipse.jface.text,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.workbench.texteditor
 Eclipse-AutoStart: true
 Bundle-Vendor: JBehave
+Bundle-ClassPath: lib/commons-lang-1.0.1.jar

Modified: trunk/plugins/eclipse/plugin.xml (584 => 585)

--- trunk/plugins/eclipse/plugin.xml	2006-11-27 11:06:28 UTC (rev 584)
+++ trunk/plugins/eclipse/plugin.xml	2006-11-27 11:52:36 UTC (rev 585)
@@ -98,5 +98,35 @@
             schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
             sequence="M3+M2+D B"/>
    </extension>
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            class="jbehave.plugin.eclipse.editors.BehaviourEditor"
+            contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
+            extensions="story"
+            icon="icons/behave.gif"
+            id="jbehave.plugin.eclipse.editors.BehaviourEditor"
+            name="Behaviour Editor"/>
+   </extension>
+   <extension
+         id="jbehave.plugin.eclipse.editorActions"
+         name="editorActions"
+         point="org.eclipse.ui.editorActions">
+      <editorContribution
+            id="jbehave-eclipse.behaviourEditorContribution"
+            targetID="jbehave.plugin.eclipse.editors.BehaviourEditor">
+         <action
+               class="jbehave.plugin.eclipse.actions.NavigateToJavaSource"
+               id="jbehave-eclipse.navigate-source"
+               definitionId="org.eclipse.jdt.ui.edit.text.java.open.editor"
+               label="Navigate to Source"
+               menubarPath="navigate/open.ext"
+               style="push"
+               tooltip="Navigate to Source"/>
+         
+      </editorContribution>
+   </extension>
+   
+   
 
 </plugin>

Added: trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/actions/NavigateToJavaSource.java (0 => 585)

--- trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/actions/NavigateToJavaSource.java	                        (rev 0)
+++ trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/actions/NavigateToJavaSource.java	2006-11-27 11:52:36 UTC (rev 585)
@@ -0,0 +1,140 @@
+package jbehave.plugin.eclipse.actions;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import jbehave.plugin.eclipse.editors.BehaviourEditor;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.eclipse.jdt.core.search.SearchEngine;
+import org.eclipse.jdt.core.search.SearchMatch;
+import org.eclipse.jdt.core.search.SearchParticipant;
+import org.eclipse.jdt.core.search.SearchPattern;
+import org.eclipse.jdt.core.search.SearchRequestor;
+import org.eclipse.jdt.core.search.TypeNameRequestor;
+import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.TextSelection;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorActionDelegate;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.INavigationLocation;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.texteditor.TextSelectionNavigationLocation;
+
+public class NavigateToJavaSource implements IEditorActionDelegate {
+
+	List keyWords=Arrays.asList(new String[]{"title:","scenario:","when","then","given"});
+	private BehaviourEditor editor;
+
+	public void setActiveEditor(IAction action, IEditorPart targetEditor) {
+		this.editor=(BehaviourEditor)targetEditor;
+		
+	}
+	
+	 public static String capitalize(String str) {
+	        int strLen;
+	        if (str == null || (strLen = str.length()) == 0) {
+	            return str;
+	        }
+	        return new StringBuffer(strLen)
+	            .append(Character.toTitleCase(str.charAt(0)))
+	            .append(str.substring(1))
+	            .toString();
+	    }
+
+
+	public void run(IAction action) {
+		IDocumentProvider dp = editor.getDocumentProvider();
+		IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+		TextSelectionNavigationLocation navloc = (TextSelectionNavigationLocation) editor.createNavigationLocation();
+		TextSelection selection=(TextSelection) editor.getSelectionProvider().getSelection();
+		int line=selection.getStartLine();
+		try {
+			String text=document.get(document.getLineOffset(line),document.getLineLength(line));
+			processLine(text);
+		} catch (BadLocationException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void processLine(String line) {
+		line=line.replaceAll("\n", "");
+		line=line.replaceAll("\r", "");
+		List words=new ArrayList(Arrays.asList(line.split(" ")));
+		if (words.size()<2)
+			return;
+		
+		if (((String)words.get(0)).equalsIgnoreCase("and")){
+			words.remove(0);
+			if (words.size()<2)
+				return;
+		}
+		
+		if (keyWords.contains(((String)words.get(0)).toLowerCase())){	
+			words.remove(0);
+			String className = renderClassName(words);
+			findAndOpenClass(className);
+		}
+		
+	}
+
+	private String renderClassName(List words) {
+		String className="";
+		for (Iterator iter = words.iterator(); iter.hasNext();) {
+			String word = (String) iter.next();
+			className+=capitalize(word);				
+		}
+		System.out.println("Class: '"+className+"'");
+		return className;
+	}
+
+	private void findAndOpenClass(String className) {
+		try {
+			final List types = new ArrayList();
+		    SearchPattern pattern = SearchPattern.createPattern(className, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH);
+		    IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
+		    SearchRequestor requestor = new SearchRequestor(){
+				@Override
+				public void acceptSearchMatch(SearchMatch match) throws CoreException {
+					types.add(match.getElement());
+				}
+		    };
+
+		    SearchEngine searchEngine = new SearchEngine();
+		    searchEngine.search(
+		    		pattern, 
+		    		new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, 
+		    		scope, 
+		    		requestor, 
+		    		null);
+				if (types.size()==1){
+					EditorUtility.openInEditor((IType)types.get(0), true);
+				}
+			
+		} catch (JavaModelException e) {
+			throw new RuntimeException(e);
+		} catch (CoreException e) {
+			throw new RuntimeException(e);
+		}
+		
+	}
+
+
+	
+
+	public void selectionChanged(IAction action, ISelection selection) {
+		// TODO Auto-generated method stub
+
+	}
+
+}

Added: trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/editors/BehaviourEditor.java (0 => 585)

--- trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/editors/BehaviourEditor.java	                        (rev 0)
+++ trunk/plugins/eclipse/src/main/java/jbehave/plugin/eclipse/editors/BehaviourEditor.java	2006-11-27 11:52:36 UTC (rev 585)
@@ -0,0 +1,17 @@
+package jbehave.plugin.eclipse.editors;
+
+import org.eclipse.ui.editors.text.TextEditor;
+
+public class BehaviourEditor extends TextEditor {
+
+	
+	public BehaviourEditor() {
+		super();
+		
+	}
+	public void dispose() {
+	
+		super.dispose();
+	}
+
+}


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to