From: <sh...@us...> - 2007-10-16 14:02:27
|
Revision: 10903 http://jedit.svn.sourceforge.net/jedit/?rev=10903&view=rev Author: shlomy Date: 2007-10-16 07:02:24 -0700 (Tue, 16 Oct 2007) Log Message: ----------- Added a "jump to tag" action Modified Paths: -------------- plugins/CtagsInterface/trunk/CtagsInterface.props plugins/CtagsInterface/trunk/actions.xml plugins/CtagsInterface/trunk/src/ctags/CtagsInterfacePlugin.java Modified: plugins/CtagsInterface/trunk/CtagsInterface.props =================================================================== --- plugins/CtagsInterface/trunk/CtagsInterface.props 2007-10-16 12:06:39 UTC (rev 10902) +++ plugins/CtagsInterface/trunk/CtagsInterface.props 2007-10-16 14:02:24 UTC (rev 10903) @@ -17,11 +17,13 @@ ctags-interface-add-file.label=Add tag file... ctags-interface-print-tags.label=Print tags ctags-interface-print-tags-containing.label=Print tags with substring... +ctags-interface-jump-to-tag.label=Jump to selection # menu items plugin.ctags.CtagsInterfacePlugin.menu=ctags-interface-add-file \ ctags-interface-print-tags \ - ctags-interface-print-tags-containing + ctags-interface-print-tags-containing \ + ctags-interface-jump-to-tag # class-browser-show-selected-hierarchy # dockables Modified: plugins/CtagsInterface/trunk/actions.xml =================================================================== --- plugins/CtagsInterface/trunk/actions.xml 2007-10-16 12:06:39 UTC (rev 10902) +++ plugins/CtagsInterface/trunk/actions.xml 2007-10-16 14:02:24 UTC (rev 10903) @@ -18,6 +18,11 @@ ctags.CtagsInterfacePlugin.printTagsContaining(view); </CODE> </ACTION> + <ACTION NAME="ctags-interface-jump-to-tag" NO_REPEAT="TRUE"> + <CODE> + ctags.CtagsInterfacePlugin.jumpToTag(view); + </CODE> + </ACTION> </ACTIONS> Modified: plugins/CtagsInterface/trunk/src/ctags/CtagsInterfacePlugin.java =================================================================== --- plugins/CtagsInterface/trunk/src/ctags/CtagsInterfacePlugin.java 2007-10-16 12:06:39 UTC (rev 10902) +++ plugins/CtagsInterface/trunk/src/ctags/CtagsInterfacePlugin.java 2007-10-16 14:02:24 UTC (rev 10903) @@ -9,17 +9,21 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; +import java.util.Arrays; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.Set; +import java.util.Vector; import java.util.Map.Entry; import javax.swing.JOptionPane; +import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.EditPlugin; import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.io.VFSManager; public class CtagsInterfacePlugin extends EditPlugin { @@ -218,4 +222,49 @@ private static String getValueString(String string) { return "'" + string.replaceAll("'", "''") + "'"; } + public static void jumpToTag(final View view) + { + String tag = view.getTextArea().getSelectedText(); + System.err.println("Selected tag: " + tag); + Vector<String> files = new Vector<String>(); + Vector<String> lines = new Vector<String>(); + try { + ResultSet rs = query("SELECT FILE, LINE FROM " + TABLE_NAME + + " WHERE NAME=" + getValueString(tag)); + while (rs.next()) { + files.add(rs.getString(1)); + lines.add(rs.getString(2)); + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if (files.size() == 0) { + JOptionPane.showMessageDialog(view, "No records found"); + return; + } + int index = 0; + if (files.size() > 1) { + String [] positions = new String[files.size()]; + for (int i = 0; i < files.size(); i++) + positions[i] = files.get(i) + ":" + lines.get(i); + String s = (String) JOptionPane.showInputDialog(view, "Select position:", + "Tag collision", JOptionPane.QUESTION_MESSAGE, null, + positions, positions[0]); + index = Arrays.asList(positions).indexOf(s); + } + String file = files.get(index); + final int line = Integer.valueOf(lines.get(index)); + Buffer buffer = jEdit.openFile(view, file); + if (buffer == null) { + System.err.println("Unable to open: " + file); + return; + } + VFSManager.runInAWTThread(new Runnable() { + public void run() { + view.getTextArea().setCaretPosition( + view.getTextArea().getLineStartOffset(line - 1)); + } + }); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |