branch develop updated (f175566 -> 5bf7e81)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository jtimer. See https://gitlab.nuiton.org/chorem/jtimer.git from f175566 refs #1319: Set button the same size new d25e3da Improve message with file containing error new 5bf7e81 fixes #880: Select running task in popup The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 5bf7e8156caad2aefca6254e68b1279ddb32fe54 Author: Eric Chatellier <chatellier@codelutin.com> Date: Tue Mar 29 15:06:35 2016 +0200 fixes #880: Select running task in popup commit d25e3da5f70dd4ae734b59a6858659358faad666 Author: Eric Chatellier <chatellier@codelutin.com> Date: Tue Mar 29 14:18:51 2016 +0200 Improve message with file containing error Summary of changes: .../chorem/jtimer/entities/TimerTaskHelper.java | 20 ++++++++ .../chorem/jtimer/io/GTimerIncrementalSaver.java | 4 +- .../org/chorem/jtimer/ui/tasks/IdleDialog.java | 15 ++++-- .../jtimer/ui/tree/ProjectsAndTasksTree.java | 60 ++++++++++++++++++++++ .../jtimer/ui/treetable/ProjectsAndTasksTable.java | 16 ++---- ...erProjectTest.java => TimerTaskHelperTest.java} | 54 ++++++++----------- 6 files changed, 117 insertions(+), 52 deletions(-) create mode 100644 src/main/java/org/chorem/jtimer/ui/tree/ProjectsAndTasksTree.java copy src/test/java/org/chorem/jtimer/entities/{TimerProjectTest.java => TimerTaskHelperTest.java} (51%) -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jtimer. See https://gitlab.nuiton.org/chorem/jtimer.git commit d25e3da5f70dd4ae734b59a6858659358faad666 Author: Eric Chatellier <chatellier@codelutin.com> Date: Tue Mar 29 14:18:51 2016 +0200 Improve message with file containing error --- src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java b/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java index d786d73..7d57ad5 100644 --- a/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java +++ b/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java @@ -536,7 +536,7 @@ public class GTimerIncrementalSaver extends AbstractSaver implements Saver, } } else { if (log.isWarnEnabled()) { - log.warn("task " + t.getName() + log.warn("File " + taskFile + ": task " + t.getName() + " is associated with a wrong project number " + prop.get("Project")); } @@ -544,7 +544,7 @@ public class GTimerIncrementalSaver extends AbstractSaver implements Saver, } else { if (log.isWarnEnabled()) { - log.warn("Invalid file format. Excepted " + GTIMER_FILE_VERSION + log.warn("File " + taskFile + ": Invalid format. Excepted " + GTIMER_FILE_VERSION + ", found " + prop.get("Format")); } } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jtimer. See https://gitlab.nuiton.org/chorem/jtimer.git commit 5bf7e8156caad2aefca6254e68b1279ddb32fe54 Author: Eric Chatellier <chatellier@codelutin.com> Date: Tue Mar 29 15:06:35 2016 +0200 fixes #880: Select running task in popup --- .../chorem/jtimer/entities/TimerTaskHelper.java | 20 ++++++++ .../org/chorem/jtimer/ui/tasks/IdleDialog.java | 15 ++++-- .../jtimer/ui/tree/ProjectsAndTasksTree.java | 60 ++++++++++++++++++++++ .../jtimer/ui/treetable/ProjectsAndTasksTable.java | 16 ++---- .../jtimer/entities/TimerTaskHelperTest.java | 52 +++++++++++++++++++ 5 files changed, 147 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/chorem/jtimer/entities/TimerTaskHelper.java b/src/main/java/org/chorem/jtimer/entities/TimerTaskHelper.java index ec03a86..ded3a96 100644 --- a/src/main/java/org/chorem/jtimer/entities/TimerTaskHelper.java +++ b/src/main/java/org/chorem/jtimer/entities/TimerTaskHelper.java @@ -311,4 +311,24 @@ public class TimerTaskHelper { return present; } + + /** + * Get list of all task parent with current task. + * + * @param task current task + * @return of task parent (ordered) including current task + */ + public static List<TimerTask> getPathFromParent(TimerTask task) { + // compute task tree path + List<TimerTask> components = new ArrayList<>(); + TimerTask current = task; + while (current != null) { + components.add(current); + current = current.getParent(); + } + + Collections.reverse(components); + + return components; + } } diff --git a/src/main/java/org/chorem/jtimer/ui/tasks/IdleDialog.java b/src/main/java/org/chorem/jtimer/ui/tasks/IdleDialog.java index d863592..85671df 100644 --- a/src/main/java/org/chorem/jtimer/ui/tasks/IdleDialog.java +++ b/src/main/java/org/chorem/jtimer/ui/tasks/IdleDialog.java @@ -49,6 +49,7 @@ import org.apache.commons.logging.LogFactory; import org.chorem.jtimer.JTimer; import org.chorem.jtimer.data.TimerCore; import org.chorem.jtimer.entities.TimerTask; +import org.chorem.jtimer.ui.tree.ProjectsAndTasksTree; import org.chorem.jtimer.ui.tree.TaskTreeModel; import org.chorem.jtimer.ui.treetable.ProjectsAndTasksCellRenderer; import org.jdesktop.application.Action; @@ -121,6 +122,9 @@ public class IdleDialog extends JDialog { /** Timestamp when idle starts. */ protected long idleStartTimestamp; + /** Current running task. */ + protected TimerTask currentRunningTask; + /** Task label. */ protected JLabel taskNameLabel; @@ -134,7 +138,7 @@ public class IdleDialog extends JDialog { protected JPanel assignPanel; /** Assign project tree. */ - protected JTree projectsTree; + protected ProjectsAndTasksTree projectsTree; /** Task selected in tree. */ protected boolean selectedTask; @@ -279,7 +283,7 @@ public class IdleDialog extends JDialog { GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(3, 0, 0, 5), 0, 0)); // Tree - projectsTree = new JTree(); + projectsTree = new ProjectsAndTasksTree(); projectsTree.setRootVisible(false); projectsTree.setShowsRootHandles(true); projectsTree.setModel(new TaskTreeModel(core, null)); @@ -292,7 +296,8 @@ public class IdleDialog extends JDialog { } else { assignSelectedTask = null; } - setSelectedTask(assignSelectedTask != null); + // must select a task and a different one from one running + setSelectedTask(assignSelectedTask != null && !assignSelectedTask.equals(currentRunningTask)); }); panel.add(new JScrollPane(projectsTree), new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 3, 5), 0, 0)); @@ -404,8 +409,10 @@ public class IdleDialog extends JDialog { Task<?, ?> t = tm.getTasks().get(0); TimerTask currentTask = ((RunTaskJob) t).getTask(); - // update message + // update selected task related + this.currentRunningTask = currentTask; taskNameLabel.setText(resourceMap.getString("currentTask", currentTask.getName())); + projectsTree.setSelectedTask(currentTask); // schedule timer updateIdleTime = new UpdateIdleTime(); diff --git a/src/main/java/org/chorem/jtimer/ui/tree/ProjectsAndTasksTree.java b/src/main/java/org/chorem/jtimer/ui/tree/ProjectsAndTasksTree.java new file mode 100644 index 0000000..d81f057 --- /dev/null +++ b/src/main/java/org/chorem/jtimer/ui/tree/ProjectsAndTasksTree.java @@ -0,0 +1,60 @@ +/* + * #%L + * jTimer + * %% + * Copyright (C) 2016 CodeLutin, Chatellier Eric + * %% + * 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 3 of the + * License, or (at your option) 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, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +package org.chorem.jtimer.ui.tree; + +import org.chorem.jtimer.entities.TimerTask; +import org.chorem.jtimer.entities.TimerTaskHelper; + +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import java.util.List; + +/** + * ProjectAndTaskTree. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ProjectsAndTasksTree extends JTree { + + /** serialVersionUID. */ + private static final long serialVersionUID = -6909972377431117193L; + + /** + * Set selected task in tree. + * + * @param task task + */ + public void setSelectedTask(TimerTask task) { + // compute task tree path + List<TimerTask> components = TimerTaskHelper.getPathFromParent(task); + components.add(0, (TimerTask)getModel().getRoot()); + + // select tree path in reverse order (from root to leaf) + TreePath path = new TreePath(components.toArray()); + getSelectionModel().setSelectionPath(path); + } +} diff --git a/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksTable.java b/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksTable.java index b087b51..1245a7b 100644 --- a/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksTable.java +++ b/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksTable.java @@ -38,6 +38,7 @@ import javax.swing.tree.TreePath; import org.chorem.jtimer.data.TimerCore; import org.chorem.jtimer.entities.TimerProject; import org.chorem.jtimer.entities.TimerTask; +import org.chorem.jtimer.entities.TimerTaskHelper; import org.chorem.jtimer.ui.treetable.dnd.TimerTaskTransferHandler; import org.jdesktop.application.Application; import org.jdesktop.application.ApplicationContext; @@ -255,24 +256,15 @@ public class ProjectsAndTasksTable extends JXTreeTable { /** * Set selected task in tree. - * + * * @param task task */ public void setSelectedTask(TimerTask task) { // compute task tree path - List<TimerTask> components = new ArrayList<>(); - TimerTask current = task; - while (current != null) { - components.add(current); - current = current.getParent(); - } - - // add model root - components.add((TimerTask)treeTableModel.getRoot()); + List<TimerTask> components = TimerTaskHelper.getPathFromParent(task); + components.add(0, (TimerTask)treeTableModel.getRoot()); // select tree path in reverse order (from root to leaf) - Collections.reverse(components); - System.out.println("path " + components); TreePath path = new TreePath(components.toArray()); int row = getRowForPath(path); getSelectionModel().setSelectionInterval(row, row); diff --git a/src/test/java/org/chorem/jtimer/entities/TimerTaskHelperTest.java b/src/test/java/org/chorem/jtimer/entities/TimerTaskHelperTest.java new file mode 100644 index 0000000..7d8e6da --- /dev/null +++ b/src/test/java/org/chorem/jtimer/entities/TimerTaskHelperTest.java @@ -0,0 +1,52 @@ +/* + * #%L + * jTimer + * %% + * Copyright (C) 2016 CodeLutin, Chatellier Eric + * %% + * 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 3 of the + * License, or (at your option) 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, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package org.chorem.jtimer.entities; + +import org.chorem.jtimer.AbstractJTimerTest; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.List; + +/** + * Test related to TimerTaskHelper. + */ +public class TimerTaskHelperTest extends AbstractJTimerTest { + + /** + * Test get path from parent. + */ + @Test + public void getPathFromParentTest() { + TimerProject project = new TimerProject(); + TimerTask task1 = new TimerTask(); + TimerTask task2 = new TimerTask(); + + project.addTask(task1); + task1.addTask(task2); + + List<TimerTask> components = TimerTaskHelper.getPathFromParent(task2); + Assert.assertEquals(components.get(0), project); + Assert.assertEquals(components.get(1), task1); + Assert.assertEquals(components.get(2), task2); + } +} -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm