You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Werner Punz (JIRA)" <de...@myfaces.apache.org> on 2006/02/22 20:51:38 UTC

[jira] Commented: (TOMAHAWK-51) Popup windows: bad position on screen ( and components)

    [ http://issues.apache.org/jira/browse/TOMAHAWK-51?page=comments#action_12367390 ] 

Werner Punz commented on TOMAHAWK-51:
-------------------------------------

This is a work in progress which partially will make it into 1.1.2.
As we move towards dojo the problem will go away, due to the fact that
the inputsuggest popup in dojo calculates the positions correctly (and also does the internal scroller
recalculation)

As for the popup itself this one will be one of the first components moved to dojo after the 1.1.2 release once the dojo codebase is established in tomahawk.



> Popup windows: bad position on screen (<t:popup> and <x:inputSuggest> components)
> ---------------------------------------------------------------------------------
>
>          Key: TOMAHAWK-51
>          URL: http://issues.apache.org/jira/browse/TOMAHAWK-51
>      Project: MyFaces Tomahawk
>         Type: Bug
>   Components: Popup
>  Environment: Windows XP Pro SP2, Tomcat 4.1.30, JDK 1.4.2_09
>     Reporter: Javier Alperte
>     Assignee: Werner Punz

>
> Error positioning the popup windows shown by the components: <t:popup> and <x:inputSuggest>
> They don't have in consideration the relative position of the component in the page, and it's a problem if you place the component inside a DIV, where the positions must be relatives and not globals. 
> Solution: calculate the popup position based on component relative positions. For do that we need to assign an ID to the component in order to get the Document Element associated with it, and then we can use the HTML Object Position to calculate where to show the popup.
> Ej: Our component must generate a function like this:
>    function showMenu_<COMPONENT_ID>(event) {
>            var menuDiv = document.getElementById(<MENU_DIV_ID>);
>            var componentElement = document.getElementById(<COMPONENT_ID>);
>            if (menudiv.style.visibility == 'hidden' && event) { //Show menu
>                 menudiv.style.visibility = 'visible';
>                 menudiv.style.display = 'block';
>                 menudiv.style.zIndex = 3000;
>                 menudiv.style.top = componentElement.offsetTop + 10;
>                 var left = componentElement.offsetLeft + componentElement.offsetWidth - menudiv.offsetWidth;
>                 if (left < 0) //Move menu to the right side if it is too close to the left
>                     left += menudiv.offsetWidth;
>                 menudiv.style.left = left;
>             } else {
>                 menudiv.style.visibility = 'hidden';
>             }
>         }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira