Author: echatellier
Date: 2010-04-16 17:46:40 +0200 (Fri, 16 Apr 2010)
New Revision: 2729
Log:
Add F2 shortcut to edit task.
Modified:
trunk/src/main/java/org/chorem/jtimer/JTimer.java
trunk/src/main/resources/org/chorem/jtimer/resources/JTimer.properties
Modified: trunk/src/main/java/org/chorem/jtimer/JTimer.java
===================================================================
--- trunk/src/main/java/org/chorem/jtimer/JTimer.java 2010-03-27 20:07:03 UTC (rev 2728)
+++ trunk/src/main/java/org/chorem/jtimer/JTimer.java 2010-04-16 15:46:40 UTC (rev 2729)
@@ -21,6 +21,7 @@
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Calendar;
@@ -28,6 +29,7 @@
import java.util.List;
import java.util.Timer;
+import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
@@ -40,6 +42,7 @@
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JToolBar;
+import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
@@ -103,28 +106,28 @@
/** Single project selection property. */
protected boolean selectedSingleProject = false;
-
+
/** Single task selection property. */
protected boolean selectedSingleTask = false;
-
+
/** Single task or project selection. */
protected boolean selectedSingleElement = false;
-
+
/** Single running task selection. */
protected boolean selectedSingleRunningTask = false;
-
+
/** Single non running task selection. */
protected boolean selectedSingleStoppedTask = false;
-
+
/** Multiples projects selection. */
protected boolean selectedMultiplesProjects = false;
-
+
/** Multiples tasks selection. */
protected boolean selectedMultiplesTasks = false;
/** Multiples elements selection. */
protected boolean selectedMultiplesElements = false;
-
+
/**
* Main. launch UI
*
@@ -159,8 +162,10 @@
core = new TimerCore();
// handler
- ConnectionDataHandler handler = new SwingConnectionInformationHandler(this);
- ProjectManagement managementService = JTimerFactory.getProjectManagementService();
+ ConnectionDataHandler handler = new SwingConnectionInformationHandler(
+ this);
+ ProjectManagement managementService = JTimerFactory
+ .getProjectManagementService();
if (managementService != null) {
managementService.setConnectionDataHandler(handler);
}
@@ -168,7 +173,7 @@
// Systray mgr
systrayManager = new SystrayManager(this);
core.getData().addDataEventListener(systrayManager);
-
+
IdleDialog.init(this);
}
@@ -232,15 +237,24 @@
protected ProjectsAndTasksTable createTreeTable() {
projectsAndTasksTable = new ProjectsAndTasksTable(this, core);
-
+
// name used in properties files
projectsAndTasksTable.setName("projectslist");
projectsAndTasksTable.addTreeSelectionListener(this);
projectsAndTasksTable.addMouseListener(this);
-
+
// since merge option, selection can be multiple
- projectsAndTasksTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ projectsAndTasksTable
+ .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ // remove F2 KeyStroke from table
+ KeyStroke keyToRemove = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
+ InputMap imap = projectsAndTasksTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ while (imap != null) {
+ imap.remove(keyToRemove);
+ imap = imap.getParent();
+ }
+
return projectsAndTasksTable;
}
@@ -255,19 +269,18 @@
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
for (String actionName : toolbarActionNames) {
-
+
if (actionName.equals("---")) {
toolBar.add(new JToolBar.Separator());
- }
- else {
+ } else {
JButton button = new JButton();
button.setAction(getAction(actionName));
-
+
// hide text
// button.setVerticalTextPosition(JButton.BOTTOM);
// button.setHorizontalTextPosition(JButton.CENTER);
button.setHideActionText(true);
-
+
button.setFocusable(false);
toolBar.add(button);
}
@@ -292,14 +305,14 @@
String[] taskMenuActionNames = { "newTask", "editTask", "closeTask",
"deleteTask", "---", "startTask", "stopTask", "---",
- "addAnnotation", "editAlert", "increment1Task", "increment5Task",
- "increment30Task", "decrement1Task", "decrement5Task",
- "decrement30Task", "setToZero" , "mergeTasks"};
+ "addAnnotation", "editAlert", "increment1Task",
+ "increment5Task", "increment30Task", "decrement1Task",
+ "decrement5Task", "decrement30Task", "setToZero", "mergeTasks" };
menuBar.add(createMenu("taskMenu", taskMenuActionNames));
String[] reportMenuActionNames = { "makeReport" };
menuBar.add(createMenu("reportMenu", reportMenuActionNames));
-
+
String[] optionMenuActionNames = { "isShowClosed" };
menuBar.add(createMenu("optionMenu", optionMenuActionNames));
@@ -429,16 +442,17 @@
protected void displayErrorMessage(String errorMessageKey) {
String title = resourceMap.getString("action.invalidActionTitle");
String message = resourceMap.getString(errorMessageKey);
-
+
// check untranslated string
if (StringUtils.isEmpty(message)) {
- message = resourceMap.getString("action.missingErrorMessage", errorMessageKey);
+ message = resourceMap.getString("action.missingErrorMessage",
+ errorMessageKey);
}
-
- JOptionPane.showMessageDialog(getMainFrame(), message,
- title, JOptionPane.ERROR_MESSAGE);
+
+ JOptionPane.showMessageDialog(getMainFrame(), message, title,
+ JOptionPane.ERROR_MESSAGE);
}
-
+
/**
* New project action.
*
@@ -464,8 +478,7 @@
try {
core.getData().addProject(p);
- }
- catch (DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -478,7 +491,8 @@
*/
@Action(enabledProperty = "selectedSingleProject")
public void editProject() {
- TimerProject project = projectsAndTasksTable.getSelectedProjects().get(0);
+ TimerProject project = projectsAndTasksTable.getSelectedProjects().get(
+ 0);
String newProjectName = (String) JOptionPane.showInputDialog(this
.getMainFrame(), resourceMap
@@ -493,8 +507,7 @@
try {
core.getData().editProject(project, newProjectName);
- }
- catch (DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -509,7 +522,8 @@
public void newTask() {
// select task to add new task
- TimerTask selectedTask = projectsAndTasksTable.getSelectedElements().get(0);
+ TimerTask selectedTask = projectsAndTasksTable.getSelectedElements()
+ .get(0);
String taskName = JOptionPane.showInputDialog(getMainFrame(),
resourceMap.getString("input.newTaskMessage", selectedTask
@@ -529,8 +543,7 @@
try {
core.getData().addTask(selectedTask, t);
- }
- catch (DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -676,7 +689,8 @@
@Action(enabledProperty = "selectedSingleProject")
public void deleteProject() {
- TimerProject project = projectsAndTasksTable.getSelectedProjects().get(0);
+ TimerProject project = projectsAndTasksTable.getSelectedProjects().get(
+ 0);
if (project != null) {
int confirm = JOptionPane.showConfirmDialog(this.getMainFrame(),
@@ -688,8 +702,7 @@
if (confirm == JOptionPane.YES_OPTION) { // approved
try {
core.getData().deleteProject(project);
- }
- catch(DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -716,8 +729,7 @@
if (confirm == JOptionPane.YES_OPTION) { // approved
try {
core.getData().deleteTask(task);
- }
- catch(DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -782,7 +794,7 @@
public void increment1Task() {
incrementTaskTime(60);
}
-
+
/**
* Increment task time.
*
@@ -791,7 +803,8 @@
* @param increment increment in seconds
*/
protected void incrementTaskTime(long increment) {
- TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks().get(0);
+ TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks()
+ .get(0);
// check if task is running
RunTaskJob job = getJobForRunningTask(selectedTask);
@@ -809,13 +822,13 @@
try {
// check if + negative increment still positive
if (newTodayTime > 0) {
- core.getData().changeTaskTime(selectedTask, now, newTodayTime);
+ core.getData().changeTaskTime(selectedTask, now,
+ newTodayTime);
} else {
// force to 0
core.getData().changeTaskTime(selectedTask, now, 0L);
}
- }
- catch(DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -836,31 +849,32 @@
@Action(enabledProperty = "selectedMultiplesTasks")
public void mergeTasks() {
List<TimerTask> tasks = projectsAndTasksTable.getSelectedTasks();
-
+
TimerTask destinationTask = tasks.get(0);
List<TimerTask> otherTasks = tasks.subList(1, tasks.size());
int confirm = JOptionPane.showConfirmDialog(this.getMainFrame(),
- resourceMap.getString("input.mergeTaskMessage", tasks.size(), destinationTask.getName()), resourceMap
+ resourceMap.getString("input.mergeTaskMessage", tasks.size(),
+ destinationTask.getName()), resourceMap
.getString("input.mergeTaskTitle"),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (confirm == JOptionPane.YES_OPTION) {
-
+
try {
core.getData().mergeTasks(destinationTask, otherTasks);
- }
- catch (DataViolationException e) {
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
}
-
+
/**
* Add annotation action.
*/
@Action(enabledProperty = "selectedSingleTask")
public void addAnnotation() {
// select task to add new annotation
- TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks().get(0);
+ TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks()
+ .get(0);
String annotation = JOptionPane.showInputDialog(getMainFrame(),
resourceMap.getString("input.addAnnotationMessage",
@@ -873,9 +887,9 @@
annotation = annotation.trim();
try {
- core.getData().addAnnotation(selectedTask, new Date(), annotation);
- }
- catch (DataViolationException e) {
+ core.getData().addAnnotation(selectedTask, new Date(),
+ annotation);
+ } catch (DataViolationException e) {
displayErrorMessage(e.getExceptionKey());
}
}
@@ -887,9 +901,11 @@
@Action(enabledProperty = "selectedSingleTask")
public void editAlert() {
// select task to edit alert
- TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks().get(0);
+ TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks()
+ .get(0);
- AlertEditor alertEditor = new AlertEditor(this, this.core.getData(), selectedTask);
+ AlertEditor alertEditor = new AlertEditor(this, this.core.getData(),
+ selectedTask);
show(alertEditor);
}
@@ -928,7 +944,8 @@
public void setSelectedSingleProject(boolean selectedSingleProject) {
boolean oldValue = this.selectedSingleProject;
this.selectedSingleProject = selectedSingleProject;
- firePropertyChange("selectedSingleProject", oldValue, selectedSingleProject);
+ firePropertyChange("selectedSingleProject", oldValue,
+ selectedSingleProject);
}
/**
@@ -968,7 +985,8 @@
public void setSelectedSingleElement(boolean selectedSingleElement) {
boolean oldValue = this.selectedSingleElement;
this.selectedSingleElement = selectedSingleElement;
- firePropertyChange("selectedSingleElement", oldValue, selectedSingleElement);
+ firePropertyChange("selectedSingleElement", oldValue,
+ selectedSingleElement);
}
/**
@@ -988,7 +1006,8 @@
public void setSelectedSingleRunningTask(boolean selectedSingleRunningTask) {
boolean oldValue = this.selectedSingleRunningTask;
this.selectedSingleRunningTask = selectedSingleRunningTask;
- firePropertyChange("selectedSingleRunningTask", oldValue, selectedSingleRunningTask);
+ firePropertyChange("selectedSingleRunningTask", oldValue,
+ selectedSingleRunningTask);
}
/**
@@ -1008,9 +1027,10 @@
public void setSelectedSingleStoppedTask(boolean selectedSingleStoppedTask) {
boolean oldValue = this.selectedSingleStoppedTask;
this.selectedSingleStoppedTask = selectedSingleStoppedTask;
- firePropertyChange("selectedSingleStoppedTask", oldValue, selectedSingleStoppedTask);
+ firePropertyChange("selectedSingleStoppedTask", oldValue,
+ selectedSingleStoppedTask);
}
-
+
/**
* Is selected multiples projects.
*
@@ -1028,9 +1048,10 @@
public void setSelectedMultiplesProjects(boolean selectedMultiplesProjects) {
boolean oldValue = this.selectedMultiplesProjects;
this.selectedMultiplesProjects = selectedMultiplesProjects;
- firePropertyChange("selectedMultiplesProjects", oldValue, selectedMultiplesProjects);
+ firePropertyChange("selectedMultiplesProjects", oldValue,
+ selectedMultiplesProjects);
}
-
+
/**
* Is selected multiples tasks.
*
@@ -1048,9 +1069,10 @@
public void setSelectedMultiplesTasks(boolean selectedMultiplesTasks) {
boolean oldValue = this.selectedMultiplesTasks;
this.selectedMultiplesTasks = selectedMultiplesTasks;
- firePropertyChange("selectedMultiplesTasks", oldValue, selectedMultiplesTasks);
+ firePropertyChange("selectedMultiplesTasks", oldValue,
+ selectedMultiplesTasks);
}
-
+
/**
* Is selected multiples elements.
*
@@ -1068,7 +1090,8 @@
public void setSelectedMultiplesElements(boolean selectedMultiplesElements) {
boolean oldValue = this.selectedMultiplesElements;
this.selectedMultiplesElements = selectedMultiplesElements;
- firePropertyChange("selectedMultiplesElements", oldValue, selectedMultiplesElements);
+ firePropertyChange("selectedMultiplesElements", oldValue,
+ selectedMultiplesElements);
}
/*
@@ -1078,9 +1101,10 @@
public void valueChanged(TreeSelectionEvent e) {
// get selected elements
List<TimerTask> elements = projectsAndTasksTable.getSelectedElements();
- List<TimerProject> projects = projectsAndTasksTable.getSelectedProjects();
+ List<TimerProject> projects = projectsAndTasksTable
+ .getSelectedProjects();
List<TimerTask> tasks = projectsAndTasksTable.getSelectedTasks();
-
+
// notify application that tree selection has changed
if (tasks.size() == 1 && projects.size() == 0) {
TimerTask task = tasks.get(0);
@@ -1091,27 +1115,26 @@
if (job == null || job.isStopping()) {
setSelectedSingleStoppedTask(true);
setSelectedSingleRunningTask(false);
- }
- else {
+ } else {
setSelectedSingleStoppedTask(false);
setSelectedSingleRunningTask(true);
}
setSelectedMultiplesTasks(false);
setSelectedSingleProject(false);
setSelectedMultiplesProjects(false);
- }
- else {
+ } else {
setSelectedSingleTask(false);
setSelectedSingleStoppedTask(false);
setSelectedSingleRunningTask(false);
if (tasks.size() > 1) {
setSelectedMultiplesTasks(projects.size() == 0);
+ } else {
+ setSelectedSingleProject(tasks.size() == 0
+ && projects.size() == 1);
+ setSelectedMultiplesProjects(tasks.size() == 0
+ && projects.size() > 1);
}
- else {
- setSelectedSingleProject(tasks.size() == 0 && projects.size() == 1);
- setSelectedMultiplesProjects(tasks.size() == 0 && projects.size() > 1);
- }
}
setSelectedSingleElement(elements.size() == 1);
setSelectedMultiplesElements(elements.size() > 1);
@@ -1154,7 +1177,7 @@
public void preIdleDetect() {
systrayManager.preIdleDetect();
}
-
+
/**
* Notified by job on post idle detect.
*/
@@ -1183,23 +1206,25 @@
if (e.getClickCount() == 2) {
if (isSelectedSingleStoppedTask()) { // can only launch non running tasks
- org.jdesktop.application.Task<?, ?> appTask = startTask();
+ Task<?, ?> appTask = startTask();
+ if (appTask != null) {
- if (appTask != null) {
-
// first, on dlb click stop all running tasks
stopAllTasks();
this.getContext().getTaskService().execute(appTask);
}
- }
- else {
+ /* TODO EC-20100416 temp disable, called twice, can display
+ -1 task running :(
+ } else if (isSelectedSingleRunningTask()) {
+ TimerTask task = projectsAndTasksTable.getSelectedTasks().get(0);
+ stopTask(task); */
+ } else {
if (log.isDebugEnabled()) {
log.debug("Non selected non running task to launch");
}
}
- }
- else {
+ } else {
if (log.isDebugEnabled()) {
log.debug("Single clic on tree, do nothing");
}
@@ -1211,9 +1236,11 @@
case MouseEvent.BUTTON3:
// force task selection on rigth clic
- TreePath path = projectsAndTasksTable.getPathForLocation(e.getX(), e.getY());
+ TreePath path = projectsAndTasksTable.getPathForLocation(e.getX(),
+ e.getY());
int selectedRow = projectsAndTasksTable.getRowForPath(path);
- projectsAndTasksTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow);
+ projectsAndTasksTable.getSelectionModel().setSelectionInterval(
+ selectedRow, selectedRow);
// fix item selection
JPopupMenu menu = new JPopupMenu();
@@ -1233,7 +1260,7 @@
"increment5Task", "increment30Task", "decrement1Task",
"decrement5Task", "decrement30Task", "setToZero" };
}
-
+
if (isSelectedMultiplesTasks()) {
actionNames = new String[] { "mergeTasks" };
}
Modified: trunk/src/main/resources/org/chorem/jtimer/resources/JTimer.properties
===================================================================
--- trunk/src/main/resources/org/chorem/jtimer/resources/JTimer.properties 2010-03-27 20:07:03 UTC (rev 2728)
+++ trunk/src/main/resources/org/chorem/jtimer/resources/JTimer.properties 2010-04-16 15:46:40 UTC (rev 2729)
@@ -33,6 +33,7 @@
newTask.Action.shortDescription = Create new task
editTask.Action.text = Edit Task
+editTask.Action.accelerator = F2
editTask.Action.shortDescription = Edit task
closeTask.Action.text = Open/Close Task