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 38173 - Need keyboard shortcut for closing tabs
Summary: Need keyboard shortcut for closing tabs
Status: VERIFIED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Window System (show other bugs)
Version: 3.x
Hardware: All All
: P3 blocker (vote)
Assignee: _ tboudreau
URL:
Keywords: A11Y, UI
Depends on:
Blocks: 40429
  Show dependency tree
 
Reported: 2003-12-17 12:37 UTC by _ gtzabari
Modified: 2008-12-22 20:45 UTC (History)
3 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description _ gtzabari 2003-12-17 12:37:54 UTC
The new windowing specification does not talk
about closing tabs via keyboard shorts. The
editor's behavior is:

   CTRL-F4
Comment 1 _ gtzabari 2003-12-17 12:42:03 UTC
Sorry, submitted too early. Repeating:

dev build 200312151900

The new windowing specification does not talk
about closing tabs via keyboard shortcuts. The
editor's behavior is:

   CTRL-F4: closes the current tab or, if no tabs remain, closes the
current window

I like this behavior as it is consistent with the old windowing
system's UI (easy to remember shortcut). The problem is that the VCS,
OUTPUT WINDOW systems do not make use of this scheme. For them,
CTRL-F4 closes the current window regardless of the number of open
tabs and there is no keyboard shortcut for closing those tabs (as far
as I know).

I propose we modify the current windowing specification to state:

   CTRL-F4: closes the current tab or, if no tabs remain, closes the
current window.
Comment 2 _ gtzabari 2003-12-17 14:19:19 UTC
Correction: I meant to say,

CTRL-F4: closes the current tab *and* if the last tab is closed, the
window it closed as well.
Comment 3 mslama 2004-01-07 13:28:44 UTC
It is by design. Output view TopComponent has inner tabs which are not
tabs of window system (like editor tabs in source editor). Assigning
to Jano to define proper shortcut to close inner tab in Output view.
See also issue #37288 where it is mentioned too (but it is different
issue so I keep this issue for missing kb shortcut).
Comment 4 Jesse Glick 2004-01-07 17:12:40 UTC
FWIW I also feel that Ctrl-F4 should close the current tab, not hide
the whole window. It may be "as designed" but the design only makes
sense to the implementor of the window system. As a user it is very
confusing why some tabs behave one way and other behave completely
differently.

See also issue #37323.
Comment 5 _ gtzabari 2004-01-07 18:26:27 UTC
I (obviously) agree with Jesse.

Marek, this problem is not specific to the Output View.

<my 2 cents>

We need to modify the windowing specification such that the same
keyboard shortcut can be used to close tabs no matter where they show
up. Output Window, VCS Window, Explorer and other windows all have
tabs and the end-user expecs them all to behave the same way. The old
behavior was consistent with Windows, OS/2 and I believe also Linux
keyboard shortcuts. I see no reason to change it.

</my 2 cents>
Comment 6 mslama 2004-01-08 10:03:22 UTC
Jano this should be solved somehow soon. So I increase priority to P2.
As you can see this design creates confusion among users. They feel
that inner tabs of Output view are part of winsys and that they should
behave the same way as winsys tabs do.
Comment 7 Jesse Glick 2004-01-08 14:24:48 UTC
Of course it should be mentioned on nbui to see what others think...
preferably people who have not read the winsys design document. :-)
Comment 8 _ gtzabari 2004-02-04 16:35:23 UTC
Any movement on this issue? It's been a month since we last heard
anything.

BTW: I had brought up the issue of closing tabs using CTRL-F4 on nbui
a while back but no one replied.
Comment 9 jrojcek 2004-02-06 16:13:27 UTC
This is a bit complicated issue.

The new windowing system design considers everything inside a window to be out of 
winsys scope. This is the case of output tabs and that is why Ctrl-F4 doesn't work there as 
you would expect. I admit that maybe it was not the correct design decision, mostly 
because currently we have two windows containing nested tabs - Output and VCS Output, 
and in the future we might have Refactoring window with nested tabs and maybe more. 
(the nested tabs might turn out to be a special UI pattern used in our IDE)

For NB 3.6, I would focus on solving acessibility issue which means defining a special 
shortcut which would close the output tab. Trying to go with other solution affecting the 
behavior of main menu items (like Close Window) might be risky.

I propose following shortcuts for Output window and VCS Output window actions:
------
Discard Output Tab        [Ctrl-Delete]
Discard All Output Tabs [Ctrl-Shift-Delete]
------
Comment 10 _ gtzabari 2004-02-06 19:38:16 UTC
Jan,

    I think using any other shortcut keys is a waste of time when we
already know what shortcut keys the user expects to use. This is a big
usability problem many users will complain about so lets just fix it
right. I understand it would require us to modify the behavior of
CLOSE WINDOW but frankly most users don't know or care about "close
window". To them, a tab *is* a window. They want Netbeans to behave
like any other native application on their system and native
applications all use CTRL-F4 to close tabs.
Comment 11 David Simonek 2004-02-09 15:46:32 UTC
Passing back to Jano - I don't know how to handle such contradictions.
Everything looks soooo easy from outside internet. Jano, I did tell
you that inner tabs must look completely different then other tabs, or
users will complain as always :-(
Comment 12 _ gtzabari 2004-02-09 15:58:52 UTC
David,

   Please elaborate for my sake: what are inner tabs and why do they
require different behavior from normal tabs?
Comment 13 David Simonek 2004-02-18 15:57:27 UTC
Because inner tabs *really are* something completely different even
from user perspective. They can't be dragged out, dropped in, they
don't have menu actions for opening, they can't fly separate in SDI,
they are not selectible using Documents dialog, Ctrl+Tab etc. In
short, they are private, unique things that belong to output window
only and never elsewhere. Unfortunately, they look similar as regular
tabs, so users are tempted to think that the same set of actions could
apply.
I think correct solution would be to differentiate inner tabs even
more visually (to be clear that there are serious behavioral
differencies) and yes, provide Ctrl+F4 as their closing mechanism.
However, how will we differentiate non-closable inner tabs such as
form palette items, in future nested editor tabs etc.????
Comment 14 _ gtzabari 2004-02-18 16:29:21 UTC
David,

   I think that in the case where you have non-closable inner tabs..
well.. you shouldn't have any. Can't you find a reasonable behavior
for what happens when someone closes the form tab? Previous behavior
would close the form + source code tabs together if either one was closed.

    I understand your concern regarding not allowing inner tabs to be
dragged around; although I wonder: why not? What do we actually gain
by restricting the user from doing this?

    I think that whomever implied that all tabs should be "selectible
using Documents dialog, Ctrl+Tab etc" made a design-level mistake.

    In my eyes, as a developer as well as a user, winsys should
dictate the behavior of *all* tabs (CTRL-F4, dragable, etc) however
specific instances of tabs (editor tabs, output-window tabs) may
extend upon this basic behavior and add things like showing up in
CTRL-TAB, document listing, etc.
Comment 15 David Simonek 2004-02-18 16:49:55 UTC
Gili,
I tried to offer some explanation, but apparently this raised only
more questions, so I give up, as this is wasted time, I'm not able to
explain things better anyway. I'm not the right person to talk about
winsys design anyway, so I'll leave it for Jano.

Just a sidenote - never ever implement a feature on "why not?" basis.
This is the way to hell and netbeans already face this. "why yes" and
simplification, this is the way to go.
Comment 16 _ gtzabari 2004-02-18 17:14:16 UTC
David,

   On the "why yes" issue, I would normally agree with you except in
this case I know why yes: the users assume that any tab will act like
any other tab.

   On the Jano issue, is Jano a person or a group of people? I haven't
seen any feedback from him/them on this issue at all. Are they away?
Did we maybe not CC them on it?
Comment 17 David Simonek 2004-02-18 17:42:04 UTC
Jano is the name of person :-) And he already commented, see above:
Additional Comments From Jan Rojcek 2004-02-06 08:13 PST
---
He will comment more for sure, but he is very busy, so be patient.
(you know, explain our thoughts to all internet is a bit time
expensive..oh God how I love close source :-) OK I'm joking.
Comment 18 jrojcek 2004-02-19 09:40:12 UTC
Gili, you raised some very good points. I understand your concern about not having a 
simple way of controlling tabs in output window.

The problem is that the inner tabs has not been intended to be handled be windowing 
system. Changing this fact (even by providing just a simple shortcut Ctrl-F4, which means 
modifying behavior of windowing system action) is a risk that we can't afford to take for 
3.6. Therefor I proposed a compromise solution, which would solve the keyboard 
accessibility by providing special shortcuts for closing the inner tabs.

So, lets solve this high priority a11y issue by implementing Ctrl-DEL shortcuts and open a 
P3 issue asking for solving the inconsistency in tabs behavior.

Would that work?
Comment 19 David Simonek 2004-02-19 10:04:47 UTC
I would modify the solution - 
try first to implement Ctrl+F4 closing inner tab and only if we fail
then settle on Ctrl+Del.

Btw, I believe long term solution is to try simplify output window and
similar ones. IntelliJ for example uses output tree to get rid of such
problems.
Comment 20 _ gtzabari 2004-02-19 11:34:22 UTC
Agreed with David.
Comment 21 _ tboudreau 2004-02-20 14:52:30 UTC
Taking this issue.  *Should* be simple to implement - just add our own action bound to 
CTRL-F4 in the output window pane component; if there is no component, then the winsys 
action should be delegated to.

Setting priority to P3 - nothing is throwing exceptions or extremely broken here, just 
inconvenient.
Comment 22 _ tboudreau 2004-02-21 00:17:08 UTC
Fixed in trunk, as part of fix of issue 37288.  Ctrl-F4 will now close a tab if present; if no 
tabs, will close the output window.
Comment 23 Jesse Glick 2004-02-27 23:33:13 UTC
Note that the behavior when there is only one tab (i.e. no visible tab
row) is inconsistent: it "closes" the Output Window, which as I have
mentioned elsewhere, has the completely counterintuitive behavior of
not actually closing any tabs in it, but simply hiding the window
temporarily.

I.e. if you have three tabs A, B, and C open in the output window,
none of which you want, and you select C and press Ctrl-F4 three
times, C will be closed, then B (leaving A open but tabless), then A.
But now if you do something causing a different tab to open (D), the
output window will reappear in tabbed mode - with A and D open! Subtle
but aggravating; you tried to close A, after all.
Comment 24 _ tboudreau 2004-02-28 02:24:43 UTC
Easy to fix, and needs to be anyway:  The action should also be mapped from the tabbed 
pane.
Comment 25 _ tboudreau 2004-02-29 04:30:59 UTC
Fixed in trunk.

[fix to close tab when focus is on the tabbed pane]
Checking in src/org/netbeans/core/output/OutputView.java;
/cvs/core/output/src/org/netbeans/core/output/OutputView.java,v  <-- 
OutputView
.java
new revision: 1.17; previous revision: 1.16
done


[fix to close last component before closing tab]

Checking in src/org/netbeans/core/output/OutputTabInner.java;
/cvs/core/output/src/org/netbeans/core/output/OutputTabInner.java,v 
<--  Output
TabInner.java
new revision: 1.21; previous revision: 1.20
done
Checking in src/org/netbeans/core/output/OutputView.java;
/cvs/core/output/src/org/netbeans/core/output/OutputView.java,v  <-- 
OutputView
.java
new revision: 1.18; previous revision: 1.17
done
Processing log script arguments...
Mailing the commit message to cvs@core.netbeans.org (from
tboudreau@netbeans.org
)
Comment 26 Marian Mirilovic 2004-06-30 11:07:03 UTC
verified in [nb_dev](200406291800)