From: <dal...@us...> - 2011-12-23 18:24:27
|
Revision: 20693 http://jedit.svn.sourceforge.net/jedit/?rev=20693&view=rev Author: daleanson Date: 2011-12-23 18:24:21 +0000 (Fri, 23 Dec 2011) Log Message: ----------- Fix for tracker 3464344, some tree highlighting and key handling issues. Modified Paths: -------------- plugins/TaskList/trunk/tasklist/AbstractTreeTaskList.java plugins/TaskList/trunk/tasklist/TaskTreeCellRenderer.java Added Paths: ----------- plugins/TaskList/trunk/tasklist/TreeKeyListener.java Modified: plugins/TaskList/trunk/tasklist/AbstractTreeTaskList.java =================================================================== --- plugins/TaskList/trunk/tasklist/AbstractTreeTaskList.java 2011-12-23 15:11:44 UTC (rev 20692) +++ plugins/TaskList/trunk/tasklist/AbstractTreeTaskList.java 2011-12-23 18:24:21 UTC (rev 20693) @@ -234,6 +234,7 @@ filterTree(); expandTree(); tree.addMouseListener( new TreeMouseListener( view, tree ) ); + tree.addKeyListener( new TreeKeyListener( view, tree ) ); tree.setCellRenderer( new TaskTreeCellRenderer() ); add( new JScrollPane( tree ) ); } Modified: plugins/TaskList/trunk/tasklist/TaskTreeCellRenderer.java =================================================================== --- plugins/TaskList/trunk/tasklist/TaskTreeCellRenderer.java 2011-12-23 15:11:44 UTC (rev 20692) +++ plugins/TaskList/trunk/tasklist/TaskTreeCellRenderer.java 2011-12-23 18:24:21 UTC (rev 20693) @@ -51,9 +51,9 @@ if ( obj == null ) { return null; } + super.getTreeCellRendererComponent( tree, value, selected, expanded, leaf, row, hasFocus ); if ( obj instanceof String ) { // file name node - super.getTreeCellRendererComponent( tree, value, selected, expanded, leaf, row, hasFocus ); String bufferDisplay; String displayType = jEdit.getProperty( "tasklist.buffer.display", "" ); if ( displayType.equals( jEdit.getProperty( "options.tasklist.general.buffer.display.fullpath" ) ) ) { @@ -78,8 +78,8 @@ setIcon( task.getIcon() ); setIconTextGap( 0 ); StringBuilder html = new StringBuilder(); - html.append( "<html><table><tr><td width=\"50\" align=\"right\">" ); - html.append( task.getLineNumber() + 1 ); + html.append( "<html><table cellpadding=0><tr><td width=\"50\" align=\"right\">" ); + html.append( task.getLineNumber() + 1 ).append(" "); html.append( "</td><td>" ); html.append( task.getText() ); html.append( "</td></tr></table></html>" ); Added: plugins/TaskList/trunk/tasklist/TreeKeyListener.java =================================================================== --- plugins/TaskList/trunk/tasklist/TreeKeyListener.java (rev 0) +++ plugins/TaskList/trunk/tasklist/TreeKeyListener.java 2011-12-23 18:24:21 UTC (rev 20693) @@ -0,0 +1,75 @@ +/* +* Copyright (C) 2009, Dale Anson +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +*/ + +package tasklist; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyAdapter; +import javax.swing.JTree; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreePath; + +import org.gjt.sp.jedit.View; +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.EditPane; +import org.gjt.sp.jedit.jEdit; + + +// key listener for the tree so typing "Enter" on a tree node shows the +// corresponding line in the edit pane +public class TreeKeyListener extends KeyAdapter { + + private View view = null; + private JTree tree = null; + + public TreeKeyListener( View view, JTree tree ) { + this.view = view; + this.tree = tree; + } + + public void keyPressed( KeyEvent ke ) { + if (ke.getKeyCode() == KeyEvent.VK_ENTER) { + ke.consume(); + TreePath path = tree.getSelectionPath(); + Task task = null; + if ( path.getPathCount() > 2 ) { + task = ( Task ) ( ( DefaultMutableTreeNode ) path.getLastPathComponent() ).getUserObject(); + Buffer buffer = jEdit.getBuffer( task.getBufferPath() ); + if ( buffer == null ) { + buffer = jEdit.openFile( view, task.getBufferPath() ); + } + + int line_number = task.getLineNumber(); + int start_offset = task.getStartOffset(); + try { + EditPane edit_pane = jEdit.getActiveView().showBuffer( buffer ); + edit_pane.getTextArea().scrollTo( line_number, start_offset, true ); + edit_pane.getTextArea().setCaretPosition( task.getStartPosition().getOffset() ); + } + catch(Exception e) { + // occasionally, there is an ArrayIndexOutOfBounds exception thrown from + // the 'scrollTo' line above, so this try/catch is to help track down the + // problem. + System.err.println("Error scrolling to line " + line_number + ", offset " + start_offset + " in file " + task.getBufferPath()); + e.printStackTrace(); + } + } + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |