Dialog

compared with
Current by Arturo Zambrano
on Jan 19, 2016 14:45.


 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 1 changes. View first change.

 h2. Overview
 _Since 3.0_
  
 The dialog component is used to pop up a dialog. You can use it as a container for other contents/components.  Attributes allow you to specify whether it be modal, draggable, resizable and closable.
  
 {tip}See the ICEfaces Showcase [Live Demo|http://icefaces-showcase.icesoft.org/showcase.jsf?grp=aceMenu&exp=dialogBean] of this component, complete with source code.{tip}
  
  
 h2. Getting Started
 {panel}
 {code:xml|borderStyle=dashed} <ace:dialog id="dialog"
  header="A sample dialog overview example"
  widgetVar="sampleDialog"
  closable="false"
  modal="true"
  draggable="false"
  showEffect="clip"
  hideEffect="explode"
  width="400">
  
  <h:form id="inputForm">
  <h:panelGrid columns="2" width="100%">
  <h:outputLabel id="firstNameLabel" for="firstNameInputField" value="First Name:"/>
  <h:inputText id="firstNameInputField" value="#{dialogBean.firstName}" />
  
  <h:outputLabel id="lastNameLabel" for="lastNameInputField" value="Last Name:"/>
  <h:inputText id="lastNameInputField" value="#{dialogBean.lastName}"/>
  </h:panelGrid>
  
  <h:panelGrid width="100%" style="text-align: center;">
  <h:commandButton value="Click me once done with input" onclick="sampleDialog.hide();"/>
  </h:panelGrid>
  </h:form>
  
  </ace:dialog>
 {code}
 {panel}
 h2. Attributes
  
 {tip:title=TagLib Documentation}This section covers attributes involved in the typical use-cases for this component. For reference, the complete taglib documentation for this component is available [here|http://www.icefaces.org/docs/v4_latest/ace/tld/ace/dialog.html].{tip}
 {panel}
 *modal* specifies whether the document should be shielded with a partially transparent mask.
 {panel}
 {panel}
 *draggable* allows the user to drag the dialog using its header.
 {panel}
 {panel}
 *resizable* makes the dialog resizable by its corners and sides.
 {panel}
 {panel}
 *closable* specifies whether the dialog should have a close button in the header. If set to false you can still close the dialog through the *visible* attribute or JavaScript API.
 {panel}
 {panel}
 *visible* can be used to toggle the visibility of the dialog from the server.
 {panel}
 h2. Event Listeners
  
 None.
  
 h2. Client Behavior Events
  
 | close | Fired when the panel is closed (default event). |
  
 h2. JavaScript API
  
 h4. ICEfaces 3.x
  
 The client side dialog object is exposed through the global variable name specified in the *widgetVar* attribute. You can use the *hide()* and *show()* methods to hide and show the dialog on the client side:
 {panel}
 {code:xml|borderStyle=dashed} <h:commandButton onclick="sampleDialog.show();" ... />
  ...
             <ace:dialog widgetVar="sampleDialog" ... >
  ...
              <h:commandButton onclick="sampleDialog.hide();" ... />
  ...
             </ace:dialog>
 {code}
 {panel}
  
 h4. ICEfaces 4+
  
 The "widgetVar" attribute on the ACE components has been removed in ICEfaces 4 and in its place a new "ice.ace.instance()" client JavaScript object lookup API has been introduced. The reason for this change is to enable lazy-initialization of the ACE component JavaScript objects to improve runtime performance and reduce browser memory use.
  
 {code}widget = ice.ace.instance('frm:myDialog');{code}
  
 To illustrate this change, see the before and after code example below.
  
 h5. Before (ICEfaces 3 API)
  
 {panel}
 {code:xml|borderStyle=dashed}
 <h:commandButton id="show" value="Show Dialog" onclick="sampleDialog.show();" type="button"/>
  
 <ace:dialog id="myDialog"
  header="A sample dialog overview example"
  widgetVar="sampleDialog"
  width="400">
 ...
 {code}{panel}
  
 h5. After (ICEfaces 4 API)
 {panel}{code:xml|borderStyle=dashed}
 <h:commandButton id="show" value="Show Dialog" onclick="ice.ace.instance('myDialog').show();" type="button"/>
  
 <ace:dialog id="myDialog"
  header="A sample dialog overview example"
  width="400">
 ...
 {code}{panel}
  
 {tip}The _ice.ace.instance_ approach for showing dialogs requires the _full_ client id of the dialog to be specified, such as "j_idt77:qrDialog" instead of just "qrDialog". To reduce the complexity of working with complete IDs for showing/hiding dialogs it may be preferable in some cases to locate dialogs inside of forms with _<h:form prependId="false">_ specified.{tip}
  
 h4. Client-side vs. Server-side
  
 Avoid using both the *visible* attribute and client side API to open and close the dialog. If you do, you have to make sure that the open/closed state is in sync by using the appropriate server side listeners. In the above example you would have to use the *actionListener* to do that. The close event of the upper right close button can be listened to by a child *<ace:ajax>* tag.
  
 If there is a chance that the dialog would be re-rendered from the server while open, you must use the *visible* attribute and use a variable for its value, because the default is false and the next time it's rendered it would be like *visible = "false"* always.
  
  
 h2. Keyboard and ARIA Support
  
 The following ARIA roles are supported: dialog, button.
  
 h2. CSS Classes
  
 The following markup represents the basic HTML structure of the component and the CSS classes it uses.
  
 {code:xml}
 <!-- Root container -->
 <div>
  <div class="ui-dialog ui-widget ui-widget-content ui-corner-all [user defined classes]" style="[user defined styles]">
  <!-- Header -->
  <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
  <span class="ui-dialog-title">Title</span>
  <!-- Close button -->
  <a class="ui-dialog-titlebar-close ui-corner-all">
  <span class="ui-icon ui-icon-closethick">close</span>
  </a>
  </div>
  <!-- Body -->
  <div class="ui-dialog-content ui-widget-content">
  </div>
  </div>
 </div>
 {code}
  
 h2. Known Issues
  
 The following effects have been disabled due to some conflicts:
  
 * 'pulsate' on hide for all browsers .
 * 'highlight' and 'bounce' on hide for IE7 and IE8.
 * 'explode' on show for IE7 and IE8.
  
 {panel}
  *Dialog closed unexpectedly at the first request when having cleared the cache and pasted the URL*
  *Dialog closes unexpectedly at the first request when having cleared the cache and pasted the URL*
 This situation can occur because JSF needs to add or remove two hidden fields to the form (javax.faces.ViewState and javax.faces.ClientWindow) when loading the page in this way. The domdiff causes a full form update, and all the components inside the form are re-initialized to their original state, which in the case of the dialog is closed. This situation can be avoided by redirecting to the page where this occurs by creating a jsp file whose contents are only <% response.sendRedirect("<target-page>.jsf"); %>. This can also be avoided if the visible property is set to true in the server when the dialog is opened.
 {panel}
 h2. Additional Resources

© Copyright 2021 ICEsoft Technologies Canada Corp.