incubator-adffaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Danny Robinson" <dannyjrobin...@gmail.com>
Subject Re: Early Prototype - Dialog using DHTML / iFrame
Date Wed, 07 Feb 2007 20:56:43 GMT
Thanks Adam.

I'm surprised it works at all on Safari, I don't have a Mac I can test on!
So that's good news, even if it does need a tweak.

I'll take a look at the overlap you mentioned.

One the size issue, I looked (in firefox) at launchDialog.jspx and noticed
that it still uses the windowWidth & windowHeight attributes, which if you
remove should resize to the content (at least it does for me).  If you leave
them in, then they just need to be increased.

Danny

On 2/7/07, Adam Winer <awiner@gmail.com> wrote:
>
> FWIW, a couple things I've noticed:
> - On Safari, the popups have no border or background;  in the
>   launchDialog.jspx demo, when you have two popups up together,
>   the title for one popup actually
>   overlaps the next (are they both being placed at the
>   same z-order?)
> - The sizing algorithm doesn't seem to work that well - everything
>   is a bit too small (Safari + Firefox).
>
> -- Adam
>
>
> On 2/6/07, Adam Winer <awiner@gmail.com> wrote:
> > Committed this patch - thanks!
> >
> > -- Adam
> >
> >
> > On 2/6/07, Danny Robinson <dannyjrobinson@gmail.com> wrote:
> > > OK, just uploaded an updated patch.
> > >
> > > Dialogs will now appear at a fixed size if specified, or will resize
> to that
> > > of the first dialog page and remain that size for all other pages.
> > > Started work on also removing frame redirect from date picker also.
> > >
> > > Danny.
> > >
> > >
> > >
> > > On 2/3/07, Adam Winer <awiner@gmail.com> wrote:
> > > >
> > > > On 2/3/07, Danny Robinson <dannyjrobinson@gmail.com> wrote:
> > > > > uploaded patch to jira - including extra bits for setting the
> dialog
> > > > title
> > > > > using BodyRenderer.
> > > >
> > > > Nice!
> > > >
> > > > > A few quick questions also:
> > > > >
> > > > > Could we add the popup config entry to the trinidad config file
> rather
> > > > than
> > > > > web.xml and allow it to use a value binding - this way we can test
> both
> > > > from
> > > > > the same test/demo app?
> > > >
> > > > We've generally stuck to using trinidad-config basically for things
> > > > that are on the RequestContext, and I don't think this is
> > > > going to end up there.
> > > >
> > > > For the purposes of this branch, it'd be OK if the function
> > > > that tested if popups were supported had something really
> > > > goofy like:
> > > >   facesContext.getViewRoot().getViewId().contains("Popup")
> > > >
> > > > ... which'd be useful enough for testing, which is what
> > > > this branch is for.
> > > >
> > > >
> > > > > Quick questions:
> > > > > Should we use the height/width properties as the master setting
> for the
> > > > > dialog size, and only resize to content if they were not set?  I
> guess
> > > > we
> > > > > wouldn't want to auto-resize to content in every situation, or
> would we
> > > > want
> > > > > to always initially set it.
> > > >
> > > > Perhaps you use height/width as a minimum setting, and grow if
> they're
> > > > not set.  Or, height/width are an absolute rule.
> > > >
> > > > > If we use the BodyRenderer approach to also set the dialog size,
> how do
> > > > we
> > > > > ensure it doesn't keep resizing if the dialog runs to many pages?
> > > >
> > > > You could just stash a JS flag on the popup object;  once
> > > > resized, flip the flag and stop resizing.
> > > >
> > > > > Also title will change as you move from page to page in dialog -
I
> guess
> > > > > this is appropriate through.
> > > >
> > > > Yes, that's what you want.
> > > >
> > > > > We have a few more options for closing dialogs also as the
> javascript
> > > > > component could even close modals if you clicked-off the dialog -
> in
> > > > some
> > > > > instances this could be useful.
> > > >
> > > > Indeed, could be very useful!
> > > >
> > > > -- Adam
> > > >
> > > > > On 2/3/07, Adam Winer <awiner@gmail.com> wrote:
> > > > > >
> > > > > > Danny,
> > > > > >
> > > > > > Could you attach that patch to
> > > > > > http://issues.apache.org/jira/browse/ADFFACES-307?
> > > > > > This is the more official way of doing things.
> > > > > >
> > > > > > -- Adam
> > > > > >
> > > > > >
> > > > > > On 2/2/07, Adam Winer <awiner@gmail.com> wrote:
> > > > > > > On 2/2/07, Danny Robinson <dannyjrobinson@gmail.com>
wrote:
> > > > > > > > Adam,
> > > > > > > >
> > > > > > > > I've posted a new patch file to thefoxberry.com if
you want
> to
> > > > take a
> > > > > > look.
> > > > > > > > It's based on your sandbox so it should apply cleanly
with
> less
> > > > for
> > > > > > you to
> > > > > > > > do this time ;-).
> > > > > > > >
> > > > > > > > I fixed a few of the todo's.
> > > > > > > >
> > > > > > > > - Most importantly, for popup-based dialogs, do not
use a
> FRAMESET
> > > > > > > >   inside of the IFRAME;  just use the IFRAME
> > > > > > >
> > > > > > > Great!
> > > > > > >
> > > > > > > > DONE - small changes to DialogRequest and .CoreRenderKit
> > > > > > > >
> > > > > > > > - Added javascript code to only register events when
popup
> shown
> > > > > > > > DONE
> > > > > > > >
> > > > > > > > - Populate title of the popup based on the title of
the
> dialog's
> > > > > > content
> > > > > > > > I've added this to the DialogPopup.js, but because
we've
> removed
> > > > the
> > > > > > > > frameset from the popup, there doesn't seem a clean
and safe
> way
> > > > to
> > > > > > get an
> > > > > > > > onload event from the iframe so we know to go grab
the
> title.  The
> > > > > > only way
> > > > > > > > I see it will work is if something is added into the
onload
> of the
> > > > > > actual
> > > > > > > > dialog page (e.g. parent.TrPanelPopup.getCurrentPanelPopup
> > > > ().setTitle(
> > > > > > > > document.title);) which works for me.  Thoughts?
> > > > > > >
> > > > > > > I was thinking we could rely on BodyRenderer;  if we detect
> > > > > > > when we're inside of a dialog (perhaps by looking at
> > > > > > > pageFlowScope), and when we know that dialogs are configured
> > > > > > > to use popups, fire Javascript in the <body>'s onload.
 If
> > > > > > > they don't want to use our <body> renderer, then
they don't
> > > > > > > get this fun.
> > > > > > >
> > > > > > > BTW, always be very careful when getting a property off
of
> > > > "parent"...
> > > > > > > Wrap it in try/catch, because if the parent is in a different
> > > > > > > URL domain, you can get a security exception.
> > > > > > >
> > > > > > >
> > > > > > > >
> > > > > > > > - Implement sizing correctly
> > > > > > > > Same as for title - we need to know when the iframe
has
> finished
> > > > > > loading.
> > > > > > > >
> > > > > > > > Interestingly I can't seem to get the trinidad-demo
stuff to
> run
> > > > as it
> > > > > > has
> > > > > > > > errors complaining about a null process scope.  Anyway
- it
> works
> > > > in
> > > > > > my own
> > > > > > > > little web app using the add number demo and date
picker.
> > > > > > >
> > > > > > > Hrm, when I get a chance to merge it in, I'll have a look.
> > > > > > >
> > > > > > > -- Adam
> > > > > > >
> > > > > > > >
> > > > > > > > Danny
> > > > > > > >
> > > > > > > > On 1/31/07, Adam Winer <awiner@gmail.com> wrote:
> > > > > > > > >
> > > > > > > > > Danny,
> > > > > > > > >
> > > > > > > > > I grabbed the patch, made a branch, and applied
it.  I
> fixed up
> > > > > > > > > some things:
> > > > > > > > >
> > > > > > > > > - Moved (almost) all of the popup dialog and
panel popup
> JS code
> > > > > > into
> > > > > > > > > TrPanelPopup and TrPopupDialog wrapper objects
> > > > > > > > > - Fix coding convention problems: no tabs allowed,
braces
> on new
> > > > > > lines
> > > > > > > > > - Instead of removing the code that launched
new windows
> for
> > > > > > dialogs, hide
> > > > > > > > > it behind a web.xml context init parameter (currently
> defaulting
> > > > to
> > > > > > the
> > > > > > > > > old
> > > > > > > > >   style)
> > > > > > > > > - Use resource bundle for translatable contents
> > > > > > > > > - Load JS automatically
> > > > > > > > >
> > > > > > > > > There's plenty to do still, most importantly:
> > > > > > > > > - Implement sizing correctly
> > > > > > > > > - Populate title of the popup based on the title
of the
> dialog's
> > > > > > content
> > > > > > > > > - Most importantly, for popup-based dialogs,
do not use a
> > > > FRAMESET
> > > > > > > > >   inside of the IFRAME;  just use the IFRAME
> > > > > > > > >
> > > > > > > > > But, that said:  cool stuff!
> > > > > > > > >
> > > > > > > > > I think before we could look at merging anything
into
> trunk,
> > > > > > > > > we'd need an Apache licensing agreement signed
off on
> (because
> > > > > > > > > it's a non-trivial chunk of code...)
> > > > > > > > >
> > > > > > > > > -- Adam
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 1/30/07, Danny Robinson <dannyjrobinson@gmail.com>
> wrote:
> > > > > > > > > > Patch file available here: http://thefoxberry.com/
> > > > > > > > > >
> > > > > > > > > > Only note, is that this also contains the
panelPopup
> > > > component,
> > > > > > and that
> > > > > > > > > > you'll need to include the two .js files
into the
> servlet that
> > > > > > merges
> > > > > > > > > the
> > > > > > > > > > common javascript.  If I get chance later,
I'll do this
> and
> > > > repost
> > > > > > the
> > > > > > > > > > patch.
> > > > > > > > > >
> > > > > > > > > > Should work fine in Firefox or IE, others
are untested.
> > > > > > > > > >
> > > > > > > > > > Danny
> > > > > > > > > >
> > > > > > > > > > On 1/30/07, Danny Robinson <dannyjrobinson@gmail.com>
> wrote:
> > > > > > > > > > >
> > > > > > > > > > > I'll post up a .patch file later today.
> > > > > > > > > > >
> > > > > > > > > > > I used custom .js for the dialog, as
I wasn't sure how
> we'd
> > > > go
> > > > > > about
> > > > > > > > > > > integrating a 3rd party lib, and the
few I looked at
> didn't
> > > > > > quite fit
> > > > > > > > > right,
> > > > > > > > > > > or had license issues.  Besides, it
was good
> > > > practice.  However,
> > > > > > if we
> > > > > > > > > have
> > > > > > > > > > > a library that we're trying to integrate
with on a
> larger
> > > > scale,
> > > > > > then
> > > > > > > > > I
> > > > > > > > > > > think it makes sense.
> > > > > > > > > > >
> > > > > > > > > > > D.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On 1/30/07, Matthias Wessendorf <matzew@apache.org>
> wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > HEy Danny,
> > > > > > > > > > > >
> > > > > > > > > > > > two things;
> > > > > > > > > > > >
> > > > > > > > > > > > 1) the image looks great.
> > > > > > > > > > > > 2) do you use one of these days
upcoming "ajax-ish"
> > > > JavaScript
> > > > > > libs?
> > > > > > > > > > > >   (or "custom" JS?)
> > > > > > > > > > > >
> > > > > > > > > > > > Another one, will you also provide
the source in
> somewhat
> > > > > > format?
> > > > > > > > > > > > That would allow us to start with
a sandbox ..
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > > Matthias
> > > > > > > > > > > >
> > > > > > > > > > > > On 1/30/07, Danny Robinson <
> dannyjrobinson@gmail.com>
> > > > wrote:
> > > > > > > > > > > > > Hey,
> > > > > > > > > > > > >
> > > > > > > > > > > > > In a timely fashion, I've
just seen Adams comments
> about
> > > > > > wanting
> > > > > > > > > to
> > > > > > > > > > > > switch
> > > > > > > > > > > > > to a DHTML/iFrame solution
for dialog windows.
> > > > > > > > > > > > >
> > > > > > > > > > > > > I've pulled together a prototype
set of changes
> that
> > > > > > switches the
> > > > > > > > > > > > default
> > > > > > > > > > > > > implementation of dialog
windows, to use a
> floating
> > > > popup
> > > > > > > > > iframe.  It
> > > > > > > > > > > > seems
> > > > > > > > > > > > > to work well and both the
date picker dialog and
> the
> > > > number
> > > > > > picker
> > > > > > > > > > > > demo work
> > > > > > > > > > > > > without any alteration. 
It is implemented as a
> > > > javascript
> > > > > > > > > component
> > > > > > > > > > > > that
> > > > > > > > > > > > > inherits from the basic panelPopup
component I
> posted a
> > > > > > while
> > > > > > > > > > > > back.  The
> > > > > > > > > > > > > prototype renders an iframe
that blocks access to
> the
> > > > parent
> > > > > > > > > window
> > > > > > > > > > > > until
> > > > > > > > > > > > > the dialog returns.
> > > > > > > > > > > > >
> > > > > > > > > > > > > I say prototype, because
I need some feedback on
> what
> > > > > > is/isn't
> > > > > > > > > allowed
> > > > > > > > > > > > to
> > > > > > > > > > > > > change inside the current
dialog
> framework.  Meaning -
> > > > do we
> > > > > > have
> > > > > > > > > to
> > > > > > > > > > > > > introduce two modes of running,
where dialogs will
> > > > appear in
> > > > > > > > > either a
> > > > > > > > > > > > > browser window, or in a DHTML
iframe?  Could we
> kill off
> > > > the
> > > > > > > > > browser
> > > > > > > > > > > > window
> > > > > > > > > > > > > version as there seems to
be a very large amount
> of
> > > > > > JavaScript
> > > > > > > > > that we
> > > > > > > > > > > > could
> > > > > > > > > > > > > tear out if we did.
> > > > > > > > > > > > >
> > > > > > > > > > > > > I'll post a war file this
afternoon demonstrating
> how it
> > > > > > works,
> > > > > > > > > but
> > > > > > > > > > > > for now
> > > > > > > > > > > > > here's a quick picture and
the list of changes.
> > > > > > > > > > > > >
> http://thefoxberry.com/trinidad/trinidadpopupdialog.jpg
> > > > > > > > > > > > >
> > > > > > > > > > > > > DialogRequest.java modified
to call an alternative
> > > > > > javascript
> > > > > > > > > method
> > > > > > > > > > > > for
> > > > > > > > > > > > > opening the dhtml dialog.
 When the dialog is
