View Javadoc

1   // WARNING: This file was automatically generated. Do not edit it directly,
2   //          or you will lose your changes.
3   
4   /*
5    * Licensed to the Apache Software Foundation (ASF) under one
6    * or more contributor license agreements.  See the NOTICE file
7    * distributed with this work for additional information
8    * regarding copyright ownership.  The ASF licenses this file
9    * to you under the Apache License, Version 2.0 (the
10   * "License"); you may not use this file except in compliance
11   * with the License.  You may obtain a copy of the License at
12   *
13   *   http://www.apache.org/licenses/LICENSE-2.0
14   *
15   * Unless required by applicable law or agreed to in writing,
16   * software distributed under the License is distributed on an
17   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18   * KIND, either express or implied.  See the License for the
19   * specific language governing permissions and limitations
20   * under the License.
21  */
22  package org.apache.myfaces.trinidad.component.core.layout;
23  
24  import java.util.Arrays;
25  import java.util.Collection;
26  import java.util.Collections;
27  import java.util.List;
28  import java.util.Map;
29  import javax.faces.component.UIComponent;
30  import javax.faces.component.behavior.ClientBehavior;
31  import javax.faces.component.behavior.ClientBehaviorHolder;
32  import org.apache.myfaces.trinidad.bean.FacesBean;
33  import org.apache.myfaces.trinidad.bean.PropertyKey;
34  import org.apache.myfaces.trinidad.component.UIXPanel;
35  import org.apache.myfaces.trinidad.util.ComponentUtils;
36  
37  /**
38   *
39   * <html:p>
40   * The panelPopup is used to place ancillary information on a page, made visible via a clickable link (e.g icon or link).
41   * </html:p>
42   * <html:p>
43   * The text attribute or 'trigger' facet is used to define the clickable area of the page.  When clicked a floating panel is made visible
44   * containing the child components. If the title attribute is present, then a title bar (including the title) will be
45   * rendered for the popup panel.
46   * </html:p>
47   * <html:p>
48   * The position attribute of popupPanel can be used to control the location of the panel when visible.
49   * </html:p>
50   * <html:p>
51   *   You can make changes to the style of the content region of this component by
52   *   adding your custom styles to the contentStyle attribute.
53   * </html:p>
54   * <html:p>
55   *   Content containers will generally have only one child with the actual
56   *   contents as its children. This child will describe how the content should be
57   *   displayed.  However, the content container can have multiple children, in
58   *   which case the children are displayed in a stack fashion, lined up
59   *   vertically.
60   * </html:p>
61   *
62   * <h4>Events:</h4>
63   * <table border="1" width="100%" cellpadding="3" summary="">
64   * <tr bgcolor="#CCCCFF" class="TableHeadingColor">
65   * <th align="left">Type</th>
66   * <th align="left">Phases</th>
67   * <th align="left">Description</th>
68   * </tr>
69   * <tr class="TableRowColor">
70   * <td valign="top"><code>org.apache.myfaces.trinidad.event.AttributeChangeEvent</code></td>
71   * <td valign="top" nowrap>Invoke<br>Application<br>Apply<br>Request<br>Values</td>
72   * <td valign="top">Event delivered to describe an attribute change.  Attribute change events are not delivered for any programmatic change to a property.  They are only delivered when a renderer changes a property without the application's specific request.  An example of an attribute change events might include the width of a column that supported client-side resizing.</td>
73   * </tr>
74   * </table>
75   */
76  public class CorePanelPopup extends UIXPanel
77                              implements ClientBehaviorHolder
78  {
79    static public final String TRIGGER_TYPE_CLICK = "click";
80    static public final String TRIGGER_TYPE_HOVER = "hover";
81    static public final String POSITION_RELATIVE = "relative";
82    static public final String POSITION_CENTERED = "centered";
83    static public final FacesBean.Type TYPE = new FacesBean.Type(
84      UIXPanel.TYPE);
85    static public final PropertyKey INLINE_STYLE_KEY =
86      TYPE.registerKey("inlineStyle", String.class);
87    static public final PropertyKey STYLE_CLASS_KEY =
88      TYPE.registerKey("styleClass", String.class);
89    static public final PropertyKey SHORT_DESC_KEY =
90      TYPE.registerKey("shortDesc", String.class);
91    static public final PropertyKey PARTIAL_TRIGGERS_KEY =
92      TYPE.registerKey("partialTriggers", String[].class);
93    static public final PropertyKey ONCLICK_KEY =
94      TYPE.registerKey("onclick", String.class);
95    static public final PropertyKey ONDBLCLICK_KEY =
96      TYPE.registerKey("ondblclick", String.class);
97    static public final PropertyKey ONMOUSEDOWN_KEY =
98      TYPE.registerKey("onmousedown", String.class);
99    static public final PropertyKey ONMOUSEUP_KEY =
100     TYPE.registerKey("onmouseup", String.class);
101   static public final PropertyKey ONMOUSEOVER_KEY =
102     TYPE.registerKey("onmouseover", String.class);
103   static public final PropertyKey ONMOUSEMOVE_KEY =
104     TYPE.registerKey("onmousemove", String.class);
105   static public final PropertyKey ONMOUSEOUT_KEY =
106     TYPE.registerKey("onmouseout", String.class);
107   static public final PropertyKey ONKEYPRESS_KEY =
108     TYPE.registerKey("onkeypress", String.class);
109   static public final PropertyKey ONKEYDOWN_KEY =
110     TYPE.registerKey("onkeydown", String.class);
111   static public final PropertyKey ONKEYUP_KEY =
112     TYPE.registerKey("onkeyup", String.class);
113   static public final PropertyKey TRIGGER_TYPE_KEY =
114     TYPE.registerKey("triggerType", String.class, "click");
115   static public final PropertyKey ICON_KEY =
116     TYPE.registerKey("icon", String.class);
117   static public final PropertyKey TEXT_KEY =
118     TYPE.registerKey("text", String.class);
119   static public final PropertyKey TITLE_KEY =
120     TYPE.registerKey("title", String.class);
121   static public final PropertyKey MODAL_KEY =
122     TYPE.registerKey("modal", Boolean.class, Boolean.FALSE);
123   static public final PropertyKey POSITION_KEY =
124     TYPE.registerKey("position", String.class, "relative");
125   static public final PropertyKey XOFFSET_KEY =
126     TYPE.registerKey("xoffset", Integer.class, Integer.valueOf(0));
127   static public final PropertyKey YOFFSET_KEY =
128     TYPE.registerKey("yoffset", Integer.class, Integer.valueOf(0));
129   static public final PropertyKey CONTENT_STYLE_KEY =
130     TYPE.registerKey("contentStyle", String.class);
131   static public final PropertyKey WIDTH_KEY =
132     TYPE.registerKey("width", Integer.class, Integer.valueOf(0));
133   static public final PropertyKey HEIGHT_KEY =
134     TYPE.registerKey("height", Integer.class, Integer.valueOf(0));
135   static public final String TRIGGER_FACET = "trigger";
136 
137   static public final String COMPONENT_FAMILY =
138     "org.apache.myfaces.trinidad.Panel";
139   static public final String COMPONENT_TYPE =
140     "org.apache.myfaces.trinidad.CorePanelPopup";
141   // Supported client events for client behaviors:
142   private final static Collection<String> _EVENT_NAMES = Collections.unmodifiableCollection(
143     Arrays.asList(
144       "click", "dblclick", "mousedown", "mouseup", "mouseover", "mousemove",
145       "mouseout", "keypress", "keydown", "keyup"
146     ));
147 
148   /**
149    * Construct an instance of the CorePanelPopup.
150    */
151   public CorePanelPopup()
152   {
153     super("org.apache.myfaces.trinidad.Popup");
154   }
155 
156   /**
157    * Content to be rendered as a link to launch the popup panel. Use this facet
158    *         to define an icon or other content types to launch the popup. If this facet  is not defined, then
159    *         the 'text' attribute must be specified.
160    */
161   final public UIComponent getTrigger()
162   {
163     return getFacet(TRIGGER_FACET);
164   }
165 
166   /**
167    * Content to be rendered as a link to launch the popup panel. Use this facet
168    *         to define an icon or other content types to launch the popup. If this facet  is not defined, then
169    *         the 'text' attribute must be specified.
170    */
171   @SuppressWarnings("unchecked")
172   final public void setTrigger(UIComponent triggerFacet)
173   {
174     getFacets().put(TRIGGER_FACET, triggerFacet);
175   }
176 
177   /**
178    * Gets the CSS styles to use for this component.
179    *
180    * @return  the new inlineStyle value
181    */
182   final public String getInlineStyle()
183   {
184     return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
185   }
186 
187   /**
188    * Sets the CSS styles to use for this component.
189    * 
190    * @param inlineStyle  the new inlineStyle value
191    */
192   final public void setInlineStyle(String inlineStyle)
193   {
194     setProperty(INLINE_STYLE_KEY, (inlineStyle));
195   }
196 
197   /**
198    * Gets a CSS style class to use for this component.
199    *
200    * @return  the new styleClass value
201    */
202   final public String getStyleClass()
203   {
204     return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
205   }
206 
207   /**
208    * Sets a CSS style class to use for this component.
209    * 
210    * @param styleClass  the new styleClass value
211    */
212   final public void setStyleClass(String styleClass)
213   {
214     setProperty(STYLE_CLASS_KEY, (styleClass));
215   }
216 
217   /**
218    * Gets The short description of the component. This text is commonly used by user agents to display tooltip help text.
219    *
220    * @return  the new shortDesc value
221    */
222   final public String getShortDesc()
223   {
224     return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
225   }
226 
227   /**
228    * Sets The short description of the component. This text is commonly used by user agents to display tooltip help text.
229    * 
230    * @param shortDesc  the new shortDesc value
231    */
232   final public void setShortDesc(String shortDesc)
233   {
234     setProperty(SHORT_DESC_KEY, (shortDesc));
235   }
236 
237   /**
238    * Gets the IDs of the components that should trigger a partial update.
239    *         <p>
240    *         This component will listen on the trigger components. If one of the
241    *         trigger components receives an event that will cause it to update
242    *         in some way, this component will request to be updated too.</p>
243    *         <p>
244    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
245    *         </p>
246    *         <p>
247    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
248    *         or use multiple colons to move up through the NamingContainer. For example,
249    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
250    *         ":::" will pop out of two naming containers, etc. The search for
251    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
252    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
253    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
254    *
255    * @return  the new partialTriggers value
256    */
257   final public String[] getPartialTriggers()
258   {
259     return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
260   }
261 
262   /**
263    * Sets the IDs of the components that should trigger a partial update.
264    *         <p>
265    *         This component will listen on the trigger components. If one of the
266    *         trigger components receives an event that will cause it to update
267    *         in some way, this component will request to be updated too.</p>
268    *         <p>
269    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
270    *         </p>
271    *         <p>
272    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
273    *         or use multiple colons to move up through the NamingContainer. For example,
274    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
275    *         ":::" will pop out of two naming containers, etc. The search for
276    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
277    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
278    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
279    * 
280    * @param partialTriggers  the new partialTriggers value
281    */
282   final public void setPartialTriggers(String[] partialTriggers)
283   {
284     setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
285   }
286 
287   /**
288    * Gets an onclick Javascript handler.
289    *
290    * @return  the new onclick value
291    */
292   final public String getOnclick()
293   {
294     return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
295   }
296 
297   /**
298    * Sets an onclick Javascript handler.
299    * 
300    * @param onclick  the new onclick value
301    */
302   final public void setOnclick(String onclick)
303   {
304     setProperty(ONCLICK_KEY, (onclick));
305   }
306 
307   /**
308    * Gets an ondblclick Javascript handler.
309    *
310    * @return  the new ondblclick value
311    */
312   final public String getOndblclick()
313   {
314     return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
315   }
316 
317   /**
318    * Sets an ondblclick Javascript handler.
319    * 
320    * @param ondblclick  the new ondblclick value
321    */
322   final public void setOndblclick(String ondblclick)
323   {
324     setProperty(ONDBLCLICK_KEY, (ondblclick));
325   }
326 
327   /**
328    * Gets an onmousedown Javascript handler.
329    *
330    * @return  the new onmousedown value
331    */
332   final public String getOnmousedown()
333   {
334     return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
335   }
336 
337   /**
338    * Sets an onmousedown Javascript handler.
339    * 
340    * @param onmousedown  the new onmousedown value
341    */
342   final public void setOnmousedown(String onmousedown)
343   {
344     setProperty(ONMOUSEDOWN_KEY, (onmousedown));
345   }
346 
347   /**
348    * Gets an onmouseup Javascript handler.
349    *
350    * @return  the new onmouseup value
351    */
352   final public String getOnmouseup()
353   {
354     return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
355   }
356 
357   /**
358    * Sets an onmouseup Javascript handler.
359    * 
360    * @param onmouseup  the new onmouseup value
361    */
362   final public void setOnmouseup(String onmouseup)
363   {
364     setProperty(ONMOUSEUP_KEY, (onmouseup));
365   }
366 
367   /**
368    * Gets an onmouseover Javascript handler.
369    *
370    * @return  the new onmouseover value
371    */
372   final public String getOnmouseover()
373   {
374     return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
375   }
376 
377   /**
378    * Sets an onmouseover Javascript handler.
379    * 
380    * @param onmouseover  the new onmouseover value
381    */
382   final public void setOnmouseover(String onmouseover)
383   {
384     setProperty(ONMOUSEOVER_KEY, (onmouseover));
385   }
386 
387   /**
388    * Gets an onmousemove Javascript handler.
389    *
390    * @return  the new onmousemove value
391    */
392   final public String getOnmousemove()
393   {
394     return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
395   }
396 
397   /**
398    * Sets an onmousemove Javascript handler.
399    * 
400    * @param onmousemove  the new onmousemove value
401    */
402   final public void setOnmousemove(String onmousemove)
403   {
404     setProperty(ONMOUSEMOVE_KEY, (onmousemove));
405   }
406 
407   /**
408    * Gets an onmouseout Javascript handler.
409    *
410    * @return  the new onmouseout value
411    */
412   final public String getOnmouseout()
413   {
414     return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
415   }
416 
417   /**
418    * Sets an onmouseout Javascript handler.
419    * 
420    * @param onmouseout  the new onmouseout value
421    */
422   final public void setOnmouseout(String onmouseout)
423   {
424     setProperty(ONMOUSEOUT_KEY, (onmouseout));
425   }
426 
427   /**
428    * Gets an onkeypress Javascript handler.
429    *
430    * @return  the new onkeypress value
431    */
432   final public String getOnkeypress()
433   {
434     return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
435   }
436 
437   /**
438    * Sets an onkeypress Javascript handler.
439    * 
440    * @param onkeypress  the new onkeypress value
441    */
442   final public void setOnkeypress(String onkeypress)
443   {
444     setProperty(ONKEYPRESS_KEY, (onkeypress));
445   }
446 
447   /**
448    * Gets an onkeydown Javascript handler.
449    *
450    * @return  the new onkeydown value
451    */
452   final public String getOnkeydown()
453   {
454     return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
455   }
456 
457   /**
458    * Sets an onkeydown Javascript handler.
459    * 
460    * @param onkeydown  the new onkeydown value
461    */
462   final public void setOnkeydown(String onkeydown)
463   {
464     setProperty(ONKEYDOWN_KEY, (onkeydown));
465   }
466 
467   /**
468    * Gets an onkeyup Javascript handler.
469    *
470    * @return  the new onkeyup value
471    */
472   final public String getOnkeyup()
473   {
474     return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
475   }
476 
477   /**
478    * Sets an onkeyup Javascript handler.
479    * 
480    * @param onkeyup  the new onkeyup value
481    */
482   final public void setOnkeyup(String onkeyup)
483   {
484     setProperty(ONKEYUP_KEY, (onkeyup));
485   }
486 
487   /**
488    * Gets Defines the launch behaviour of the popup.  If set to 'click' the popup will
489    *         appear when the trigger is clicked, and disappear when you click off the popup.  The 'hover' value
490    *         will cause the popup to appear while the mouse is over the trigger, and disappear when the mouse
491    *         leaves either the trigger or the popup panel.
492    *
493    * @return  the new triggerType value
494    */
495   final public String getTriggerType()
496   {
497     return ComponentUtils.resolveString(getProperty(TRIGGER_TYPE_KEY), "click");
498   }
499 
500   /**
501    * Sets Defines the launch behaviour of the popup.  If set to 'click' the popup will
502    *         appear when the trigger is clicked, and disappear when you click off the popup.  The 'hover' value
503    *         will cause the popup to appear while the mouse is over the trigger, and disappear when the mouse
504    *         leaves either the trigger or the popup panel.
505    * 
506    * @param triggerType  the new triggerType value
507    */
508   final public void setTriggerType(String triggerType)
509   {
510     setProperty(TRIGGER_TYPE_KEY, (triggerType));
511   }
512 
513   /**
514    * Gets The icon to render as a link to launch the popup panel.  If the 'trigger'
515    *         facet is defined, then this attribute is ignored.  If the 'text' attribute is also specified,
516    *         then the icon and text will both be rendered.
517    *
518    * @return  the new icon value
519    */
520   final public String getIcon()
521   {
522     return ComponentUtils.resolveString(getProperty(ICON_KEY));
523   }
524 
525   /**
526    * Sets The icon to render as a link to launch the popup panel.  If the 'trigger'
527    *         facet is defined, then this attribute is ignored.  If the 'text' attribute is also specified,
528    *         then the icon and text will both be rendered.
529    * 
530    * @param icon  the new icon value
531    */
532   final public void setIcon(String icon)
533   {
534     setProperty(ICON_KEY, (icon));
535   }
536 
537   /**
538    * Gets The text to render as a link to launch the popup panel.  If the 'trigger'
539    *         facet is defined, then this attribute is ignored.
540    *
541    * @return  the new text value
542    */
543   final public String getText()
544   {
545     return ComponentUtils.resolveString(getProperty(TEXT_KEY));
546   }
547 
548   /**
549    * Sets The text to render as a link to launch the popup panel.  If the 'trigger'
550    *         facet is defined, then this attribute is ignored.
551    * 
552    * @param text  the new text value
553    */
554   final public void setText(String text)
555   {
556     setProperty(TEXT_KEY, (text));
557   }
558 
559   /**
560    * Gets The title of the panel when visible.  The titlebar is not rendered if this attribute
561    *         is not specified.
562    *
563    * @return  the new title value
564    */
565   final public String getTitle()
566   {
567     return ComponentUtils.resolveString(getProperty(TITLE_KEY));
568   }
569 
570   /**
571    * Sets The title of the panel when visible.  The titlebar is not rendered if this attribute
572    *         is not specified.
573    * 
574    * @param title  the new title value
575    */
576   final public void setTitle(String title)
577   {
578     setProperty(TITLE_KEY, (title));
579   }
580 
581   /**
582    * Gets The display mode of the panel.  Defaults to "false" (non-modal).
583    *         Non-Modal panels will close when the user clicks off the panel. Modal popups are
584    *         rendered with a titlebar and close icon.  Clicking the close icon will close the
585    *         modal popup.
586    *
587    * @return  the new modal value
588    */
589   final public boolean isModal()
590   {
591     return ComponentUtils.resolveBoolean(getProperty(MODAL_KEY), false);
592   }
593 
594   /**
595    * Sets The display mode of the panel.  Defaults to "false" (non-modal).
596    *         Non-Modal panels will close when the user clicks off the panel. Modal popups are
597    *         rendered with a titlebar and close icon.  Clicking the close icon will close the
598    *         modal popup.
599    * 
600    * @param modal  the new modal value
601    */
602   final public void setModal(boolean modal)
603   {
604     setProperty(MODAL_KEY, modal ? Boolean.TRUE : Boolean.FALSE);
605   }
606 
607   /**
608    * Gets The position of the content container when visible. Defaults to
609    *          "relative" if not specified. Other values are "centered" (centered on screen).
610    *
611    * @return  the new position value
612    */
613   final public String getPosition()
614   {
615     return ComponentUtils.resolveString(getProperty(POSITION_KEY), "relative");
616   }
617 
618   /**
619    * Sets The position of the content container when visible. Defaults to
620    *          "relative" if not specified. Other values are "centered" (centered on screen).
621    * 
622    * @param position  the new position value
623    */
624   final public void setPosition(String position)
625   {
626     setProperty(POSITION_KEY, (position));
627   }
628 
629   /**
630    * Gets The popup's horizontal offset in pixels from the current mouse position.
631    *         This property only applies to popups using relative positioning.
632    *
633    * @return  the new xoffset value
634    */
635   final public int getXoffset()
636   {
637     return ComponentUtils.resolveInteger(getProperty(XOFFSET_KEY), 0);
638   }
639 
640   /**
641    * Sets The popup's horizontal offset in pixels from the current mouse position.
642    *         This property only applies to popups using relative positioning.
643    * 
644    * @param xoffset  the new xoffset value
645    */
646   final public void setXoffset(int xoffset)
647   {
648     setProperty(XOFFSET_KEY, Integer.valueOf(xoffset));
649   }
650 
651   /**
652    * Gets The popup's vertical offset in pixels from the current mouse position.
653    *         This property only applies to popups using relative positioning.
654    *
655    * @return  the new yoffset value
656    */
657   final public int getYoffset()
658   {
659     return ComponentUtils.resolveInteger(getProperty(YOFFSET_KEY), 0);
660   }
661 
662   /**
663    * Sets The popup's vertical offset in pixels from the current mouse position.
664    *         This property only applies to popups using relative positioning.
665    * 
666    * @param yoffset  the new yoffset value
667    */
668   final public void setYoffset(int yoffset)
669   {
670     setProperty(YOFFSET_KEY, Integer.valueOf(yoffset));
671   }
672 
673   /**
674    * Gets The inline style of the content region.
675    *
676    * @return  the new contentStyle value
677    */
678   final public String getContentStyle()
679   {
680     return ComponentUtils.resolveString(getProperty(CONTENT_STYLE_KEY));
681   }
682 
683   /**
684    * Sets The inline style of the content region.
685    * 
686    * @param contentStyle  the new contentStyle value
687    */
688   final public void setContentStyle(String contentStyle)
689   {
690     setProperty(CONTENT_STYLE_KEY, (contentStyle));
691   }
692 
693   /**
694    * Gets Set the width of the popup.  If not present the width defaults to the width of the content.
695    *
696    * @return  the new width value
697    */
698   final public int getWidth()
699   {
700     return ComponentUtils.resolveInteger(getProperty(WIDTH_KEY), 0);
701   }
702 
703   /**
704    * Sets Set the width of the popup.  If not present the width defaults to the width of the content.
705    * 
706    * @param width  the new width value
707    */
708   final public void setWidth(int width)
709   {
710     setProperty(WIDTH_KEY, Integer.valueOf(width));
711   }
712 
713   /**
714    * Gets Set the height of the popup.  If not present the width defaults to the height of the content.
715    *
716    * @return  the new height value
717    */
718   final public int getHeight()
719   {
720     return ComponentUtils.resolveInteger(getProperty(HEIGHT_KEY), 0);
721   }
722 
723   /**
724    * Sets Set the height of the popup.  If not present the width defaults to the height of the content.
725    * 
726    * @param height  the new height value
727    */
728   final public void setHeight(int height)
729   {
730     setProperty(HEIGHT_KEY, Integer.valueOf(height));
731   }
732 
733   @Override
734   public String getDefaultEventName()
735   {
736     return "click";
737   }
738 
739   @Override
740   public Collection<String> getEventNames()
741   {
742     return _EVENT_NAMES;
743   }
744 
745   @Override
746   public Map<String, List<ClientBehavior>> getClientBehaviors()
747   {
748     return super.getClientBehaviors();
749   }
750 
751   @Override
752   public void addClientBehavior(
753     String         eventName,
754     ClientBehavior behavior)
755   {
756     super.addClientBehavior(eventName, behavior);
757   }
758 
759   @Override
760   public String getFamily()
761   {
762     return COMPONENT_FAMILY;
763   }
764 
765   @Override
766   protected FacesBean.Type getBeanType()
767   {
768     return TYPE;
769   }
770 
771   /**
772    * Construct an instance of the CorePanelPopup.
773    */
774   protected CorePanelPopup(
775     String rendererType
776     )
777   {
778     super(rendererType);
779   }
780 
781   static
782   {
783     TYPE.lockAndRegister("org.apache.myfaces.trinidad.Panel","org.apache.myfaces.trinidad.Popup");
784   }
785 }