On 3/13/07, Veit Guna <[EMAIL PROTECTED]> wrote:

> The current design assumption is that you can only have one active
> dialog per window (or frame), and that you want to control the
> lifetime.

Hm. Is the lifetime of the dialog not implicitly configured through the xml? 
There's a start point and an end point. That seems sufficient to me to specify 
the lifetime. Since there can be only one active dialog. Although it could 
happen that the user reaches the end page - navigates further and then 
navigates back with the browser buttons to the dialog. What happens then? In 
what situation do I want to programmatically control a _simple_ dialog? 
Couldn't that be configured instead?

Because all evidence that the dialog was there is totally gone, the
dialog will not be automatically reinstated when the back arrow is
pressed.  It is therefore likely that any references your pages have
to dialog instance specific state information will fail.

You're going to find that nearly every "conversation" or "dialog" type
framework is going to have some level of problems with back buttons.
If you can't convince your users that they are operating a web
*application* and not a web *site*, you're likely to have navigation
issues.



> > What comes to my mind is, why doesn't the framework automatically stops
> > the running dialog and starts it over? What is the best practice with
> > shale to implement this usecase?
>
> I suppose it would be possible to implement such a thing.  What's not
> clear is why you would want to do it.  Could you help me understand
> your use case a bit?

Sure. Think of a webpage, that has a menu on the left. There're entries like "Search", "User Profile", "Register" and 
so on. The user can access the menu all the time during navigation in the webapp. Now he clicks on "Search" and the dialog starts. He 
clicks some steps forward in the dialog and decides (in the middle of the dialog) to "Register". IllegalStateException occurs. Also, when 
he presses "Search" to start the dialog again, this won't be possible. Since he starts the dialog again, why not stop the active dialog and 
start a new one automatically? I could think of a configurable dialog attribute in the xml like "autostartover=true" or something.

As above, the dialog manager doesn't deal with back buttons crossing a
dialog lifetime boundary at all.  That's your responsibility if you
want to do it.  Among the problems to consider -- how do you restore
the state data that was previously there?  The dialog manager has no
clue what kind of thing you stored in the "data" property.  Only the
app can figure that out.  Let alone figuring out what state you should
be returned to ...


Hm, as I'm writing this, perhaps I misunderstand the dialog component? In my point of view, shale 
should help me to implement pageflows. Independent of whether the flow is used in a popupwindow 
(dialog, no "menu") or included in a normal navigation case ("main" browser 
window, with menus etc.). Do I understand it correctly?

You do understand correctly what the dialog component is for.  What
you're missing is that it doesn't deal with the "back arrow backing
into a previously completed dialog" use case, and I don't see any
general purpose way that this feature could be provided.



> > Another thing is, clicking other links in the menu when a dialog is
> > active. Same here: IllegalStateException. A user doesn't care about
> > program-friendly navigation. A user want's to navigate everywhere he
> > likes to.
> For dealing with the back and forward buttons, check out the context
> init parameter "org.apache.shale.dialog.basic.STRATEGY" if you are
> using the basic implementation.  You can control whether and how state
> information is synchronized as the user moves forwards or backwards
> through the dialog.

Yes I know. This is very useful because with top or stack the dialog data will 
automatically be set to a consistent (to the current dialog page) state.


> For dealing with navigation from inside the dialog to somewhere
> outside, the thing to remember is that the dialog manager takes over
> normal navigation processing when a dialog is active.  Therefore, it
> is up to you to provide transitions for *all* possible outcomes that
> might be returned from the current page.  You don't have to change the

That might be :). But in which real life webapp there is ONLY a dialog active 
and no menus, etc.? If we talk only about modal popup windows, that might be 
true, but in all other cases the dialog is embedded in a bunch of other links 
around. I really don't want to put ALL the links/outcomes around the dialog 
(menu etc.) in the dialog definition :)!

So, If the shale dialog component is only designed for modal popups, all makes 
sense and you can forget everything I wrote above.

It's not just modal popups ... it's also for users who use the
navigation controls provided by the application, and not the ones
provided by the browser :-).


Veit

Craig


--
"Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: www.gmx.net/de/go/mailfooter/topmail-out

Reply via email to