[net.micro.mac] Time for SubMenus

keith@ssc-vax.UUCP (Keith Nemitz) (10/01/85)

This is an open call to Apple INC for a possible enhancement to the Mac via
the new ROMs.

I've been examining the Amiga, which in general has a poorer user interface,
but one of it's features caught my eye.  SubMenus.

The submenu is an optional menu placed at the side of an item on an already
open menu.  From there, the user can select more detailed information concerning
the main item.  For example, the desired fontsize of a selected font.  It's
neat.

Well, that's the best I can do to make it a reality.  Further discussion and
opinions on the net might sway the Apple giant into action. How about it?

                                             keith



"...
They showed you a statue 
And told you to pray.
They built you a temple
And locked you away.
..."

allison@convexs.UUCP (10/03/85)

> This is an open call to Apple INC for a possible enhancement to the Mac via
> the new ROMs.
> I've been examining the Amiga, which in general has a poorer user interface,
> but one of it's features caught my eye.  SubMenus.
> The submenu is an optional menu placed at the side of an item on an already
> open menu.  From there, the user can select more detailed information con-
> cerning the main item.  For example, the desired fontsize of a selected font.
> It's neat.
>                                              keith

I don't know about this!  First of all, you can always do like Microsoft Word
if you want sub-menus.  However, I think that is one of the main weaknesses
of Word - two selections are required just to change a font!  Back to the 
example at hand, what if the user wanted to change the fontsize without
changing the font?  Are you still going to require him to select the (same)
font?  Or are you going to have another menu, for font sizes, in this case?
Sounds like this idea is a waste of ROM space.  There probably are cases
where the submenu idea is valid, but I doubt if that is the general rule.

Brian Allison              {allegra, ihnp4, uiucdcs, ctvax}!convex!allison
Convex Computer Corp.                          - OR -
Richardson, TX         {allegra, ihnp4, uiucdcs, ctvax}!convex!convexs!allison

usenet@ucbvax.ARPA (USENET News Administration) (10/04/85)

Um, unless I'm mistaken, the Mac already supports sub-menus in a way that
the Amiga never will.  You see, you can define you're own menu types.
If you notice the rightmost menu "Keypad" in MacTerminal, you've got an
example of a custom menu-type.  To make a sub-menu, you'ld simply define
you're own menu type.  True, it's not supported by the OS routines in
that the Mac will tell you which item in the sub menu you called, nor will
you be able to make command-key assignments the way you would for normal
menus, but you still can have them.

The major trouble with sub-menus, it seems to me, is exactly how you would
implement them.  I personally dislike the way the Amiga did them.  It
lacks the polish and class of the Mac's envorinment.  I'm not quite sure
just how I'd implement them myself.

But!!!, if you really want Apple to do something such as this, I'd suggest
that you make a program w/sub-menus (custom ones) and then send a copy
to Apple and the net, to get a response.  I'd like to see such myself,
but I'm not sure whether it can be done in a smooth, clear, and polished way.

warack@aero.ARPA (Chris Warack) (10/07/85)

overlap
the first menu.  The first item of the sub-menu would be next to the
main menu item.  If the user moves the mouse directly on the sub-menu
(still dragging), he can then choose any item on the sub-menu just as if
it was a main menu.  If he moves the mouse back to the main menu and/or
away from the sub-menu item on the main menu, the sub-menu disappears.
In summary, the sub-menu works like a main menu, but instead of being
pulled-down from the menu bar, it is pulled down by high-liting its item
in another menu.

The advantages of this:  It can be used to keep menus less cluttered by
allowing more levels of grouping.  It is much faster than using dialog
boxes.  It could be easily implemented -- just allow menu items to
include menus (thus menu-select and other toolbox calls would return the
correct codes and they could be stored as menu resources and used in
menu bars as well -- sub-menus would have to have unique menuID's of
course). 

Disadvantage:  Although I said easy to implement above; I meant this on
an application level.  It would require some low level witchery by Apple
to implement.

Note that this kind of implementation would allow (theoretically) a
number of nested sub-menus.

What do people think?  BTW, how does the Amiga do it?

