From: <dal...@us...> - 2009-08-21 16:01:23
|
Revision: 16015 http://jedit.svn.sourceforge.net/jedit/?rev=16015&view=rev Author: daleanson Date: 2009-08-21 16:01:15 +0000 (Fri, 21 Aug 2009) Log Message: ----------- more fixing Modified Paths: -------------- plugins/TaskList/trunk/TaskList.props plugins/TaskList/trunk/tasklist/OpenBuffersTaskList.java plugins/TaskList/trunk/tasklist/ProjectTaskList.java plugins/TaskList/trunk/tasklist/Task.java plugins/TaskList/trunk/tasklist/TaskComparator.java plugins/TaskList/trunk/tasklist/TaskListPlugin.java plugins/TaskList/trunk/tasklist/TaskListPopup.java plugins/TaskList/trunk/tasklist/TreeMouseListener.java Modified: plugins/TaskList/trunk/TaskList.props =================================================================== --- plugins/TaskList/trunk/TaskList.props 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/TaskList.props 2009-08-21 16:01:15 UTC (rev 16015) @@ -86,6 +86,12 @@ tasklist.popup.delete-task-tag=Delete task tag tasklist.popup.delete-entire-tag=Delete entire task tasklist.popup.parse-buffer=Parse buffer +tasklist.popup.sortby=Sort by +tasklist.popup.linenumber=Line number +tasklist.popup.tasktype=Task type +tasklist.popup.sortdirection=Sort direction +tasklist.popup.ascending=Ascending +tasklist.popup.descending=Descending # error message string tasklist.popup.parse-error=Buffer has changed since last parse. Try again. @@ -157,9 +163,11 @@ tasklist.openfiles.open-files=Open Files: tasklist.openfiles.wait=Please wait, loading tasks from open files... tasklist.no-tasks-found=No tasks found. -tasklist.projectfiles.wait=Please wait, loading project tasks... +tasklist.projectfiles.wait=Please wait, loading tasks for project tasklist.projectfiles.project=Project: -tasllist.projectfiles.noproject=No project is open. +tasklist.projectfiles.noproject=No project is open. +tasklist.projectfiles.stop=Stop +tasklist.projectfiles.start=Start # Task List task types # ^(tasklist.tasktype.\d.\w+)=(.+)$ -> jEdit.setProperty("$1","$2"); Modified: plugins/TaskList/trunk/tasklist/OpenBuffersTaskList.java =================================================================== --- plugins/TaskList/trunk/tasklist/OpenBuffersTaskList.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/OpenBuffersTaskList.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -144,7 +144,15 @@ } return openBuffers; } - + + /** + * This tree model is only 3 levels deep: + * 1. Root node user object is a string that says "Open Files:" Root node is + * parent for buffer nodes. + * 2. Buffer node user object is a string containing the results of + * Buffer.getPath(). Buffer nodes are parent for task nodes. + * 3. Task node user objects are Tasks. + */ protected TreeModel buildTreeModel() { List<Buffer> openBuffers = getBuffersToScan(); @@ -270,7 +278,7 @@ for ( int i = 0; i < model.getChildCount( model.getRoot() ); i++ ) { DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) model.getChild( model.getRoot(), i ); String buffer_name = ( String ) node.getUserObject(); - if ( buffer_name.equals( buffer.toString() ) ) { + if ( buffer_name.equals( buffer.getPath() ) ) { model.removeNodeFromParent( node ); model.nodeStructureChanged( ( DefaultMutableTreeNode ) model.getRoot() ); for ( int j = tree.getRowCount(); j > 0; j-- ) { Modified: plugins/TaskList/trunk/tasklist/ProjectTaskList.java =================================================================== --- plugins/TaskList/trunk/tasklist/ProjectTaskList.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/ProjectTaskList.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -1,4 +1,24 @@ +/* +* 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. +* +*/ + /** +* This code is based on: * A macro to show all of the tasks that the TaskList plugin would show * if the TaskList plugin had any concept of ProjectViewer. This macro * gets the list of files from ProjectViewer for the current project, @@ -11,7 +31,7 @@ package tasklist; import java.awt.BorderLayout; -import java.awt.Cursor; +import java.awt.event.*; import java.io.File; import java.util.*; import javax.swing.*; @@ -33,10 +53,33 @@ private TaskComparator taskComparator = new TaskComparator(); private int sortColumn = jEdit.getIntegerProperty( "tasklist.table.sort-column", 1 ); private boolean sortAscending = jEdit.getBooleanProperty( "tasklist.table.sort-ascending", true ); + private JButton stopButton; + private JButton startButton; + private Runner runner = null; public ProjectTaskList( View view ) { this.view = view; setLayout( new BorderLayout() ); + stopButton = new JButton( jEdit.getProperty( "tasklist.projectfiles.stop", "Stop" ) ); + stopButton.addActionListener( + new ActionListener() { + public void actionPerformed( ActionEvent ae ) { + if ( runner != null ) { + runner.cancel( true ); + } + } + } + ); + startButton = new JButton( jEdit.getProperty( "tasklist.projectfiles.start", "Start" ) ); + startButton.addActionListener( + new ActionListener() { + public void actionPerformed( ActionEvent ae ) { + if ( runner != null ) { + loadProjectFiles( ProjectViewer.getActiveProject( ProjectTaskList.this.view ) ); + } + } + } + ); loadProjectFiles( ProjectViewer.getActiveProject( view ) ); EditBus.addToBus( this ); } @@ -51,75 +94,104 @@ private void loadProjectFiles( final VPTProject project ) { if ( project == null ) { // it is possible there is no active project even if ProjectViewer is installed. - add(new JLabel(jEdit.getProperty("tasklist.projectfiles.noproject", "No project is open."))); + add( new JLabel( jEdit.getProperty( "tasklist.projectfiles.noproject", "No project is open." ) ) ); return ; } - class Runner extends SwingWorker<TreeModel, Object> { + if ( jEdit.getBooleanProperty( "tasklist.show-project-files" ) ) { + if ( runner != null ) { + runner.cancel( true ); + } + runner = new Runner( project ); + runner.execute(); + } + } - @Override - public TreeModel doInBackground() { - try { - SwingUtilities.invokeLater( - new Runnable() { - public void run() { - setCursor( Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR ) ); - removeAll(); - add( new JLabel( jEdit.getProperty( "tasklist.projectfiles.wait", "Please wait, loading project tasks..." ) ) ); - repaint(); - } + class Runner extends SwingWorker<TreeModel, Object> { + VPTProject project; + public Runner( VPTProject project ) { + this.project = project; + } + + @Override + public TreeModel doInBackground() { + try { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + ProjectTaskList.this.removeAll(); + add( new JLabel( jEdit.getProperty( "tasklist.projectfiles.wait", "Please wait, loading tasks for project" ) + " " + project.getName() ), BorderLayout.CENTER ); + JPanel btnPanel = new JPanel(); + btnPanel.add( stopButton ); + ProjectTaskList.this.add( btnPanel, BorderLayout.SOUTH ); + ProjectTaskList.this.invalidate(); + ProjectTaskList.this.validate(); } - ); - return buildTreeModel( project ); - } - catch ( Exception e ) { - e.printStackTrace(); - return null; - } + } + ); + return buildTreeModel( project ); } + catch ( Exception e ) { + e.printStackTrace(); + return null; + } + } - @Override - protected void done() { - final TreeModel model; - try { - model = ( TreeModel ) get(); - if ( model == null ) { - return ; - } - } - catch ( Exception e ) { - setCursor( Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR ) ); - return ; - } + @Override + public boolean cancel( boolean mayInterruptIfRunning ) { + boolean cancelled = super.cancel( mayInterruptIfRunning ); + if ( cancelled ) { SwingUtilities.invokeLater( new Runnable() { public void run() { - // build the display - removeAll(); - if ( model.getChildCount( model.getRoot() ) > 0 ) { - tree = new JTree( model ); - for ( int i = tree.getRowCount(); i > 0; i-- ) { - tree.expandRow( i ); - } - tree.addMouseListener( new TreeMouseListener( view, tree ) ); - tree.setCellRenderer( new TaskTreeCellRenderer() ); - add( new JScrollPane( tree ) ); - } - else { - add( new JLabel( jEdit.getProperty( "tasklist.no-tasks-found", "No tasks found." ) ) ); - } - repaint(); - setCursor( Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR ) ); + ProjectTaskList.this.removeAll(); + JPanel btnPanel = new JPanel(); + ProjectTaskList.this.add( btnPanel, BorderLayout.SOUTH ); + ProjectTaskList.this.invalidate(); + ProjectTaskList.this.validate(); } } ); + } + return cancelled; + } + @Override + protected void done() { + final TreeModel model; + try { + model = ( TreeModel ) get(); + if ( model == null ) { + return ; + } } + catch ( Exception e ) { + return ; + } + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + // build the display + ProjectTaskList.this.removeAll(); + if ( model.getChildCount( model.getRoot() ) > 0 ) { + tree = new JTree( model ); + for ( int i = tree.getRowCount(); i > 0; i-- ) { + tree.expandRow( i ); + } + tree.addMouseListener( new TreeMouseListener( view, tree ) ); + tree.setCellRenderer( new TaskTreeCellRenderer() ); + ProjectTaskList.this.add( new JScrollPane( tree ) ); + } + else { + ProjectTaskList.this.add( new JLabel( jEdit.getProperty( "tasklist.no-tasks-found", "No tasks found." ) ) ); + } + ProjectTaskList.this.invalidate(); + ProjectTaskList.this.validate(); + } + } + ); + runner = null; } - if ( jEdit.getBooleanProperty( "tasklist.show-project-files" ) ) { - Runner runner = new Runner(); - runner.execute(); - } } protected List<String> getBuffersToScan( VPTProject project ) { @@ -183,7 +255,7 @@ // is preferred over openFile since openTemporary won't send EditBus // messages nor is the buffer added to the buffer list. buffer = jEdit.openTemporary( jEdit.getActiveView(), file.getParent(), file.getName(), false ); - Mode mode = TaskListPlugin.getMode( file.getAbsolutePath() ); + Mode mode = TaskListPlugin.getMode( file ); if ( mode == null ) { continue; } @@ -205,7 +277,7 @@ continue; } model.insertNodeInto( buffer_node, root ); - + // I sent email to the dev list asking about the proper way to // close a temporary buffer. For now all I'm doing to close the buffer // if it wasn't already open is set it to null. If can_close is true, @@ -238,8 +310,8 @@ // then add tree nodes for the individual tasks. buffer_node = new DefaultMutableTreeNode( buffer.getPath() ); - ArrayList<Task> sorted_tasks = new ArrayList<Task>(tasks.values()); - Collections.sort(sorted_tasks, taskComparator); + ArrayList<Task> sorted_tasks = new ArrayList<Task>( tasks.values() ); + Collections.sort( sorted_tasks, taskComparator ); for ( Task task : sorted_tasks ) { DefaultMutableTreeNode task_node = new DefaultMutableTreeNode( task ); buffer_node.add( task_node ); @@ -275,7 +347,7 @@ if ( BufferUpdate.SAVED.equals( bu.getWhat() ) || ParseBufferMessage.DO_PARSE.equals( bu.getWhat() ) ) { if ( tree == null ) { - return ; // can happen if tree model is still loading when message is recieved + return ; // can happen if tree model is still loading when message is received } Buffer buffer = bu.getBuffer(); removeBuffer( buffer ); @@ -333,7 +405,7 @@ for ( int i = 0; i < model.getChildCount( model.getRoot() ); i++ ) { DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) model.getChild( model.getRoot(), i ); String buffer_name = ( String ) node.getUserObject(); - if ( buffer_name.equals( buffer.toString() ) ) { + if ( buffer_name.equals( buffer.getPath() ) ) { model.removeNodeFromParent( node ); model.nodeStructureChanged( ( DefaultMutableTreeNode ) model.getRoot() ); for ( int j = tree.getRowCount(); j > 0; j-- ) { Modified: plugins/TaskList/trunk/tasklist/Task.java =================================================================== --- plugins/TaskList/trunk/tasklist/Task.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/Task.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -127,6 +127,4 @@ private Position endPosition; private int endOffset; //}}} -} - -// :collapseFolds=1:folding=explicit:indentSize=4:lineSeparator=\n:noTabs=false:tabSize=4: \ No newline at end of file +} \ No newline at end of file Modified: plugins/TaskList/trunk/tasklist/TaskComparator.java =================================================================== --- plugins/TaskList/trunk/tasklist/TaskComparator.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/TaskComparator.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -30,14 +30,17 @@ switch ( sortColumn ) { case 2: // task type + System.out.println("+++++ sorting by task type"); int value = a.getIdentifier().compareTo( b.getIdentifier() ); if (value == 0) { // sort by line number if task type is the same - return a.getLineNumber() < b.getLineNumber() ? -1 : 1; + return a.getLineIndex() - b.getLineIndex(); } return sortAscending ? value : value * -1; default: // line number - return a.getLineNumber() < b.getLineNumber() ? -1 : 1; + System.out.println("+++++ sorting by line number"); + value = a.getLineIndex() - b.getLineIndex(); + return sortAscending ? value : value * -1; } } } \ No newline at end of file Modified: plugins/TaskList/trunk/tasklist/TaskListPlugin.java =================================================================== --- plugins/TaskList/trunk/tasklist/TaskListPlugin.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/TaskListPlugin.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -36,6 +36,7 @@ //{{{ imports import java.awt.Color; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.util.HashSet; import java.util.HashMap; @@ -327,14 +328,9 @@ */ public static void loadParseModes() { parseModes.clear(); - Mode[] modes = jEdit.getModes(); - for ( int i = 0; i < modes.length; i++ ) { - Boolean parse = Boolean.valueOf( - jEdit.getBooleanProperty( - "options.tasklist.parse." + modes[ i ].getName(), true ) ); - - parseModes.put( modes[ i ].getName(), parse ); + for ( Mode mode : modes ) { + parseModes.add( mode ); } } //}}} @@ -371,10 +367,10 @@ /** - * A collection to track which buffer modes to parse - * tasks from and which to skip. + * A collection to track which buffer modes to parse for tasks. Modes not + * in this list won't be parsed. */ - private static HashMap<String, Boolean> parseModes = new HashMap<String, Boolean>(); + private static Set<Mode> parseModes = new HashSet<Mode>(); //}}} //{{{ requestTasksForBuffer() method @@ -384,9 +380,11 @@ * <p> * NOTE: This method will not cause a re-parse of a buffer. */ - public synchronized static HashMap<Integer, Task> requestTasksForBuffer( final Buffer buffer ) { - if ( buffer == null || buffer.isLoaded() == false ) + public synchronized static HashMap<Integer, Task> + requestTasksForBuffer( final Buffer buffer ) { + if ( buffer == null || buffer.isLoaded() == false ) { return null; + } HashMap<Integer, Task> taskMap = bufferMap.get( buffer.getPath() ); @@ -409,8 +407,8 @@ * @param buffer the Buffer to be parsed for task data. */ public synchronized static void extractTasks( final Buffer buffer ) { - if (buffer == null) { - return; + if ( buffer == null ) { + return ; } // NOTE: remove this if this method becomes private if ( buffer.isLoaded() == false ) { @@ -437,21 +435,16 @@ * @param buffer the Buffer to be parsed */ public synchronized static void parseBuffer( Buffer buffer ) { - if (buffer == null) { - return; + if ( buffer == null ) { + return ; } - + TaskListPlugin.clearTasks( buffer ); boolean doParse = true; // if this file's mode is not to be parsed, skip it - String mode = buffer.getMode().getName(); + doParse = parseModes.contains( buffer.getMode() ); - // if mode has been added to jEdit but is not listed - // in parseModes, then use default (true) - if ( parseModes.containsKey( mode ) ) - doParse = ( ( Boolean ) parseModes.get( mode ) ).booleanValue(); - if ( !doParse ) { // fill with empty HashMap of tasks bufferMap.put( buffer.getPath(), new HashMap<Integer, Task>() ); @@ -496,9 +489,7 @@ } String text = buffer.getText( chunkStart, chunkLength ); - // NOTE might want to have task types in an array - for ( int i = 0; i < taskTypes.size(); i++ ) { - TaskType taskType = taskTypes.get( i ); + for ( TaskType taskType : taskTypes ) { Task task = taskType.extractTask( buffer, text, lineNum, chunkStart - lineStart ); if ( task != null ) { TaskListPlugin.addTask( task ); @@ -516,12 +507,14 @@ // after a buffer has been parsed, bufferMap should contain // an empty set of tasks, if there are not, not a null set // (a null set is used to indicate the buffer has never been parsed) - if ( bufferMap.get( buffer.getPath() ) == null ) + if ( bufferMap.get( buffer.getPath() ) == null ) { bufferMap.put( buffer.getPath(), new HashMap<Integer, Task>() ); + } - if ( TaskListPlugin.DEBUG ) + if ( TaskListPlugin.DEBUG ) { Log.log( Log.DEBUG, TaskListPlugin.class, "TaskListPlugin.parseBuffer(...) DONE" ); + } // remove 'buffer' from parse queue parseRequests.remove( buffer ); @@ -533,9 +526,10 @@ * @param task the Task to be added. */ private static void addTask( Task task ) { - if ( TaskListPlugin.DEBUG ) + if ( TaskListPlugin.DEBUG ) { Log.log( Log.DEBUG, TaskListPlugin.class, "TaskListPlugin.addTask(" + task.toString() + ")" ); //## + } HashMap<Integer, Task> taskMap = bufferMap.get( task.getBufferPath() ); @@ -561,9 +555,10 @@ * @param buffer the Buffer whose tasks are to be removed. */ private static void clearTasks( Buffer buffer ) { - if ( TaskListPlugin.DEBUG ) + if ( TaskListPlugin.DEBUG ) { Log.log( Log.DEBUG, TaskListPlugin.class, "TaskListPlugin.clearTasks(" + buffer.toString() + ")" ); //## + } HashMap<Integer, Task> taskMap = bufferMap.get( buffer.getPath() ); @@ -595,7 +590,7 @@ //{{{ removeTaskTag method public static void removeTag( View view, Buffer buffer, Task task ) { - if ( buffer == null || buffer.isReadOnly() || task == null) { + if ( buffer == null || buffer.isReadOnly() || task == null ) { view.getToolkit().beep(); return ; } @@ -632,27 +627,39 @@ // TODO: is this necessary now? TaskListPlugin.parseBuffer( buffer ); } //}}} - + /** * Helper method to find the mode for the given file. This is intended for * finding the mode of a temporary buffer. Actual opened buffers already * have a mode. - * @param bufferPath Full path for a buffer as returned by Buffer.getPath(). + * @param file The file for a buffer. + * @return the mode of the buffer or null if not found in our list of + * nodes we are allowed to parse. */ - public static Mode getMode( String bufferPath ) { + public static Mode getMode( File file ) { + if (file == null) { + return null; + } try { - BufferedReader reader = new BufferedReader( new FileReader( bufferPath ) ); - String firstLine = reader.readLine(); - reader.close(); - Mode[] modes = jEdit.getModes(); - for ( Mode mode : modes ) { - if ( mode.accept( bufferPath, firstLine ) ) { + if ( parseModes.size() == 0 ) { + loadParseModes(); + } + String firstLine = null; + for ( Mode mode : parseModes ) { + if ( mode.acceptFilename( file.getName() ) ) { return mode; } + if ( firstLine == null ) { + BufferedReader reader = new BufferedReader( new FileReader( file ) ); + firstLine = reader.readLine(); + reader.close(); + } + if ( mode.acceptFirstLine( firstLine ) ) { + return mode; + } } } catch ( Exception e ) {} // NOPMD - return null; } Modified: plugins/TaskList/trunk/tasklist/TaskListPopup.java =================================================================== --- plugins/TaskList/trunk/tasklist/TaskListPopup.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/TaskListPopup.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -33,8 +33,8 @@ import javax.swing.*; import org.gjt.sp.jedit.*; +import org.gjt.sp.jedit.msg.PropertiesChanged; - /** * A popup menu for the TaskList plugin * @@ -90,12 +90,18 @@ if ( getTask() == null ) { changeMenu.setEnabled( false ); deleteMenu.setEnabled( false ); - parseBuffer.setEnabled( false ); - if ( parseAll != null ) { - parseAll.setEnabled( false ); - } } + BoundedMenu sortMenu = new BoundedMenu( jEdit.getProperty( "tasklist.popup.sortby", "Sort by" ) ); + sortMenu.add( createMenuItem( jEdit.getProperty( "tasklist.popup.linenumber", "Line number" ), "sort-by-line-number" ) ); + sortMenu.add( createMenuItem( jEdit.getProperty( "tasklist.popup.tasktype", "Task type" ), "sort-by-task-type" ) ); + add( sortMenu ); + + BoundedMenu sortDirectionMenu = new BoundedMenu( jEdit.getProperty( "tasklist.popup.sortdirection", "Sort direction" ) ); + sortDirectionMenu.add( createMenuItem( jEdit.getProperty( "tasklist.popup.ascending", "Ascending" ), "sort-ascending" ) ); + sortDirectionMenu.add( createMenuItem( jEdit.getProperty( "tasklist.popup.descending", "Descending" ), "sort-descending" ) ); + add( sortDirectionMenu ); + } /** @@ -158,10 +164,12 @@ Dimension dList = comp.getSize(); Dimension dPopup = getPopupMenu().getPreferredSize(); Point pThis = this.getLocation(); - if ( pPopup.x + dPopup.width > dList.width ) + if ( pPopup.x + dPopup.width > dList.width ) { pPopup.x -= ( dPopup.width + dParent.width ); - if ( pPopup.y + pThis.y + dPopup.height > dList.height ) + } + if ( pPopup.y + pThis.y + dPopup.height > dList.height ) { pPopup.y -= ( dPopup.height - dParent.height + pThis.y ); + } SwingUtilities.convertPointToScreen( pPopup, comp ); SwingUtilities.convertPointFromScreen( pPopup, parent ); return pPopup; @@ -205,36 +213,50 @@ public void actionPerformed( ActionEvent evt ) { Task task = getTask(); - if ( task == null ) { - return ; - } + String bufferPath = task == null ? getBufferPath() : task.getBufferPath(); String cmd = evt.getActionCommand(); - Buffer buffer = jEdit.getBuffer(task.getBufferPath()); - if (buffer == null) { - File f = new File(task.getBufferPath()); - buffer = jEdit.openTemporary(view, f.getParent(), f.getName(), false); + Buffer buffer = jEdit.getBuffer( bufferPath ); + if ( buffer == null ) { + File f = new File( bufferPath ); + buffer = jEdit.openTemporary( view, f.getParent(), f.getName(), false ); + buffer.setMode( TaskListPlugin.getMode( f ) ); } - - if ( cmd.equals( "parse-buffer" ) ) { + + if ( "parse-buffer".equals( cmd ) ) { EditBus.send( new ParseBufferMessage( view, buffer, ParseBufferMessage.DO_PARSE ) ); return ; } - else if ( cmd.equals( "parse-all" ) ) { + else if ( "parse-all".equals( cmd ) ) { EditBus.send( new ParseBufferMessage( view, buffer, ParseBufferMessage.DO_PARSE_ALL ) ); return ; } - else if ( cmd.equals( "%Dtask" ) ) { - TaskListPlugin.removeTask( view, buffer, task ); + else if ( "sort-by-line-number".equals( cmd ) ) { + jEdit.setIntegerProperty( "tasklist.table.sort-column", 1 ); + EditBus.send(new PropertiesChanged(null)); } - else { - if ( cmd.equals( "%Dtag" ) ) { + else if ( "sort-by-task-type".equals( cmd ) ) { + jEdit.setIntegerProperty( "tasklist.table.sort-column", 2 ); + EditBus.send(new PropertiesChanged(null)); + } + else if ( "sort-ascending".equals( cmd ) ) { + jEdit.setBooleanProperty( "tasklist.table.sort-ascending", true); + EditBus.send(new PropertiesChanged(null)); + } + else if ( "sort-descending".equals( cmd ) ) { + jEdit.setBooleanProperty( "tasklist.table.sort-ascending", false); + EditBus.send(new PropertiesChanged(null)); + } + else if ( task != null ) { + if ( "%Dtask".equals( cmd ) ) { + TaskListPlugin.removeTask( view, buffer, task ); + } + else if ( "%Dtag".equals( cmd ) ) { TaskListPlugin.removeTag( view, buffer, task ); } else { TaskListPlugin.replaceTag( view, buffer, task, cmd ); } } - view = null; } } @@ -258,4 +280,16 @@ return task; } } + + private String getBufferPath() { + if ( comp instanceof JTree ) { + JTree tree = ( JTree ) comp; + TreePath path = tree.getPathForLocation( point.x, point.y ); + DefaultMutableTreeNode node = ( DefaultMutableTreeNode ) path.getLastPathComponent(); + if ( node.getParent().equals( tree.getModel().getRoot() ) ) { + return node.getUserObject().toString(); + } + } + return null; + } } \ No newline at end of file Modified: plugins/TaskList/trunk/tasklist/TreeMouseListener.java =================================================================== --- plugins/TaskList/trunk/tasklist/TreeMouseListener.java 2009-08-21 06:43:37 UTC (rev 16014) +++ plugins/TaskList/trunk/tasklist/TreeMouseListener.java 2009-08-21 16:01:15 UTC (rev 16015) @@ -58,8 +58,7 @@ task = ( Task ) ( ( DefaultMutableTreeNode ) path.getLastPathComponent() ).getUserObject(); Buffer buffer = jEdit.getBuffer( task.getBufferPath() ); if ( buffer == null ) { - File f = new File( task.getBufferPath() ); - buffer = jEdit.openTemporary( view, f.getParent(), f.getName(), false ); + buffer = jEdit.openFile( view, task.getBufferPath() ); } int line_number = task.getLineNumber(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |