Movable Document Modal Dialogs
-
This is more for the user interface experts, than the cocoa
programming experts...
What is the suggested user interface when creating modal dialogs for
documents that have be movable? For our application (think of it as a
drawing program), the user sometimes NEEDS to be able to view the
document under the modal dialog. We can not use sheets, because they
cover up the document window itself. We can not do Inspectors, since
the operations are intensely modal. We could make the dialog box
application modal (ie. one at any given time), but our client has
really requested document modal, since they are often working with
more then one document at the same time. I know how to write and
invoke the code to make any given window modal to another, but I am
more concerned about the user interface of this. Is there any
suggested way to do this? Something to clue the user to what is going
on?
Thanks,
Steve -
On 3 Jul 2009, at 1:23 PM, Development wrote:> What is the suggested user interface when creating modal dialogs for
> documents that have be movable? For our application (think of it as
> a drawing program), the user sometimes NEEDS to be able to view the
> document under the modal dialog. We can not use sheets, because
> they cover up the document window itself. We can not do Inspectors,
> since the operations are intensely modal. We could make the dialog
> box application modal (ie. one at any given time), but our client
> has really requested document modal, since they are often working
> with more then one document at the same time. I know how to write
> and invoke the code to make any given window modal to another, but I
> am more concerned about the user interface of this. Is there any
> suggested way to do this? Something to clue the user to what is
> going on?
I don't think you can do it with off-the-shelf components.
An idea, I don't know how difficult: In the document window, under the
title bar, animate in an additional NSView containing the modal
information. It would push the document content down. Institute a
runloop mode (or possibly just a document flag for your UI validation
to inspect) that enables viewing the document, but not changing its
state.
â F
--
Fritz Anderson -- Xcode 3 Unleashed: Now in its second printing -- <http://x3u.manoverboard.org/> -
On Jul 3, 2009, at 8:23 PM, Development wrote:> This is more for the user interface experts, than the cocoa
> programming experts...
>
> What is the suggested user interface when creating modal dialogs for
> documents that have be movable? For our application (think of it as
> a drawing program), the user sometimes NEEDS to be able to view the
> document under the modal dialog. We can not use sheets, because
> they cover up the document window itself. We can not do Inspectors,
> since the operations are intensely modal. We could make the dialog
> box application modal (ie. one at any given time), but our client
> has really requested document modal, since they are often working
> with more then one document at the same time. I know how to write
> and invoke the code to make any given window modal to another, but I
> am more concerned about the user interface of this. Is there any
> suggested way to do this? Something to clue the user to what is
> going on?
>
> Thanks,
>
> Steve
This may be a really dumb idea, since I'm not a very experienced Cocoa
developer, but can a drawer be document-modal?
Wagner -
You know, that is not a half bad idea. It won't work for all the
situations (some of the dialog boxes are to big to fit in a drawer),
but it would for several of the smaller ones. Also, if the document
is full screen, drawers would be an issue. I will still look for a
better solution for larger dialogs.
Thanks
Steve
On Jul 3, 2009, at 2:43 PM, WT wrote:> On Jul 3, 2009, at 8:23 PM, Development wrote:
>
>> This is more for the user interface experts, than the cocoa
>> programming experts...
>>
>> What is the suggested user interface when creating modal dialogs
>> for documents that have be movable? For our application (think of
>> it as a drawing program), the user sometimes NEEDS to be able to
>> view the document under the modal dialog. We can not use sheets,
>> because they cover up the document window itself. We can not do
>> Inspectors, since the operations are intensely modal. We could
>> make the dialog box application modal (ie. one at any given time),
>> but our client has really requested document modal, since they are
>> often working with more then one document at the same time. I know
>> how to write and invoke the code to make any given window modal to
>> another, but I am more concerned about the user interface of this.
>> Is there any suggested way to do this? Something to clue the user
>> to what is going on?
>>
>> Thanks,
>>
>> Steve
>
> This may be a really dumb idea, since I'm not a very experienced
> Cocoa developer, but can a drawer be document-modal?
>
> Wagner -
On 3 Jul 2009, at 19:23:04, Development wrote:> This is more for the user interface experts, than the cocoa
> programming experts...
>
> What is the suggested user interface when creating modal dialogs for
> documents that have be movable? For our application (think of it as
> a drawing program), the user sometimes NEEDS to be able to view the
> document under the modal dialog. We can not use sheets, because
> they cover up the document window itself. We can not do Inspectors,
> since the operations are intensely modal. We could make the dialog
> box application modal (ie. one at any given time), but our client
> has really requested document modal, since they are often working
> with more then one document at the same time. I know how to write
> and invoke the code to make any given window modal to another, but I
> am more concerned about the user interface of this. Is there any
> suggested way to do this? Something to clue the user to what is
> going on?
>
> Thanks,
How about a collapsible sheet? That is, a normal sheet, but at the top
there is a disclosure triangle that hides the whole contents of the
sheet, making it about the size of a toolbar. It might not be what you
want, but it's an idea. -
On Jul 3, 2009, at 9:01 PM, Development wrote:> You know, that is not a half bad idea. It won't work for all the
> situations (some of the dialog boxes are to big to fit in a drawer),
> but it would for several of the smaller ones. Also, if the document
> is full screen, drawers would be an issue. I will still look for a
> better solution for larger dialogs.
>
> Thanks
>
> Steve
Heh, for once, one of my off-the-wall ideas actually makes sense. :)
But, you know, why not combine the drawer idea with the collapsible
view idea? You then could fit a large dialog in a drawer, by allowing
parts of the dialog to be collapsible/expandable in turns, almost like
a radio button kind of behavior: when the user expands a section of
the dialog, another collapses to keep the dialog inside the drawer.
Wagner -
On Jul 3, 2009, at 11:23, Development wrote:> What is the suggested user interface when creating modal dialogs for
> documents that have be movable? For our application (think of it as
> a drawing program), the user sometimes NEEDS to be able to view the
> document under the modal dialog. We can not use sheets, because
> they cover up the document window itself. We can not do Inspectors,
> since the operations are intensely modal. We could make the dialog
> box application modal (ie. one at any given time), but our client
> has really requested document modal, since they are often working
> with more then one document at the same time. I know how to write
> and invoke the code to make any given window modal to another, but I
> am more concerned about the user interface of this. Is there any
> suggested way to do this? Something to clue the user to what is
> going on?
Seems to me you want to do two things: lock out a document and display
another window, and the ideal way to lock out a document is to use a
sheet. So do these two things.
First, put up a sheet on your document window that's small (say one
text line high, with a brief message explaining why the document is
locked out) and has no buttons. Then display a second (non-modal)
window as your dialog.
Closing the dialog would also end the sheet of the document window.
You might have to slightly redesign your document window if the little
sheet would cover up something important at the top of the window. -
On Fri, 3 Jul 2009 14:23:04 -0400, Development
<development...> said:> For our application (think of it as a
> drawing program), the user sometimes NEEDS to be able to view the
> document under the modal dialog. We can not use sheets, because they
> cover up the document window itself.
Not necessarily. It is a delightful, yet little-known, fact that sheets can
emerge from *anywhere* on a window - not merely from its top. So why not
have the sheet emerge from a spot on the window where it won't cover any
important info? For example you could have the sheet emerge from the *lower
edge* of the window. (If the window is low on the screen, it moves upwards
automatically to permit the display of the sheet.) This is unusual but only
because (IMHO) not enough developers take advantage of this feature! :) m.
--
matt neuburg, phd = <matt...>, <http://www.tidbits.com/matt/>
A fool + a tool + an autorelease pool = cool!
AppleScript: the Definitive Guide - Second Edition!
http://www.tidbits.com/matt/default.html#applescriptthings -
On 4 Jul 2009, at 5:41 PM, Matt Neuburg wrote:> It is a delightful, yet little-known, fact that sheets can emerge
> from *anywhere* on a window - not merely from its top. ... This is
> unusual but only because (IMHO) not enough developers take advantage
> of this feature!
More would take advantage if they knew. It's an NSWindow delegate
method called window:willPositionSheet:usingRect:.
â F -
On Sun, 5 Jul 2009 08:52:12 -0500, Fritz Anderson <fritza...>
said:> On 4 Jul 2009, at 5:41 PM, Matt Neuburg wrote:
>
>> It is a delightful, yet little-known, fact that sheets can emerge
>> from *anywhere* on a window - not merely from its top. ... This is
>> unusual but only because (IMHO) not enough developers take advantage
>> of this feature!
>
> More would take advantage if they knew. It's an NSWindow delegate
> method called window:willPositionSheet:usingRect:.
Sure - I *said* it was little-known. But the *information* isn't hard to
find; there's a chapter of the Sheet Programming Guide devoted to this
point:
http://developer.apple.com/documentation/Cocoa/Conceptual/Sheets/Sheets.htm
l
It's the chapter called "Positioning Sheets". It's hard to get more up front
than that. m.
--
matt neuburg, phd = <matt...>, <http://www.tidbits.com/matt/>
A fool + a tool + an autorelease pool = cool!
AppleScript: the Definitive Guide - Second Edition!
http://www.tidbits.com/matt/default.html#applescriptthings