> launched
> > > > it is
> > > > > > > > > populated
> > > > > > > > > > > > with
> > > > > > > > > > > > > the necessary properties
for callback when the
> dialog is
> > > > > > closed,
> > > > > > > > > thus
> > > > > > > > > > > > no
> > > > > > > > > > > > > array of dialogs (var ADFDialogReturn
= new
> Array())
> > > > needs
> > > > > > to be
> > > > > > > > > > > > maintained.
> > > > > > > > > > > > > function _launchPopupDialog(
> > > > > > > > > > > > >   srcURL,
> > > > > > > > > > > > >   features,
> > > > > > > > > > > > >   formName,
> > > > > > > > > > > > >   postbackId,
> > > > > > > > > > > > >   partial)
> > > > > > > > > > > > > {
> > > > > > > > > > > > >     _theDialog.callback =
> _returnFromDialogAndSubmit;
> > > > > > > > > > > > >     _theDialog.callbackProps
= {
> formNameKey:formName,
> > > > > > > > > > > > > postbackKey:postbackId, partialKey:partial
};
> > > > > > > > > > > > >     _theDialog.resize(features['height'],
> > > > > > features['width']);
> > > > > > > > > > > > >     _theDialog.launchDialog(srcURL);
> > > > > > > > > > > > > }
> > > > > > > > > > > > >
> > > > > > > > > > > > > On close the dialog will
call the following
> callback
> > > > > > function
> > > > > > > > > > > > > function _returnFromDialogAndSubmit(props,
value)
> {
> > > > > > > > > > > > >   if (props)
> > > > > > > > > > > > >   {
> > > > > > > > > > > > >     var formName = props['formNameKey'];
> > > > > > > > > > > > >       var postbackId = props['postbackKey'];
> > > > > > > > > > > > >       var partial = props['partialKey'];
> > > > > > > > > > > > >
> > > > > > > > > > > > >     if (partial)
> > > > > > > > > > > > >         _submitPartialChange(formName,
0,
> > > > > > {rtrn:postbackId});
> > > > > > > > > > > > >     else
> > > > > > > > > > > > >         submitForm(formName,
0,
> {rtrn:postbackId});
> > > > > > > > > > > > >   }
> > > > > > > > > > > > > }
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > CoreRenderKit.returnFromDialog()
- modified to
> return
> > > > the
> > > > > > > > > following
> > > > > > > > > > > > > scriptlet, which closes the
dialog and causes the
> above
> > > > > > callback
> > > > > > > > > to
> > > > > > > > > > > > occur.
> > > > > > > > > > > > >  <script>parent.parent.returnFromDialog
> ();</script>
> > > > > > > > > > > > >
> > > > > > > > > > > > > Window.js  - _sizeWin() function
- disabled until
> I have
> > > > > > time to
> > > > > > > > > > > > rework.  If
> > > > > > > > > > > > > left untouched it resizes
the window - which
> because the
> > > > > > dialog is
> > > > > > > > > an
> > > > > > > > > > > > iframe
> > > > > > > > > > > > > means it resizes the main
window.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Minor changes to DateField.js
to call my dialog
> > > > component
> > > > > > rather
> > > > > > > > > than
> > > > > > > > > > > > > openWindow, along with an
additional callback
> function
> > > > for
> > > > > > passing
> > > > > > > > > the
> > > > > > > > > > > > > selected date back to the
parent component.
> > > > > > > > > > > > >
> > > > > > > > > > > > > To Do:
> > > > > > > > > > > > > Pass skinning keys to dialog
javascript class so
> we can
> > > > skin
> > > > > > the
> > > > > > > > > > > > dialog.
> > > > > > > > > > > > > While it handles blocking
clicks to parent, it
> doesn't
> > > > > > handle
> > > > > > > > > keeping
> > > > > > > > > > > > > keyboard nav inside the iframe.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Your thoughts please...
> > > > > > > > > > > > >
> > > > > > > > > > > > > Danny
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Chordiant Software Inc.
> > > > > > > > > > > > > www.chordiant.com
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > Matthias Wessendorf
> > > > > > > > > > > > http://tinyurl.com/fmywh
> > > > > > > > > > > >
> > > > > > > > > > > > further stuff:
> > > > > > > > > > > > blog: http://jroller.com/page/mwessendorf
> > > > > > > > > > > > mail: mwessendorf-at-gmail-dot-com
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Chordiant Software Inc.
> > > > > > > > > > > www.chordiant.com
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Chordiant Software Inc.
> > > > > > > > > > www.chordiant.com
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Chordiant Software Inc.
> > > > > > > > www.chordiant.com
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Chordiant Software Inc.
> > > > > www.chordiant.com
> > > > >
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Chordiant Software Inc.
> > > www.chordiant.com
> > >
> >
>



-- 
Chordiant Software Inc.
www.chordiant.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message