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