This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 101869 - [Usability] Tasks are accidentally added as subtasks
Summary: [Usability] Tasks are accidentally added as subtasks
Status: RESOLVED INCOMPLETE
Alias: None
Product: contrib
Classification: Unclassified
Component: Tasklist (show other bugs)
Version: 6.x
Hardware: All All
: P2 blocker (vote)
Assignee: Tim Lebedkov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-04-19 23:39 UTC by Torbjorn Norbye
Modified: 2007-06-02 10:52 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Project Management Software (12.55 KB, application/x-compressed)
2007-05-13 22:08 UTC, Tim Lebedkov
Details
version 2 (12.91 KB, application/x-compressed)
2007-05-14 22:30 UTC, Tim Lebedkov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Torbjorn Norbye 2007-04-19 23:39:39 UTC
Apologies if this is a duplicate; I could have sworn I filed this before but a search of the open issues 
didn't turn it up.

When I go to add a new task and click the New Task action, I enter the task and hit OK. Ooops - it gets 
added as a subtask of the current selection!   I didn't even select that item - the first item is selected by 
the default when you bring up the tasklist.

Right clicking to choose "New Task" has the same issue - the parent is obviously added.

(In the old days, there was a checkbox to make the task being added a subtask of the parent in the New 
dialog. That might work as long as the default is false).

Making a task a subtask of another is easier than the other way around - you can just drag it to its new 
parent. Making it a toplevel task seems harder since there's no visible "root" node.

Even though the current behavior may be intentional, I'm marking this as a defect rather than an 
enhancement because this is a usability bug.
Comment 1 Tim Lebedkov 2007-04-23 19:42:29 UTC
Cool down. You are not going crazy :-). You indeed filed a similar issue (it is
already fixed):
#91511: Tasks too easily get nested
(http://tasklist.netbeans.org/issues/show_bug.cgi?id=91511)

My advice to you: create a "super" task and add all your other tasks as subtasks
to it.

Another solution could be to introduce the action "Add Sibling Task". Would this
solve your problem or do you have other suggestions?
Comment 2 Tim Lebedkov 2007-05-01 17:00:33 UTC
need your comment, Tor
Comment 3 Torbjorn Norbye 2007-05-02 02:31:53 UTC
Sorry about the delay - JavaOne preparation stress!

I don't think adding a "super task" which is the parent of everything else is a good solution for various 
reasons. In addition to taking up unnecessary horizontal space (indenting everything) and making 
strange HTML reports etc., it probably won't solve the root problem because as soon as I've clicked on 
any other tasks, creating a new task will (accidentally) create the new task as a child of the subtask; I'd 
have to remember to go and click on the "super" task each and every time.


I believe that most newly added tasks are not subtasks of another task. Thus, I think the default for a 
new task should be to be "top level", regardless of whether another task is selected or not.  It's pretty 
easy to make a task a subtask of something else - just drag it there. Bringing it back out is much 
harder.

An additional thing we can do to make it easier to make subtasks, is to add a checkbox to the "New 
Task" panel, which lets you control whether the new task should be a subtask of another. Originally, we 
had a "Subtask Of" section here which had an embedded tasklist, allowing you to choose an arbitrary 
parent task. That was probably overkill (besides, the nested tasklist caused other problems).  I think a 
workable solution would be to add a checkbox which says something like this:

[ ]  Add as subtask of selected task (<Selected task's description, trimmed to let's say 20 chars, here)

If there is no selection when the panel is brought up, this checkbox is disabled.  The default is for the 
option to be off. If turned on, it could persist its on-state either during the current IDE session (which is 
what I think would be best), or persist across IDE sessions (thought I don't think people will want this; I 
think this checkbox is used when you want to quickly add a task and a subtask with a group of 
subtasks, so you turn the toggle on and add your subtasks in rapid succession). When you come back 
another day, you are again adding tasks to the top level unless you specifically start adding subtasks.

One possible sticking point: New Task will select the newly added task. This is normally what you want 
- e.g. New Task, followed by Delete should add the task you just added. You also want selection such 
taht the table can scroll to expose it etc.   However, if you now try to add a new task, and the previously 
added child is still selected, the -child- will be the selected parent rather than what you probably 
intended. Perhaps the most straightforward way to add this is to actually have two checkboxes.

If the task has no parent task (other than the invisible root), show a checkbox as described above. 
Otherwise, if the task is itself a subtask, offer a radio:

(*) Top level task
( ) Subtask of [parent task]
( ) Subtask of [grandparent task]

(For simplicity, we can use a radio group for the first scenario too).

I think this might work, but it would be great to get some UI engineers to look at this.

Come to think of it - TODO managers with subtasks are in lots of products (groupware and 
collaboration tools) that have had not only significant UI engineering investments, but also market soak 
time with user feedback. Perhaps we can take a look at what these guys are doing? 
Comment 4 Tim Lebedkov 2007-05-02 18:49:33 UTC
I'll answer to your post first:

>>>>>>>>>>>>>>>>>>>> quote
I don't think adding a "super task" which is the parent of everything else is a
good solution for various 
reasons. In addition to taking up unnecessary horizontal space (indenting
everything) and making 
strange HTML reports etc., it probably won't solve the root problem because as
soon as I've clicked on 
any other tasks, creating a new task will (accidentally) create the new task as
a child of the subtask; I'd 
have to remember to go and click on the "super" task each and every time.
>>>>>>>>>>>>>>>>>>> end quote

Adding an "artificial" root task will not take a lot of horizontal space (at
least there is enough space in the default window configuration at the bottom of
the main window). It does not look (in my opinion) "strange" in a html report.
Just call it "all my tasks" or similar. It could also help for example by
computing the time necessary to complete all your tasks. But you're right, it
would obviously force you to scroll to it. I will try to solve this problem.

>>>>>>>>>>>>>>>>>>>> quote
I believe that most newly added tasks are not subtasks of another task. Thus, I
think the default for a 
new task should be to be "top level", regardless of whether another task is
selected or not.  It's pretty 
easy to make a task a subtask of something else - just drag it there. Bringing
it back out is much 
harder.
>>>>>>>>>>>>>>>>>>> end quote

I cannot agree with you that "most newly added tasks are not subtasks". All my
task lists look like this one:
http://tasklist.netbeans.org/updates/tasklist-usertasks.html. There is a deep
hierarchy of tasks. 
It depends on how you use the software. It will be easier to drag tasks to the
top level when 
"dropping between rows" is implemented (not in the near future).

>>>>>>>>>>>>>>>>>>>> quote
An additional thing we can do to make it easier to make subtasks, is to add a
checkbox to the "New 
Task" panel, which lets you control whether the new task should be a subtask of
another. Originally, we 
had a "Subtask Of" section here which had an embedded tasklist, allowing you to
choose an arbitrary 
parent task. That was probably overkill (besides, the nested tasklist caused
other problems).  I think a 
workable solution would be to add a checkbox which says something like this:

[ ]  Add as subtask of selected task (<Selected task's description, trimmed to
let's say 20 chars, here)

If there is no selection when the panel is brought up, this checkbox is
disabled.  The default is for the 
option to be off. If turned on, it could persist its on-state either during the
current IDE session (which is 
what I think would be best), or persist across IDE sessions (thought I don't
think people will want this; I 
think this checkbox is used when you want to quickly add a task and a subtask
with a group of 
subtasks, so you turn the toggle on and add your subtasks in rapid succession).
When you come back 
another day, you are again adding tasks to the top level unless you specifically
start adding subtasks.
>>>>>>>>>>>>>>>>>>> end quote

Currently there is a checkbox in the "New Task" dialog that allows you to add a
task at the top level. 
And I am one of those people who most of the time add subtasks. If I would add
such an option it would 
be also persisted across IDE sessions (see previous comment).

>>>>>>>>>>>>>>>>>>>> quote
One possible sticking point: New Task will select the newly added task. This is
normally what you want 
- e.g. New Task, followed by Delete should add the task you just added. You also
want selection such 
taht the table can scroll to expose it etc.   However, if you now try to add a
new task, and the previously 
added child is still selected, the -child- will be the selected parent rather
than what you probably 
intended. Perhaps the most straightforward way to add this is to actually have
two checkboxes.

If the task has no parent task (other than the invisible root), show a checkbox
as described above. 
Otherwise, if the task is itself a subtask, offer a radio:

(*) Top level task
( ) Subtask of [parent task]
( ) Subtask of [grandparent task]

(For simplicity, we can use a radio group for the first scenario too).


I think this might work, but it would be great to get some UI engineers to look
at this.
>>>>>>>>>>>>>>>>>>> end quote

It is not necessary. Just use the "Add Another" button in the "New Task" dialog
instead of "OK"! 
This way you can add multiple tasks at once without leaving the dialog.

>>>>>>>>>>>>>>>>>>>> quote
Come to think of it - TODO managers with subtasks are in lots of products
(groupware and 
collaboration tools) that have had not only significant UI engineering
investments, but also market soak 
time with user feedback. Perhaps we can take a look at what these guys are doing? 
>>>>>>>>>>>>>>>>>>> end quote

I will take a look on another products. But here is what I think would be a good
solution for both types
of usage:
3 radio buttons in the "New Task" dialog:
  (*) Top level task
  ( ) Subtask of ....
  ( ) Same level as ... (sibling)
The option will *not* be stored each time when the dialog is closed but there
will be a global
option for "default creation level" for tasks in the options dialog.

I will also change the name of the action from "Add Subtask..." to "Add
Task...". The default will
be the simpler "Same level as..." option. 

What do you think about it?


 
Comment 5 Tim Lebedkov 2007-05-13 22:08:56 UTC
Created attachment 42353 [details]
Project Management Software
Comment 6 Tim Lebedkov 2007-05-13 22:10:29 UTC
I have created and attached to this issue a table of project management software
for comparison. If you know about any other let me know.
Comment 7 Tim Lebedkov 2007-05-14 22:30:01 UTC
Created attachment 42392 [details]
version 2
Comment 8 Tim Lebedkov 2007-05-14 22:31:37 UTC
not only mac
Comment 10 Torbjorn Norbye 2007-05-17 18:07:50 UTC
Hi Tim,
thanks for producing the full table. Just to be clear, I didn't mean to imply that subtasks aren't useful - I 
did say that I thought adding a new task would be toplevel - but that's because I meant that I think of 
adding subtasks as something you do in series (e.g. "Add Another"). I definitely think supporting 
hierarchies is important - that's why I ended with "TODO managers with subtasks are in lots of 
products - let's look at what they're doing".

In any case, I just had an idea. I don't know how I could have missed it, since it's so obvious :-)

The way you do nesting in word processors etc. is to have indent/unindent arrows!  When I do bulleted 
lists in StarOffice and elsewhere, there are left and right toolbar buttons. Clicking this will move the 
current task up or down one level. Something like that should make it really easy to get the desired 
effect.  (Also, I wonder if it would be possible to support directly typing into the tasklist rather than 
going through a dialog. Eg. something where the last displayed task is a "dummy" task (not part of the 
tasklist) - it would have a gray italic label saying something like "click me to add a new task". A single 
click would put you in edit mode; you can tab among the columns. Enter would commit the task and 
add a new dummy insert task below it. A newly added task is at the same indentation/nesting level as 
its parent.
Comment 11 Tim Lebedkov 2007-05-19 16:02:24 UTC
Hello Tor,

I know that you organize your tasks as a flat list and I always keep it in mind
and take care of it when implementing something.

There are already "Indent" and "Unindent" actions that let you change nesting.

Adding a task without showing a dialog is already on my list and I just added
your excellent idea about virtual "Click here to add new task" entry to it. But
it was always possible to add a task at the desired position using the dialog.
So let's concentrate on this first.

I have analyzed most of the programs from the attached spreadsheet and found
only 2 solutions:
- root node (as in User Tasks for NB 5.5)
- 2 different actions for adding a task at top level and as a subtask

I don't like the idea of having multiple actions/toolbar icons for adding a task
at the top level or a subtask.

In fact if there is no information about what is selected a task could only be
added at the top level and if something is selected, a new task could be added
at 6 different positions:
- as the last subtask
- as the first subtask
- at the same level before the task
- at the same level after the task
- at the top level as the first task
- at the top level as the last task

to support all these options we would need 5 radio buttons in the dialog (and in
the options dialog too so default behavior could be specified):
(*) Append          (*) Top level task
( ) Prepend         ( ) Subtask of ....
                    ( ) Same level as ... (sibling)

I would like to hear your opinion on this. Do you like it? If yes I would
implement it and close this issue.