From: <sh...@us...> - 2009-03-22 19:35:47
|
Revision: 14830 http://jedit.svn.sourceforge.net/jedit/?rev=14830&view=rev Author: shlomy Date: 2009-03-22 19:35:36 +0000 (Sun, 22 Mar 2009) Log Message: ----------- Added marker shortcuts. These can be set using the context menu in the marker set manager dockable (only), and can be jumped to using a new action that prompts for the shortcut. The shortcut is an ordinary string, not limited to a single key - so it may in fact be a short description of the marker. Modified Paths: -------------- plugins/MarkerSets/trunk/MarkerSets.props plugins/MarkerSets/trunk/actions.xml plugins/MarkerSets/trunk/src/marker/MarkerSet.java plugins/MarkerSets/trunk/src/marker/MarkerSetManager.java plugins/MarkerSets/trunk/src/marker/MarkerSetsPlugin.java Modified: plugins/MarkerSets/trunk/MarkerSets.props =================================================================== --- plugins/MarkerSets/trunk/MarkerSets.props 2009-03-22 18:03:23 UTC (rev 14829) +++ plugins/MarkerSets/trunk/MarkerSets.props 2009-03-22 19:35:36 UTC (rev 14830) @@ -16,12 +16,15 @@ markersets-toggle-marker.label=Toggle marker at caret location markersets-export.label=Export marker sets to file... markersets-import.label=Import marker sets from file... +markersets-jump-to-marker.label=Jump to marker... # menu items plugin.marker.MarkerSetsPlugin.menu=\ marker-set-manager \ markersets-set-active-markerset \ - markersets-use-global-markerset markersets-toggle-marker \ + markersets-use-global-markerset \ + markersets-toggle-marker \ + markersets-jump-to-marker \ - \ markersets-import \ markersets-export Modified: plugins/MarkerSets/trunk/actions.xml =================================================================== --- plugins/MarkerSets/trunk/actions.xml 2009-03-22 18:03:23 UTC (rev 14829) +++ plugins/MarkerSets/trunk/actions.xml 2009-03-22 19:35:36 UTC (rev 14830) @@ -18,6 +18,11 @@ marker.MarkerSetsPlugin.toggleMarker(view); </CODE> </ACTION> + <ACTION NAME="markersets-jump-to-marker" NO_REPEAT="TRUE"> + <CODE> + marker.MarkerSetsPlugin.jumpToMarker(view); + </CODE> + </ACTION> <ACTION NAME="markersets-import" NO_REPEAT="TRUE"> <CODE> marker.MarkerSetsPlugin.importMarkerSets(view); Modified: plugins/MarkerSets/trunk/src/marker/MarkerSet.java =================================================================== --- plugins/MarkerSets/trunk/src/marker/MarkerSet.java 2009-03-22 18:03:23 UTC (rev 14829) +++ plugins/MarkerSets/trunk/src/marker/MarkerSet.java 2009-03-22 19:35:36 UTC (rev 14830) @@ -88,6 +88,17 @@ return items; } + public FileMarker getMarkerByShortcut(String shortcut) + { + for (int i = 0; i < markers.size(); i++) + { + FileMarker marker = markers.get(i); + if (shortcut.equals(marker.shortcut)) + return marker; + } + return null; + } + public FileMarker getMarkerFor(String path, int line) { for (int i = 0; i < markers.size(); i++) Modified: plugins/MarkerSets/trunk/src/marker/MarkerSetManager.java =================================================================== --- plugins/MarkerSets/trunk/src/marker/MarkerSetManager.java 2009-03-22 18:03:23 UTC (rev 14829) +++ plugins/MarkerSets/trunk/src/marker/MarkerSetManager.java 2009-03-22 19:35:36 UTC (rev 14830) @@ -11,12 +11,15 @@ import java.util.HashMap; import java.util.Vector; +import javax.swing.AbstractAction; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; @@ -31,6 +34,7 @@ import marker.tree.SourceLinkTree.SourceLinkParentNode; import marker.tree.SourceLinkTree.SourceLinkTreeModelListener; import marker.tree.SourceLinkTree.SourceLinkTreeNodeRenderer; +import marker.tree.SourceLinkTree.SubtreePopupMenuProvider; import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.View; @@ -127,7 +131,8 @@ for (String name: names) { MarkerSet ms = MarkerSetsPlugin.getMarkerSet(name); - SourceLinkParentNode msNode = markers.addSourceLinkParent(ms); + SourceLinkParentNode msNode = markers.addSourceLinkParent( + new MarkerSetNode(ms)); Vector<FileMarker> children = ms.getMarkers(); for (FileMarker marker: children) if (path == null || (marker.file.equals(path))) @@ -137,6 +142,38 @@ markers.expandRow(i); } + private class MarkerSetNode implements SubtreePopupMenuProvider + { + private MarkerSet ms; + public MarkerSetNode(MarkerSet ms) + { + this.ms = ms; + } + public MarkerSet getMarkerSet() + { + return ms; + } + public void addPopupMenuItemsFor(JPopupMenu popup, + SourceLinkParentNode parent, DefaultMutableTreeNode node) + { + Object userObj = node.getUserObject(); + if (! (userObj instanceof FileMarker)) + return; + final FileMarker marker = (FileMarker) userObj; + popup.add(new AbstractAction("Set shortcut ...") { + @Override + public void actionPerformed(ActionEvent e) { + String shortcut = JOptionPane.showInputDialog( + view, "Shortcut for marker:"); + if (shortcut == null || shortcut.length() == 0) + return; + marker.setShortcut(shortcut); + } + }); + } + + } + private class MarkerTreeListener implements SourceLinkTreeModelListener { public void nodeRemoved(DefaultMutableTreeNode node, @@ -173,9 +210,9 @@ expanded, leaf, row, hasFocus); DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; Object obj = node.getUserObject(); - if (obj instanceof MarkerSet) + if (obj instanceof MarkerSetNode) { - MarkerSet ms = (MarkerSet) obj; + MarkerSet ms = ((MarkerSetNode) obj).getMarkerSet(); JLabel l = (JLabel) c; l.setText(ms.getName()); MarkerSetIcon icon = icons.get(ms); Modified: plugins/MarkerSets/trunk/src/marker/MarkerSetsPlugin.java =================================================================== --- plugins/MarkerSets/trunk/src/marker/MarkerSetsPlugin.java 2009-03-22 18:03:23 UTC (rev 14829) +++ plugins/MarkerSets/trunk/src/marker/MarkerSetsPlugin.java 2009-03-22 19:35:36 UTC (rev 14830) @@ -384,6 +384,21 @@ else notifyChange(Event.MARKER_REMOVED, m, active); } + static public void jumpToMarker(View view) + { + String s = JOptionPane.showInputDialog(view, "Marker:"); + if (s == null || s.length() == 0) + return; + for (MarkerSet ms: markerSets.values()) + { + FileMarker marker = ms.getMarkerByShortcut(s); + if (marker != null) + { + marker.jump(view); + break; + } + } + } static public void importMarkerSets(View view) { JFileChooser fc = new JFileChooser(xmlFile); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |