I/O Window vs Progress (of long running processes)
Ivan Soleimanipour <[email protected]> Tue, 14 Apr 2009 14:26:25 -0700
| Newsgroups | gmane.comp.java.netbeans.user-interface |
|---|---|
| Message-ID | <[email protected]> |
The current NB convention separates the closing of I/O windows from the termination of the processes running under those I/O Windows. For example, if you use the Progress UI and Cancel something, or use the Stop button in the I/O Window's action bar the process is terminated but the I/O window stays around and the user can see the last of the io and things like "exit satus is 0". Conversely one can Close an I/O window w/o impacting the underlying process. The I/O window can be re-opened, not throught the Window menu, but via the Progress UI. However, as I've been working on my terminal project, http://wiki.netbeans.org/TerminalEmulator, I'm a bit hesitant to follow the above mode. For example, my project will allow the creation of a TC running a shell. This window may be in it's own "Terminal" window or in a generic Output Window (I haven't decided yet what would be best). Now the purpose of the Progress UI is to track "jobs" like builds or vcs actions etc. These are long-lasting actions which the use presumably wants to track, hence the progress UI animation. But a shell doesn't quite fall into this category. A shell lasts longer than a build or a vcs action. In fact a "utility" shell is likely to hang around for the duration of an IDE session. For such a thing having Progress UI animation seems an unneccessary distraction, as any animation is. So, if one agrees that for a long lasting shell job a Progress item is undesirable the distinction between closing and termination becomes an issue. Looking at how shells within terminals are used on the regular desktop we see that a Close of the terminal will terminate the shell and vice-versa. This contradicts the current procatice of how the IO window is used. OTOH, my project will allow the creation of "Command" windows where one can execute an arbitrary command like 'ls' or 'date'. For these it _does_ make sense to separate window closing from process termination based on the current NB convention. Now, the latest I/O APs from Tomas Holy allow for the creation of alternative IOProviders and windows. It would make sense, for example, to have a TC _other_ than Output for shells. However, the I/O API doesn't allow for the conflation of closing and termination, which is the sensible thing to do for shells. The question is then ... should we enhance the I/O API to allow for the conflationof close and terminate or should shells go into their own, specialized, not I/O API based TC's? One way to answer this is to see if there are existing really-long-lasting actions in NB which are similar to shell as mentioned above for which the animation of the Progress UI is a distraction.