Chris
-- 
 _______
|/-----\|  Chris Warack			(213) 648-6616
||hello||
||     ||  warack@aerospace.ARPA
|-------|  warack@aero.UUCP
|@  ___ |  {seismo!hao | tektronix}!hplabs \
|_______|                          !sdcsvax - !sdcrdcf!trwrb!trwrba!aero!warack
  || ||  \   Aerospace Corporation, PO Box 92957, LA, 90009, Station M1-117
 ^^^ ^^^  `---------(|=

granvold@tymix.UUCP (Tom Granvold) (10/11/85)

-
	Yes the Amiga has submenus that come out from the side of the main
menu, at least my Amiga has them :-)  As far as I can tell on the Amiga
only one level of submenu is allowed.

Tom Granvold
ucbvax!allegra!olivab!tymix!granvold

lamy@utai.UUCP (Francois Lamy) (10/14/85)

In article <492@aero.ARPA> warack@aero.UUCP (Chris Warack) writes:
>(...)  The first item of the sub-menu would be next to the
>main menu item.  If the user moves the mouse directly on the sub-menu
>(still dragging), he can then choose any item on the sub-menu just as if
>it was a main menu. (...)
>
>What do people think?  BTW, how does the Amiga do it?
> (...)


As far as I can tell, this is exactly the Dandelion approach (except of course
that Xerox uses pop-up menus or menus fixed in a pane).  Would Xerox sue?
( :-(  , Apple!) (How do you make a face with a tongue sticking out?).

Such sub-menus are very easy to use.  It does not mess with the very important
capability of being able to look at all the choices available through menus.

Jean-Francois Lamy
U. of Toronto: lamy@utai.toronto.csnet, {decvax,allegra,utzoo}!utcsri!utai!lamy
U. of Montreal: lamy@iro.udem.cdn (from csnet: lamy%iro.udem.cdn@ubc.csnet) .

adams1@gumby.UUCP (10/16/85)

> Such sub-menus are very easy to use.  It does not mess with the very important
> capability of being able to look at all the choices available through menus.

Well, I am pretty good with my mouse and I even had problems with the Amiga
sub-menus.  When I see others having trouble choosing things off a mac menu,
or missing a push button, I wonder how hard of a time THEY would have using
sub-menus.  For those of you who haven't tried one, they are a pain.  You go
up and grab your main menu, then move down to the item you want, then you
have to *carefully* navigate a ninety degree turn and go off to the right,
then pick your sub-menu item.  If you accidentally move too far up or down
(usually RIGHT BEFORE you get to the sub-menu, then you will have chosen the
WRONG main menu item, and will be on IT'S sub-menu.
  I invite every one to try an amiga, and then decide if this is what you
  really want.
  
  Dennis Adams
  adams1@gumby.wisc.edu

tim@k.cs.cmu.edu.ARPA (Tim Maroney) (10/20/85)

Dennis Adams made some good points concerning the difficulting of using the
proposed submenus.  This can't be solved by having them pop up overwriting
the current menu, because that destroys browsing and access to lower menu
items.

One solution is directly moving the mouse location to the start of the
sub-menu, which you can do by twiddling marginally documented low-memory
globals.  But if you were really trying to run down the list of menus, this
wouldn't be very nice, since you'd be back to the right-angle precision turn
that Dennis rightly complained about.

Perhaps the only easy-to-use solution would involve a fusion approach.  When
the mouse passes over a menu item which opens a submenu, the submenu appears
to the right.  The submenu can be directly moved to using mouse movement, or
the main menu item may be selected.  If the latter, the mouse button is
released while still selecting the main menu item.  This causes the menu
definition to be called with mChooseMsg.  The menu definition can look at
the item, see if it opens a submenu, and if so, move the mouse location onto
the submenu and allow selection from the submenu.

I hope everyone realizes that submenus would require that extending the Menu
Manager.  The popping up of submenus during mouse dragging cannot be
controlled directly by the menu definition procedure; the only way to do
this in the current system would be to install a vertical retrace task on
mDrawMsg that checks to see if conditions are such that a submenu should be
brought up or removed, removing it on mChooseMsg.  That would be incredibly
kludgy, though not impossible.
-=-
Tim Maroney, CMU Center for Art and Technology
Tim.Maroney@k.cs.cmu.edu	uucp: {seismo,decwrl,etc.}!k.cs.cmu.edu!tim
CompuServe:	74176,1360	My name is Jones.  I'm one of the Jones boys.

lewak@sdcsvax.UUCP (George Lewak) (10/28/85)

In article <610@k.cs.cmu.edu.ARPA> tim@k.cs.cmu.edu.ARPA (Tim Maroney) writes:
>...
>One solution is directly moving the mouse location to the start of the
>sub-menu, which you can do by twiddling marginally documented low-memory
>globals.  But if you were really trying to run down the list of menus, this
>wouldn't be very nice, since you'd be back to the right-angle precision turn
>that Dennis rightly complained about.
>
>Perhaps the only easy-to-use solution would involve a fusion approach.  When
>the mouse passes over a menu item which opens a submenu, the submenu appears
>to the right.  The submenu can be directly moved to using mouse movement, or
>the main menu item may be selected.  If the latter, the mouse button is
>released while still selecting the main menu item.  This causes the menu
>definition to be called with mChooseMsg.  The menu definition can look at
>the item, see if it opens a submenu, and if so, move the mouse location onto
>the submenu and allow selection from the submenu.
>
>I hope everyone realizes that submenus would require that extending the Menu
>Manager.  The popping up of submenus during mouse dragging cannot be
>controlled directly by the menu definition procedure; the only way to do
>this in the current system would be to install a vertical retrace task on
>mDrawMsg that checks to see if conditions are such that a submenu should be
>brought up or removed, removing it on mChooseMsg.  That would be incredibly
>kludgy, though not impossible.
>-=-
>Tim Maroney, CMU Center for Art and Technology
>Tim.Maroney@k.cs.cmu.edu	uucp: {seismo,decwrl,etc.}!k.cs.cmu.edu!tim
>CompuServe:	74176,1360	My name is Jones.  I'm one of the Jones boys.


	Wouldn't it be easy just to rewrite the menu definition
	procedure?  There is one problem though: how do you create
	a "window" (which overlays the other windows on the screen)
	and put the previous stuff back on the screen immediately
	after the "window" is closed (rather than after an update
	event).  This is what happens when you pull down a menu
	in the menu bar - a "window" (or a grafport, or whatever)
	appears to show the items.  Anyway, once we can do this
	ourselves, sub-menus should be easy by just modifying the
	original menu definition.

			Victor Romano

tim@k.cs.cmu.edu (Tim Maroney) (10/31/85)

Victor Romano:
> Wouldn't it be easy just to rewrite the menu definition procedure?
 
No.  There are three messages to menus, one to draw the whole menu, one to
handle mouse-ups, and one to figure out the menu size.  There's no message
to handle hiliting of a particular item during dragging.  That's why, as I
said, you'd have to use a back door, such as installing a vertical retrace
task that checks the mouse, or patching MenuSelect.  There are no hooks in
the existing Menu Manager (none documented, anyway) that would allow
sub-menus to pop up as you dragged through the menu, the proposed behavior.
 
> There is one problem though: how do you create
> a "window" (which overlays the other windows on the screen)
> and put the previous stuff back on the screen immediately
> after the "window" is closed (rather than after an update
> event).  This is what happens when you pull down a menu
> in the menu bar - a "window" (or a grafport, or whatever)
> appears to show the items.
 
That part's easy!  Get a block from the Memory Manager, use CopyBits to copy
from the screen rectangle about to be overdrawn into the heap block, draw
the menu, and when the menu goes away, reverse CopyBits and dispose of the
heap block.  Don't use a new window or grafPort, just the Window Manager
port (saving and restoring the current grafPort, of course).
-=-
Tim Maroney, CMU Center for Art and Technology
Tim.Maroney@k.cs.cmu.edu	uucp: {seismo,decwrl,etc.}!k.cs.cmu.edu!tim
CompuServe:	74176,1360	Religion is a branch of psychology.