JBoss Rich Faces SVN: r3703 - in branches/3.1.x/test-applications/facelets/src/main: java/calendar and 53 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: ayanul
Date: 2007-11-02 06:11:55 -0400 (Fri, 02 Nov 2007)
New Revision: 3703
Added:
branches/3.1.x/test-applications/facelets/src/main/java/jQuery/
branches/3.1.x/test-applications/facelets/src/main/java/util/
branches/3.1.x/test-applications/facelets/src/main/java/util/componentInfo/
branches/3.1.x/test-applications/facelets/src/main/java/util/phaseTracker/
branches/3.1.x/test-applications/facelets/src/main/java/util/skins/
branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/
branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/RichTest.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/menu.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-jQuery.xml
branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Action/
branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Action/EventInfo.xhtml
Modified:
branches/3.1.x/test-applications/facelets/src/main/java/calendar/CalendarBean.java
branches/3.1.x/test-applications/facelets/src/main/java/dataScroller/DataScroller.java
branches/3.1.x/test-applications/facelets/src/main/java/dataTable/DataTable.java
branches/3.1.x/test-applications/facelets/src/main/java/ddMenu/DDMenu.java
branches/3.1.x/test-applications/facelets/src/main/java/gmap/Gmap.java
branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSlider/InputNumberSlider.java
branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSpinner/InputNumberSpinner.java
branches/3.1.x/test-applications/facelets/src/main/java/message/Message.java
branches/3.1.x/test-applications/facelets/src/main/java/modalPanel/ModalPanel.java
branches/3.1.x/test-applications/facelets/src/main/java/paint2D/Paint2D.java
branches/3.1.x/test-applications/facelets/src/main/java/paint2D/PaintData.java
branches/3.1.x/test-applications/facelets/src/main/java/panel/Panel.java
branches/3.1.x/test-applications/facelets/src/main/java/panelBar/PanelBar.java
branches/3.1.x/test-applications/facelets/src/main/java/panelMenu/PanelMenu.java
branches/3.1.x/test-applications/facelets/src/main/java/sTP/SimpleTogglePanel.java
branches/3.1.x/test-applications/facelets/src/main/java/sb/Sb.java
branches/3.1.x/test-applications/facelets/src/main/java/separator/Separator.java
branches/3.1.x/test-applications/facelets/src/main/java/spacer/Spacer.java
branches/3.1.x/test-applications/facelets/src/main/java/tabPanel/TabPanel.java
branches/3.1.x/test-applications/facelets/src/main/java/togglePanel/TogglePanel.java
branches/3.1.x/test-applications/facelets/src/main/java/tooltip/Tooltip.java
branches/3.1.x/test-applications/facelets/src/main/webapp/Calendar/Calendar.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/CustomizePage/CustomizePage.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/DataFilterSlider/DataFilterSlider.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/DataScroller/DS.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/DataTable/DT.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/DropDownMenu/DDMenu.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Gmap/Gmap.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Message/Message.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/ModalPanel/ModalPanel.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Paint2D/Paint2D.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Panel/Panel.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/PanelBar/PanelBar.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/PanelMenu/PanelMenu.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/ScrollableDataTable/ScrollableDataTable.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Separator/Separator.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/SimpleTogglePanel/SimpleTogglePanel.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Spacer/Spacer.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/SuggestionBox/SuggestionBox.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/TabPanel/TabPanel.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/TogglePanel/TogglePanel.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Tooltip/Tooltip.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/Tree/Tree.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/VirtualEarth/VirtualEarth.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-DragAndDrop.xml
branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-Skin.xml
branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config.xml
branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/web.xml
branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSlider/inputNumberSlider.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSpinner/inputNumberSpinner.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Rich/Rich.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/pages/RichMenu/RichMenu.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/pages/main.xhtml
branches/3.1.x/test-applications/facelets/src/main/webapp/styles/styles.css
Log:
add straightforward
add events test
fix Calendar(add mode: ajax, server, location)
Modified: branches/3.1.x/test-applications/facelets/src/main/java/calendar/CalendarBean.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/calendar/CalendarBean.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/calendar/CalendarBean.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -29,6 +29,7 @@
import java.util.StringTokenizer;
import java.util.TimeZone;
+import javax.el.ValueExpression;
import javax.faces.event.ValueChangeEvent;
import org.richfaces.event.CurrentDateChangeEvent;
@@ -47,6 +48,7 @@
"Sep +", "Oct +", "Nov +", "Dec +" };
private Locale locale;
+ private TimeZone tZone;
private boolean popup;
private boolean readonly;
private boolean showInput;
@@ -58,12 +60,12 @@
private boolean required;
private Date currentDate;
private Date selectedDate;
+ private String headerFacet;
+ private String mode;
private String preloadDateRangeBegin;
private String preloadDateRangeEnd;
private String weekDay;
private String month;
- private String height;
- private String width;
private String pattern;
private String jointPoint;
private String direction;
@@ -74,8 +76,43 @@
private String timeZone;
private int zindex;
private int counter;
+
+ public CalendarBean() {
+ mode = "client";
+ label = "Button label";
+ locale = new Locale("us","US","");
+ popup = true;
+ pattern = "MMM d, yyyy";
+ jointPoint = "bottom-left";
+ direction = "bottom-right";
+ readonly = true;
+ enableManualInput = false;
+ showInput = true;
+ boundary = "inactive";
+ icon = null;
+ disabled = false;
+ bypassUpdates = false;
+ rendered = true;
+ zindex = 2;
+ toolTipMode = "none";
+ required = false;
+ weekDay = "long";
+ month = "none";
+ timeZone = "Eastern European Time";
+ preloadDateRangeBegin = "10.08.2007"; //d.m.y
+ preloadDateRangeEnd = "11.10.2007";
+ }
-
+ public boolean getRenderedAjax() {
+ if(mode.equalsIgnoreCase("ajax") && rendered) return true;
+ else return false;
+ }
+
+ public boolean getRenderedClient() {
+ if(mode.equalsIgnoreCase("client") && rendered) return true;
+ else return false;
+ }
+
public String getTimeZone() {
return timeZone;
}
@@ -118,32 +155,14 @@
this.pattern = pattern;
}
-
- public CalendarBean() {
- height = "400px";
- width = "400px";
- label = "Button label";
- locale = Locale.US;
- popup = true;
- pattern = "MMM d, yyyy";
- jointPoint = "bottom-left";
- direction = "bottom-right";
- readonly = true;
- enableManualInput = false;
- showInput = true;
- boundary = "inactive";
- icon = null;
- disabled = false;
- bypassUpdates = false;
- rendered = true;
- zindex = 2;
- toolTipMode = "none";
- required = false;
- weekDay = "long";
- month = "none";
- timeZone = "Eastern European Time";
- preloadDateRangeBegin = "10.08.2007"; //d.m.y
- preloadDateRangeEnd = "11.10.2007";
+
+ public void selectLocale(ValueChangeEvent event) {
+ String tLocale = (String) event.getNewValue();
+ if (tLocale != null) {
+ String lang = tLocale.substring(0, 2);
+ String country = tLocale.substring(3);
+ locale = new Locale(lang, country, "");
+ }
}
public Date getPrDateRangeBegin() {
@@ -154,7 +173,6 @@
date.add(Integer.parseInt(st.nextToken()));
}
cal.set(date.get(2), date.get(1) - 1, date.get(0), 12, 0, 0);
- System.out.println("prBegin " + cal.getTime());
return cal.getTime();
}
@@ -166,7 +184,6 @@
date.add(Integer.parseInt(st.nextToken()));
}
cal.set(date.get(2), date.get(1) - 1, date.get(0), 12, 0, 0);
- System.out.println("prEnd " + cal.getTime());
return cal.getTime();
}
@@ -280,7 +297,6 @@
public void dcl(CurrentDateChangeEvent event) {
System.out.println(event.getCurrentDateString());
- System.out.println("ajvhckndskncs");
}
public void ddd(ValueChangeEvent event) {
@@ -325,14 +341,6 @@
this.bypassUpdates = bypassUpdates;
}
- public String getHeight() {
- return height;
- }
-
- public void setHeight(String height) {
- this.height = height;
- }
-
public boolean isRendered() {
return rendered;
}
@@ -357,14 +365,6 @@
this.zindex = zindex;
}
- public String getWidth() {
- return width;
- }
-
- public void setWidth(String width) {
- this.width = width;
- }
-
public boolean isRequired() {
return required;
}
@@ -383,9 +383,7 @@
public TimeZone getTmZone() {
TimeZone tZone = TimeZone.getDefault();
- System.out.println("timeZone" + timeZone + " tZone " + tZone);
tZone.setID(timeZone);
- System.out.println("timeZone" + timeZone + " tZone " + tZone);
return tZone;
}
@@ -412,4 +410,139 @@
public void setWeekDay(String weekDay) {
this.weekDay = weekDay;
}
+
+ public void setMode(String mode) {
+ this.mode = mode;
+ }
+
+ public String getMode() {
+ return mode;
+ }
+ public void bTest1() {
+// setCurrentDate(new Date());
+// setTimeZone();
+// setSelectedDate();
+ changeIcons();
+ setHeaderFacet("Test 1");
+ setLocale(new Locale("de","DE",""));
+ setDirection("bottom-left");
+ setEnableManualInput(false);
+ setDisabled(false);
+ setJointPoint("top-right");
+ setMonth("long");
+ setPattern("dd-MM-yyyy");
+ setPopup(true);
+ setPreloadDateRangeBegin("10.09.2007");
+ setPreloadDateRangeEnd("11.01.2008");
+ setReadonly(true);
+ setRequired(true);
+ setShowInput(false);
+ setToolTipMode("single");
+ setWeekDay("long");
+ setZindex(3);
+ }
+
+ public void bTest2() {
+// setCurrentDate(new Date());
+// setTimeZone();
+// setSelectedDate();
+ changeIcons();
+ setHeaderFacet("Test 2");
+ setLocale(new Locale("fr","FR",""));
+ setDirection("top-right");
+ setEnableManualInput(true);
+ setDisabled(false);
+ setJointPoint("bottom-left");
+ setMonth("none");
+ setPattern("dd.MM.yyyy");
+ setPopup(true);
+ setPreloadDateRangeBegin("10.09.2007");
+ setPreloadDateRangeEnd("12.01.2008");
+ setReadonly(true);
+ setRequired(true);
+ setShowInput(false);
+ setToolTipMode("single");
+ setWeekDay("none");
+ setZindex(3);
+ }
+
+ public void bTest3() {
+// setCurrentDate(new Date());
+// setTimeZone();
+// setSelectedDate();
+ changeIcons();
+ setHeaderFacet("Test 3");
+ setLocale(new Locale("ru","RU",""));
+ setDirection("bottom-left");
+ setEnableManualInput(false);
+ setDisabled(false);
+ setJointPoint("top-right");
+ setMonth("long");
+ setPattern("dd-MM-yyyy");
+ setPopup(false);
+ setPreloadDateRangeBegin("10.09.2007");
+ setPreloadDateRangeEnd("11.01.2008");
+ setReadonly(false);
+ setRequired(false);
+ setShowInput(false);
+ setToolTipMode("single");
+ setWeekDay("long");
+ setZindex(3);
+ }
+
+ public void bTest4() {
+// setCurrentDate(new Date());
+// setTimeZone();
+// setSelectedDate();
+ changeIcons();
+ setHeaderFacet("Test 4");
+ setLocale(new Locale("de","DE",""));
+ setDirection("bottom-left");
+ setEnableManualInput(false);
+ setDisabled(true);
+ setJointPoint("top-right");
+ setMonth("long");
+ setPattern("dd-MM-yyyy");
+ setPopup(false);
+ setPreloadDateRangeBegin("10.09.2007");
+ setPreloadDateRangeEnd("11.01.2008");
+ setReadonly(false);
+ setRequired(false);
+ setShowInput(false);
+ setToolTipMode("single");
+ setWeekDay("none");
+ setZindex(3);
+ }
+
+ public void bTest5() {
+// setCurrentDate(new Date());
+// setTimeZone();
+// setSelectedDate();
+ changeIcons();
+ setHeaderFacet("Test 5");
+ setLocale(new Locale("de","DE",""));
+ setDirection("bottom-right");
+ setEnableManualInput(false);
+ setDisabled(false);
+ setJointPoint("bottom-left");
+ setMonth("none");
+ setPattern("d/M/yy");
+ setPopup(true);
+ setPreloadDateRangeBegin("09.09.2007");
+ setPreloadDateRangeEnd("10.01.2008");
+ setReadonly(false);
+ setRequired(true);
+ setShowInput(true);
+ setToolTipMode("none");
+ setWeekDay("short");
+ setZindex(1);
+ }
+
+ public String getHeaderFacet() {
+ return headerFacet;
+ }
+
+ public void setHeaderFacet(String headerFacet) {
+ this.headerFacet = headerFacet;
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/dataScroller/DataScroller.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/dataScroller/DataScroller.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/dataScroller/DataScroller.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -51,7 +51,7 @@
dataTable = new ArrayList();
- for(int i=0;i<40;i++)
+ for(int i=0;i<1000;i++)
{
dataTable.add(new Data("Random",i));
}
@@ -129,7 +129,43 @@
this.limitToList = limitToList;
}
-
-
+ public void bTest1(){
+ setAlign("left");
+ setFastControls("auto");
+ setLimitToList(false);
+ setMaxPages(20);
+ setRenderIfSinglePage(true);
+ }
+ public void bTest2(){
+ setAlign("right");
+ setFastControls("show");
+ setLimitToList(false);
+ setMaxPages(30);
+ setRenderIfSinglePage(false);
+ }
+
+ public void bTest3(){
+ setAlign("center");
+ setFastControls("hide");
+ setLimitToList(false);
+ setMaxPages(10);
+ setRenderIfSinglePage(true);
+ }
+
+ public void bTest4(){
+ setAlign("center");
+ setFastControls("auto");
+ setLimitToList(true);
+ setMaxPages(30);
+ setRenderIfSinglePage(false);
+ }
+
+ public void bTest5(){
+ setAlign("left");
+ setFastControls("show");
+ setLimitToList(false);
+ setMaxPages(40);
+ setRenderIfSinglePage(true);
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/dataTable/DataTable.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/dataTable/DataTable.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/dataTable/DataTable.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -138,4 +138,44 @@
public void setR2rendered(boolean r2rendered) {
this.r2rendered = r2rendered;
}
+
+ public void bTest1() {
+ setAlign("center");
+ setBorder("4px");
+ setC1rendered(false);
+ setColumnsWidth("300px");
+ setWidth("500px");
+ }
+
+ public void bTest2() {
+ setAlign("left");
+ setBorder("0px");
+ setC1rendered(true);
+ setColumnsWidth("500px");
+ setWidth("300px");
+ }
+
+ public void bTest3() {
+ setAlign("right");
+ setBorder("5px");
+ setC1rendered(true);
+ setColumnsWidth("100px");
+ setWidth("200px");
+ }
+
+ public void bTest4() {
+ setAlign("center");
+ setBorder("4px");
+ setC1rendered(false);
+ setColumnsWidth("500px");
+ setWidth("500px");
+ }
+
+ public void bTest5() {
+ setAlign("center");
+ setBorder("4px");
+ setC1rendered(false);
+ setColumnsWidth("400px");
+ setWidth("800px");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/ddMenu/DDMenu.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/ddMenu/DDMenu.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/ddMenu/DDMenu.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -178,4 +178,79 @@
public void setMode(String mode) {
this.mode = mode;
}
+
+ public void bTest1(){
+ setDirection("top-right");
+ setEvent("onmouseover");
+ setGroupDirection("top-up");
+ setHideDelay(5);
+ setHorizontalOffset(1);
+ setHorizontalOffset(1);
+ setVerticalOffset(1);
+ setJointPoint("1px");
+ setMode("none");
+ setPopupWidth("300px");
+ setShowDelay(1);
+ setDisabled(false);
+ }
+
+ public void bTest2(){
+ setDirection("bottom-right");
+ setEvent("onclick");
+ setGroupDirection("bottom-left");
+ setHideDelay(5);
+ setShowDelay(5);
+ setHorizontalOffset(20);
+ setHorizontalOffset(20);
+ setVerticalOffset(20);
+ setJointPoint("bottom-right");
+ setMode("ajax");
+ setPopupWidth("200px");
+ setDisabled(false);
+ }
+
+ public void bTest3(){
+ setDirection("bottom-left");
+ setEvent("onmouseover");
+ setGroupDirection("top-up");
+ setHideDelay(10);
+ setShowDelay(10);
+ setHorizontalOffset(5);
+ setHorizontalOffset(5);
+ setVerticalOffset(5);
+ setJointPoint("top-left");
+ setMode("server");
+ setPopupWidth("50px");
+ setDisabled(false);
+ }
+
+ public void bTest4(){
+ setDirection("top-left");
+ setEvent("onmouseover");
+ setGroupDirection("auto");
+ setHideDelay(0);
+ setShowDelay(0);
+ setHorizontalOffset(0);
+ setHorizontalOffset(0);
+ setVerticalOffset(0);
+ setJointPoint("0px");
+ setMode("ajax");
+ setPopupWidth("auto");
+ setDisabled(true);
+ }
+
+ public void bTest5(){
+ setDirection("auto");
+ setEvent("onmouseover");
+ setGroupDirection("auto");
+ setHideDelay(1);
+ setShowDelay(5);
+ setHorizontalOffset(2);
+ setHorizontalOffset(2);
+ setVerticalOffset(2);
+ setJointPoint("auto");
+ setMode("ajax");
+ setPopupWidth("auto");
+ setDisabled(true);
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/gmap/Gmap.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/gmap/Gmap.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/gmap/Gmap.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -44,11 +44,11 @@
}
public String getDragging() {
- System.out.println("aaa" + dragging);
+
return dragging;
}
public void setDragging(String dragging) {
- this.dragging = dragging;
+ this.dragging = dragging;
}
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSlider/InputNumberSlider.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSlider/InputNumberSlider.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSlider/InputNumberSlider.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,5 +1,6 @@
package inputNumberSlider;
+import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
public class InputNumberSlider {
@@ -54,8 +55,8 @@
showBoundaryValues=true;
}
- public void changeListener(ValueChangeListener event) {
- System.out.println(event.toString());
+ public void changeListener(ValueChangeEvent event) {
+ System.out.println("valueChangeListener " + event.toString());
}
public boolean isDisabled() {
@@ -273,4 +274,70 @@
this.value = value;
}
+ public void bTest1(){
+ setMinValue("0");
+ setMaxValue("9");
+ setInputSize(1);
+ setInputPosition("right");
+ setEnableManualInput(true);
+ setValue("3");
+ setShowInput(true);
+ setStep("1");
+ setShowToolTip(true);
+ setShowBoundaryValues(true);
+ setShowInput(true);
+ }
+
+ public void bTest2(){
+ setMinValue("1000");
+ setMaxValue("99999");
+ setInputSize(10);
+ setInputPosition("left");
+ setEnableManualInput(false);
+ setValue("99999");
+ setShowInput(true);
+ setStep("50");
+ setShowToolTip(false);
+ setShowBoundaryValues(true);
+ setShowInput(true);
+ }
+
+ public void bTest3(){
+ setMinValue("101");
+ setMaxValue("203");
+ setInputSize(4);
+ setInputPosition("left");
+ setEnableManualInput(false);
+ setValue("102");
+ setShowInput(true);
+ setStep("2");
+ setShowToolTip(false);
+ setShowBoundaryValues(true);
+ }
+
+ public void bTest4(){
+ setMinValue("10");
+ setMaxValue("12");
+ setInputSize(2);
+ setInputPosition("left");
+ setEnableManualInput(false);
+ setValue("102");
+ setShowInput(false);
+ setStep("2");
+ setShowToolTip(false);
+ setShowBoundaryValues(true);
+ }
+
+ public void bTest5(){
+ setMinValue("-99999");
+ setMaxValue("99999");
+ setInputSize(15);
+ setInputPosition("right");
+ setEnableManualInput(true);
+ setValue("103");
+ setShowInput(true);
+ setStep("2");
+ setShowToolTip(false);
+ setShowBoundaryValues(false);
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSpinner/InputNumberSpinner.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSpinner/InputNumberSpinner.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/inputNumberSpinner/InputNumberSpinner.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -4,18 +4,19 @@
// private String size;
// private String controlPosition;
- private int inputSize;
- private String max;
- private String min;
- private String value;
- private String step;
- private String inputStyle;
- private String style;
- private String btnLabel = "ON";
- private boolean cycled;
- private boolean disabled;
- private boolean manualInput;
- private boolean rendered;
+ private int inputSize;
+ private int tabindex;
+ private String max;
+ private String min;
+ private String value;
+ private String step;
+ private String inputStyle;
+ private String style;
+ private String btnLabel = "ON";
+ private boolean cycled;
+ private boolean disabled;
+ private boolean manualInput;
+ private boolean rendered;
public InputNumberSpinner() {
// size= "200";
@@ -47,9 +48,10 @@
}
}
+
/*
- * public String getControlPosition() { return controlPosition; } public void
- * setControlPosition(String controlPosition) { this.controlPosition =
+ * public String getControlPosition() { return controlPosition; } public
+ * void setControlPosition(String controlPosition) { this.controlPosition =
* controlPosition; }
*/
@@ -154,4 +156,66 @@
this.inputSize = inputSize;
}
+ public int getTabindex() {
+ return tabindex;
+ }
+
+ public void setTabindex(int tabindex) {
+ this.tabindex = tabindex;
+ }
+
+ public void bTest1(){
+ setCycled(true);
+ setManualInput(true);
+ setInputSize(5);
+ setMin("0");
+ setMax("20");
+ setStep("1");
+ setTabindex(2);
+ setValue("1");
+ }
+
+ public void bTest2(){
+ setCycled(false);
+ setManualInput(false);
+ setInputSize(10);
+ setMin("1000");
+ setMax("99999");
+ setStep("255");
+ setTabindex(5);
+ setValue("5555");
+ }
+
+ public void bTest3(){
+ setCycled(true);
+ setManualInput(false);
+ setInputSize(3);
+ setMin("101");
+ setMax("202");
+ setStep("2");
+ setTabindex(2);
+ setValue("102");
+ }
+
+ public void bTest4(){
+ setCycled(false);
+ setManualInput(true);
+ setInputSize(4);
+ setMin("33");
+ setMax("66");
+ setStep("11");
+ setTabindex(3);
+ setValue("55");
+ }
+
+ public void bTest5(){
+ setCycled(true);
+ setManualInput(true);
+ setInputSize(15);
+ setMin("-99999");
+ setMax("99999");
+ setStep("33");
+ setTabindex(5);
+ setValue("101");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/message/Message.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/message/Message.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/message/Message.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -7,8 +7,12 @@
private boolean showDetail;
private boolean showSummary;
private boolean tooltip;
+ private String select1;
+ private String select2;
+ private String select3;
+ private String select4;
+ private String select5;
-
public Message() {
msg = "select1";
layout = "table";
@@ -16,6 +20,11 @@
showDetail = true;
showSummary = false;
tooltip = true;
+ select1 = "error";
+ select2 = "error";
+ select3 = "error";
+ select4 = "error";
+ select5 = "error";
}
public String getMsg() {
@@ -65,4 +74,114 @@
public void setTitle(String title) {
this.title = title;
}
+
+ public String getSelect1() {
+ return select1;
+ }
+
+ public void setSelect1(String select1) {
+ this.select1 = select1;
+ }
+
+ public String getSelect2() {
+ return select2;
+ }
+
+ public void setSelect2(String select2) {
+ this.select2 = select2;
+ }
+
+ public String getSelect3() {
+ return select3;
+ }
+
+ public void setSelect3(String select3) {
+ this.select3 = select3;
+ }
+
+ public String getSelect4() {
+ return select4;
+ }
+
+ public void setSelect4(String select4) {
+ this.select4 = select4;
+ }
+
+ public String getSelect5() {
+ return select5;
+ }
+
+ public void setSelect5(String select5) {
+ this.select5 = select5;
+ }
+
+ public void bTest1(){
+ setLayout("table");
+ setMsg("fatal");
+ setShowDetail(true);
+ setShowSummary(true);
+ setTitle("Test1");
+ setTooltip(true);
+ setSelect1("error");
+ setSelect2("fatal");
+ setSelect3("warn");
+ setSelect4("info");
+ setSelect5("passed");
+ }
+
+ public void bTest2(){
+ setLayout("table");
+ setMsg("error");
+ setShowDetail(false);
+ setShowSummary(true);
+ setTitle("Test2");
+ setTooltip(true);
+ setSelect1("error");
+ setSelect2("fatal");
+ setSelect3("fatal");
+ setSelect4("passed");
+ setSelect5("passed");
+ }
+
+ public void bTest3(){
+ setLayout("table");
+ setMsg("passed");
+ setShowDetail(true);
+ setShowSummary(false);
+ setTitle("Test3");
+ setTooltip(true);
+ setSelect1("error");
+ setSelect2("error");
+ setSelect3("passed");
+ setSelect4("error");
+ setSelect5("passed");
+ }
+
+ public void bTest4(){
+ setLayout("table");
+ setMsg("passed");
+ setShowDetail(true);
+ setShowSummary(true);
+ setTitle("Test4");
+ setTooltip(false);
+ setSelect1("warn");
+ setSelect2("warn");
+ setSelect3("warn");
+ setSelect4("warn");
+ setSelect5("warn");
+ }
+
+ public void bTest5(){
+ setLayout("table");
+ setMsg("warn");
+ setShowDetail(false);
+ setShowSummary(false);
+ setTitle("Test5");
+ setTooltip(false);
+ setSelect1("passed");
+ setSelect2("fatal");
+ setSelect3("error");
+ setSelect4("passed");
+ setSelect5("warn");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/modalPanel/ModalPanel.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/modalPanel/ModalPanel.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/modalPanel/ModalPanel.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -71,5 +71,49 @@
public void setWidth(int width) {
this.width = width;
}
+
+ public void bTest1(){
+ setHeight(300);
+ setWidth(450);
+ setMinHeight(250);
+ setMinWidth(400);
+ setMoveable(false);
+ setResizeable(false);
+ }
+ public void bTest2(){
+ setHeight(350);
+ setWidth(400);
+ setMinHeight(400);
+ setMinWidth(450);
+ setMoveable(true);
+ setResizeable(false);
+ }
+
+ public void bTest3(){
+ setHeight(400);
+ setWidth(300);
+ setMinHeight(400);
+ setMinWidth(300);
+ setMoveable(true);
+ setResizeable(true);
+ }
+
+ public void bTest4(){
+ setHeight(450);
+ setWidth(450);
+ setMinHeight(450);
+ setMinWidth(450);
+ setMoveable(false);
+ setResizeable(true);
+ }
+
+ public void bTest5(){
+ setHeight(900);
+ setWidth(800);
+ setMinHeight(700);
+ setMinWidth(600);
+ setMoveable(true);
+ setResizeable(true);
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/paint2D/Paint2D.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/paint2D/Paint2D.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/paint2D/Paint2D.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -15,9 +15,9 @@
public class Paint2D {
- private static int size = 100;
private static float location = 150;
-
+
+ PaintData data = new PaintData();
private int width;
private int height;
private String title;
@@ -66,8 +66,8 @@
}
public void paint(Graphics2D g2, Object obj) {
- PaintData data = (PaintData) obj;
- int testLenght = data.text.length();
+ data.setText(((PaintData) obj).getText());
+ int testLenght = data.getText().length();
int fontSize = testLenght < 8 ? 40 : 40 - (testLenght - 8);
if (fontSize < 12) fontSize = 12;
Font font = new Font("Serif", Font.HANGING_BASELINE, fontSize);
@@ -78,7 +78,7 @@
g2.translate(x, y);
g2.setPaint(Color.BLUE);
- g2.drawString(data.text, 0, 0);
+ g2.drawString(data.getText(), 0, 0);
}
public int getHeight() {
@@ -153,14 +153,6 @@
this.location = location;
}
- public int getSize() {
- return size;
- }
-
- public void setSize(int size) {
- this.size = size;
- }
-
public boolean isRendered() {
return rendered;
}
@@ -176,4 +168,69 @@
public void setStyle(boolean style) {
this.style = style;
}
+
+ public void bTest1(){
+ setAlign("top");
+ setBgcolor("gray");
+ setBorder("3");
+ setFormat("gif");
+ setHeight(300);
+ setWidth(300);
+ setVspace("15");
+ setHspace("15");
+ setTitle("Test1");
+ //data.setText("Test1!");
+ }
+
+ public void bTest2(){
+ setAlign("middle");
+ setBgcolor("yellow");
+ setBorder("1");
+ setFormat("png");
+ setHeight(400);
+ setWidth(300);
+ setVspace("0");
+ setHspace("15");
+ setTitle("Test2");
+ //data.setText("Test2!");
+ }
+
+ public void bTest3(){
+ setAlign("left");
+ setBgcolor("lime");
+ setBorder("10");
+ setFormat("jpeg");
+ setHeight(300);
+ setWidth(400);
+ setVspace("15");
+ setHspace("0");
+ setTitle("Test3");
+ //data.setText("Test3!");
+ }
+
+ public void bTest4(){
+ setAlign("right");
+ setBgcolor("teal");
+ setBorder("3");
+ setFormat("gif");
+ setHeight(400);
+ setWidth(600);
+ setVspace("0");
+ setHspace("0");
+ setTitle("Test4");
+ //data.setText("Test4!");
+ }
+
+ public void bTest5(){
+ setAlign("botton");
+ setBgcolor("fuchsia");
+ setBorder("3");
+ setFormat("png");
+ setHeight(400);
+ setWidth(450);
+ setVspace("-5");
+ setHspace("-5");
+ setTitle("Test5");
+ //data.setText("Test5!");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/paint2D/PaintData.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/paint2D/PaintData.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/paint2D/PaintData.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -3,7 +3,7 @@
import java.io.Serializable;
public class PaintData implements Serializable{
- String text;
+ private String text;
public PaintData()
{
Modified: branches/3.1.x/test-applications/facelets/src/main/java/panel/Panel.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/panel/Panel.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/panel/Panel.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -57,6 +57,36 @@
else
for(int i = 0; i < title.length; i++)
title[i] = t + "_" + i;
-
}
+
+ public void bTest1(){
+ setWidth("500px");
+ setHeight("300px");
+ setTitle(new String [] {"Test1", "Test 1", "Test_1", "Test-1"});
+ }
+
+ public void bTest2(){
+ setWidth("500px");
+ setHeight("600px");
+ setTitle(new String [] {"Test2", "Test 2", "Test_2", "Test-2"});
+ }
+
+ public void bTest3(){
+ setWidth("50%");
+ setHeight("300px");
+ setTitle(new String [] {"Test3", "Test 3", "Test_3", "Test-3"});
+ }
+
+ public void bTest4(){
+ setWidth("400px");
+ setHeight("10%");
+ setTitle(new String [] {"Test4", "Test 4", "Test_4", "Test-4"});
+ }
+
+ public void bTest5(){
+ setWidth("400px");
+ setHeight("400px");
+ setTitle(new String [] {"Test5", "Test 5", "Test_5", "Test-5"});
+ }
+
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/panelBar/PanelBar.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/panelBar/PanelBar.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/panelBar/PanelBar.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -121,4 +121,33 @@
this.btnLabel = btnLabel;
}
+ public void bTest1(){
+ setWidth("500px");
+ setHeight("300px");
+ setLabel(new String [] {"Test1", "Test 1", "Test_1", "Test-1"});
+ }
+
+ public void bTest2(){
+ setWidth("500px");
+ setHeight("600px");
+ setLabel(new String [] {"Test2", "Test 2", "Test_2", "Test-2"});
+ }
+
+ public void bTest3(){
+ setWidth("50%");
+ setHeight("300px");
+ setLabel(new String [] {"Test3", "Test 3", "Test_3", "Test-3"});
+ }
+
+ public void bTest4(){
+ setWidth("400px");
+ setHeight("10%");
+ setLabel(new String [] {"Test4", "Test 4", "Test_4", "Test-4"});
+ }
+
+ public void bTest5(){
+ setWidth("400px");
+ setHeight("400px");
+ setLabel(new String [] {"Test5", "Test 5", "Test_5", "Test-5"});
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/panelMenu/PanelMenu.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/panelMenu/PanelMenu.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/panelMenu/PanelMenu.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -129,4 +129,112 @@
public void setInputText(String inputText) {
this.inputText = inputText;
}
+
+ public void bTest1(){
+ icon.setCollapsed(icon.iconCollapse);
+ icon.setExpanded(icon.iconExpand);
+ icon.setItem(icon.iconItem);
+ icon.setIcon(icon.iconFileManager);
+ icon.setCollapsedGroup(icon.iconAjaxProcess);
+ icon.setDisabledGroup(icon.iconAjaxStoped);
+
+ setWidth("400px");
+ setAlign("right");
+ setDisabled(false);
+ setExpandMode("ajax");
+ setExpandSingle(false);
+ setIconGroupPosition("left");
+ setIconGroupTopPosition("right");
+ setIconItemPosition("left");
+ setIconItemTopPosition("right");
+ setMode("ajax");
+ setTabIndex("3");
+ }
+
+ public void bTest2(){
+ icon.setCollapsed(icon.iconExpand);
+ icon.setExpanded(icon.iconCollapse);
+ icon.setItem(icon.iconHeader);
+ icon.setIcon(icon.iconFileManagerReject);
+ icon.setCollapsedGroup(icon.iconAjaxStoped);
+ icon.setDisabledGroup(icon.iconAjaxProcess);
+
+ setWidth("250px");
+ setAlign("bottom");
+ setDisabled(false);
+ setExpandMode("server");
+ setExpandSingle(false);
+ setIconGroupPosition("right");
+ setIconGroupTopPosition("left");
+ setIconItemPosition("right");
+ setIconItemTopPosition("left");
+ setMode("server");
+ setTabIndex("2");
+ }
+
+ public void bTest3(){
+ icon.setCollapsed(icon.iconCollapse);
+ icon.setExpanded(icon.iconExpand);
+ icon.setItem(icon.iconItem);
+ icon.setIcon(icon.iconFileManager);
+ icon.setCollapsedGroup(icon.iconAjaxProcess);
+ icon.setDisabledGroup(icon.iconAjaxStoped);
+
+ setWidth("400px");
+ setAlign("middle");
+ setDisabled(false);
+ setExpandMode("server");
+ setExpandSingle(false);
+ setIconGroupPosition("right");
+ setIconGroupTopPosition("right");
+ setIconItemPosition("right");
+ setIconItemTopPosition("left");
+ setMode("none");
+ setTabIndex("2");
+
+ }
+
+ public void bTest4(){
+ icon.setCollapsed(icon.iconExpand);
+ icon.setExpanded(icon.iconCollapse);
+ icon.setItem(icon.iconHeader);
+ icon.setIcon(icon.iconFileManagerReject);
+ icon.setCollapsedGroup(icon.iconAjaxStoped);
+ icon.setDisabledGroup(icon.iconAjaxProcess);
+
+ setWidth("250px");
+ setAlign("top");
+ setDisabled(true);
+ setExpandMode("none");
+ setExpandSingle(false);
+ setIconGroupPosition("left");
+ setIconGroupTopPosition("left");
+ setIconItemPosition("left");
+ setIconItemTopPosition("left");
+ setMode("ajax");
+ setTabIndex("2");
+
+ }
+
+ public void bTest5(){
+ icon.setCollapsed(icon.iconCollapse);
+ icon.setExpanded(icon.iconExpand);
+ icon.setItem(icon.iconItem);
+ icon.setIcon(icon.iconFileManager);
+ icon.setCollapsedGroup(icon.iconAjaxProcess);
+ icon.setDisabledGroup(icon.iconAjaxStoped);
+
+ setWidth("250px");
+ setAlign("right");
+ setDisabled(false);
+ setExpandMode("none");
+ setExpandSingle(true);
+ setIconGroupPosition("right");
+ setIconGroupTopPosition("right");
+ setIconItemPosition("right");
+ setIconItemTopPosition("right");
+ setMode("none");
+ setTabIndex("2");
+
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/sTP/SimpleTogglePanel.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/sTP/SimpleTogglePanel.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/sTP/SimpleTogglePanel.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -5,7 +5,7 @@
private String switchType; // "client", "server"(default), "ajax"
private String width;
private String height;
-
+ private String position = "right";
private boolean focus;
private boolean rendered;
@@ -56,4 +56,42 @@
public void setFocus(boolean focus) {
this.focus = focus;
}
+
+ public void bTest1(){
+ setHeight("80px");
+ setWidth("300px");
+ setSwitchType("ajax");
+ }
+
+ public void bTest2(){
+ setHeight("10%");
+ setWidth("100%");
+ setSwitchType("client");
+ }
+
+ public void bTest3(){
+ setHeight("80px");
+ setWidth("100%");
+ setSwitchType("server");
+ }
+
+ public void bTest4(){
+ setHeight("10%");
+ setWidth("200px");
+ setSwitchType("client");
+ }
+
+ public void bTest5(){
+ setHeight("400px");
+ setWidth("250px");
+ setSwitchType("client");
+ }
+
+ public String getPosition() {
+ return position;
+ }
+
+ public void setPosition(String position) {
+ this.position = position;
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/sb/Sb.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/sb/Sb.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/sb/Sb.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -25,7 +25,7 @@
private String bgColor;
private String shadowDepth;
private boolean focus;
- private boolean check;
+
private boolean reRender;
private static final String[] cit = { "Abba", "Abbeville", "Acworth",
@@ -120,14 +120,6 @@
this.cellspacing = cellspacing;
}
- public boolean isCheck() {
- return check;
- }
-
- public void setCheck(boolean check) {
- this.check = check;
- }
-
public int getFirst() {
return first;
}
@@ -265,4 +257,68 @@
this.reRender = reRender;
}
+ public void bTest1(){
+ setBorder("2");
+ setCellpadding("0");
+ setCellspacing("0");
+ setFrequency("0");
+ setHeight("150");
+ setWidth("200");
+ setMinchars("1");
+ setShadowDepth("11");
+ setShadowOpacity("3");
+ setZindex("3");
+ }
+
+ public void bTest2(){
+ setBorder("0");
+ setCellpadding("3");
+ setCellspacing("3");
+ setFrequency("2");
+ setHeight("200");
+ setWidth("200");
+ setMinchars("1");
+ setShadowDepth("1");
+ setShadowOpacity("7");
+ setZindex("3");
+ }
+
+ public void bTest3(){
+ setBorder("1");
+ setCellpadding("5");
+ setCellspacing("0");
+ setFrequency("1");
+ setHeight("150");
+ setWidth("200");
+ setMinchars("2");
+ setShadowDepth("1");
+ setShadowOpacity("7");
+ setZindex("3");
+ }
+
+ public void bTest4(){
+ setBorder("1");
+ setCellpadding("0");
+ setCellspacing("5");
+ setFrequency("3");
+ setHeight("150");
+ setWidth("200");
+ setMinchars("2");
+ setShadowDepth("7");
+ setShadowOpacity("1");
+ setZindex("3");
+ }
+
+ public void bTest5(){
+ setBorder("4");
+ setCellpadding("1");
+ setCellspacing("1");
+ setFrequency("5");
+ setHeight("200");
+ setWidth("400");
+ setMinchars("2");
+ setShadowDepth("5");
+ setShadowOpacity("5");
+ setZindex("1");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/separator/Separator.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/separator/Separator.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/separator/Separator.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -132,4 +132,43 @@
this.width = width;
}
+ public void bTest1(){
+ setAlign("left");
+ setHeight("300px");
+ setWidth("10px");
+ setLineType("beveled");
+ setTitle("Test1");
+ }
+
+ public void bTest2(){
+ setAlign("center");
+ setHeight("300px");
+ setWidth("10px");
+ setLineType("dotted");
+ setTitle("Test2");
+ }
+
+ public void bTest3(){
+ setAlign("right");
+ setHeight("300px");
+ setWidth("10px");
+ setLineType("dashed");
+ setTitle("Test3");
+ }
+
+ public void bTest4(){
+ setAlign("left");
+ setHeight("300px");
+ setWidth("10px");
+ setLineType("double");
+ setTitle("Test4");
+ }
+
+ public void bTest5(){
+ setAlign("left");
+ setHeight("300px");
+ setWidth("10px");
+ setLineType("solid");
+ setTitle("Test5");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/spacer/Spacer.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/spacer/Spacer.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/spacer/Spacer.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -72,5 +72,29 @@
public void setBtn(String btn) {
this.btn = btn;
}
+
+ public void bTest1(){
+ setHeight("100");
+ setWidth("10");
+ }
+ public void bTest2(){
+ setHeight("10");
+ setWidth("100");
+ }
+
+ public void bTest3(){
+ setHeight("5");
+ setWidth("5");
+ }
+
+ public void bTest4(){
+ setHeight("100");
+ setWidth("100");
+ }
+
+ public void bTest5(){
+ setHeight("400");
+ setWidth("200");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/tabPanel/TabPanel.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/tabPanel/TabPanel.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/tabPanel/TabPanel.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -53,7 +53,7 @@
setDisabledTabStyle("disabledTabStyle");
setInactiveTabStyle("inactiveTabStyle");
} else {
- setBtnLabel("OFF");
+ setBtnLabel("ON");
setActiveTabStyle(null);
setContentStyle(null);
setDisabledTabStyle(null);
@@ -196,4 +196,74 @@
this.immediate = immediate;
}
+ public void bTest1() {
+ setDisabledTab(false);
+ setHeaderAlignment("left");
+ setHeaderSpacing("10px");
+ setHeight("250px");
+ setImmediate(false);
+ setLabel("Test 1");
+ setLabelWidth("10px");
+ setWidth("300px");
+ setSelectedTab("2");
+ setSwitchType("server");
+ setTitle("Title test 1");
+ }
+
+ public void bTest2() {
+ setDisabledTab(true);
+ setHeaderAlignment("right");
+ setHeaderSpacing("40px");
+ setHeight("400px");
+ setImmediate(false);
+ setLabel("Test 2");
+ setLabelWidth("40px");
+ setWidth("40%");
+ setSelectedTab("1");
+ setSwitchType("ajax");
+ setTitle("Title test2");
+ }
+
+ public void bTest3() {
+ setDisabledTab(false);
+ setHeaderAlignment("center");
+ setHeaderSpacing("20px");
+ setHeight("20%");
+ setImmediate(false);
+ setLabel("Test 3");
+ setLabelWidth("400px");
+ setWidth("600px");
+ setSelectedTab("3");
+ setSwitchType("client");
+ setTitle("Title test 3");
+ }
+
+ public void bTest4() {
+ setDisabledTab(true);
+ setHeaderAlignment("left");
+ setHeaderSpacing("300px");
+ setHeight("500px");
+ setImmediate(false);
+ setLabel("Teset 4");
+ setLabelWidth("500px");
+ setWidth("500px");
+ setSelectedTab("2");
+ setSwitchType("server");
+ setTitle("Title test 4");
+ }
+
+ public void bTest5() {
+ setDisabledTab(false);
+ setHeaderAlignment("left");
+ setHeaderSpacing("20px");
+ setHeight("40%");
+ setImmediate(false);
+ setLabel("Test 5");
+ setLabelWidth("40px");
+ setWidth("10%");
+ setSelectedTab("3");
+ setSwitchType("client");
+ setTitle("Title test 5");
+ }
+
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/togglePanel/TogglePanel.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/togglePanel/TogglePanel.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/togglePanel/TogglePanel.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -14,40 +14,57 @@
stateOrder="asus,benq,toshiba";
}
-
-
public String getInitialState() {
return initialState;
}
-
-
public void setInitialState(String initialState) {
this.initialState = initialState;
}
-
-
public String getStateOrder() {
return stateOrder;
}
-
-
public void setStateOrder(String stateOrder) {
this.stateOrder = stateOrder;
}
-
-
public String getSwitchType() {
return switchType;
}
-
-
public void setSwitchType(String switchType) {
this.switchType = switchType;
}
+ public void bTest1() {
+ setInitialState("Asus");
+ setStateOrder("Asus,Benq,Toshiba");
+ setSwitchType("client");
+ }
+
+ public void bTest2() {
+ setInitialState("Benq");
+ setStateOrder("Toshiba, Asus, Benq");
+ setSwitchType("client");
+ }
+
+ public void bTest3() {
+ setInitialState("Asus");
+ setStateOrder("Asus,Benq,Toshiba");
+ setSwitchType("server");
+ }
+
+ public void bTest4() {
+ setInitialState("Benq");
+ setStateOrder("Asus,Benq,Toshiba");
+ setSwitchType("ajax");
+ }
+
+ public void bTest5() {
+ setInitialState("toshiba");
+ setStateOrder("Toshiba, Asus, Benq");
+ setSwitchType("ajax");
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/java/tooltip/Tooltip.java
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/java/tooltip/Tooltip.java 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/java/tooltip/Tooltip.java 2007-11-02 10:11:55 UTC (rev 3703)
@@ -116,4 +116,68 @@
this.delay = delay;
}
+ public void bTest1(){
+ setDelay(0);
+ setDirection("top-right");
+ setDisabled(false);
+ setFollowMouse(false);
+ setHorizontalOffset(0);
+ setVerticalOffset(0);
+ setLayout("inline");
+ setMode("client");
+ setValue("Test1");
+ setRendered(true);
+ }
+
+ public void bTest2(){
+ setDelay(0);
+ setDirection("top-left");
+ setDisabled(false);
+ setFollowMouse(false);
+ setHorizontalOffset(5);
+ setVerticalOffset(5);
+ setLayout("block");
+ setMode("ajax");
+ setValue("Test2");
+ setRendered(true);
+ }
+
+ public void bTest3(){
+ setDelay(0);
+ setDirection("bottom-right");
+ setDisabled(false);
+ setFollowMouse(true);
+ setHorizontalOffset(5);
+ setVerticalOffset(0);
+ setLayout("inline");
+ setMode("client");
+ setValue("Test3");
+ setRendered(true);
+ }
+
+ public void bTest4(){
+ setDelay(0);
+ setDirection("bottom-left");
+ setDisabled(false);
+ setFollowMouse(true);
+ setHorizontalOffset(0);
+ setVerticalOffset(5);
+ setLayout("block");
+ setMode("client");
+ setValue("Test4");
+ setRendered(true);
+ }
+
+ public void bTest5(){
+ setDelay(0);
+ setDirection("bottom-right");
+ setDisabled(false);
+ setFollowMouse(true);
+ setHorizontalOffset(-5);
+ setVerticalOffset(-5);
+ setLayout("inline");
+ setMode("ajax");
+ setValue("Test5");
+ setRendered(true);
+ }
}
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Calendar/Calendar.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Calendar/Calendar.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Calendar/Calendar.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,65 +1,44 @@
-<f:subview id="calendarSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="calendarSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
-<h:form>
-
- <rich:messages showDetail="true"></rich:messages>
-
- <h:panelGrid columns="2">
- <h:outputText value="Client mode" />
- <h:outputText value="Ajax mode" />
+ <h:form>
+ <h:messages />
+ <rich:messages showDetail="true"></rich:messages>
- <rich:calendar id="calendarClientID" dataModel="#{calendarDataModel}"
- locale="#{calendarBean.locale}" popup="#{calendarBean.popup}"
- preloadDateRangeBegin="#{calendarBean.prDateRangeBegin}"
- preloadDateRangeEnd="#{calendarBean.prDateRangeEnd}"
- datePattern="#{calendarBean.pattern}"
- weekDayLabels="#{calendarBean.weekDayLabels}"
- weekDayLabelsShort="#{calendarBean.weekDayLabelsShort}"
- monthLabels="#{calendarBean.monthLabels}"
- monthLabelsShort="#{calendarBean.monthLabelsShort}"
- value="#{calendarBean.selectedDate}"
- currentDate="#{calendarBean.currentDate}"
- jointPoint="#{calendarBean.jointPoint}"
- direction="#{calendarBean.direction}"
- enableManualInput="#{calendarBean.enableManualInput}"
- showInput="#{calendarBean.showInput}" buttonLabel="#{calendarBean.label}"
- boundaryDatesMode="#{calendarBean.boundary}"
- currentDateChangeListener="#{calendarBean.dcl}"
- valueChangeListener="#{calendarBean.ddd}" reRender="counter"
- inputClass="ic" buttonClass="bc"
- ajaxSingle="#{calendarBean.ajaxSingle}"
- buttonIcon="#{calendarBean.icon}"
- buttonIconDisabled="#{icon.iconFileManagerReject}"
- disabled="#{calendarBean.disabled}"
- bypassUpdates="#{calendarBean.bypassUpdates}"
- height="#{calendarBean.height}"
- width="#{calendarBean.width}"
- zindex="#{calendarBean.zindex}"
- toolTipMode="#{calendarBean.toolTipMode}"
- rendered="#{calendarBean.rendered}"
- focus="popupModeID"
- mode="client"
- required="#{calendarBean.required}"
- requiredMessage="Required Message"
- >
- <f:facet name="weekDay">
- <f:verbatim><span style="padding: 2px; font-size: 4" >{weekDayLabel + weekDayLabelShort}</span></f:verbatim>
+ <h:panelGrid columns="2">
+ <h:outputText value="Client mode" rendered="#{calendarBean.renderedClient}" />
+ <h:outputText value="Ajax mode" rendered="#{calendarBean.renderedAjax}"/>
+
+ <rich:calendar id="calendarClientID" dataModel="#{calendarDataModel}" locale="#{calendarBean.locale}"
+ popup="#{calendarBean.popup}" preloadDateRangeBegin="#{calendarBean.prDateRangeBegin}"
+ preloadDateRangeEnd="#{calendarBean.prDateRangeEnd}" datePattern="#{calendarBean.pattern}"
+ weekDayLabels="#{calendarBean.weekDayLabels}" weekDayLabelsShort="#{calendarBean.weekDayLabelsShort}"
+ monthLabels="#{calendarBean.monthLabels}" monthLabelsShort="#{calendarBean.monthLabelsShort}"
+ value="#{calendarBean.selectedDate}" currentDate="#{calendarBean.currentDate}" jointPoint="#{calendarBean.jointPoint}"
+ direction="#{calendarBean.direction}" enableManualInput="#{calendarBean.enableManualInput}"
+ showInput="#{calendarBean.showInput}" buttonLabel="#{calendarBean.label}" boundaryDatesMode="#{calendarBean.boundary}"
+ currentDateChangeListener="#{calendarBean.dcl}" valueChangeListener="#{calendarBean.ddd}" reRender="calendarPropertyID,counter" inputClass="ic"
+ buttonClass="bc" ajaxSingle="#{calendarBean.ajaxSingle}" buttonIcon="#{calendarBean.icon}"
+ buttonIconDisabled="#{icon.iconFileManagerReject}" disabled="#{calendarBean.disabled}"
+ bypassUpdates="#{calendarBean.bypassUpdates}" zindex="#{calendarBean.zindex}" toolTipMode="#{calendarBean.toolTipMode}" rendered="#{calendarBean.renderedClient}"
+ focus="popupModeID" mode="client" required="#{calendarBean.required}" requiredMessage="Required Message"
+ timeZone="#{calendarBean.tmZone}">
+ <f:facet name="weekDay">
+ <f:verbatim>
+ <span style="padding: 2px; font-size: 4">{weekDayLabel + weekDayLabelShort}</span>
+ </f:verbatim>
</f:facet>
-
+
<f:facet name="optionalHeader">
- <h:outputText value="optionalHeader Facet" />
+ <h:outputText value="optionalHeader Facet #{headerFacet}" />
</f:facet>
-
+
<f:facet name="optionalFooter">
<h:outputText value="optionalFooter Facet" />
</f:facet>
-
+
<f:validator validatorId="org.richfaces.CalendarValidator" />
-
+
<h:panelGrid columns="2">
<f:verbatim>
<span style="padding: 2px;">{day}</span>
@@ -71,51 +50,36 @@
</h:panelGrid>
</h:panelGrid>
</rich:calendar>
- <rich:calendar id="calendarAjaxID" dataModel="#{calendarDataModel}"
- locale="#{calendarBean.locale}" popup="#{calendarBean.popup}"
- datePattern="#{calendarBean.pattern}"
- weekDayLabels="#{calendarBean.weekDayLabels}"
- weekDayLabelsShort="#{calendarBean.weekDayLabelsShort}"
- monthLabels="#{calendarBean.monthLabels}"
- monthLabelsShort="#{calendarBean.monthLabelsShort}"
- value="#{calendarBean.selectedDate}"
- currentDate="#{calendarBean.currentDate}"
- jointPoint="#{calendarBean.jointPoint}"
- direction="#{calendarBean.direction}"
- enableManualInput="#{calendarBean.enableManualInput}"
- showInput="#{calendarBean.showInput}" buttonLabel="#{calendarBean.label}"
- boundaryDatesMode="#{calendarBean.boundary}"
- currentDateChangeListener="#{calendarBean.dcl}"
- valueChangeListener="#{calendarBean.ddd}" reRender="counter"
- inputClass="ic" buttonClass="bc"
- ajaxSingle="#{calendarBean.ajaxSingle}"
- buttonIcon="#{calendarBean.icon}"
- buttonIconDisabled="#{icon.iconFileManagerReject}"
- disabled="#{calendarBean.disabled}"
- bypassUpdates="#{calendarBean.bypassUpdates}"
- height="#{calendarBean.height}"
- width="#{calendarBean.width}"
- zindex="#{calendarBean.zindex}"
- toolTipMode="#{calendarBean.toolTipMode}"
- rendered="#{calendarBean.rendered}"
- focus="popupModeID"
- mode="ajax"
- required="#{calendarBean.required}"
- requiredMessage="Required Message">
- <f:facet name="weekDay">
- <f:verbatim><span style="padding: 2px; font-size: 4" >{weekDayLabel + weekDayLabelShort}</span></f:verbatim>
+
+ <rich:calendar id="calendarAjaxID" dataModel="#{calendarDataModel}" locale="#{calendarBean.locale}"
+ popup="#{calendarBean.popup}" datePattern="#{calendarBean.pattern}" weekDayLabels="#{calendarBean.weekDayLabels}"
+ weekDayLabelsShort="#{calendarBean.weekDayLabelsShort}" monthLabels="#{calendarBean.monthLabels}"
+ monthLabelsShort="#{calendarBean.monthLabelsShort}" value="#{calendarBean.selectedDate}"
+ currentDate="#{calendarBean.currentDate}" jointPoint="#{calendarBean.jointPoint}" direction="#{calendarBean.direction}"
+ enableManualInput="#{calendarBean.enableManualInput}" showInput="#{calendarBean.showInput}"
+ buttonLabel="#{calendarBean.label}" boundaryDatesMode="#{calendarBean.boundary}"
+ currentDateChangeListener="#{calendarBean.dcl}" valueChangeListener="#{calendarBean.ddd}" reRender="calendarPropertyID,counter" inputClass="ic"
+ buttonClass="bc" ajaxSingle="#{calendarBean.ajaxSingle}" buttonIcon="#{calendarBean.icon}"
+ buttonIconDisabled="#{icon.iconFileManagerReject}" disabled="#{calendarBean.disabled}"
+ bypassUpdates="#{calendarBean.bypassUpdates}" zindex="#{calendarBean.zindex}" toolTipMode="#{calendarBean.toolTipMode}" rendered="#{calendarBean.renderedAjax}"
+ focus="popupModeID" mode="ajax" required="#{calendarBean.required}" requiredMessage="Required Message"
+ timeZone="#{calendarBean.tmZone}">
+ <f:facet name="weekDay">
+ <f:verbatim>
+ <span style="padding: 2px; font-size: 4">{weekDayLabel + weekDayLabelShort}</span>
+ </f:verbatim>
</f:facet>
-
+
<f:facet name="optionalHeader">
<h:outputText value="optionalHeader Facet" />
</f:facet>
-
+
<f:facet name="optionalFooter">
<h:outputText value="optionalFooter Facet" />
</f:facet>
-
+
<f:validator validatorId="org.richfaces.CalendarValidator" />
-
+
<h:panelGrid columns="2">
<f:verbatim>
<span style="padding: 2px;">{day}</span>
@@ -127,147 +91,160 @@
</h:panelGrid>
</h:panelGrid>
</rich:calendar>
- </h:panelGrid>
-
+ </h:panelGrid>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="calendar straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{calendarBean.bTest1}" value="run" reRender="calendarClientID,calendarAjaxID,calendarPropertyID"></a4j:commandButton>
- <h:panelGrid columns="2">
- <h:outputText value="Select Locale:" />
- <h:selectOneRadio onchange="submit()" value="en/US">
- <f:selectItem itemLabel="US" itemValue="en/US" />
- <f:selectItem itemLabel="DE" itemValue="de/DE" />
- <f:selectItem itemLabel="FR" itemValue="fr/FR" />
- <f:selectItem itemLabel="RU" itemValue="ru/RU" />
- </h:selectOneRadio>
-
- <h:outputText value="Popup Mode:" />
- <h:selectBooleanCheckbox id="popupModeID" value="#{calendarBean.popup}"
- onclick="submit()" />
-
- <h:outputText value="Custom day labels" />
- <h:selectOneRadio value="#{calendarBean.weekDay}">
- <f:selectItem itemLabel="none" itemValue="none"/>
- <f:selectItem itemLabel="day labels" itemValue="long"/>
- <f:selectItem itemLabel="day labels short" itemValue="short"/>
- <a4j:support event="onclick" reRender="calendarClientID,calendarAjaxID"></a4j:support>
- </h:selectOneRadio>
-
- <h:outputText value="Custom month labels" />
- <h:selectOneRadio value="#{calendarBean.month}">
- <f:selectItem itemLabel="none" itemValue="none"/>
- <f:selectItem itemLabel="day labels" itemValue="long"/>
- <f:selectItem itemLabel="day labels short" itemValue="short"/>
- <a4j:support event="onclick" reRender="calendarClientID,calendarAjaxID"></a4j:support>
- </h:selectOneRadio>
-
- <h:outputText value="Select Date Pattern:" />
- <h:selectOneMenu value="MMM d, yyyy" onchange="submit()">
- <f:selectItem itemLabel="d/M/yy" itemValue="d/M/yy" />
- <f:selectItem itemLabel="dd/M/yy" itemValue="dd/M/yy" />
- <f:selectItem itemLabel="d/MMM/y" itemValue="d/MMM/y" />
- <f:selectItem itemLabel="dd.MM.yyyy" itemValue="dd.MM.yyyy" />
- <f:selectItem itemLabel="MMM d, yyyy" itemValue="MMM d, yyyy" />
- </h:selectOneMenu>
-
- <h:inputText id="selectdate" />
- <h:commandButton type="button" value="Select Date"
- onclick="$(this.form.id+':calendarID').component.selectDate(this.form[this.form.id+':selectdate'].value);" />
-
- <h:outputText value="Preload date range begin(d.m.y)" />
- <h:inputText value="#{calendarBean.preloadDateRangeBegin}" onchange="submit();"/>
-
- <h:outputText value="Preload date range end(d.m.y)" />
- <h:inputText value="#{calendarBean.preloadDateRangeEnd}" onchange="submit();"/>
-
- <h:outputText value="z-index:" />
- <h:inputText value="#{calendarBean.zindex}">
- <a4j:support event="onchange" reRender="calendarClientID,calendarAjaxID"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{calendarBean.bTest2}" value="run" reRender="calendarClientID,calendarAjaxID,calendarPropertyID"></a4j:commandButton>
- <h:outputText value="Height:" />
- <h:inputText value="#{calendarBean.height}">
- <a4j:support event="onchange" reRender="calendarClientID,calendarAjaxID"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{calendarBean.bTest3}" value="run" reRender="calendarClientID,calendarAjaxID,calendarPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{calendarBean.bTest4}" value="run" reRender="calendarClientID,calendarAjaxID,calendarPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{calendarBean.bTest5}" value="run" reRender="calendarClientID,calendarAjaxID,calendarPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="calendarPropertyID" switchType="client" opened="true" label="calendar property">
+ <h:panelGrid columns="2">
+
+ <h:outputText value="Mode" />
+ <h:selectOneRadio value="#{calendarBean.mode}" onchange="submit();">
+ <f:selectItem itemLabel="client" itemValue="client"/>
+ <f:selectItem itemLabel="ajax" itemValue="ajax"/>
+ </h:selectOneRadio>
- <h:outputText value="Width:" />
- <h:inputText value="#{calendarBean.width}">
- <a4j:support event="onchange" reRender="calendarClientID,calendarAjaxID"></a4j:support>
- </h:inputText>
-
- <h:outputText value="reRender (counter):" />
- <h:outputText id="counter" value="#{calendarBean.counter}" />
-
- <h:outputText value="Required" />
- <h:selectBooleanCheckbox value="#{calendarBean.required}" onclick="submit()"/>
- <h:outputText value="Select Popup Joint Point:" />
- <h:selectOneRadio onchange="submit()"
- value="#{calendarBean.jointPoint}">
- <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
- <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
- <f:selectItem itemLabel="top-right" itemValue="top-right" />
- <f:selectItem itemLabel="top-left" itemValue="top-left" />
- </h:selectOneRadio>
-
- <h:outputText value="Select Popup Direction:" />
- <h:selectOneRadio onchange="submit()"
- value="#{calendarBean.direction}">
- <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
- <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
- <f:selectItem itemLabel="top-right" itemValue="top-right" />
- <f:selectItem itemLabel="top-left" itemValue="top-left" />
- <f:selectItem itemLabel="auto" itemValue="auto" />
- </h:selectOneRadio>
+ <h:outputText value="Select Locale:" />
+ <h:selectOneRadio onchange="submit()" valueChangeListener="#{calendarBean.selectLocale}">
+ <f:selectItem itemLabel="US" itemValue="en/US" />
+ <f:selectItem itemLabel="DE" itemValue="de/DE" />
+ <f:selectItem itemLabel="FR" itemValue="fr/FR" />
+ <f:selectItem itemLabel="RU" itemValue="ru/RU" />
+ </h:selectOneRadio>
- <h:outputText value="Time Zone:" />
- <h:selectOneRadio value="#{calendarBean.timeZone}" onchange="submit();">
- <f:selectItem itemLabel="Eastern European Time" itemValue="Eastern European Time"/>
- <f:selectItem itemLabel="Turkmenistan Time" itemValue="Turkmenistan Time"/>
- <f:selectItem itemLabel="Korea Standard Time" itemValue="Korea Standard Time"/>
- </h:selectOneRadio>
+ <h:outputText value="Popup Mode:" />
+ <h:selectBooleanCheckbox id="popupModeID" value="#{calendarBean.popup}" onclick="submit()" />
-
- <h:outputText value="ToolTip Mode:" />
- <h:selectOneRadio value="#{calendarBean.toolTipMode}" onchange="submit();">
- <f:selectItem itemLabel="none" itemValue="none"/>
- <f:selectItem itemLabel="single" itemValue="single"/>
- <f:selectItem itemLabel="batch" itemValue="batch"/>
- </h:selectOneRadio>
-
- <h:outputText value="BoundaryDatesMode:" />
- <h:selectOneRadio onclick="submit()" value="#{calendarBean.boundary}">
- <f:selectItem itemLabel="inactive" itemValue="inactive" />
- <f:selectItem itemLabel="select" itemValue="select" />
- <f:selectItem itemLabel="scroll" itemValue="scroll" />
- </h:selectOneRadio>
-
- <h:outputText value="EnableManualInput:"></h:outputText>
- <h:selectBooleanCheckbox value="#{calendarBean.enableManualInput}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
-
- <h:outputText value="ShowInput:"></h:outputText>
- <h:selectBooleanCheckbox value="#{calendarBean.showInput}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
-
- <h:outputText value="Disabled:" />
- <h:selectBooleanCheckbox value="#{calendarBean.disabled}" onclick="submit()"/>
-
- <h:outputText value="Rendered:" />
- <h:selectBooleanCheckbox value="#{calendarBean.rendered}" onclick="submit()"/>
-
- <f:verbatim></f:verbatim>
- <h:commandButton action="#{calendarBean.changeIcons}" value="ChangeIcons" />
-
- <h:outputText value="Current date: " />
- <h:outputText value="#{calendarBean.currentDateAsText}" />
+ <h:outputText value="Custom day labels" />
+ <h:selectOneRadio value="#{calendarBean.weekDay}">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="day labels" itemValue="long" />
+ <f:selectItem itemLabel="day labels short" itemValue="short" />
+ <a4j:support event="onclick" reRender="calendarClientID,calendarAjaxID"></a4j:support>
+ </h:selectOneRadio>
- <h:outputText value="Selected date: " />
- <h:outputText value="#{calendarBean.selectedDate}" />
-
- <f:verbatim></f:verbatim>
- <h:commandButton value="Submit" />
- </h:panelGrid>
-</h:form>
+ <h:outputText value="Custom month labels" />
+ <h:selectOneRadio value="#{calendarBean.month}">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="day labels" itemValue="long" />
+ <f:selectItem itemLabel="day labels short" itemValue="short" />
+ <a4j:support event="onclick" reRender="calendarClientID,calendarAjaxID"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="Select Date Pattern:" />
+ <h:selectOneMenu value="MMM d, yyyy" onchange="submit()">
+ <f:selectItem itemLabel="d/M/yy" itemValue="d/M/yy" />
+ <f:selectItem itemLabel="dd/M/yy" itemValue="dd/M/yy" />
+ <f:selectItem itemLabel="d/MMM/y" itemValue="d/MMM/y" />
+ <f:selectItem itemLabel="dd.MM.yyyy" itemValue="dd.MM.yyyy" />
+ <f:selectItem itemLabel="MMM d, yyyy" itemValue="MMM d, yyyy" />
+ <f:selectItem itemLabel="dd-MM-yyyy" itemValue="dd-MM-yyyy" />
+ </h:selectOneMenu>
+
+ <h:inputText id="selectdate" />
+ <h:commandButton type="button" value="Select Date"
+ onclick="$(this.form.id+':calendarID').component.selectDate(this.form[this.form.id+':selectdate'].value);" />
+
+ <h:outputText value="Preload date range begin(d.m.y)" />
+ <h:inputText value="#{calendarBean.preloadDateRangeBegin}" onchange="submit();" />
+
+ <h:outputText value="Preload date range end(d.m.y)" />
+ <h:inputText value="#{calendarBean.preloadDateRangeEnd}" onchange="submit();" />
+
+ <h:outputText value="z-index:" />
+ <h:inputText value="#{calendarBean.zindex}">
+ <a4j:support event="onchange" reRender="calendarClientID,calendarAjaxID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="reRender (counter):" />
+ <h:outputText id="counter" value="#{calendarBean.counter}" />
+
+ <h:outputText value="Required" />
+ <h:selectBooleanCheckbox value="#{calendarBean.required}" onclick="submit()" />
+
+ <h:outputText value="Select Popup Joint Point:" />
+ <h:selectOneRadio onchange="submit()" value="#{calendarBean.jointPoint}">
+ <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
+ <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
+ <f:selectItem itemLabel="top-right" itemValue="top-right" />
+ <f:selectItem itemLabel="top-left" itemValue="top-left" />
+ </h:selectOneRadio>
+
+ <h:outputText value="Select Popup Direction:" />
+ <h:selectOneRadio onchange="submit()" value="#{calendarBean.direction}">
+ <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
+ <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
+ <f:selectItem itemLabel="top-right" itemValue="top-right" />
+ <f:selectItem itemLabel="top-left" itemValue="top-left" />
+ <f:selectItem itemLabel="auto" itemValue="auto" />
+ </h:selectOneRadio>
+
+ <h:outputText value="Time Zone:" />
+ <h:selectOneRadio valueChangeListener="#{calendarBean.timeZone}" onchange="submit();">
+ <f:selectItem itemLabel="Eastern European Time" itemValue="Eastern European Time" />
+ <f:selectItem itemLabel="Turkmenistan Time" itemValue="Turkmenistan Time" />
+ <f:selectItem itemLabel="Korea Standard Time" itemValue="Korea Standard Time" />
+ </h:selectOneRadio>
+
+
+ <h:outputText value="ToolTip Mode:" />
+ <h:selectOneRadio value="#{calendarBean.toolTipMode}" onchange="submit();">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="single" itemValue="single" />
+ <f:selectItem itemLabel="batch" itemValue="batch" />
+ </h:selectOneRadio>
+
+ <h:outputText value="BoundaryDatesMode:" />
+ <h:selectOneRadio onclick="submit()" value="#{calendarBean.boundary}">
+ <f:selectItem itemLabel="inactive" itemValue="inactive" />
+ <f:selectItem itemLabel="select" itemValue="select" />
+ <f:selectItem itemLabel="scroll" itemValue="scroll" />
+ </h:selectOneRadio>
+
+ <h:outputText value="EnableManualInput:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{calendarBean.enableManualInput}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="ShowInput:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{calendarBean.showInput}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Disabled:" />
+ <h:selectBooleanCheckbox value="#{calendarBean.disabled}" onclick="submit()" />
+
+ <h:outputText value="Rendered:" />
+ <h:selectBooleanCheckbox value="#{calendarBean.rendered}" onclick="submit()" />
+
+ <f:verbatim></f:verbatim>
+ <h:commandButton action="#{calendarBean.changeIcons}" value="ChangeIcons" />
+
+ <h:outputText value="Current date: " />
+ <h:outputText value="#{calendarBean.currentDateAsText}" />
+
+ <h:outputText value="Selected date: " />
+ <h:outputText value="#{calendarBean.selectedDate}" />
+
+ <f:verbatim></f:verbatim>
+ <h:commandButton value="Submit" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+ </h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/CustomizePage/CustomizePage.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/CustomizePage/CustomizePage.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/CustomizePage/CustomizePage.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,17 +1,14 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
-<link rel="stylesheet"
- href="#{facesContext.externalContext.requestContextPath}/styles/styles.css"
- type="text/css" />
+<link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/styles/styles.css" type="text/css" />
</head>
+
+
<f:view>
<h:form>
-
+
</h:form>
</f:view>
</html>
\ No newline at end of file
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/DataFilterSlider/DataFilterSlider.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/DataFilterSlider/DataFilterSlider.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/DataFilterSlider/DataFilterSlider.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -17,7 +17,7 @@
storeResults="true" trackStyleClass="track" width="400px"
styleClass="slider-container" startRange="10000" endRange="60000"
increment="10000" rangeStyleClass="range" trailer="true"
- trailerStyleClass="trailer" handleStyleClass="handle"
+ trailerStyleClass="trailer" handleStyleClass="handle"
handleValue="10000" id="slider_1">
</rich:dataFilterSlider>
</a4j:outputPanel>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/DataScroller/DS.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/DataScroller/DS.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/DataScroller/DS.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,29 +1,58 @@
-<f:subview id="DataScrollerSubviewID"
+<f:subview id="DataScrollerSubviewID"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich">
-<h:form dir="DSform">
+ <h:form dir="DSform">
- <h:dataTable id="dataTableId" value="#{dataScroller.dataTable}"
- var="dT" cellpadding="5px" rows="5" border="1">
- <f:facet name="header">
- <rich:datascroller fastControls="#{dataScroller.fastControls}"
- align="#{dataScroller.align}" rendered="#{dataScroller.render}"
- limitToList="#{dataScroller.limitToList}"
- renderIfSinglePage="#{dataScroller.renderIfSinglePage}"
- maxPages="#{dataScroller.maxPages}"
- scrollerListener="#{dataScroller.ScrollerListener}" />
- </f:facet>
- <h:column>
- <h:outputText value="#{dT.data0}" />
- </h:column>
- <h:column>
- <h:outputText value="#{dT.data1}" />
- </h:column>
+ <h:dataTable id="dataTableId" value="#{dataScroller.dataTable}"
+ var="dT" cellpadding="5px" rows="5" border="1">
+ <f:facet name="header">
+ <rich:datascroller fastControls="#{dataScroller.fastControls}"
+ align="#{dataScroller.align}" rendered="#{dataScroller.render}"
+ limitToList="#{dataScroller.limitToList}"
+ renderIfSinglePage="#{dataScroller.renderIfSinglePage}"
+ maxPages="#{dataScroller.maxPages}"
+ scrollerListener="#{dataScroller.ScrollerListener}"
+ onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"/>
+ </f:facet>
+ <h:column>
+ <h:outputText value="#{dT.data0}" />
+ </h:column>
+ <h:column>
+ <h:outputText value="#{dT.data1}" />
+ </h:column>
+ </h:dataTable>
- </h:dataTable>
+ <rich:simpleTogglePanel switchType="client" opened="true"
+ label="inputNumberSlider straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{dataScroller.bTest1}" value="run" reRender="dataScrollerID,dTablePropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{dataScroller.bTest2}" value="run" reRender="dataScrollerID,dTablePropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{dataScroller.bTest3}" value="run" reRender="dataScrollerID,dTablePropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{dataScroller.bTest4}" value="run" reRender="dataScrollerID,dTablePropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{dataScroller.bTest5}" value="run" reRender="dataScrollerID,dTablePropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="dTablePropertyID" switchType="client" opened="true"
+ label="dataTable property">
+
<h:commandButton action="#{dataScroller.CutArray}" value="CutArray" />
<h:commandButton action="#{dataScroller.RestoreArray}"
value="RestoreArray" />
@@ -61,8 +90,7 @@
<f:selectItem itemLabel="center" itemValue="center" />
<a4j:support event="onclick" reRender="dataTableId"></a4j:support>
</h:selectOneRadio>
-
</h:panelGrid>
- <h:commandLink value="Back" action="main"></h:commandLink>
- </h:form>
+ </rich:simpleTogglePanel>
+ </h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/DataTable/DT.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/DataTable/DT.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/DataTable/DT.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,108 +1,122 @@
-<f:subview id="DataTableSubviewID"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="DataTableSubviewID" xmlns="http://www.w3.org/1999/xhtml" xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
-<h:form dir="DSform" >
-
- <rich:dataTable id="dataTableID" var="dataTableID"
- value="#{dataTable.mounths}" rowKeyVar="key" styleClass="table"
- captionClass="caption" rowClasses="rowa,rowb,rowc rowcc"
- headerClass="header" footerClass="footer" cellpadding="" cellspacing=""
- onRowClick="alert('row #{key}')" rendered="#{dataTable.rendered}" align="#{dataTable.align}" bgcolor="red"
- border="#{dataTable.border}" columnsWidth="#{dataTable.columnsWidth}" width="#{dataTable.width}" title="DataTableTite">
- <f:facet name="caption">
- <h:outputText value="caption" />
+ <h:form dir="DSform">
+ <rich:dataTable id="dataTableID" var="dataTableID" value="#{dataTable.mounths}" rowKeyVar="key" styleClass="table"
+ captionClass="caption" rowClasses="rowa,rowb,rowc rowcc" headerClass="header" footerClass="footer" cellpadding=""
+ cellspacing="" onRowClick="print('onRowClickInputID', 'onRowClick work!');alert('row #{key}');" rendered="#{dataTable.rendered}" align="#{dataTable.align}" bgcolor="red"
+ border="#{dataTable.border}" columnsWidth="#{dataTable.columnsWidth}" width="#{dataTable.width}" title="DataTableTite"
+ onRowDblClick="print('onRowDblClickInputID', 'onRowDblClick work!')"
+ onRowMouseDown="print('onRowMouseDownInputID', 'onRowMouseDown work!')"
+ onRowMouseMove="print('onRowMouseMoveInputID', 'onRowMouseMove work!')"
+ onRowMouseOut="print('onRowMouseOutInputID', 'onRowMouseOut work!')"
+ onRowMouseOver="print('onRowMouseOverInputID', 'onRowMouseOver work!')"
+ onRowMouseUp="print('onRowMouseUpInputID', 'onRowMouseUp work!')">
+ <f:facet name="caption">
+ <h:outputText value="caption" />
+ </f:facet>
+ <f:facet name="header">
+ <rich:columnGroup columnClasses="cola, colb ,rowc rowcc">
+ <rich:column rowspan="2" rendered="#{dataTable.r2rendered}">
+ <h:outputText value="2-row head" />
+ </rich:column>
+ <h:column rendered="#{dataTable.r2rendered}">
+ <h:outputText value="head in UIColumn" />
+ </h:column>
+ <rich:column breakBefore="true">
+ <h:outputText value="2-d row head" />
+ </rich:column>
+ </rich:columnGroup>
+ </f:facet>
+ <f:facet name="footer">
+ <h:outputText value="table foot" />
+ </f:facet>
+ <rich:columnGroup>
+ <rich:column id="mounth" styleClass="column" rowspan="2" headerClass="cheader" footerClass="cfooter">
+ <f:facet name="header">
+ <h:outputText value="mounth" />
</f:facet>
+ <f:facet name="footer">
+ <h:outputText value="-//-" />
+ </f:facet>
+ <h:outputText value="#{dataTableID.mounth}" />
+ </rich:column>
+ <rich:column styleClass="column" headerClass="cheader" footerClass="cfooter" rendered="#{dataTable.r2rendered}">
<f:facet name="header">
- <rich:columnGroup columnClasses="cola, colb ,rowc rowcc">
- <rich:column rowspan="2" rendered="#{dataTable.r2rendered}">
- <h:outputText value="2-row head" />
- </rich:column>
- <h:column rendered="#{dataTable.r2rendered}">
- <h:outputText value="head in UIColumn" />
- </h:column>
- <rich:column breakBefore="true">
- <h:outputText value="2-d row head" />
- </rich:column>
- </rich:columnGroup>
+ <h:outputText value="mounth" />
</f:facet>
<f:facet name="footer">
- <h:outputText value="table foot" />
+ <h:outputText value="-//-" />
</f:facet>
- <rich:columnGroup>
- <rich:column id="mounth" styleClass="column" rowspan="2"
- headerClass="cheader" footerClass="cfooter">
- <f:facet name="header">
- <h:outputText value="mounth" />
- </f:facet>
- <f:facet name="footer">
- <h:outputText value="-//-" />
- </f:facet>
- <h:outputText value="#{dataTableID.mounth}" />
- </rich:column>
- <rich:column styleClass="column" headerClass="cheader"
- footerClass="cfooter" rendered="#{dataTable.r2rendered}">
- <f:facet name="header">
- <h:outputText value="mounth" />
- </f:facet>
- <f:facet name="footer">
- <h:outputText value="-//-" />
- </f:facet>
- <h:outputText value="#{dataTableID.town}" />
- </rich:column>
- </rich:columnGroup>
- <rich:column styleClass="column" headerClass="cheader"
- footerClass="cfooter" rendered="#{dataTable.r2rendered}">
- <h:outputText value="#{dataTableID.day}" />
- </rich:column>
- <rich:subTable id="detail" var="detail" value="#{dataTableID.detail}">
- <rich:column id="name">
- <h:outputText value="#{detail.name}" />
- </rich:column>
- <rich:column id="qty" rendered="#{dataTable.r2rendered}">
- <h:outputText value="#{detail.qty}" />
- </rich:column>
- </rich:subTable>
- <rich:column id="total" styleClass="total" colspan="2">
- <h:outputText value="#{dataTableID.total}" />
- </rich:column>
- </rich:dataTable>
+ <h:outputText value="#{dataTableID.town}" />
+ </rich:column>
+ </rich:columnGroup>
+ <rich:column styleClass="column" headerClass="cheader" footerClass="cfooter" rendered="#{dataTable.r2rendered}">
+ <h:outputText value="#{dataTableID.day}" />
+ </rich:column>
+ <rich:subTable id="detail" var="detail" value="#{dataTableID.detail}">
+ <rich:column id="name">
+ <h:outputText value="#{detail.name}" />
+ </rich:column>
+ <rich:column id="qty" rendered="#{dataTable.r2rendered}">
+ <h:outputText value="#{detail.qty}" />
+ </rich:column>
+ </rich:subTable>
+ <rich:column id="total" styleClass="total" colspan="2">
+ <h:outputText value="#{dataTableID.total}" />
+ </rich:column>
+ </rich:dataTable>
- <h:panelGrid columns="2">
- <h:outputText value="Align:"></h:outputText>
- <h:selectOneMenu value="#{dataTable.align}">
- <f:selectItem itemLabel="center" itemValue="*center" />
- <f:selectItem itemLabel="left" itemValue="*left" />
- <f:selectItem itemLabel="right " itemValue="*right" />
- <a4j:support event="onclick" reRender="dataTableID"></a4j:support>
- </h:selectOneMenu>
-
- <h:outputText value="Border: "></h:outputText>
- <h:inputText value="#{dataTable.border}">
- <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="dataTable straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{dataTable.bTest1}" value="run" reRender="dtPropertyID,dataTableID"></a4j:commandButton>
- <h:outputText value="Columns Width: "></h:outputText>
- <h:inputText value="#{dataTable.columnsWidth}">
- <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{dataTable.bTest2}" value="run" reRender="dtPropertyID,dataTableID"></a4j:commandButton>
- <h:outputText value="Width: "></h:outputText>
- <h:inputText value="#{dataTable.width}">
- <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{dataTable.bTest3}" value="run" reRender="dtPropertyID,dataTableID"></a4j:commandButton>
- <h:outputText value="rendered:" />
- <h:selectBooleanCheckbox value="#{dataTable.rendered}"
- onclick="submit();" />
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{dataTable.bTest4}" value="run" reRender="dtPropertyID,dataTableID"></a4j:commandButton>
- <h:outputText value=" row 2 rendered" />
- <h:selectBooleanCheckbox value="#{dataTable.r2rendered}"
- onclick="submit();" />
- </h:panelGrid>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{dataTable.bTest5}" value="run" reRender="dtPropertyID,dataTableID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- </h:form>
+ <rich:simpleTogglePanel id="dtPropertyID" switchType="client" opened="true" label="dataTable property">
+ <h:panelGrid columns="2" style="top">
+ <h:outputText value="Align:"></h:outputText>
+ <h:selectOneMenu value="#{dataTable.align}">
+ <f:selectItem itemLabel="center" itemValue="center" />
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="right " itemValue="right" />
+ <a4j:support event="onclick" reRender="dataTableID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="Border: "></h:outputText>
+ <h:inputText value="#{dataTable.border}">
+ <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Columns Width: "></h:outputText>
+ <h:inputText value="#{dataTable.columnsWidth}">
+ <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Width: "></h:outputText>
+ <h:inputText value="#{dataTable.width}">
+ <a4j:support event="onchange" reRender="dataTableID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="rendered:" />
+ <h:selectBooleanCheckbox value="#{dataTable.rendered}" onclick="submit();" />
+
+ <h:outputText value=" row 2 rendered" />
+ <h:selectBooleanCheckbox value="#{dataTable.r2rendered}" onclick="submit();" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+ </h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/DropDownMenu/DDMenu.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/DropDownMenu/DDMenu.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/DropDownMenu/DDMenu.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,13 +1,88 @@
-<f:subview id="DropDownMenuSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:c="http://java.sun.com/jsp/jstl/core">
+<f:subview id="DropDownMenuSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:form>
+ <h:panelGrid columns="2">
+ <rich:spacer width="400px" height="400px"></rich:spacer>
+ <rich:panel>
+ <rich:dropDownMenu id="ddmId" value="DropDownMenu" submitMode="#{dDMenu.mode}" hideDelay="#{dDMenu.hideDelay}"
+ direction="#{dDMenu.direction}" horizontalOffset="#{dDMenu.horizontalOffset}" jointPoint="#{dDMenu.jointPoint}"
+ popupWidth="#{dDMenu.popupWidth}" showDelay="#{dDMenu.showDelay}" rendered="#{dDMenu.rendered}"
+ verticalOffset="#{dDMenu.verticalOffset}" styleClass="panelpos" event="#{dDMenu.event}"
+ oncollapse="print('oncollapseInputID', 'oncollapse work!')" onexpand="print('onexpandInputID', 'onexpand work!')"
+ ongroupactivate="print('ongroupactivateInputID', 'ongroupactivate work!')"
+ onitemselect="print('onitemselectInputID', 'onitemselect work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')">
+ <rich:menuItem icon="#{dDMenu.icon}" onclick="print('onclickInputID', 'onclick work!')"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('InputID', ' work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
+ onselect="print('onselectInputID', 'onselect work!')">
+ <h:outputText value="Item1(test events)" />
+ </rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem icon="#{dDMenu.icon}" onmousedown="alert('OnMouseDown')" selectClass="mousemove">
+ <h:outputText value="OnMouseDown" />
+ </rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem>
+ <h:outputText value="Item2" />
+ </rich:menuItem>
+ <rich:menuItem icon="#{dDMenu.icon}">
+ <h:outputText value="Item3" />
+ </rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem icon="/pics/ajax_process.gif" iconDisabled="/pics/ajax_stoped.gif" disabled="#{dDMenu.disabled}">
+ <h:outputText value="Image"></h:outputText>
+ </rich:menuItem>
+ <rich:menuItem disabled="#{dDMenu.disabled}" icon="#{dDMenu.icon}">
+ <h:outputText value="Image:" />
+ <h:graphicImage value="/pics/ajax_process.gif" />
+ </rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuGroup value="Second level" direction="#{dDMenu.groupDirection}" disabled="#{dDMenu.disabled}" icon="#{dDMenu.icon}"
+ iconFolder="#{dDMenu.iconFolder}">
+ <rich:menuItem icon="#{dDMenu.icon}">
+ <h:outputText value="Item3" />
+ </rich:menuItem>
+ <rich:menuItem value="Item4">
+ <h:selectOneMenu value="#{dDMenu.selectMenu}">
+ <f:selectItem itemLabel="Honda Accord" itemValue="accord" />
+ <f:selectItem itemLabel="Toyota 4Runner" itemValue="4runner" />
+ <f:selectItem itemLabel="Nissan Z350" itemValue="nissan-z" />
+ </h:selectOneMenu>
+ </rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem icon="#{dDMenu.icon}">
+ <h:outputText value="CheckBox " />
+ <h:selectBooleanCheckbox value="#{dDMenu.check}" onclick="submit()" />
+ </rich:menuItem>
+ </rich:menuGroup>
+ </rich:dropDownMenu>
+ </rich:panel>
+ </h:panelGrid>
- <h:panelGrid columns="3">
+ <rich:simpleTogglePanel id="ddMenuStraightforwardID" switchType="client" opened="true" label="dropDownMenu straightforward">
<h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{dDMenu.bTest1}" value="run" reRender="ddmId,ddMenuPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{dDMenu.bTest2}" value="run" reRender="ddmId,ddMenuPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{dDMenu.bTest3}" value="run" reRender="ddmId,ddMenuPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{dDMenu.bTest4}" value="run" reRender="ddmId,ddMenuPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{dDMenu.bTest5}" value="run" reRender="ddmId,ddMenuPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="ddMenuPropertyID" switchType="client" opened="true" label="dropDownMenu property">
+ <h:panelGrid columns="2">
<h:outputText value="HideDelay (ms):" />
<h:inputText value="#{dDMenu.hideDelay}">
<a4j:support event="onchange" reRender="ddmId" />
@@ -32,15 +107,15 @@
<h:inputText value="#{dDMenu.verticalOffset}">
<a4j:support event="onchange" reRender="ddmId" />
</h:inputText>
-
+
<h:outputText value="Mode:" />
<h:selectOneRadio value="#{dDMenu.mode}">
- <f:selectItem itemLabel="none" itemValue="none"/>
- <f:selectItem itemLabel="ajax" itemValue="ajax"/>
- <f:selectItem itemLabel="server" itemValue="server"/>
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <f:selectItem itemLabel="server" itemValue="server" />
<a4j:support event="onclick" reRender="ddmId" />
</h:selectOneRadio>
-
+
<h:outputText value="Direction:" />
<h:selectOneRadio value="#{dDMenu.direction}">
<f:selectItem itemLabel="top-right" itemValue="top-right" />
@@ -79,8 +154,7 @@
</h:selectOneRadio>
<h:outputText value="Rendered:" />
- <h:selectBooleanCheckbox value="#{dDMenu.rendered}"
- onclick="submit()">
+ <h:selectBooleanCheckbox value="#{dDMenu.rendered}" onclick="submit()">
</h:selectBooleanCheckbox>
@@ -90,65 +164,8 @@
</h:selectBooleanCheckbox>
<h:commandButton action="#{dDMenu.changeIcons}" value="ChangeIcons" />
</h:panelGrid>
+ </rich:simpleTogglePanel>
- <rich:spacer width="300px"></rich:spacer>
-
- <rich:panel style="width:200px; height:50px;">
- <rich:dropDownMenu id="ddmId" value="DropDownMenu" submitMode="#{dDMenu.mode}"
- hideDelay="#{dDMenu.hideDelay}" direction="#{dDMenu.direction}"
- horizontalOffset="#{dDMenu.horizontalOffset}"
- jointPoint="#{dDMenu.jointPoint}" popupWidth="#{dDMenu.popupWidth}"
- showDelay="#{dDMenu.showDelay}" rendered="#{dDMenu.rendered}"
- verticalOffset="#{dDMenu.verticalOffset}" styleClass="panelpos" event="#{dDMenu.event}">
- <rich:menuItem icon="#{dDMenu.icon}">
- <h:outputText value="Item1" />
- </rich:menuItem>
- <rich:menuSeparator />
- <rich:menuItem icon="#{dDMenu.icon}"
- onmousedown="alert('OnMouseDown')" selectClass="mousemove">
- <h:outputText value="OnMouseDown" />
- </rich:menuItem>
- <rich:menuSeparator />
- <rich:menuItem>
- <h:outputText value="Item2" />
- </rich:menuItem>
- <rich:menuItem icon="#{dDMenu.icon}">
- <h:outputText value="Item3" />
- </rich:menuItem>
- <rich:menuSeparator />
- <rich:menuItem icon="/pics/ajax_process.gif"
- iconDisabled="/pics/ajax_stoped.gif" disabled="#{dDMenu.disabled}">
- <h:outputText value="Image"></h:outputText>
- </rich:menuItem>
- <rich:menuItem disabled="#{dDMenu.disabled}" icon="#{dDMenu.icon}">
- <h:outputText value="Image:" />
- <h:graphicImage value="/pics/ajax_process.gif" />
- </rich:menuItem>
- <rich:menuSeparator />
- <rich:menuGroup value="Second level"
- direction="#{dDMenu.groupDirection}" disabled="#{dDMenu.disabled}"
- icon="#{dDMenu.icon}" iconFolder="#{dDMenu.iconFolder}">
- <rich:menuItem icon="#{dDMenu.icon}">
- <h:outputText value="Item3" />
- </rich:menuItem>
- <rich:menuItem value="Item4">
- <h:selectOneMenu value="#{dDMenu.selectMenu}">
- <f:selectItem itemLabel="Honda Accord" itemValue="accord" />
- <f:selectItem itemLabel="Toyota 4Runner" itemValue="4runner" />
- <f:selectItem itemLabel="Nissan Z350" itemValue="nissan-z" />
- </h:selectOneMenu>
- </rich:menuItem>
- <rich:menuSeparator />
- <rich:menuItem icon="#{dDMenu.icon}">
- <h:outputText value="CheckBox " />
- <h:selectBooleanCheckbox value="#{dDMenu.check}" onclick="submit()" />
- </rich:menuItem>
- </rich:menuGroup>
-
- </rich:dropDownMenu>
- </rich:panel>
- </h:panelGrid>
-
<a4j:log></a4j:log>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Gmap/Gmap.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Gmap/Gmap.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Gmap/Gmap.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -6,7 +6,12 @@
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<h:form>
- <rich:gmap id="gm" lat="37.97" zoom="#{gmap.zoom}" gmapVar="map"
+ <rich:gmap id="gm" lat="37.97" zoom="#{gmap.zoom}" gmapVar="map" onclick=""
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" oninit="print('oninitInputID', 'oninit work!')"
+ onkeydown="print('onkeydownInputID', 'onkeydown work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
gmapKey="ABQIAAAAxU6W9QEhFLMNdc3ATIu-VxT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRkrpOGzxH8_ud3inE9pG1845-FCA"
style="width:500px;height:400px"
enableContinuousZoom="#{gmap.continuousZoom}"
@@ -48,15 +53,13 @@
<rich:panel>
<h:panelGrid columns="2">
<h:outputText value="Dragging:" />
- <h:selectBooleanCheckbox value="#{gmap.dragging}" />
+ <h:selectBooleanCheckbox value="#{gmap.dragging}" onclick="submit()" />
<h:outputText value="Continuous Zoom:" />
- <h:selectBooleanCheckbox value="#{gmap.continuousZoom}" />
+ <h:selectBooleanCheckbox value="#{gmap.continuousZoom}" onclick="submit()" />
<h:outputText value="Double Click Zoom:" />
- <h:selectBooleanCheckbox value="#{gmap.doubleClickZoom}" />
-
- <h:commandLink value="submit" action="submit();"></h:commandLink>
+ <h:selectBooleanCheckbox value="#{gmap.doubleClickZoom}" onclick="submit()" />
</h:panelGrid>
</rich:panel>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Message/Message.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Message/Message.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Message/Message.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,13 +1,94 @@
-<f:subview id="messageSubviewID"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="messageSubviewID" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich">
<h:form>
<rich:panel>
+ <h:outputText value="Rich Message Demo:" />
+
+ <f:verbatim>
+ <br />
+ </f:verbatim>
+
+ <rich:message for="#{message.msg}" tooltip="#{message.tooltip}" showDetail="#{message.showDetail}"
+ showSummary="#{message.showSummary}" passedLabel="No Error" errorLabelClass="errorLabel" fatalLabelClass="warnLabel"
+ infoLabelClass="infoLabel" warnLabelClass="fatalLabel" title="#{message.title}">
+
+
+ <f:facet name="errorMarker">
+ <h:graphicImage url="/pics/error.gif" />
+ </f:facet>
+
+ <f:facet name="fatalMarker">
+ <h:graphicImage url="/pics/fatal.gif" />
+ </f:facet>
+
+ <f:facet name="infoMarker">
+ <h:graphicImage url="/pics/info.gif" />
+ </f:facet>
+
+ <f:facet name="warnMarker">
+ <h:graphicImage url="/pics/warn.gif" />
+ </f:facet>
+
+ <f:facet name="passedMarker">
+ <h:graphicImage url="/pics/passed.gif" />
+ </f:facet>
+ </rich:message>
+
+ <rich:separator></rich:separator>
+
+ <h:outputText value="Rich Messages Demo" />
+ <rich:messages layout="#{message.layout}" tooltip="#{message.tooltip}" showDetail="#{message.showDetail}"
+ showSummary="#{message.showSummary}" passedLabel="No Error" errorLabelClass="errorLabel" fatalLabelClass="warnLabel"
+ infoLabelClass="infoLabel" warnLabelClass="fatalLabel" warnMarkerClass="markerWarn" infoMarkerClass="markerInfo"
+ errorMarkerClass="markerError" fatalMarkerClass="markerFatal" errorClass="errorClass" fatalClass="fatalClass"
+ warnClass="warnClass" infoClass="infoClass" labelClass="labelClass" var="messages" styleClass="class" title="#{message.title}">
+ <f:facet name="errorMarker">
+ <h:graphicImage url="/pics/error.gif" />
+ </f:facet>
+ <f:facet name="fatalMarker">
+ <h:graphicImage url="/pics/fatal.gif" />
+ </f:facet>
+ <f:facet name="infoMarker">
+ <h:graphicImage url="/pics/info.gif" />
+ </f:facet>
+ <f:facet name="warnMarker">
+ <h:graphicImage url="/pics/warn.gif" />
+ </f:facet>
+ <f:facet name="passedMarker">
+ <h:graphicImage url="/pics/passed.gif" />
+ </f:facet>
+ <h:outputText value="#{messages.summary}">
+ </h:outputText>
+ </rich:messages>
+ </rich:panel>
+
+ <f:verbatim>
+ <br />
+ </f:verbatim>
+
+ <rich:simpleTogglePanel switchType="client" opened="true" label="modalPanel straightforward">
<h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{messages.bTest1}" value="run" onclick="submit()"></a4j:commandButton>
+
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{messages.bTest2}" value="run" onclick="submit()"></a4j:commandButton>
+
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{messages.bTest3}" value="run" onclick="submit()"></a4j:commandButton>
+
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{messages.bTest4}" value="run" onclick="submit()"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{messages.bTest5}" value="run" onclick="submit()"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="msgPropertyID" switchType="client" opened="true" label="modalPanel property">
+ <h:panelGrid columns="2">
<h:outputText value="1." />
- <h:selectOneMenu id="select1" value="">
+ <h:selectOneMenu id="select1" value="#{message.select1}">
<f:selectItem itemValue="error" itemLabel="error" />
<f:selectItem itemValue="fatal" itemLabel="fatal" />
<f:selectItem itemValue="warn" itemLabel="warning" />
@@ -17,7 +98,7 @@
</h:selectOneMenu>
<h:outputText value="2." />
- <h:selectOneMenu id="select2" value="">
+ <h:selectOneMenu id="select2" value="#{message.select2}">
<f:selectItem itemValue="error" itemLabel="error" />
<f:selectItem itemValue="fatal" itemLabel="fatal" />
<f:selectItem itemValue="warn" itemLabel="warning" />
@@ -27,7 +108,7 @@
</h:selectOneMenu>
<h:outputText value="3." />
- <h:selectOneMenu id="select3" value="">
+ <h:selectOneMenu id="select3" value="#{message.select3}">
<f:selectItem itemValue="error" itemLabel="error" />
<f:selectItem itemValue="fatal" itemLabel="fatal" />
<f:selectItem itemValue="warn" itemLabel="warning" />
@@ -37,7 +118,7 @@
</h:selectOneMenu>
<h:outputText value="4." />
- <h:selectOneMenu id="select4" value="">
+ <h:selectOneMenu id="select4" value="#{message.select4}">
<f:selectItem itemValue="error" itemLabel="error" />
<f:selectItem itemValue="fatal" itemLabel="fatal" />
<f:selectItem itemValue="warn" itemLabel="warning" />
@@ -47,7 +128,7 @@
</h:selectOneMenu>
<h:outputText value="5." />
- <h:selectOneMenu id="select5" value="">
+ <h:selectOneMenu id="select5" value="#{message.select5}">
<f:selectItem itemValue="error" itemLabel="error" />
<f:selectItem itemValue="fatal" itemLabel="fatal" />
<f:selectItem itemValue="warn" itemLabel="warning" />
@@ -87,80 +168,6 @@
<h:commandButton value="submit" />
<a4j:commandButton value="submit ajax" />
</h:panelGrid>
- </rich:panel>
-
- <rich:spacer></rich:spacer>
-
- <rich:panel>
- <h:outputText value="Rich Message Demo:" />
-
- <f:verbatim>
- <br />
- </f:verbatim>
-
- <rich:message for="#{message.msg}" tooltip="#{message.tooltip}"
- showDetail="#{message.showDetail}"
- showSummary="#{message.showSummary}" passedLabel="No Error"
- errorLabelClass="errorLabel" fatalLabelClass="warnLabel"
- infoLabelClass="infoLabel" warnLabelClass="fatalLabel"
- title="#{message.title}">
-
-
- <f:facet name="errorMarker">
- <h:graphicImage url="/pics/error.gif" />
- </f:facet>
-
- <f:facet name="fatalMarker">
- <h:graphicImage url="/pics/fatal.gif" />
- </f:facet>
-
- <f:facet name="infoMarker">
- <h:graphicImage url="/pics/info.gif" />
- </f:facet>
-
- <f:facet name="warnMarker">
- <h:graphicImage url="/pics/warn.gif" />
- </f:facet>
-
- <f:facet name="passedMarker">
- <h:graphicImage url="/pics/passed.gif" />
- </f:facet>
- </rich:message>
-
- <rich:separator></rich:separator>
-
- <h:outputText value="Rich Messages Demo" />
- <rich:messages layout="#{message.layout}"
- tooltip="#{message.tooltip}" showDetail="#{message.showDetail}"
- showSummary="#{message.showSummary}" passedLabel="No Error"
- errorLabelClass="errorLabel" fatalLabelClass="warnLabel"
- infoLabelClass="infoLabel" warnLabelClass="fatalLabel"
- warnMarkerClass="markerWarn" infoMarkerClass="markerInfo"
- errorMarkerClass="markerError" fatalMarkerClass="markerFatal"
- errorClass="errorClass" fatalClass="fatalClass"
- warnClass="warnClass" infoClass="infoClass" labelClass="labelClass"
- var="messages" styleClass="class" title="#{message.title}">
- <f:facet name="errorMarker">
- <h:graphicImage url="/pics/error.gif" />
- </f:facet>
- <f:facet name="fatalMarker">
- <h:graphicImage url="/pics/fatal.gif" />
- </f:facet>
- <f:facet name="infoMarker">
- <h:graphicImage url="/pics/info.gif" />
- </f:facet>
- <f:facet name="warnMarker">
- <h:graphicImage url="/pics/warn.gif" />
- </f:facet>
- <f:facet name="passedMarker">
- <h:graphicImage url="/pics/passed.gif" />
- </f:facet>
- <h:outputText value="#{messages.summary}">
- </h:outputText>
- </rich:messages>
- </rich:panel>
- <f:verbatim>
- <br />
- </f:verbatim>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/ModalPanel/ModalPanel.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/ModalPanel/ModalPanel.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/ModalPanel/ModalPanel.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,68 +1,81 @@
-<f:subview id="modalPanelSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="modalPanelSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
<h:form id="MPform">
- <rich:modalPanel id="MPid" minHeight="#{modalPanel.minHeight}"
- minWidth="#{modalPanel.minWidth}" height="#{modalPanel.height}"
- width="#{modalPanel.width}" moveable="#{modalPanel.moveable}"
- resizeable="#{modalPanel.resizeable}" keepVisualState="" visualOptions="" >
-
+ <rich:modalPanel id="MPid" minHeight="#{modalPanel.minHeight}" minWidth="#{modalPanel.minWidth}" height="#{modalPanel.height}"
+ width="#{modalPanel.width}" moveable="#{modalPanel.moveable}" resizeable="#{modalPanel.resizeable}" onhide="print('onhideInputID', 'onhide work!')"
+ onshow="print('onshowInputID', 'onshow work!')">
<f:facet name="header">
<h:outputText value="Heder goes here..." />
</f:facet>
+
<h:outputText value="This is Modal Panel example" styleClass="text1" />
<f:verbatim>
- <br />
- <br />
+ <br />
+ <br />
</f:verbatim>
- <h:outputLink
- onclick="Richfaces.hideModalPanel('MPform:MPid');return false;"
- value="Close">
+ <h:outputLink onclick="Richfaces.hideModalPanel('MPform:MPid');return false;" value="Close">
<f:verbatim>Close</f:verbatim>
</h:outputLink>
</rich:modalPanel>
- <a onclick="Richfaces.showModalPanel('MPform:MPid');" href="#">Show
- MP</a>
+ <a onclick="Richfaces.showModalPanel('MPform:MPid');" href="#">Show MP</a>
<rich:spacer height="20px"></rich:spacer>
- <h:panelGrid columns="2">
+ <rich:simpleTogglePanel switchType="client" opened="true" label="modalPanel straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{modalPanel.bTest1}" value="run" reRender="MPform:MPid,mpPropertyID"></a4j:commandButton>
- <h:outputText value="Width:" />
- <h:inputText value="#{modalPanel.width}">
- <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{modalPanel.bTest2}" value="run" reRender="MPform:MPid,mpPropertyID"></a4j:commandButton>
- <h:outputText value="Height:" />
- <h:inputText value="#{modalPanel.height}">
- <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{modalPanel.bTest3}" value="run" reRender="MPform:MPid,mpPropertyID"></a4j:commandButton>
- <h:outputText value="minWidth:" />
- <h:inputText value="#{modalPanel.minWidth}">
- <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{modalPanel.bTest4}" value="run" reRender="MPform:MPid,mpPropertyID"></a4j:commandButton>
- <h:outputText value="minHeight:" />
- <h:inputText value="#{modalPanel.minHeight}">
- <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{modalPanel.bTest5}" value="run" reRender="MPform:MPid,mpPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Resizeable:" />
- <h:selectBooleanCheckbox value="#{modalPanel.resizeable}">
- <a4j:support event="onclick" reRender="MPform:MPid"></a4j:support>
- </h:selectBooleanCheckbox>
+ <rich:simpleTogglePanel id="mpPropertyID" switchType="client" opened="true" label="modalPanel property">
+ <h:panelGrid columns="2">
- <h:outputText value="Moveable:" />
- <h:selectBooleanCheckbox value="#{modalPanel.moveable}">
- <a4j:support event="onclick" reRender="MPform:MPid"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Width:" />
+ <h:inputText value="#{modalPanel.width}">
+ <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
+ </h:inputText>
- </h:panelGrid>
+ <h:outputText value="Height:" />
+ <h:inputText value="#{modalPanel.height}">
+ <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="minWidth:" />
+ <h:inputText value="#{modalPanel.minWidth}">
+ <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="minHeight:" />
+ <h:inputText value="#{modalPanel.minHeight}">
+ <a4j:support event="onchange" reRender="MPform:MPid"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Resizeable:" />
+ <h:selectBooleanCheckbox value="#{modalPanel.resizeable}">
+ <a4j:support event="onclick" reRender="MPform:MPid"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Moveable:" />
+ <h:selectBooleanCheckbox value="#{modalPanel.moveable}">
+ <a4j:support event="onclick" reRender="MPform:MPid"></a4j:support>
+ </h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Paint2D/Paint2D.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Paint2D/Paint2D.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Paint2D/Paint2D.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,93 +1,107 @@
-<f:subview id="paint2DSubviewID"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="paint2DSubviewID" xmlns="http://www.w3.org/1999/xhtml" xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
<h:form>
- <rich:paint2D id="paint2d" paint="#{paint2D.paint}"
- data="#{paintData}" width="#{paint2D.width}"
- height="#{paint2D.height}" align="#{paint2D.align}"
- hspace="#{paint2D.hspace}" vspace="#{paint2D.vspace}"
- bgcolor="#{paint2D.bgcolor}" format="#{paint2D.format}"
- title="#{paint2D.title}" styleClass="#{paint2D.styleString}"
- border="#{paint2D.border}" rendered="#{paint2D.rendered}" />
+ <rich:paint2D id="paint2dID" paint="#{paint2D.paint}" data="#{paintData}" width="#{paint2D.width}" height="#{paint2D.height}"
+ align="#{paint2D.align}" hspace="#{paint2D.hspace}" vspace="#{paint2D.vspace}" bgcolor="#{paint2D.bgcolor}"
+ format="#{paint2D.format}" title="#{paint2D.title}" styleClass="#{paint2D.styleString}" border="#{paint2D.border}"
+ rendered="#{paint2D.rendered}" />
- <h:panelGrid columns="2" cellpadding="5px" border="2">
- <h:outputText value="Text"></h:outputText>
- <h:inputText value="#{paintData.text}">
- <a4j:support event="onchange" reRender="paint2d" />
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="paint2D straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{paint2D.bTest1}" value="run" reRender="paint2dID,paint2DPropertyID"></a4j:commandButton>
- <h:outputText value="Width: "></h:outputText>
- <h:inputText value="#{paint2D.width}">
- <a4j:support event="onchange" reRender="paint2d"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{paint2D.bTest2}" value="run" reRender="paint2dID,paint2DPropertyID"></a4j:commandButton>
- <h:outputText value="Height: "></h:outputText>
- <h:inputText value="#{paint2D.height}">
- <a4j:support event="onchange" reRender="paint2d"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{paint2D.bTest3}" value="run" reRender="paint2dID,paint2DPropertyID"></a4j:commandButton>
- <h:outputText value="Vertical space: "></h:outputText>
- <h:inputText value="#{paint2D.vspace}">
- <a4j:support event="onchange" reRender="paint2d"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{paint2D.bTest4}" value="run" reRender="paint2dID,paint2DPropertyID"></a4j:commandButton>
- <h:outputText value="Horizontal space: "></h:outputText>
- <h:inputText value="#{paint2D.hspace}">
- <a4j:support event="onchange" reRender="paint2d"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{paint2D.bTest5}" value="run" reRender="paint2dID,paint2DPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Align:"></h:outputText>
- <h:selectOneMenu value="#{paint2D.align}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="middle" itemValue="middle" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <f:selectItem itemLabel="bottom" itemValue="bottom" />
- <f:selectItem itemLabel="top" itemValue="top" />
- <a4j:support event="onclick" reRender="paint2d"></a4j:support>
- </h:selectOneMenu>
+ <rich:simpleTogglePanel id="paint2DPropertyID" switchType="client" opened="true" label="paint2D property">
+ <h:panelGrid columns="2" cellpadding="5px" border="2">
+ <h:outputText value="Text"></h:outputText>
+ <h:inputText value="#{paintData.text}">
+ <a4j:support event="onchange" reRender="paint2dID" />
+ </h:inputText>
- <h:outputText value="Format:"></h:outputText>
- <h:selectOneMenu value="#{paint2D.format}">
- <f:selectItem itemLabel="jpeg" itemValue="jpeg" />
- <f:selectItem itemLabel="gif" itemValue="gif" />
- <f:selectItem itemLabel="png" itemValue="png" />
- <a4j:support event="onclick" reRender="paint2d"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="Width: "></h:outputText>
+ <h:inputText value="#{paint2D.width}">
+ <a4j:support event="onchange" reRender="paint2dID"></a4j:support>
+ </h:inputText>
- <h:outputText value="Background Colour"></h:outputText>
- <h:selectOneMenu value="#{paint2D.bgcolor}">
- <f:selectItem itemLabel="aqua" itemValue="aqua" />
- <f:selectItem itemLabel="blue" itemValue="blue" />
- <f:selectItem itemLabel="fuchsia" itemValue="fuchsia" />
- <f:selectItem itemLabel="gray" itemValue="gray" />
- <f:selectItem itemLabel="lime" itemValue="lime" />
- <f:selectItem itemLabel="maroon" itemValue="maroon" />
- <f:selectItem itemLabel="purple" itemValue="purple" />
- <f:selectItem itemLabel="red" itemValue="red" />
- <f:selectItem itemLabel="silver" itemValue="silver" />
- <f:selectItem itemLabel="teal" itemValue="teal" />
- <f:selectItem itemLabel="yellow" itemValue="yellow" />
- <f:selectItem itemLabel="white" itemValue="white" />
- <a4j:support event="onclick" reRender="paint2d"></a4j:support>
- </h:selectOneMenu>
-
- <h:outputText value="Style" />
- <h:selectBooleanCheckbox value="#{paint2D.style}" >
- <a4j:support event="onclick" reRender="paint2d,borderID" />
- </h:selectBooleanCheckbox>
+ <h:outputText value="Height: "></h:outputText>
+ <h:inputText value="#{paint2D.height}">
+ <a4j:support event="onchange" reRender="paint2dID"></a4j:support>
+ </h:inputText>
- <h:outputText value="Border: "></h:outputText>
- <h:inputText id="borderID" disabled="#{paint2D.style}" value="#{paint2D.border}">
- <a4j:support event="onchange" reRender="paint2d"></a4j:support>
- </h:inputText>
+ <h:outputText value="Vertical space: "></h:outputText>
+ <h:inputText value="#{paint2D.vspace}">
+ <a4j:support event="onchange" reRender="paint2dID"></a4j:support>
+ </h:inputText>
- <h:outputText value="Rendered"></h:outputText>
- <h:selectBooleanCheckbox value="#{paint2D.rendered}">
- <a4j:support event="onclick" reRender="paint2d"></a4j:support>
- </h:selectBooleanCheckbox>
- </h:panelGrid>
+ <h:outputText value="Horizontal space: "></h:outputText>
+ <h:inputText value="#{paint2D.hspace}">
+ <a4j:support event="onchange" reRender="paint2dID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Align:"></h:outputText>
+ <h:selectOneMenu value="#{paint2D.align}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="middle" itemValue="middle" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <f:selectItem itemLabel="bottom" itemValue="bottom" />
+ <f:selectItem itemLabel="top" itemValue="top" />
+ <a4j:support event="onclick" reRender="paint2dID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="Format:"></h:outputText>
+ <h:selectOneMenu value="#{paint2D.format}">
+ <f:selectItem itemLabel="jpeg" itemValue="jpeg" />
+ <f:selectItem itemLabel="gif" itemValue="gif" />
+ <f:selectItem itemLabel="png" itemValue="png" />
+ <a4j:support event="onclick" reRender="paint2dID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="Background Colour"></h:outputText>
+ <h:selectOneMenu value="#{paint2D.bgcolor}">
+ <f:selectItem itemLabel="aqua" itemValue="aqua" />
+ <f:selectItem itemLabel="blue" itemValue="blue" />
+ <f:selectItem itemLabel="fuchsia" itemValue="fuchsia" />
+ <f:selectItem itemLabel="gray" itemValue="gray" />
+ <f:selectItem itemLabel="lime" itemValue="lime" />
+ <f:selectItem itemLabel="maroon" itemValue="maroon" />
+ <f:selectItem itemLabel="purple" itemValue="purple" />
+ <f:selectItem itemLabel="red" itemValue="red" />
+ <f:selectItem itemLabel="silver" itemValue="silver" />
+ <f:selectItem itemLabel="teal" itemValue="teal" />
+ <f:selectItem itemLabel="yellow" itemValue="yellow" />
+ <f:selectItem itemLabel="white" itemValue="white" />
+ <a4j:support event="onclick" reRender="paint2dID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="Style" />
+ <h:selectBooleanCheckbox value="#{paint2D.style}">
+ <a4j:support event="onclick" reRender="paint2dID,borderID" />
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Border: "></h:outputText>
+ <h:inputText id="borderID" disabled="#{paint2D.style}" value="#{paint2D.border}">
+ <a4j:support event="onchange" reRender="paint2dID"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Rendered"></h:outputText>
+ <h:selectBooleanCheckbox value="#{paint2D.rendered}">
+ <a4j:support event="onclick" reRender="paint2dID"></a4j:support>
+ </h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Panel/Panel.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Panel/Panel.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Panel/Panel.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,16 +1,10 @@
-<f:subview id="panelSubviewID"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:c="http://java.sun.com/jstl/core">
+<f:subview id="panelSubviewID" xmlns:rich="http://richfaces.org/rich" xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:c="http://java.sun.com/jstl/core">
<h:form>
- <h:outputText
- value="Panel 1, rendered: #{!panel.rendered}; Panel 2, rendered #{panel.rendered};"></h:outputText>
+ <h:outputText value="Panel 1, rendered: #{!panel.rendered}; Panel 2, rendered #{panel.rendered};"></h:outputText>
- <rich:panel rendered="#{!panel.rendered}" id="p1"
- style="width:#{panel.width};height:#{panel.height};overflow:auto;">
+ <rich:panel rendered="#{!panel.rendered}" id="p1" style="width:#{panel.width};height:#{panel.height};overflow:auto;">
<f:facet name="header">
<h:outputText id="t1" value="#{panel.title[0]} (Panel 1)" />
</f:facet>
@@ -40,32 +34,53 @@
</rich:panel>
</rich:panel>
- <rich:panel onmousedown="alert('OnMouseDown');" id="panelId"
- onclick="submit()" rendered="#{panel.rendered}"
- style="width:#{panel.width};height:#{panel.height}">
- <f:verbatim>This is panel 2 example...</f:verbatim>
+ <rich:panel id="panelId" rendered="#{panel.rendered}"
+ style="width:#{panel.width};height:#{panel.height}"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')" onclick="print('onclickInputID', 'onclick work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')">
+ <f:verbatim>This is panel 2 example...(Test events)</f:verbatim>
</rich:panel>
- <h:panelGrid columns="2" cellpadding="10px">
- <h:outputText value="Title"></h:outputText>
- <h:inputText valueChangeListener="#{panel.makeTitle}">
- <a4j:support event="onchange" reRender="t1,t2,t3,o1,o2"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="panel straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{panel.bTest1}" value="run" reRender="panelPropertyID,panelId,p1,t1,t2,t3,o1,o2"></a4j:commandButton>
- <h:outputText value="Width: "></h:outputText>
- <h:inputText value="#{panel.width}">
- <a4j:support event="onchange" reRender="panelId,p1"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{panel.bTest2}" value="run" reRender="panelPropertyID,panelId,p1,t1,t2,t3,o1,o2"></a4j:commandButton>
- <h:outputText value="Height: "></h:outputText>
- <h:inputText value="#{panel.height}">
- <a4j:support event="onchange" reRender="panelId,p1"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{panel.bTest3}" value="run" reRender="panelPropertyID,panelId,p1,t1,t2,t3,o1,o2"></a4j:commandButton>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{panel.rendered}" onclick="submit()"></h:selectBooleanCheckbox>
- </h:panelGrid>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{panel.bTest4}" value="run" reRender="panelPropertyID,panelId,p1,t1,t2,t3,o1,o2"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{panel.bTest5}" value="run" reRender="panelPropertyID,panelId,p1,t1,t2,t3,o1,o2"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="panelPropertyID" switchType="client" opened="true" label="panel property">
+ <h:panelGrid columns="2" cellpadding="10px">
+ <h:outputText value="Title"></h:outputText>
+ <h:inputText valueChangeListener="#{panel.makeTitle}">
+ <a4j:support event="onchange" reRender="t1,t2,t3,o1,o2"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Width: "></h:outputText>
+ <h:inputText value="#{panel.width}">
+ <a4j:support event="onchange" reRender="panelId,p1"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Height: "></h:outputText>
+ <h:inputText value="#{panel.height}">
+ <a4j:support event="onchange" reRender="panelId,p1"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{panel.rendered}" onclick="submit()"></h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/PanelBar/PanelBar.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/PanelBar/PanelBar.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/PanelBar/PanelBar.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,72 +1,81 @@
-<f:subview id="panelBarSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="panelBarSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:rich="http://richfaces.org/rich">
<h:form>
<h:messages></h:messages>
- <rich:panelBar id="pBId" height="#{panelBar.height}"
- width="#{panelBar.width}" contentClass="#{panelBar.contentStyle}"
- styleClass="#{panelBar.style}" selectedPanel="pBiId4">
- <rich:panelBarItem rendered="#{panelBar.rendered}" id="pBiId1"
- label="#{panelBar.label[0]}" headerClass="#{panelBar.headerStyle}">
+ <rich:panelBar id="pBId" height="#{panelBar.height}" width="#{panelBar.width}" contentClass="#{panelBar.contentStyle}"
+ styleClass="#{panelBar.style}" selectedPanel="pBiId4" onclick="print('onclickInputID', 'onclick work!')">
+ <rich:panelBarItem rendered="#{panelBar.rendered}" id="pBiId1" label="#{panelBar.label[0]}"
+ headerClass="#{panelBar.headerStyle}">
<h:outputText value="Some text..."></h:outputText>
</rich:panelBarItem>
- <rich:panelBarItem id="pBiId2" label="#{panelBar.label[1]}"
- headerClass="#{panelBar.headerStyle}">
- <h:graphicImage value="/pics/masshtaby_01.jpg" width="300"
- height="200"></h:graphicImage>
+ <rich:panelBarItem id="pBiId2" label="#{panelBar.label[1]}" headerClass="#{panelBar.headerStyle}">
+ <h:graphicImage value="/pics/masshtaby_01.jpg" width="300" height="200"></h:graphicImage>
</rich:panelBarItem>
- <rich:panelBarItem id="pBiId3" label="#{panelBar.label[2]}"
- headerClass="#{panelBar.headerStyle}">
+ <rich:panelBarItem id="pBiId3" label="#{panelBar.label[2]}" headerClass="#{panelBar.headerStyle}">
<f:facet name="openMarker">
<h:graphicImage value="/pics/ajax_process.gif"></h:graphicImage>
</f:facet>
<f:facet name="closeMarker">
<h:graphicImage value="/pics/ajax_stoped.gif"></h:graphicImage>
</f:facet>
- <h:graphicImage value="/pics/podb109_61.jpg" width="300"
- height="200"></h:graphicImage>
+ <h:graphicImage value="/pics/podb109_61.jpg" width="300" height="200"></h:graphicImage>
</rich:panelBarItem>
- <rich:panelBarItem id="pBiId4" label="#{panelBar.label[3]}"
- headerClass="#{panelBar.headerStyle}">
+ <rich:panelBarItem id="pBiId4" label="#{panelBar.label[3]}" headerClass="#{panelBar.headerStyle}">
<h:outputText value="Select Panel"></h:outputText>
</rich:panelBarItem>
-
</rich:panelBar>
<rich:spacer height="20px"></rich:spacer>
- <h:panelGrid columns="2" cellspacing="10px">
- <h:outputText value="Label: "></h:outputText>
- <h:inputText valueChangeListener="#{panelBar.makeLabels}">
- <a4j:support event="onchange" reRender="pBId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="panelBar straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{panelBar.bTest1}" value="run" reRender="pbPropertyID,pBId"></a4j:commandButton>
- <h:outputText value="Width: "></h:outputText>
- <h:inputText value="#{panelBar.width}">
- <a4j:support event="onchange" reRender="pBId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{panelBar.bTest2}" value="run" reRender="pbPropertyID,pBId"></a4j:commandButton>
- <h:outputText value="Height: "></h:outputText>
- <h:inputText value="#{panelBar.height}">
- <a4j:support event="onchange" reRender="pBId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{panelBar.bTest3}" value="run" reRender="pbPropertyID,pBId"></a4j:commandButton>
- <h:outputText value="Rendered"></h:outputText>
- <h:selectBooleanCheckbox value="#{panelBar.rendered}">
- <a4j:support event="onchange" reRender="pBId" />
- </h:selectBooleanCheckbox>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{panelBar.bTest4}" value="run" reRender="pbPropertyID,pBId"></a4j:commandButton>
- <h:outputText value="Switch Styles:" />
- <h:commandButton action="#{panelBar.doStyles}"
- value="#{panelBar.btnLabel}" />
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{panelBar.bTest5}" value="run" reRender="pbPropertyID,pBId"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- </h:panelGrid>
+ <rich:simpleTogglePanel id="pbPropertyID" switchType="client" opened="true" label="panelBar property">
+ <h:panelGrid columns="2" cellspacing="10px">
+ <h:outputText value="Label: "></h:outputText>
+ <h:inputText valueChangeListener="#{panelBar.makeLabels}">
+ <a4j:support event="onchange" reRender="pBId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Width: "></h:outputText>
+ <h:inputText value="#{panelBar.width}">
+ <a4j:support event="onchange" reRender="pBId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Height: "></h:outputText>
+ <h:inputText value="#{panelBar.height}">
+ <a4j:support event="onchange" reRender="pBId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Rendered"></h:outputText>
+ <h:selectBooleanCheckbox value="#{panelBar.rendered}">
+ <a4j:support event="onchange" reRender="pBId" />
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Switch Styles:" />
+ <h:commandButton action="#{panelBar.doStyles}" value="#{panelBar.btnLabel}" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/PanelMenu/PanelMenu.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/PanelMenu/PanelMenu.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/PanelMenu/PanelMenu.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,32 +1,25 @@
-<f:subview id="panelMenuSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="panelMenuSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:rich="http://richfaces.org/rich">
<h:form>
- <rich:panelMenu id="panelMenuID" disabled="#{panelMenu.disabled}"
- width="#{panelMenu.width}" selectedChild="thisChild"
- expandSingle="#{panelMenu.expandSingle}" mode="#{panelMenu.mode}"
- value="PanelMenu" rendered="#{panelMenu.rendered}"
- iconCollapsedGroup="#{panelMenu.icon.collapsedGroup}"
- iconCollapsedTopGroup="#{panelMenu.icon.collapsedTopGroup}"
- iconDisabledGroup="#{panelMenu.icon.disabledGroup}"
- iconDisabledItem="#{panelMenu.icon.disabledItem}"
- iconExpandedGroup="#{panelMenu.icon.expandedGroup}"
- iconExpandedTopGroup="#{panelMenu.icon.expandedTopGroup}"
- iconItem="#{panelMenu.icon.item}"
- iconTopDisabledItem="#{panelMenu.icon.disabledItem}"
- iconTopDisableGroup="#{panelMenu.icon.disabledGroup}"
- iconTopItem="#{panelMenu.icon.topItem}"
- iconGroupPosition="#{panelMenu.iconGroupPosition}"
- iconGroupTopPosition="#{panelMenu.iconGroupTopPosition}"
- iconItemPosition="#{panelMenu.iconItemPosition}"
- iconItemTopPosition="#{panelMenu.iconItemTopPosition}"
- styleClass="sPanel">
+ <rich:panelMenu id="panelMenuID" disabled="#{panelMenu.disabled}" width="#{panelMenu.width}" selectedChild="thisChild"
+ expandSingle="#{panelMenu.expandSingle}" mode="#{panelMenu.mode}" value="PanelMenu" rendered="#{panelMenu.rendered}"
+ iconCollapsedGroup="#{panelMenu.icon.collapsedGroup}" iconCollapsedTopGroup="#{panelMenu.icon.collapsedTopGroup}"
+ iconDisabledGroup="#{panelMenu.icon.disabledGroup}" iconDisabledItem="#{panelMenu.icon.disabledItem}"
+ iconExpandedGroup="#{panelMenu.icon.expandedGroup}" iconExpandedTopGroup="#{panelMenu.icon.expandedTopGroup}"
+ iconItem="#{panelMenu.icon.item}" iconTopDisabledItem="#{panelMenu.icon.disabledItem}"
+ iconTopDisableGroup="#{panelMenu.icon.disabledGroup}" iconTopItem="#{panelMenu.icon.topItem}"
+ iconGroupPosition="#{panelMenu.iconGroupPosition}" iconGroupTopPosition="#{panelMenu.iconGroupTopPosition}"
+ iconItemPosition="#{panelMenu.iconItemPosition}" iconItemTopPosition="#{panelMenu.iconItemTopPosition}" styleClass="sPanel"
+ onclick="" ondblclick="" ongroupcollapse="" ongroupexpand="" onitemhover="" onkeydown="" onkeypress="" onkeyup=""
+ onmousedown="" onmousemove="" onmouseout="" onmouseover="" onmouseup="">
- <rich:panelMenuItem label="Item 1"></rich:panelMenuItem>
- <rich:panelMenuItem disabled="true"
- iconDisabled="/pics/ajax_stoped.gif">
+ <rich:panelMenuItem label="Item 1(Test event)" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')"></rich:panelMenuItem>
+ <rich:panelMenuItem disabled="true" iconDisabled="/pics/ajax_stoped.gif">
<h:outputText value="Disabled Item" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item Image">
@@ -42,28 +35,22 @@
<h:outputText value="CheckBox 2"></h:outputText>
<h:selectBooleanCheckbox value="false"></h:selectBooleanCheckbox>
</rich:panelMenuItem>
- <rich:panelMenuItem label="Action"
- onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
+ <rich:panelMenuItem label="Action" onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
- <rich:panelMenuGroup label="Group 1 (align)"
- align="#{panelMenu.align}">
+ <rich:panelMenuGroup label="Group 1 (align)" align="#{panelMenu.align}">
<rich:panelMenuItem label="Item 1" disabled="true"></rich:panelMenuItem>
- <rich:panelMenuItem label="Item 1 (action)"
- onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
+ <rich:panelMenuItem label="Item 1 (action)" onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 2"></rich:panelMenuItem>
- <rich:panelMenuGroup label="Group 1_1 (align)"
- align="#{panelMenu.align}">
+ <rich:panelMenuGroup label="Group 1_1 (align)" align="#{panelMenu.align}">
<rich:panelMenuItem label="Imem 1_1">
<h:inputText value="#{panelMenu.inputText}"></h:inputText>
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 1_2"></rich:panelMenuItem>
- <rich:panelMenuGroup label="Group 1_1_1 (align)"
- align="#{panelMenu.align}">
- <rich:panelMenuItem label="Item 1 (action)"
- onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
+ <rich:panelMenuGroup label="Group 1_1_1 (align)" align="#{panelMenu.align}">
+ <rich:panelMenuItem label="Item 1 (action)" onmousedown="alert('OnMouseDown');"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 2"></rich:panelMenuItem>
</rich:panelMenuGroup>
@@ -75,8 +62,7 @@
</rich:panelMenuGroup>
</rich:panelMenuGroup>
- <rich:panelMenuGroup label="Group 1_2 (disabled, action)"
- disabled="true" onmousedown="alert('Disabled');">
+ <rich:panelMenuGroup label="Group 1_2 (disabled, action)" disabled="true" onmousedown="alert('Disabled');">
<rich:panelMenuItem label="Item 1_2_1"></rich:panelMenuItem>
</rich:panelMenuGroup>
@@ -128,39 +114,29 @@
<br />
</f:verbatim>
- <rich:panelMenu id="panelMenuID2" expandMode="#{panelMenu.mode}"
- disabled="#{!panelMenu.disabled}" width="#{panelMenu.width}"
+ <rich:panelMenu id="panelMenuID2" expandMode="#{panelMenu.mode}" disabled="#{!panelMenu.disabled}" width="#{panelMenu.width}"
selectedChild="thisChild" styleClass="body">
- <rich:panelMenuGroup label="Group 1 (tabIdex, my Image)"
- tabindex="#{panelMenu.tabIndex}" align="#{panelMenu.align}">
- <rich:panelMenuGroup label="Group 1_1 (tabIndex)"
- tabindex="#{panelMenu.tabIndex}">
- <rich:panelMenuGroup label="Group 1_1_1 (tabIndex)"
- tabindex="#{panelMenu.tabIndex}">
+ <rich:panelMenuGroup label="Group 1 (tabIdex, my Image)" tabindex="#{panelMenu.tabIndex}" align="#{panelMenu.align}">
+ <rich:panelMenuGroup label="Group 1_1 (tabIndex)" tabindex="#{panelMenu.tabIndex}">
+ <rich:panelMenuGroup label="Group 1_1_1 (tabIndex)" tabindex="#{panelMenu.tabIndex}">
<rich:panelMenuItem label="Item 1"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 2"></rich:panelMenuItem>
</rich:panelMenuGroup>
</rich:panelMenuGroup>
- <rich:panelMenuGroup label="Group 1_2 (tabIndex)"
- tabindex="#{panelMenu.tabIndex}">
- <rich:panelMenuGroup label="Group 1_2_1 (tabIndex)"
- tabindex="#{panelMenu.tabIndex}">
+ <rich:panelMenuGroup label="Group 1_2 (tabIndex)" tabindex="#{panelMenu.tabIndex}">
+ <rich:panelMenuGroup label="Group 1_2_1 (tabIndex)" tabindex="#{panelMenu.tabIndex}">
<rich:panelMenuItem label="Item (icon)" icon="#{icon.iconItem}"></rich:panelMenuItem>
- <rich:panelMenuItem label="Item (iconDisabled)"
- iconDisabled="#{icon.iconHeader}"></rich:panelMenuItem>
- <rich:panelMenuItem label="Item (icon)" disabled="true"
- icon="#{icon.iconItem}"></rich:panelMenuItem>
- <rich:panelMenuItem label="Item (iconDisabled)" disabled="true"
- iconDisabled="#{icon.iconItem}"></rich:panelMenuItem>
+ <rich:panelMenuItem label="Item (iconDisabled)" iconDisabled="#{icon.iconHeader}"></rich:panelMenuItem>
+ <rich:panelMenuItem label="Item (icon)" disabled="true" icon="#{icon.iconItem}"></rich:panelMenuItem>
+ <rich:panelMenuItem label="Item (iconDisabled)" disabled="true" iconDisabled="#{icon.iconItem}"></rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuItem label="Item (icon)" icon="#{icon.iconItem}"></rich:panelMenuItem>
<rich:panelMenuItem label="Item (icon)" icon="#{icon.iconItem}"></rich:panelMenuItem>
<rich:panelMenuItem label="Item "></rich:panelMenuItem>
</rich:panelMenuGroup>
- <rich:panelMenuGroup label="Group 1_3" align="#{panelMenu.align}"
- iconCollapsed="#{icon.iconCollapse}"
+ <rich:panelMenuGroup label="Group 1_3" align="#{panelMenu.align}" iconCollapsed="#{icon.iconCollapse}"
iconExpanded="#{icon.iconExpand}" iconDisabled="#{icon.disabled}">
<rich:panelMenuItem label="Item 1"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 2"></rich:panelMenuItem>
@@ -170,10 +146,8 @@
<!-- triangleUp triangle triangleDown disc chevron chevronUp chevronDown grid -->
<rich:panelMenuItem label="Item (disc)" icon="disc"></rich:panelMenuItem>
<rich:panelMenuItem label="Item (grid)" icon="grid"></rich:panelMenuItem>
- <rich:panelMenuGroup label="Group" iconCollapsed="triangleDown"
- iconExpanded="triangleUp" iconDisabled="triangle">
- <rich:panelMenuGroup label="Group" iconCollapsed="chevronDown"
- iconExpanded="chevronUp" iconDisabled="chevron">
+ <rich:panelMenuGroup label="Group" iconCollapsed="triangleDown" iconExpanded="triangleUp" iconDisabled="triangle">
+ <rich:panelMenuGroup label="Group" iconCollapsed="chevronDown" iconExpanded="chevronUp" iconDisabled="chevron">
<rich:panelMenuItem label="Item (disc)" icon="disc"></rich:panelMenuItem>
<rich:panelMenuItem label="Item (grid)" iconDisabled="grid"></rich:panelMenuItem>
<rich:panelMenuItem label="Item (grid)" icon="grid"></rich:panelMenuItem>
@@ -184,355 +158,313 @@
<rich:panelMenuItem label="Item "></rich:panelMenuItem>
</rich:panelMenuGroup>
- <rich:panelMenuGroup label="Group 1_3" iconCollapsed="chevronDown"
- iconExpanded="chevronUp" iconDisabled="chevron">
+ <rich:panelMenuGroup label="Group 1_3" iconCollapsed="chevronDown" iconExpanded="chevronUp" iconDisabled="chevron">
<rich:panelMenuItem label="Item 1"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 2"></rich:panelMenuItem>
<rich:panelMenuItem label="Item 3"></rich:panelMenuItem>
</rich:panelMenuGroup>
</rich:panelMenuGroup>
</rich:panelMenu>
+
<f:verbatim>
<br />
<br />
</f:verbatim>
- <h:panelGrid columns="2">
+ <rich:simpleTogglePanel switchType="client" opened="true" label="panelMenu straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{panelMenu.bTest1}" value="run" reRender="pmPropertyID,panelMenuID,panelMenuID2,info"></a4j:commandButton>
- <h:outputText value="Width"></h:outputText>
- <h:inputText value="#{panelMenu.width}">
- <a4j:support event="onchange"
- reRender="panelMenuID,panelMenuID2,info"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{panelMenu.bTest2}" value="run" reRender="pmPropertyID,panelMenuID,panelMenuID2,info"></a4j:commandButton>
- <h:outputText value="Tab Index"></h:outputText>
- <h:inputText value="#{panelMenu.tabIndex}">
- <a4j:support event="onchange"
- reRender="panelMenuID,panelMenuID2,info"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{panelMenu.bTest3}" value="run" reRender="pmPropertyID,panelMenuID,panelMenuID2,info"></a4j:commandButton>
- <h:outputText value="Expand Single"></h:outputText>
- <h:selectBooleanCheckbox value="#{panelMenu.expandSingle}">
- <a4j:support event="onchange" reRender="panelMenuID"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{panelMenu.bTest4}" value="run" reRender="pmPropertyID,panelMenuID,panelMenuID2,info"></a4j:commandButton>
- <h:outputText value="Mode"></h:outputText>
- <h:selectOneRadio value="#{panelMenu.mode}" id="Mode1ID"
- onchange="submit();">
- <f:selectItem itemLabel="none" itemValue="none" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <f:selectItem itemLabel="server" itemValue="server" />
- </h:selectOneRadio>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{panelMenu.bTest5}" value="run" reRender="pmPropertyID,panelMenuID,panelMenuID2,info"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Expand mode"></h:outputText>
- <h:selectOneRadio value="#{panelMenu.expandMode}" onchange="submit();">
- <f:selectItem itemLabel="none" itemValue="none" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <f:selectItem itemLabel="server" itemValue="server" />
- </h:selectOneRadio>
+ <rich:simpleTogglePanel id="pmPropertyID" switchType="client" opened="true" label="panelMenu property">
+ <h:panelGrid columns="2">
+ <h:outputText value="Width"></h:outputText>
+ <h:inputText value="#{panelMenu.width}">
+ <a4j:support event="onchange" reRender="panelMenuID,panelMenuID2,info"></a4j:support>
+ </h:inputText>
- <h:outputText value="Align:"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.align}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="middle" itemValue="middle" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <f:selectItem itemLabel="bottom" itemValue="bottom" />
- <f:selectItem itemLabel="top" itemValue="top" />
- <a4j:support event="onclick"
- reRender="panelMenuID,panelMenuID2,info"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="Tab Index"></h:outputText>
+ <h:inputText value="#{panelMenu.tabIndex}">
+ <a4j:support event="onchange" reRender="panelMenuID,panelMenuID2,info"></a4j:support>
+ </h:inputText>
- <h:outputText value="Disabled"></h:outputText>
- <h:selectBooleanCheckbox value="#{panelMenu.disabled}">
- <a4j:support event="onchange"
- reRender="panelMenuID,panelMenuID2,info"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Expand Single"></h:outputText>
+ <h:selectBooleanCheckbox value="#{panelMenu.expandSingle}">
+ <a4j:support event="onchange" reRender="panelMenuID"></a4j:support>
+ </h:selectBooleanCheckbox>
- <h:outputText value="Rendered"></h:outputText>
- <h:selectBooleanCheckbox value="#{panelMenu.rendered}"
- onchange="submit();"></h:selectBooleanCheckbox>
- </h:panelGrid>
+ <h:outputText value="Mode"></h:outputText>
+ <h:selectOneRadio value="#{panelMenu.mode}" id="Mode1ID" onchange="submit();">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <f:selectItem itemLabel="server" itemValue="server" />
+ </h:selectOneRadio>
- <h:panelGrid columns="4">
- <h:outputText value="Icon"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.icon}" onchange="submit();">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- </h:selectOneMenu>
+ <h:outputText value="Expand mode"></h:outputText>
+ <h:selectOneRadio value="#{panelMenu.expandMode}" onchange="submit();">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <f:selectItem itemLabel="server" itemValue="server" />
+ </h:selectOneRadio>
- <h:outputText value="icon Item"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.item}" onchange="submit();">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item " itemValue="#{icon.iconItem}" />
- </h:selectOneMenu>
+ <h:outputText value="Align:"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.align}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="middle" itemValue="middle" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <f:selectItem itemLabel="bottom" itemValue="bottom" />
+ <f:selectItem itemLabel="top" itemValue="top" />
+ <a4j:support event="onclick" reRender="panelMenuID,panelMenuID2,info"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Disabled"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.disabled}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="Disabled"></h:outputText>
+ <h:selectBooleanCheckbox value="#{panelMenu.disabled}">
+ <a4j:support event="onchange" reRender="panelMenuID,panelMenuID2,info"></a4j:support>
+ </h:selectBooleanCheckbox>
- <h:outputText value="icon Disabled Item"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.disabledItem}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="Rendered"></h:outputText>
+ <h:selectBooleanCheckbox value="#{panelMenu.rendered}" onchange="submit();"></h:selectBooleanCheckbox>
+ </h:panelGrid>
- <h:outputText value="icon Top Item"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.topItem}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:panelGrid columns="4">
+ <h:outputText value="Icon"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.icon}" onchange="submit();">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ </h:selectOneMenu>
- <h:outputText value="icon Top Disabled Item"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.topDisabledItem}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Item"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.item}" onchange="submit();">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item " itemValue="#{icon.iconItem}" />
+ </h:selectOneMenu>
- <h:outputText value="icon Expanded Group"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.expandedGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Disabled"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.disabled}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon CollapsedGroup"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.collapsedGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Disabled Item"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.disabledItem}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Disabled Group"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.disabledGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Top Item"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.topItem}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Expanded Top Group"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.expandedTopGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Top Disabled Item"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.topDisabledItem}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Collapsed Top Group"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.collapsedTopGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Expanded Group"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.expandedGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Top Disable Group"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.topDisableGroup}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon CollapsedGroup"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.collapsedGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Expanded"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.expanded}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Disabled Group"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.disabledGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Collapsed"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.icon.collapsed}">
- <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
- <f:selectItem itemLabel="Ajax Process"
- itemValue="#{icon.iconAjaxProcess}" />
- <f:selectItem itemLabel="Ajax Stoped"
- itemValue="#{icon.iconAjaxStoped}" />
- <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
- <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
- <f:selectItem itemLabel="File Manager"
- itemValue="#{icon.iconFileManager}" />
- <f:selectItem itemLabel="File Manager Reject"
- itemValue="#{icon.iconFileManagerReject}" />
- <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
- <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
- </h:panelGrid>
- <br />
- <h:panelGrid columns="4">
- <h:outputText value="icon Group Position"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.iconGroupPosition}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Expanded Top Group"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.expandedTopGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Group Top Position"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.iconGroupTopPosition}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Collapsed Top Group"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.collapsedTopGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Item Position"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.iconItemPosition}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
+ <h:outputText value="icon Top Disable Group"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.topDisableGroup}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
- <h:outputText value="icon Item Top Position"></h:outputText>
- <h:selectOneMenu value="#{panelMenu.iconItemTopPosition}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
- </h:selectOneMenu>
- </h:panelGrid>
+ <h:outputText value="icon Expanded"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.expanded}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="icon Collapsed"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.icon.collapsed}">
+ <f:selectItem itemLabel="none" itemValue="#{icon.none}" />
+ <f:selectItem itemLabel="Ajax Process" itemValue="#{icon.iconAjaxProcess}" />
+ <f:selectItem itemLabel="Ajax Stoped" itemValue="#{icon.iconAjaxStoped}" />
+ <f:selectItem itemLabel="Collapse" itemValue="#{icon.iconCollapse}" />
+ <f:selectItem itemLabel="Expand" itemValue="#{icon.iconExpand}" />
+ <f:selectItem itemLabel="File Manager" itemValue="#{icon.iconFileManager}" />
+ <f:selectItem itemLabel="File Manager Reject" itemValue="#{icon.iconFileManagerReject}" />
+ <f:selectItem itemLabel="Header" itemValue="#{icon.iconHeader}" />
+ <f:selectItem itemLabel="Item" itemValue="#{icon.iconItem}" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+ </h:panelGrid>
+ <br />
+ <h:panelGrid columns="4">
+ <h:outputText value="icon Group Position"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.iconGroupPosition}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="icon Group Top Position"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.iconGroupTopPosition}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="icon Item Position"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.iconItemPosition}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="icon Item Top Position"></h:outputText>
+ <h:selectOneMenu value="#{panelMenu.iconItemTopPosition}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onclick" reRender="panelMenuID"></a4j:support>
+ </h:selectOneMenu>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Added: branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/RichTest.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/RichTest.xhtml (rev 0)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/RichTest.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:a4j="http://richfaces.org/a4j"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:rich="http://richfaces.org/rich"
+ xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view>
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <h:form id="richTestID">
+ <ui:include src="/rich/menu.xhtml" />
+ <h:panelGrid columns="2">
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="panel" />
+ </f:facet>
+ <rich:tabPanel switchType="ajax" height="200px" width="300px">
+ <rich:tab label="Tab 1">
+ <f:facet name="header">
+ <h:outputText value="tab1" />
+ </f:facet>
+ <h:outputText value="Text" />
+ <f:verbatim>
+ <br />
+ </f:verbatim>
+ <h:outputText value="Text" />
+ <f:verbatim>
+ <br />
+ </f:verbatim>
+ <h:outputText value="Text" />
+ <f:verbatim>
+ <br />
+ </f:verbatim>
+ <h:outputText value="Text" />
+ </rich:tab>
+
+ <rich:tab label="Tab 2">
+ <h:outputText value="Image" />
+ <h:graphicImage value="/pics/masshtaby_01.jpg" height="150px"
+ width="200px" />
+ </rich:tab>
+
+ <rich:tab label="Tab 3">
+ <f:facet name="header">
+ <h:outputText value="tab1" />
+ </f:facet>
+ <f:verbatim>
+ <a
+ href="javascript:Richfaces.showModalPanel('mp',{width:450, top:200})">Show
+ this panel</a>
+ </f:verbatim>
+ <rich:modalPanel id="mp" minHeight="200" minWidth="450"
+ height="200" width="500" zindex="2000">
+ <f:facet name="header">
+ <h:outputText value="Modal Panel Title" />
+ </f:facet>
+ <f:facet name="controls">
+ <h:graphicImage value="/pics/error.gif" style="cursor:pointer"
+ onclick="Richfaces.hideModalPanel('mp')" />
+ </f:facet>
+ <f:verbatim>
+ RichFaces Modal Panel is a container that blocks an operation on the base page when the modal panel is shown.
+ <a href="javascript:Richfaces.hideModalPanel('mp')">Hide
+ this panel</a>
+ </f:verbatim>
+ </rich:modalPanel>
+ </rich:tab>
+
+ <rich:tab label="Tab 4">
+ <f:facet name="header">
+ <h:outputText value="tab1" />
+ </f:facet>
+ <h:inputTextarea value="text" cols="30" rows="8"></h:inputTextarea>
+ </rich:tab>
+
+ <rich:tab label="Tab 5">
+ <f:facet name="header">
+ <h:outputText value="tab1" />
+ </f:facet>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="Panel" />
+ </f:facet>
+ <rich:tabPanel switchType="ajax">
+ <rich:tab label="tab 1">
+ <h:outputText value="text1" />
+ </rich:tab>
+
+ <rich:tab label="tab 2">
+ <h:outputText value="text2" />
+ </rich:tab>
+ </rich:tabPanel>
+ </rich:panel>
+ </rich:tab>
+
+ <rich:tab label="Tab 6">
+ <rich:dataGrid columns="3" elements="12"
+ value="#{dataTable.mounths}" var="dt">
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="mmm"></h:outputText>
+ </f:facet>
+ <h:panelGrid columns="2">
+ <h:outputText value="Mounth:" styleClass="label"></h:outputText>
+ <h:outputText value="#{dt.mounth}" />
+ <h:outputText value="Town:" styleClass="label"></h:outputText>
+ <h:outputText value="#{dt.town}" />
+ <h:outputText value="Day:" styleClass="label"></h:outputText>
+ <h:outputText value="#{dt.day}" />
+ <h:outputText value="Number:" styleClass="label"></h:outputText>
+ <h:outputText value="#{dt.total}" />
+ </h:panelGrid>
+ </rich:panel>
+ </rich:dataGrid>
+ </rich:tab>
+ </rich:tabPanel>
+ </rich:panel>
+ </h:panelGrid>
+ <rich:separator></rich:separator>
+ </h:form>
+ </body>
+</f:view>
+</html>
Added: branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/menu.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/menu.xhtml (rev 0)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/RichTest/menu.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <f:subview id="menuTestID">
+ <rich:toolBar itemSeparator="disc">
+ <rich:dropDownMenu value="File" event="onmouseover" submitMode="ajax">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 5"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 6"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 7"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuGroup value="menu 1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuGroup value="menu 1_1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ </rich:menuGroup>
+ <rich:menuGroup value="menu 2">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ </rich:dropDownMenu>
+
+ <rich:dropDownMenu value="Edit" event="onmouseover">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 5"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 6"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 7"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 8"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 9"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 10"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 11"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 12"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 13"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 14"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 15"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuGroup value="menu 1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuGroup value="menu 1_1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ </rich:menuGroup>
+ <rich:menuGroup value="menu 2">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuSeparator />
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ </rich:dropDownMenu>
+
+ <rich:toolBarGroup>
+ <rich:dropDownMenu value="Navigate" event="onmouseover">
+ <rich:menuGroup value="menu 1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuGroup value="menu 1_1">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ </rich:menuGroup>
+ <rich:menuGroup value="menu 2">
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ </rich:menuGroup>
+ <rich:menuItem value="Item 1" ></rich:menuItem>
+ <rich:menuItem value="Item 2"></rich:menuItem>
+ <rich:menuItem value="Item 3"></rich:menuItem>
+ <rich:menuItem value="Item 4"></rich:menuItem>
+ <rich:menuItem value="Item 5"></rich:menuItem>
+ <rich:menuItem value="Item 6"></rich:menuItem>
+ <rich:menuItem value="Item 7"></rich:menuItem>
+ <rich:menuItem value="Item 8"></rich:menuItem>
+ <rich:menuItem value="Item 9"></rich:menuItem>
+ <rich:menuItem value="Item 10"></rich:menuItem>
+ </rich:dropDownMenu>
+ <h:graphicImage value="/pics/ajax_process.gif"></h:graphicImage>
+ </rich:toolBarGroup>
+ </rich:toolBar>
+ </f:subview>
+</html>
\ No newline at end of file
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/ScrollableDataTable/ScrollableDataTable.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/ScrollableDataTable/ScrollableDataTable.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/ScrollableDataTable/ScrollableDataTable.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -4,7 +4,8 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich">
<h:form>
- <rich:scrollableDataTable var="sdt" value="#{scrollableDT.data}" rows="30" width="400px" >
+ <rich:scrollableDataTable id="sdt" var="sdt" value="#{scrollableDT.data}" rows="30" width="400px"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" onselectionchange="print('onselectionchangeInputID', 'onselectionchange work!')">
<rich:column width="100px" sortable="false">
<f:facet name="header">
<h:outputText value="Number" />
@@ -33,5 +34,7 @@
<h:outputText value="#{sdt.data3}" />
</rich:column>
</rich:scrollableDataTable>
- </h:form>
+
+ <a4j:commandButton value="reRender" reRender="sdt"></a4j:commandButton>
+ </h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Separator/Separator.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Separator/Separator.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Separator/Separator.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,66 +1,78 @@
-<f:subview id="separatorSubviewID"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:scriptfree="http://jakarta.apache.org/taglibs/standard/scriptfree"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:c="http://java.sun.com/jstl/core">
+<f:subview id="separatorSubviewID" xmlns:rich="http://richfaces.org/rich"
+ xmlns:scriptfree="http://jakarta.apache.org/taglibs/standard/scriptfree" xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:c="http://java.sun.com/jstl/core">
<h:form>
- <h:messages></h:messages>
- <h:outputText value="Event:"></h:outputText>
- <rich:separator height="20px" width="300px"
- onmousedown="alert('mouse click')"></rich:separator>
-
-
<h:outputText value="Some text one..." styleClass="text"></h:outputText>
- <rich:separator id="separatorId" rendered="#{separator.rendered}"
- width="#{separator.width}" height="#{separator.height}"
- title="#{separator.title}" lineType="#{separator.lineType}"
- align="#{separator.align}" styleClass="#{separator.style}"></rich:separator>
+ <rich:separator id="separatorId" rendered="#{separator.rendered}" width="#{separator.width}" height="#{separator.height}"
+ title="#{separator.title}" lineType="#{separator.lineType}" align="#{separator.align}" styleClass="#{separator.style}"
+ onclick="print('onclickInputID', 'onclick work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onkeydown="print('onkeydownInputID', 'onkeydown work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"></rich:separator>
<h:outputText value="Some text two..." styleClass="text"></h:outputText>
<rich:spacer height="20px"></rich:spacer>
- <h:panelGrid columns="2">
- <h:outputText value="Width (px or %): "></h:outputText>
- <h:inputText value="#{separator.width}">
- <a4j:support event="onchange" reRender="separatorId"></a4j:support>
- </h:inputText>
- <h:outputText value="Height (px or %):"></h:outputText>
- <h:inputText value="#{separator.height}">
- <a4j:support event="onchange" reRender="separatorId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="separator straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{separator.bTest1}" value="run" reRender="separatorId,separatorPropertyID"></a4j:commandButton>
- <h:outputText value="LineType:"></h:outputText>
- <h:selectOneRadio value="#{separator.lineType}"
- layout="pageDirection">
- <f:selectItem itemLabel="beveled" itemValue="beveled" />
- <f:selectItem itemLabel="dotted" itemValue="dotted" />
- <f:selectItem itemLabel="dashed" itemValue="dashed" />
- <f:selectItem itemLabel="double" itemValue="double" />
- <f:selectItem itemLabel="solid" itemValue="solid" />
- <a4j:support event="onclick" reRender="separatorId"></a4j:support>
- </h:selectOneRadio>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{separator.bTest2}" value="run" reRender="separatorId,separatorPropertyID"></a4j:commandButton>
- <h:outputText value="Align:"></h:outputText>
- <h:selectOneRadio value="#{separator.align}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="center" itemValue="center" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onclick" reRender="separatorId"></a4j:support>
- </h:selectOneRadio>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{separator.bTest3}" value="run" reRender="separatorId,separatorPropertyID"></a4j:commandButton>
- <h:outputText value="Title:"></h:outputText>
- <h:inputText value="#{separator.title}">
- <a4j:support event="onchange" reRender="separatorId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{separator.bTest4}" value="run" reRender="separatorId,separatorPropertyID"></a4j:commandButton>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{separator.rendered}"
- onclick="submit()"></h:selectBooleanCheckbox>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{separator.bTest5}" value="run" reRender="separatorId,separatorPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Switch Styles:" />
- <h:commandButton action="#{separator.doStyles}"
- value="#{separator.btnLabel}" />
- </h:panelGrid>
+ <rich:simpleTogglePanel id="separatorPropertyID" switchType="client" opened="true" label="separator property">
+ <h:panelGrid columns="2">
+ <h:outputText value="Width (px or %): "></h:outputText>
+ <h:inputText value="#{separator.width}">
+ <a4j:support event="onchange" reRender="separatorId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Height (px or %):"></h:outputText>
+ <h:inputText value="#{separator.height}">
+ <a4j:support event="onchange" reRender="separatorId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="LineType:"></h:outputText>
+ <h:selectOneRadio value="#{separator.lineType}" layout="pageDirection">
+ <f:selectItem itemLabel="beveled" itemValue="beveled" />
+ <f:selectItem itemLabel="dotted" itemValue="dotted" />
+ <f:selectItem itemLabel="dashed" itemValue="dashed" />
+ <f:selectItem itemLabel="double" itemValue="double" />
+ <f:selectItem itemLabel="solid" itemValue="solid" />
+ <a4j:support event="onclick" reRender="separatorId"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="Align:"></h:outputText>
+ <h:selectOneRadio value="#{separator.align}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="center" itemValue="center" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onclick" reRender="separatorId"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="Title:"></h:outputText>
+ <h:inputText value="#{separator.title}">
+ <a4j:support event="onchange" reRender="separatorId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{separator.rendered}" onclick="submit()"></h:selectBooleanCheckbox>
+
+ <h:outputText value="Switch Styles:" />
+ <h:commandButton action="#{separator.doStyles}" value="#{separator.btnLabel}" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/SimpleTogglePanel/SimpleTogglePanel.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/SimpleTogglePanel/SimpleTogglePanel.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/SimpleTogglePanel/SimpleTogglePanel.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,15 +1,15 @@
-<f:subview id="simpleTogglePanelSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="simpleTogglePanelSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
<h:form>
- <rich:simpleTogglePanel id="sTP" bodyClass="body" headerClass="head"
- label="simpleTogglePanel with some text"
- width="#{simpleTogglePanel.width}"
- height="#{simpleTogglePanel.height}"
- switchType="#{simpleTogglePanel.switchType}" opened="false">
+ <rich:simpleTogglePanel id="sTP" bodyClass="body" headerClass="head" label="simpleTogglePanel with some text"
+ width="#{simpleTogglePanel.width}" height="#{simpleTogglePanel.height}" switchType="#{simpleTogglePanel.switchType}"
+ opened="false" onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
<f:facet name="closeMarker">
<h:outputText value="Close It" />
</f:facet>
@@ -26,18 +26,24 @@
</f:verbatim>
</rich:simpleTogglePanel>
- <rich:simpleTogglePanel id="sTP1" headerClass="head"
- label="simpleTogglePanel wiht image"
- width="#{simpleTogglePanel.width}"
- height="#{simpleTogglePanel.height}"
- rendered="#{simpleTogglePanel.rendered}"
- switchType="#{simpleTogglePanel.switchType}" opened="false">
+ <rich:simpleTogglePanel id="sTP1" headerClass="head" label="simpleTogglePanel wiht image" width="#{simpleTogglePanel.width}"
+ height="#{simpleTogglePanel.height}" rendered="#{simpleTogglePanel.rendered}" switchType="#{simpleTogglePanel.switchType}"
+ opened="false" onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
<h:graphicImage value="/pics/podb109_61.jpg" width="500" height="300"></h:graphicImage>
</rich:simpleTogglePanel>
- <rich:simpleTogglePanel id="sTP2" label="Focus simpleTogglePanle"
- width="#{simpleTogglePanel.width}" ignoreDupResponses="true"
- focus="#{simpleTogglePanel.focus}">
+ <rich:simpleTogglePanel id="sTP2" label="Focus simpleTogglePanle" width="#{simpleTogglePanel.width}" ignoreDupResponses="true"
+ focus="#{simpleTogglePanel.focus}" onclick="print('onclickInputID', 'onclick work!')"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onkeydown="print('onkeydownInputID', 'onkeydown work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')">
<f:facet name="closeMarker">
<h:graphicImage value="/pics/ajax_stoped.gif"></h:graphicImage>
</f:facet>
@@ -61,33 +67,51 @@
<rich:spacer height="20px"></rich:spacer>
- <h:panelGrid columns="2" border="1">
- <h:outputText value="Width:">
- </h:outputText>
- <h:inputText value="#{simpleTogglePanel.width}">
- <a4j:support event="onchange" reRender="sTP, sTP1"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="spacer straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{simpleTogglePanel.bTest1}" value="run" reRender="sTP,sTP1,sTP2,stpPropertyID"></a4j:commandButton>
- <h:outputText value="Height:">
- </h:outputText>
- <h:inputText value="#{simpleTogglePanel.height}">
- <a4j:support event="onchange" reRender="sTP, sTP1"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{simpleTogglePanel.bTest2}" value="run" reRender="sTP,sTP1,sTP2,stpPropertyID"></a4j:commandButton>
- <h:outputText value="Switch Type:"></h:outputText>
- <h:selectOneRadio value="#{simpleTogglePanel.switchType}">
- <f:selectItem itemLabel="client" itemValue="client" />
- <f:selectItem itemLabel="server" itemValue="server" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <a4j:support event="onclick" reRender="sTP, sTP1, sTP2"></a4j:support>
- </h:selectOneRadio>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{simpleTogglePanel.bTest3}" value="run" reRender="sTP,sTP1,sTP2,stpPropertyID"></a4j:commandButton>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{simpleTogglePanel.rendered}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{simpleTogglePanel.bTest4}" value="run" reRender="sTP,sTP1,sTP2,stpPropertyID"></a4j:commandButton>
- </h:panelGrid>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{simpleTogglePanel.bTest5}" value="run" reRender="sTP,sTP1,sTP2,stpPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+ <rich:simpleTogglePanel id="stpPropertyID" switchType="client" opened="true" label="spacer property">
+ <h:panelGrid columns="2" border="1">
+ <h:outputText value="Width:">
+ </h:outputText>
+ <h:inputText value="#{simpleTogglePanel.width}">
+ <a4j:support event="onchange" reRender="sTP,sTP1"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Height:">
+ </h:outputText>
+ <h:inputText value="#{simpleTogglePanel.height}">
+ <a4j:support event="onchange" reRender="sTP,sTP1"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Switch Type:"></h:outputText>
+ <h:selectOneRadio value="#{simpleTogglePanel.switchType}">
+ <f:selectItem itemLabel="client" itemValue="client" />
+ <f:selectItem itemLabel="server" itemValue="server" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <a4j:support event="onclick" reRender="sTP,sTP1,sTP2"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{simpleTogglePanel.rendered}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Spacer/Spacer.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Spacer/Spacer.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Spacer/Spacer.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,57 +1,64 @@
-<f:subview id="spacerSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:sql="http://java.sun.com/jsp/jstl/sql">
+<f:subview id="spacerSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:sql="http://java.sun.com/jsp/jstl/sql">
<h:form>
-<style type="text/css">
-.text
-{
-font-size:20px;
+ <style type="text/css">
+.text {
+ font-size: 20px;
}
-.spacer
-{
-background-color: aqua;
+
+.spacer {
+ background-color: aqua;
}
</style>
- <h:outputText value="Event:"></h:outputText>
- <rich:spacer id="spacerIdEven" rendered="#{spacer.rendered}"
- style="border: 3px solid red; background: blue;"
- styleClass="#{spacer.style}" width="#{spacer.width}"
- height="#{spacer.height}" onmousedown="alert('onmousedown')"
- title="title"></rich:spacer>
- <f:verbatim>
- <br />
- </f:verbatim>
<h:outputText value="Some text one..." styleClass="text"></h:outputText>
- <rich:spacer id="spacerId" width="#{spacer.width}"
- height="#{spacer.height}" rendered="#{spacer.rendered}"
- styleClass="#{spacer.style}">
+ <rich:spacer id="spacerId" width="#{spacer.width}" height="#{spacer.height}" rendered="#{spacer.rendered}"
+ styleClass="#{spacer.style}" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
</rich:spacer>
<h:outputText value="Some text two..." styleClass="text"></h:outputText>
- <h:panelGrid columns="2">
- <h:outputText value="Width (px or %):"></h:outputText>
- <h:inputText value="#{spacer.width}">
- <a4j:support event="onchange" reRender="spacerId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="spacer straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{spacer.bTest1}" value="run" reRender="spacerPropertyID,spacerId"></a4j:commandButton>
- <h:outputText value="Height (px or %):"></h:outputText>
- <h:inputText value="#{spacer.height}">
- <a4j:support event="onchange" reRender="spacerId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{spacer.bTest2}" value="run" reRender="spacerPropertyID,spacerId"></a4j:commandButton>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{spacer.rendered}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{spacer.bTest3}" value="run" reRender="spacerPropertyID,spacerId"></a4j:commandButton>
- </h:panelGrid>
- <a4j:commandButton id="btn" action="#{spacer.doStyle}"
- value="#{spacer.btn}" reRender="spacerId, btn"></a4j:commandButton>
- <f:verbatim>
- <br />
- </f:verbatim>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{spacer.bTest4}" value="run" reRender="spacerPropertyID,spacerId"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{spacer.bTest5}" value="run" reRender="spacerPropertyID,spacerId"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="spacerPropertyID" switchType="client" opened="true" label="spacer property">
+ <h:panelGrid columns="2">
+ <h:outputText value="Width (px or %):"></h:outputText>
+ <h:inputText value="#{spacer.width}">
+ <a4j:support event="onchange" reRender="spacerId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Height (px or %):"></h:outputText>
+ <h:inputText value="#{spacer.height}">
+ <a4j:support event="onchange" reRender="spacerId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{spacer.rendered}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Style" />
+ <a4j:commandButton id="btn" action="#{spacer.doStyle}" value="#{spacer.btn}" reRender="spacerId, btn"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/SuggestionBox/SuggestionBox.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/SuggestionBox/SuggestionBox.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/SuggestionBox/SuggestionBox.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -3,7 +3,7 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich">
-<h:form id="suggestionbox_form">
+ <h:form id="suggestionbox_form">
<f:verbatim>Suggestion Box will suggest you Town's names if it's started with the "a" or "A" letter
<br />
</f:verbatim>
@@ -17,111 +17,141 @@
bgcolor="#{sb.bgColor}" focus="#{sb.forcus}" title="#{result.text}"
summary="summary" shadowOpacity="#{sb.shadowOpacity}"
shadowDepth="#{sb.shadowDepth}" reRender="#{sb.reRender}"
- selectValueClass="mousemove" frequency="#{sb.frequency}" nothingLabel="fdsf">
+ selectValueClass="mousemove" frequency="#{sb.frequency}"
+ nothingLabel="fdsf" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ onselect="print('onselectInputID', 'onselect work!')" onsubmit="print('onsubmitInputID', 'onsubmit work!')">
<h:column>
<h:outputText value="#{result.text}" />
</h:column>
</rich:suggestionbox>
- <div style="position:relative; font-size:50px; z-index:2; color: navy">z-index</div>
+ <div
+ style="position: relative; font-size: 50px; z-index: 2; color: navy">z-index</div>
<f:verbatim>
<br />
<br />
</f:verbatim>
- <h:panelGrid columns="2" cellpadding="5px">
+ <rich:simpleTogglePanel switchType="client" opened="true"
+ label="suggestionBox straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{sb.bTest1}" value="run"
+ reRender="sbPropertyID,suggestionBoxId"></a4j:commandButton>
- <h:outputText value="z-index"></h:outputText>
- <h:selectOneRadio value="#{sb.zindex}">
- <f:selectItem itemLabel="1" itemValue="1" />
- <f:selectItem itemLabel="3" itemValue="3" />
- <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
- </h:selectOneRadio>
-
- <f:verbatim>Frequency</f:verbatim>
- <h:inputText value="#{sb.frequency}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
-
-
- <f:verbatim>Border</f:verbatim>
- <h:inputText value="#{sb.border}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{sb.bTest2}" value="run"
+ reRender="sbPropertyID,suggestionBoxId"></a4j:commandButton>
- <f:verbatim>Width</f:verbatim>
- <h:inputText value="#{sb.width}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{sb.bTest3}" value="run"
+ reRender="sbPropertyID,suggestionBoxId"></a4j:commandButton>
- <f:verbatim>Height</f:verbatim>
- <h:inputText value="#{sb.height}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{sb.bTest4}" value="run"
+ reRender="sbPropertyID,suggestionBoxId"></a4j:commandButton>
- <f:verbatim>Cellpadding</f:verbatim>
- <h:inputText value="#{sb.cellpadding}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{sb.bTest5}" value="run"
+ reRender="sbPropertyID,suggestionBoxId"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <f:verbatim>Cellspacing</f:verbatim>
- <h:inputText value="#{sb.cellspacing}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel id="sbPropertyID" switchType="client"
+ opened="true" label="suggestionBox property">
+ <h:panelGrid columns="2" cellpadding="5px">
- <f:verbatim>First</f:verbatim>
- <h:inputText value="#{sb.first}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <h:outputText value="z-index"></h:outputText>
+ <h:selectOneRadio value="#{sb.zindex}">
+ <f:selectItem itemLabel="1" itemValue="1" />
+ <f:selectItem itemLabel="3" itemValue="3" />
+ <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
+ </h:selectOneRadio>
- <f:verbatim>MinChars</f:verbatim>
- <h:inputText value="#{sb.minchars}">
- <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
- </h:inputText>
+ <f:verbatim>Frequency</f:verbatim>
+ <h:inputText value="#{sb.frequency}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Background Colour"></h:outputText>
- <h:selectOneMenu value="#{sb.bgColor}">
- <f:selectItem itemLabel="none" itemValue="none" />
- <f:selectItem itemLabel="aqua" itemValue="aqua" />
- <f:selectItem itemLabel="blue" itemValue="blue" />
- <f:selectItem itemLabel="fuchsia" itemValue="fuchsia" />
- <f:selectItem itemLabel="gray" itemValue="gray" />
- <f:selectItem itemLabel="lime" itemValue="lime" />
- <f:selectItem itemLabel="maroon" itemValue="maroon" />
- <f:selectItem itemLabel="purple" itemValue="purple" />
- <f:selectItem itemLabel="red" itemValue="red" />
- <f:selectItem itemLabel="silver" itemValue="silver" />
- <f:selectItem itemLabel="teal" itemValue="teal" />
- <f:selectItem itemLabel="yellow" itemValue="yellow" />
- <f:selectItem itemLabel="white" itemValue="white" />
- <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
- </h:selectOneMenu>
+ <f:verbatim>Border</f:verbatim>
+ <h:inputText value="#{sb.border}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Shadow Opacity"></h:outputText>
- <h:selectOneRadio value="#{sb.shadowOpacity}">
- <f:selectItem itemLabel="1" itemValue="1" />
- <f:selectItem itemLabel="3" itemValue="2" />
- <f:selectItem itemLabel="5" itemValue="3" />
- <f:selectItem itemLabel="7" itemValue="4" />
- <f:selectItem itemLabel="9" itemValue="5" />
- <f:selectItem itemLabel="11" itemValue="6" />
- <f:selectItem itemLabel="13" itemValue="7" />
- <f:selectItem itemLabel="15" itemValue="8" />
- <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
- </h:selectOneRadio>
+ <f:verbatim>Width</f:verbatim>
+ <h:inputText value="#{sb.width}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Shadow Depth"></h:outputText>
- <h:selectOneRadio value="#{sb.shadowDepth}">
- <f:selectItem itemLabel="3" itemValue="3" />
- <f:selectItem itemLabel="4" itemValue="4" />
- <f:selectItem itemLabel="5" itemValue="5" />
- <f:selectItem itemLabel="6" itemValue="6" />
- <f:selectItem itemLabel="7" itemValue="6" />
- <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
- </h:selectOneRadio>
+ <f:verbatim>Height</f:verbatim>
+ <h:inputText value="#{sb.height}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
- <h:outputText value="reRender"></h:outputText>
- <h:selectBooleanCheckbox value="#{sb.reRender}"></h:selectBooleanCheckbox>
- </h:panelGrid>
+ <f:verbatim>Cellpadding</f:verbatim>
+ <h:inputText value="#{sb.cellpadding}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
+
+ <f:verbatim>Cellspacing</f:verbatim>
+ <h:inputText value="#{sb.cellspacing}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
+
+ <f:verbatim>First</f:verbatim>
+ <h:inputText value="#{sb.first}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
+
+ <f:verbatim>MinChars</f:verbatim>
+ <h:inputText value="#{sb.minchars}">
+ <a4j:support event="onchange" reRender="suggestionBoxId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Background Colour"></h:outputText>
+ <h:selectOneMenu value="#{sb.bgColor}">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="aqua" itemValue="aqua" />
+ <f:selectItem itemLabel="blue" itemValue="blue" />
+ <f:selectItem itemLabel="fuchsia" itemValue="fuchsia" />
+ <f:selectItem itemLabel="gray" itemValue="gray" />
+ <f:selectItem itemLabel="lime" itemValue="lime" />
+ <f:selectItem itemLabel="maroon" itemValue="maroon" />
+ <f:selectItem itemLabel="purple" itemValue="purple" />
+ <f:selectItem itemLabel="red" itemValue="red" />
+ <f:selectItem itemLabel="silver" itemValue="silver" />
+ <f:selectItem itemLabel="teal" itemValue="teal" />
+ <f:selectItem itemLabel="yellow" itemValue="yellow" />
+ <f:selectItem itemLabel="white" itemValue="white" />
+ <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
+ </h:selectOneMenu>
+
+ <h:outputText value="Shadow Opacity"></h:outputText>
+ <h:selectOneRadio value="#{sb.shadowOpacity}">
+ <f:selectItem itemLabel="1" itemValue="1" />
+ <f:selectItem itemLabel="3" itemValue="2" />
+ <f:selectItem itemLabel="5" itemValue="3" />
+ <f:selectItem itemLabel="7" itemValue="4" />
+ <f:selectItem itemLabel="9" itemValue="5" />
+ <f:selectItem itemLabel="11" itemValue="6" />
+ <f:selectItem itemLabel="13" itemValue="7" />
+ <f:selectItem itemLabel="15" itemValue="8" />
+ <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="Shadow Depth"></h:outputText>
+ <h:selectOneRadio value="#{sb.shadowDepth}">
+ <f:selectItem itemLabel="3" itemValue="3" />
+ <f:selectItem itemLabel="4" itemValue="4" />
+ <f:selectItem itemLabel="5" itemValue="5" />
+ <f:selectItem itemLabel="6" itemValue="6" />
+ <f:selectItem itemLabel="7" itemValue="6" />
+ <a4j:support event="onclick" reRender="suggestionBoxId"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="reRender"></h:outputText>
+ <h:selectBooleanCheckbox value="#{sb.reRender}"></h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/TabPanel/TabPanel.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/TabPanel/TabPanel.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/TabPanel/TabPanel.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,112 +1,135 @@
-<f:subview id="tabPanelSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:c="http://java.sun.com/jsp/jstl/core">
-<h:form>
- <rich:tabPanel id="tabPanelId"
- headerAlignment="#{tabPanel.headerAlignment}"
- width="#{tabPanel.width}" height="#{tabPanel.height}"
- rendered="#{tabPanel.rendered}" title="#{tabPanel.title}"
- switchType="#{tabPanel.switchType}"
- headerSpacing="#{tabPanel.headerSpacing}"
- selectedTab="#{tabPanel.selectedTab}"
- activeTabClass="#{tabPanel.activeTabStyle}"
- disabledTabClass="#{tabPanel.disabledTabStyle}"
- inactiveTabClass="#{tabPanel.inactiveTabStyle}"
- contentClass="#{tabPanel.contentStyle}">
+<f:subview id="tabPanelSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:c="http://java.sun.com/jsp/jstl/core">
+ <h:form>
+ <rich:tabPanel id="tabPanelId" headerAlignment="#{tabPanel.headerAlignment}" width="#{tabPanel.width}"
+ height="#{tabPanel.height}" rendered="#{tabPanel.rendered}" title="#{tabPanel.title}" switchType="#{tabPanel.switchType}"
+ headerSpacing="#{tabPanel.headerSpacing}" selectedTab="#{tabPanel.selectedTab}" activeTabClass="#{tabPanel.activeTabStyle}"
+ disabledTabClass="#{tabPanel.disabledTabStyle}" inactiveTabClass="#{tabPanel.inactiveTabStyle}"
+ contentClass="#{tabPanel.contentStyle}" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
- <rich:tab id="tabOne" onmousedown="alert('OnMouseDown');"
- labelWidth="#{tabPanel.labelWidth}" label="#{tabPanel.label}">
- <h:outputText value="This is tab panel test example"
- styleClass="text1"></h:outputText>
- </rich:tab>
- <rich:tab id="tabTwo" label="Tab with image"
- disabled="#{tabPanel.disabledTab}">
- <f:facet name="header">
- <h:outputText value="client switchType from facet" />
- </f:facet>
- <h:graphicImage value="/pics/masshtaby_01.jpg" width="560"
- height="383"></h:graphicImage>
- </rich:tab>
- <rich:tab id="tabThree" label="Tab with some text"
- disabled="#{tabPanel.disabledTab}">
- <h:outputText
- value=" Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
+ <rich:tab id="tabOne" labelWidth="#{tabPanel.labelWidth}" label="#{tabPanel.label}"
+ onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
+ ontabenter="print('ontabenterInputID', 'ontabenter work!')" ontableave="print('ontableaveInputID', 'ontableave work!')">
+ <h:outputText value="This is tab panel test example" styleClass="text1"></h:outputText>
+ </rich:tab>
+ <rich:tab id="tabTwo" label="Tab with image" disabled="#{tabPanel.disabledTab}"
+ onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
+ ontabenter="print('ontabenterInputID', 'ontabenter work!')" ontableave="print('ontableaveInputID', 'ontableave work!')">
+ <f:facet name="header">
+ <h:outputText value="client switchType from facet" />
+ </f:facet>
+ <h:graphicImage value="/pics/masshtaby_01.jpg" width="560" height="383"></h:graphicImage>
+ </rich:tab>
+ <rich:tab id="tabThree" label="Tab with some text" disabled="#{tabPanel.disabledTab}"
+ onclick="print('onclickInputID', 'onclick work!')" oncomplete="print('oncompleteInputID', 'oncomplete work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
+ ontabenter="print('ontabenterInputID', 'ontabenter work!')" ontableave="print('ontableaveInputID', 'ontableave work!')">
+ <h:outputText
+ value=" Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text...
Some text... Some text... Some text... Some text... Some text... Some text... Some text... Some text..." />
- </rich:tab>
- </rich:tabPanel>
+ </rich:tab>
+ </rich:tabPanel>
- <rich:spacer height="20px"></rich:spacer>
+ <rich:spacer height="20px"></rich:spacer>
- <h:panelGrid columns="2" cellspacing="10px">
- <h:outputText value="Width (px or %):"></h:outputText>
- <h:inputText value="#{tabPanel.width}">
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="dataTable straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{tabPanel.bTest1}" value="run" reRender="tpPropertyID,tabPanelId"></a4j:commandButton>
- <h:outputText value="Height (px or %):"></h:outputText>
- <h:inputText value="#{tabPanel.height}">
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{tabPanel.bTest2}" value="run" reRender="tpPropertyID,tabPanelId"></a4j:commandButton>
- <h:outputText value="Title:"></h:outputText>
- <h:inputText value="#{tabPanel.title}">
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{tabPanel.bTest3}" value="run" reRender="tpPropertyID,tabPanelId"></a4j:commandButton>
- <h:outputText value="LabelWidth:"></h:outputText>
- <h:inputText value="#{tabPanel.labelWidth}">
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{tabPanel.bTest4}" value="run" reRender="tpPropertyID,tabPanelId"></a4j:commandButton>
- <h:outputText value="SwitchType:"></h:outputText>
- <h:selectOneRadio value="#{tabPanel.switchType}">
- <f:selectItem itemLabel="client" itemValue="client" />
- <f:selectItem itemLabel="server" itemValue="server" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:selectOneRadio>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{tabPanel.bTest5}" value="run" reRender="tpPropertyID,tabPanelId"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Header Alignment:"></h:outputText>
- <h:selectOneRadio value="#{tabPanel.headerAlignment}">
- <f:selectItem itemLabel="left" itemValue="left" />
- <f:selectItem itemLabel="center" itemValue="center" />
- <f:selectItem itemLabel="right" itemValue="right" />
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:selectOneRadio>
+ <rich:simpleTogglePanel id="tpPropertyID" switchType="client" opened="true" label="tabPanel property">
+ <h:panelGrid columns="2" cellspacing="10px">
+ <h:outputText value="Width (px or %):"></h:outputText>
+ <h:inputText value="#{tabPanel.width}" onchange="submit();" />
- <h:outputText value="Header Spacing:"></h:outputText>
- <h:inputText value="#{tabPanel.headerSpacing}">
- <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Height (px or %):"></h:outputText>
+ <h:inputText value="#{tabPanel.height}" onchange="submit();" />
- <h:outputText value="Selected Tab:"></h:outputText>
- <h:selectOneRadio value="#{tabPanel.selectedTab}" onchange="submit();">
- <f:selectItem itemLabel="1" itemValue="tabOne" />
- <f:selectItem itemLabel="2" itemValue="tabTwo" />
- <f:selectItem itemLabel="3" itemValue="tabThr" />
- </h:selectOneRadio>
+ <h:outputText value="Title:"></h:outputText>
+ <h:inputText value="#{tabPanel.title}">
+ <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Rendered"></h:outputText>
- <h:selectBooleanCheckbox value="#{tabPanel.rendered}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
+ <h:outputText value="LabelWidth:"></h:outputText>
+ <h:inputText value="#{tabPanel.labelWidth}" onchange="submit();" />
- <h:outputText value="Disable Tab"></h:outputText>
- <h:selectBooleanCheckbox value="#{tabPanel.disabledTab}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
- <h:outputText value="Switch Styles:" />
- <h:commandButton action="#{tabPanel.doStyles}"
- value="#{tabPanel.btnLabel}" />
+ <h:outputText value="SwitchType:"></h:outputText>
+ <h:selectOneRadio value="#{tabPanel.switchType}">
+ <f:selectItem itemLabel="client" itemValue="client" />
+ <f:selectItem itemLabel="server" itemValue="server" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
+ </h:selectOneRadio>
+ <h:outputText value="Header Alignment:"></h:outputText>
+ <h:selectOneRadio value="#{tabPanel.headerAlignment}">
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <f:selectItem itemLabel="center" itemValue="center" />
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
+ </h:selectOneRadio>
- </h:panelGrid>
-</h:form>
+ <h:outputText value="Header Spacing:"></h:outputText>
+ <h:inputText value="#{tabPanel.headerSpacing}">
+ <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Selected Tab:"></h:outputText>
+ <h:selectOneRadio value="#{tabPanel.selectedTab}" onchange="submit();">
+ <f:selectItem itemLabel="1" itemValue="tabOne" />
+ <f:selectItem itemLabel="2" itemValue="tabTwo" />
+ <f:selectItem itemLabel="3" itemValue="tabThr" />
+ </h:selectOneRadio>
+
+ <h:outputText value="immediate" />
+ <h:selectBooleanCheckbox value="#{tabPanel.immediate}">
+ <a4j:support event="onchange" reRender="tabPanelId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Rendered"></h:outputText>
+ <h:selectBooleanCheckbox value="#{tabPanel.rendered}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Disable Tab"></h:outputText>
+ <h:selectBooleanCheckbox value="#{tabPanel.disabledTab}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+ <h:outputText value="Switch Styles:" />
+ <h:commandButton action="#{tabPanel.doStyles}" value="#{tabPanel.btnLabel}" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+ </h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/TogglePanel/TogglePanel.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/TogglePanel/TogglePanel.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/TogglePanel/TogglePanel.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,22 +1,21 @@
-<f:subview id="togglePanelSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:subview id="togglePanelSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core" xmlns:rich="http://richfaces.org/rich" xmlns:ui="http://java.sun.com/jsf/facelets">
<h:form id="tooggleTest">
- <rich:togglePanel id="panel1" switchType="#{togglePanel.switchType}"
- initialState="asus" stateOrder="asus,blank"
- style="width:300px!important">
+
+ <rich:togglePanel id="panel1" switchType="#{togglePanel.switchType}" initialState="asus" stateOrder="asus,blank"
+ style="width:300px!important; overflow: hidden;" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
<f:facet name="blank">
<rich:panel>
<f:facet name="header">
<h:panelGroup>
- <rich:toggleControl id="toggleControl_blank"
- for="tooggleTest:panel1">
+ <rich:toggleControl id="toggleControl_blank" for="tooggleTest:panel1">
<h:outputText value="Expand" style="font-weight: bold;" />
- <h:graphicImage url="/pics/collapse.gif"
- style="border-width: 0px;" />
+ <h:graphicImage url="/pics/collapse.gif" style="border-width: 0px;" />
</rich:toggleControl>
</h:panelGroup>
</f:facet>
@@ -27,21 +26,16 @@
<rich:panel>
<f:facet name="header">
<h:panelGroup>
- <rich:toggleControl id="toggleControl_panel1"
- for="tooggleTest:panel1">
+ <rich:toggleControl id="toggleControl_panel1" for="tooggleTest:panel1">
<h:outputText value="Collapse" style="font-weight: bold;" />
- <h:graphicImage url="/pics/expand.gif"
- style="border-width: 0px;" />
+ <h:graphicImage url="/pics/expand.gif" style="border-width: 0px;" />
</rich:toggleControl>
</h:panelGroup>
</f:facet>
- <h:panelGrid columns="2" border="0"
- style="width: 100%;background-color: white;">
- <h:graphicImage url="/pics/asus.jpg" height="300" width="300"
- alt="asus.jpg" />
+ <h:panelGrid columns="2" border="0" style="width: 100%;background-color: white;">
+ <h:graphicImage url="/pics/asus.jpg" height="300" width="300" alt="asus.jpg" />
<h:panelGroup>
- <h:outputText style="font: 18px;font-weight: bold;"
- value="Asus F 3 Tc" />
+ <h:outputText style="font: 18px;font-weight: bold;" value="Asus F 3 Tc" />
<f:verbatim>
Processor: AMD Turion 64 X 2 - 1600 Mhz<br />
RAM: 1024 Mb<br />
@@ -55,36 +49,34 @@
</rich:panel>
</f:facet>
</rich:togglePanel>
-
+
<f:verbatim>
<br />
<br />
</f:verbatim>
-
- <rich:togglePanel id="panel2" switchType="#{togglePanel.switchType}"
- initialState="#{togglePanel.initialState}"
- stateOrder="#{togglePanel.stateOrder}">
+
+ <rich:togglePanel id="panel2" switchType="#{togglePanel.switchType}" initialState="#{togglePanel.initialState}"
+ stateOrder="#{togglePanel.stateOrder}" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')">
<f:facet name="asus">
<rich:panel>
<f:facet name="header">
<h:panelGroup>
- <h:outputText value="Customizable toggle panel"
- style="font-weight: bold;" />
- <rich:toggleControl id="toggleControl_panel_1"
- for="tooggleTest:panel2">
+ <h:outputText value="Customizable toggle panel" style="font-weight: bold;" />
+ <rich:toggleControl id="toggleControl_panel_1" for="tooggleTest:panel2">
<h:outputText value="Next"></h:outputText>
- <h:graphicImage url="/pics/expand.gif"
- style="border-width: 0px;" />
+ <h:graphicImage url="/pics/expand.gif" style="border-width: 0px;" />
</rich:toggleControl>
</h:panelGroup>
</f:facet>
- <h:panelGrid columns="2" border="0"
- style="width: 100%;background-color: white;">
- <h:graphicImage url="/pics/asus.jpg" height="300" width="300"
- alt="asus.jpg" />
+ <h:panelGrid columns="2" border="0" style="width: 100%;background-color: white;">
+ <h:graphicImage url="/pics/asus.jpg" height="300" width="300" alt="asus.jpg" />
<h:panelGroup>
- <h:outputText style="font: 18px;font-weight: bold;"
- value="Asus F 3 Tc" />
+ <h:outputText style="font: 18px;font-weight: bold;" value="Asus F 3 Tc" />
<f:verbatim>
Processor: AMD Turion 64 X 2 - 1600 Mhz<br />
RAM: 1024 Mb<br />
@@ -102,23 +94,17 @@
<rich:panel>
<f:facet name="header">
<h:panelGroup>
- <h:outputText value="Customizable toggle panel"
- style="font-weight: bold;" />
- <rich:toggleControl id="toggleControl_panel_2"
- for="tooggleTest:panel2">
+ <h:outputText value="Customizable toggle panel" style="font-weight: bold;" />
+ <rich:toggleControl id="toggleControl_panel_2" for="tooggleTest:panel2">
<h:outputText value="Next"></h:outputText>
- <h:graphicImage url="/pics/expand.gif"
- style="border-width: 0px;" />
+ <h:graphicImage url="/pics/expand.gif" style="border-width: 0px;" />
</rich:toggleControl>
</h:panelGroup>
</f:facet>
- <h:panelGrid columns="2" border="0"
- style="width: 100%;background-color: yellow;">
- <h:graphicImage url="/pics/benq.jpg" height="300" width="300"
- alt="benq.jpg" />
+ <h:panelGrid columns="2" border="0" style="width: 100%;background-color: yellow;">
+ <h:graphicImage url="/pics/benq.jpg" height="300" width="300" alt="benq.jpg" />
<h:panelGroup>
- <h:outputText style="font: 18px;font-weight: bold;"
- value="BenQ A 52" />
+ <h:outputText style="font: 18px;font-weight: bold;" value="BenQ A 52" />
<f:verbatim>
Processor: Core Duo T2250 (1.73GHz)<br />
RAM: 1024 Mb<br />
@@ -136,23 +122,17 @@
<rich:panel>
<f:facet name="header">
<h:panelGroup>
- <h:outputText value="Customizable toggle panel"
- style="font-weight: bold;" />
- <rich:toggleControl id="toggleControl_panel_3"
- for="tooggleTest:panel2">
+ <h:outputText value="Customizable toggle panel" style="font-weight: bold;" />
+ <rich:toggleControl id="toggleControl_panel_3" for="tooggleTest:panel2">
<h:outputText value="Next"></h:outputText>
- <h:graphicImage url="/pics/expand.gif"
- style="border-width: 0px;" />
+ <h:graphicImage url="/pics/expand.gif" style="border-width: 0px;" />
</rich:toggleControl>
</h:panelGroup>
</f:facet>
- <h:panelGrid columns="2" border="0"
- style="width: 100%;background-color: orange;">
- <h:graphicImage url="/pics/toshiba.jpg" height="300" width="300"
- alt="toshiba.jpg" />
+ <h:panelGrid columns="2" border="0" style="width: 100%;background-color: orange;">
+ <h:graphicImage url="/pics/toshiba.jpg" height="300" width="300" alt="toshiba.jpg" />
<h:panelGroup>
- <h:outputText style="font: 18px;font-weight: bold;"
- value="Toshiba Satellite A 100-784" />
+ <h:outputText style="font: 18px;font-weight: bold;" value="Toshiba Satellite A 100-784" />
<f:verbatim>
Processor: Intel Core Duo T2250 - 1.73GHz<br />
RAM: 1024 Mb<br />
@@ -166,38 +146,57 @@
</rich:panel>
</f:facet>
</rich:togglePanel>
+
<f:verbatim>
<br />
<br />
</f:verbatim>
- <rich:separator height="5px" width="500px" />
- <h:panelGrid columns="2" cellpadding="5px" cellspacing="5px">
- <h:outputText value="InitialState:"></h:outputText>
- <h:selectOneRadio value="#{togglePanel.initialState}">
- <f:selectItem itemLabel="Asus" itemValue="asus" />
- <f:selectItem itemLabel="Benq" itemValue="benq" />
- <f:selectItem itemLabel="toshiba" itemValue="toshiba" />
- <a4j:support event="onchange" reRender="tooggleTest:panel2"></a4j:support>
- </h:selectOneRadio>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="tooglePanel straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{togglePanel.bTest1}" value="run" reRender="panel1,panel2,tPanelPropertyID"></a4j:commandButton>
- <h:outputText value="StateOrder:"></h:outputText>
- <h:selectOneRadio value="#{togglePanel.stateOrder}">
- <f:selectItem itemLabel="Asus,Benq,Toshiba"
- itemValue="asus,benq,toshiba" />
- <f:selectItem itemLabel="Toshiba, Asus, Benq"
- itemValue="toshiba,asus,benq" />
- <a4j:support event="onchange" reRender="tooggleTest:panel2"></a4j:support>
- </h:selectOneRadio>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{togglePanel.bTest2}" value="run" reRender="panel1,panel2,tPanelPropertyID"></a4j:commandButton>
- <h:outputText value="switchType:"></h:outputText>
- <h:selectOneRadio value="#{togglePanel.switchType}">
- <f:selectItem itemLabel="client" itemValue="client" />
- <f:selectItem itemLabel="server" itemValue="server" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <a4j:support event="onclick" reRender="panel1,panel2"></a4j:support>
- </h:selectOneRadio>
- </h:panelGrid>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{togglePanel.bTest3}" value="run" reRender="panel1,panel2,tPanelPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{togglePanel.bTest4}" value="run" reRender="panel1,panel2,tPanelPropertyID"></a4j:commandButton>
+
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{togglePanel.bTest5}" value="run" reRender="panel1,panel2,tPanelPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
+
+ <rich:simpleTogglePanel id="tPanelPropertyID" switchType="client" opened="true" label="tooglePanel property">
+ <h:panelGrid columns="2" cellpadding="5px" cellspacing="5px">
+ <h:outputText value="InitialState:"></h:outputText>
+ <h:selectOneRadio value="#{togglePanel.initialState}">
+ <f:selectItem itemLabel="Asus" itemValue="asus" />
+ <f:selectItem itemLabel="Benq" itemValue="benq" />
+ <f:selectItem itemLabel="toshiba" itemValue="toshiba" />
+ <a4j:support event="onchange" reRender="tooggleTest:panel2"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="StateOrder:"></h:outputText>
+ <h:selectOneRadio value="#{togglePanel.stateOrder}">
+ <f:selectItem itemLabel="Asus,Benq,Toshiba" itemValue="asus,benq,toshiba" />
+ <f:selectItem itemLabel="Toshiba, Asus, Benq" itemValue="toshiba,asus,benq" />
+ <a4j:support event="onchange" reRender="tooggleTest:panel2"></a4j:support>
+ </h:selectOneRadio>
+
+ <h:outputText value="switchType:"></h:outputText>
+ <h:selectOneRadio value="#{togglePanel.switchType}">
+ <f:selectItem itemLabel="client" itemValue="client" />
+ <f:selectItem itemLabel="server" itemValue="server" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <a4j:support event="onclick" reRender="panel1,panel2"></a4j:support>
+ </h:selectOneRadio>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
<ui:debug hotkey="L"></ui:debug>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Tooltip/Tooltip.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Tooltip/Tooltip.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Tooltip/Tooltip.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,8 +1,5 @@
-<f:subview id="tooltipSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="tooltipSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
<h:form>
<h:messages></h:messages>
@@ -13,14 +10,14 @@
<br />
</f:verbatim>
- <h:graphicImage value="/pics/ajax_process.gif" width="15px"
- height="15px">
- <rich:toolTip value="ajax progress">
- </rich:toolTip>
- </h:graphicImage>
-
<h:inputText value="Text" id="inp1" size="50">
- <rich:toolTip value="toolTip for input text">
+ <rich:toolTip value="toolTip for input text" onclick="print('onclickInputID', 'onclick work!')"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onhide="print('onhideInputID', 'onhide work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')" onshow="print('onshowInputID', 'onshow work!')">
<f:facet name="defaultContent">
<f:verbatim>DEFAULT VALUE</f:verbatim>
</f:facet>
@@ -28,7 +25,13 @@
</h:inputText>
<h:selectOneListbox value="1" id="ddl">
- <rich:toolTip value="1231231">
+ <rich:toolTip value="1231231" onclick="print('onclickInputID', 'onclick work!')"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onhide="print('onhideInputID', 'onhide work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')" onshow="print('onshowInputID', 'onshow work!')">
<f:facet name="defaultContent">
<f:verbatim>DEFAULT VALUE DropDown</f:verbatim>
</f:facet>
@@ -46,13 +49,16 @@
</f:verbatim>
<rich:panel style="width:50px; height:50px; background-color: gray">
- <rich:toolTip id="tooltipID" value="#{tooltip.value}"
- mode="#{tooltip.mode}" delay="#{tooltip.delay}" layout="#{tooltip.layout}"
- horizontalOffset="#{tooltip.horizontalOffset}"
- verticalOffset="#{tooltip.verticalOffset}"
- followMouse="#{tooltip.followMouse}"
- direction="#{tooltip.direction}" style="#{tooltip.style}"
- disabled="#{tooltip.disabled}" rendered="#{tooltip.rendered}">
+ <rich:toolTip id="tooltipID" value="#{tooltip.value}" mode="#{tooltip.mode}" delay="#{tooltip.delay}"
+ layout="#{tooltip.layout}" horizontalOffset="#{tooltip.horizontalOffset}" verticalOffset="#{tooltip.verticalOffset}"
+ followMouse="#{tooltip.followMouse}" direction="#{tooltip.direction}" style="#{tooltip.style}" disabled="#{tooltip.disabled}"
+ rendered="#{tooltip.rendered}" onclick="print('onclickInputID', 'onclick work!')"
+ oncomplete="print('oncompleteInputID', 'oncomplete work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onhide="print('onhideInputID', 'onhide work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')" onshow="print('onshowInputID', 'onshow work!')">
<h:graphicImage id="pricsID" value="/pics/ajax_process.gif"></h:graphicImage>
</rich:toolTip>
</rich:panel>
@@ -60,80 +66,96 @@
<f:verbatim>
<br />
</f:verbatim>
-
- <h:panelGrid columns="2">
- <h:outputText value="Text:"></h:outputText>
- <h:inputText value="#{tooltip.value}">
- <a4j:support event="onchange" reRender="tooltipID" />
- </h:inputText>
-
- <h:outputText value="Delay"></h:outputText>
- <h:inputText value="#{tooltip.delay}">
- <a4j:support event="onchange" reRender="tooltipID" />
- </h:inputText>
-
- <h:outputText value="Layout:"></h:outputText>
- <h:selectOneRadio value="#{tooltip.layout}">
- <f:selectItem itemLabel="inline" itemValue="inline" />
- <f:selectItem itemLabel="block" itemValue="block" />
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectOneRadio>
-
- <h:outputText value="Mode:"></h:outputText>
- <h:selectOneRadio value="#{tooltip.mode}">
- <f:selectItem itemLabel="client" itemValue="client" />
- <f:selectItem itemLabel="ajax" itemValue="ajax" />
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectOneRadio>
+ <rich:simpleTogglePanel id="toolTipStraightforwardID" switchType="client" opened="true" label="toolTip straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{dDMenu.bTest1}" value="run" reRender="tooltipID,toolTipPropertyID"></a4j:commandButton>
- <h:outputText value="Horizontal offset:"></h:outputText>
- <h:inputText value="#{tooltip.horizontalOffset}">
- <a4j:support event="onchange" reRender="tooltipID" />
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{dDMenu.bTest2}" value="run" reRender="tooltipID,toolTipPropertyID"></a4j:commandButton>
- <h:outputText value="Vertical offset:"></h:outputText>
- <h:inputText value="#{tooltip.verticalOffset}">
- <a4j:support event="onchange" reRender="tooltipID" />
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{dDMenu.bTest3}" value="run" reRender="tooltipID,toolTipPropertyID"></a4j:commandButton>
- <h:outputText value="Follow mouse:"></h:outputText>
- <h:selectBooleanCheckbox value="#{tooltip.followMouse}">
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectBooleanCheckbox>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{dDMenu.bTest4}" value="run" reRender="tooltipID,toolTipPropertyID"></a4j:commandButton>
- <h:outputText value="Direction:" />
- <h:selectOneRadio value="#{tooltip.direction}">
- <f:selectItem itemLabel="top-right" itemValue="top-right" />
- <f:selectItem itemLabel="top-left" itemValue="top-left" />
- <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
- <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectOneRadio>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{dDMenu.bTest5}" value="run" reRender="tooltipID,toolTipPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Style:"></h:outputText>
- <h:selectOneRadio value="#{tooltip.style}">
- <f:selectItem itemLabel="none" itemValue="none" />
- <f:selectItem itemLabel="border:3px; font:bold 14px;"
- itemValue="border:3px; font:bold 14px;" />
- <f:selectItem
- itemLabel="border:green 3px solid; background-color:yellow;"
- itemValue="border:green 3px solid; background-color:yellow;" />
- <f:selectItem
- itemLabel="border:green 2px solid; font-family:monospace;"
- itemValue="border:green 2px solid; font-family:monospace;" />
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectOneRadio>
+ <rich:simpleTogglePanel id="toolTipPropertyID" switchType="client" opened="true" label="toolTip property">
+ <h:panelGrid columns="2">
+ <h:outputText value="Text:"></h:outputText>
+ <h:inputText value="#{tooltip.value}">
+ <a4j:support event="onchange" reRender="tooltipID" />
+ </h:inputText>
- <h:outputText value="Disambled:"></h:outputText>
- <h:selectBooleanCheckbox value="#{tooltip.disabled}">
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectBooleanCheckbox>
+ <h:outputText value="Delay"></h:outputText>
+ <h:inputText value="#{tooltip.delay}">
+ <a4j:support event="onchange" reRender="tooltipID" />
+ </h:inputText>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{tooltip.rendered}">
- <a4j:support event="onclick" reRender="tooltipID" />
- </h:selectBooleanCheckbox>
- </h:panelGrid>
+ <h:outputText value="Layout:"></h:outputText>
+ <h:selectOneRadio value="#{tooltip.layout}">
+ <f:selectItem itemLabel="inline" itemValue="inline" />
+ <f:selectItem itemLabel="block" itemValue="block" />
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectOneRadio>
+ <h:outputText value="Mode:"></h:outputText>
+ <h:selectOneRadio value="#{tooltip.mode}">
+ <f:selectItem itemLabel="client" itemValue="client" />
+ <f:selectItem itemLabel="ajax" itemValue="ajax" />
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectOneRadio>
+
+ <h:outputText value="Horizontal offset:"></h:outputText>
+ <h:inputText value="#{tooltip.horizontalOffset}">
+ <a4j:support event="onchange" reRender="tooltipID" />
+ </h:inputText>
+
+ <h:outputText value="Vertical offset:"></h:outputText>
+ <h:inputText value="#{tooltip.verticalOffset}">
+ <a4j:support event="onchange" reRender="tooltipID" />
+ </h:inputText>
+
+ <h:outputText value="Follow mouse:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{tooltip.followMouse}">
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Direction:" />
+ <h:selectOneRadio value="#{tooltip.direction}">
+ <f:selectItem itemLabel="top-right" itemValue="top-right" />
+ <f:selectItem itemLabel="top-left" itemValue="top-left" />
+ <f:selectItem itemLabel="bottom-right" itemValue="bottom-right" />
+ <f:selectItem itemLabel="bottom-left" itemValue="bottom-left" />
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectOneRadio>
+
+ <h:outputText value="Style:"></h:outputText>
+ <h:selectOneRadio value="#{tooltip.style}">
+ <f:selectItem itemLabel="none" itemValue="none" />
+ <f:selectItem itemLabel="border:3px; font:bold 14px;" itemValue="border:3px; font:bold 14px;" />
+ <f:selectItem itemLabel="border:green 3px solid; background-color:yellow;"
+ itemValue="border:green 3px solid; background-color:yellow;" />
+ <f:selectItem itemLabel="border:green 2px solid; font-family:monospace;"
+ itemValue="border:green 2px solid; font-family:monospace;" />
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectOneRadio>
+
+ <h:outputText value="Disambled:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{tooltip.disabled}">
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{tooltip.rendered}">
+ <a4j:support event="onclick" reRender="tooltipID" />
+ </h:selectBooleanCheckbox>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/Tree/Tree.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/Tree/Tree.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/Tree/Tree.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,29 +1,26 @@
-<f:subview id="treeSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:dnd="http://richfaces.ajax4jsf.org/drag-drop">
+<f:subview id="treeSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:dnd="http://richfaces.ajax4jsf.org/drag-drop">
<h:form>
<a4j:outputPanel ajaxRendered="true">
<h:messages />
</a4j:outputPanel>
-
- <rich:tree id="tree" switchType="#{bean.switchType}"
- value="#{bean.data}" var="data"
- nodeFace="#{data.name != 'param-value' ? 'input' : 'text'}"
- changeExpandListener="#{bean.onExpand}"
- nodeSelectListener="#{bean.onSelect}" binding="#{bean.tree}"
- onselected="window.status='selectedNode: '+event.selectedNode;"
- onexpand="window.status='expandedNode: '+event.expandedNode"
- oncollapse="window.status='collapsedNode: '+ event.collapsedNode"
- ajaxSubmitSelection="true" reRender="outputText, selectOneListbox"
- preserveModel="none" dragIndicator="treeIndicator" immediate="false"
- acceptedTypes="file1" dragType="#{bean.dragOn ? 'file1' : ''}"
- iconCollapsed="#{bean.iconCollapsed}"
- iconExpanded="#{bean.iconExpanded}" iconLeaf="#{bean.iconLeaf}"
- icon="#{bean.icon}" dropListener="#{bean.processDrop}">
+ <rich:tree id="tree" switchType="#{bean.switchType}" value="#{bean.data}" var="data"
+ nodeFace="#{data.name != 'param-value' ? 'input' : 'text'}" changeExpandListener="#{bean.onExpand}"
+ nodeSelectListener="#{bean.onSelect}" binding="#{bean.tree}" onselected="window.status='selectedNode: '+event.selectedNode;"
+ onexpand="window.status='expandedNode: '+event.expandedNode" oncollapse="window.status='collapsedNode: '+ event.collapsedNode"
+ onclick="print('onclickInputID', 'onclick work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ ondragend="print('ondragendInputID', 'ondragend work!')" ondragenter="print('ondragenterInputID', 'ondragenter work!')"
+ ondragexit="print('ondragexitInputID', 'ondragexit work!')" ondragstart="print('ondragstartInputID', 'ondragstart work!')"
+ ondrop="print('ondropInputID', 'ondrop work!')" ondropend="print('ondropendInputID', 'ondropend work!')"
+ onkeydown="print('onkeydownInputID', 'onkeydown work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"
+ ajaxSubmitSelection="true" reRender="outputText, selectOneListbox" preserveModel="none" dragIndicator="treeIndicator"
+ immediate="false" acceptedTypes="file1" dragType="#{bean.dragOn ? 'file1' : ''}" iconCollapsed="#{bean.iconCollapsed}"
+ iconExpanded="#{bean.iconExpanded}" iconLeaf="#{bean.iconLeaf}" icon="#{bean.icon}" dropListener="#{bean.processDrop}">
+
<f:facet name="icon">
<h:outputText value="icon" rendered="#{bean.renderFacets}" />
</f:facet>
@@ -44,27 +41,24 @@
oncollapse="Element.removeClassName(event['treeItem'].getElement(), 'colored')"
onexpand="Element.addClassName(event['treeItem'].getElement(), 'colored')">
<h:outputText value="#{data} : " />
- <h:inputText value="#{data.name}" required="true"
- styleClass="inputs">
+ <h:inputText value="#{data.name}" required="true" styleClass="inputs">
</h:inputText>
<dnd:dndParam name="nodeParam" value="Node Parameter" />
</rich:treeNode>
- <rich:treeNode type="text" nodeClass="customNode"
- acceptedTypes="file2" onselected="return false;">
+ <rich:treeNode type="text" nodeClass="customNode" acceptedTypes="file2" onselected="return false;">
<h:outputText value="#{data}" />
</rich:treeNode>
</rich:tree>
-
+
<f:verbatim>
<br />
</f:verbatim>
<h:outputText value="Enter path to expand:" />
<h:inputText value="#{bean.pathToExpand}">
- <a4j:support event="onchange" reRender="tree"
- action="#{bean.expandNode}" />
+ <a4j:support event="onchange" reRender="tree" action="#{bean.expandNode}" />
</h:inputText>
<rich:separator></rich:separator>
@@ -81,11 +75,9 @@
<h:selectBooleanCheckbox value="#{bean.dragOn}" onchange="submit();"></h:selectBooleanCheckbox>
<h:outputText value="Render facets:" />
- <h:selectBooleanCheckbox value="#{bean.renderFacets}"
- onchange="submit();"></h:selectBooleanCheckbox>
+ <h:selectBooleanCheckbox value="#{bean.renderFacets}" onchange="submit();"></h:selectBooleanCheckbox>
- <h:commandButton value="#{bean.commandButtonCaption}"
- actionListener="#{bean.changeIcons}" />
+ <h:commandButton value="#{bean.commandButtonCaption}" actionListener="#{bean.changeIcons}" />
</h:panelGrid>
<f:verbatim>
@@ -93,8 +85,7 @@
<br />
</f:verbatim>
- <rich:tree id="testTree" var="_data" switchType="ajax"
- ajaxSubmitSelection="true" preserveModel="none" value="#{bean.data1}"
+ <rich:tree id="testTree" var="_data" switchType="ajax" ajaxSubmitSelection="true" preserveModel="none" value="#{bean.data1}"
nodeSelectListener="#{bean.onSelectInc}" nodeFace="node">
<rich:treeNode type="node">
<h:outputText value="#{_data}" />
@@ -104,11 +95,10 @@
<h:outputText value="Tree without treeNode:"></h:outputText>
<rich:separator></rich:separator>
- <rich:tree switchType="client" style="width:300px"
- value="#{pathwayBean.pathwayTree}" var="item" nodeFace="#{item.type}">
+ <rich:tree switchType="client" style="width:300px" value="#{pathwayBean.pathwayTree}" var="item" nodeFace="#{item.type}">
<rich:treeNode type="library">
<h:outputText value="#{item.type}" />
- </rich:treeNode>
+ </rich:treeNode>
<rich:treeNode type="pathway">
<h:outputText value="#{item.name}" />
</rich:treeNode>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/VirtualEarth/VirtualEarth.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/VirtualEarth/VirtualEarth.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/VirtualEarth/VirtualEarth.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,59 +1,51 @@
-<f:subview id="virtualEarthSubviewID"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:c="http://java.sun.com/jstl/core"
- xmlns:rich="http://richfaces.org/rich"
+<f:subview id="virtualEarthSubviewID" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jstl/core" xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<h:form>
- <h:panelGrid columns="2">
- <rich:virtualEarth style="width:800px;" id="gm" lat="37.97"
- dashboardSize="Normal" zoom="#{virtualEarth.zoom}" mapStyle="Hybrid"
- var="map" />
+ <h:panelGrid columns="2">
+ <rich:virtualEarth style="width:800px;" id="gm" lat="37.97" dashboardSize="Normal" zoom="#{virtualEarth.zoom}"
+ mapStyle="Hybrid" var="map" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onLoadMap="print('onLoadMapInputID', 'onLoadMap work!')" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')"/>
- <h:panelGroup>
- <f:verbatim>
+ <h:panelGroup>
+ <f:verbatim>
Dashboard:<br />
- <a href="javascript:void(0);"
- onclick="map.HideDashboard();return false;">Remove</a>
- <a href="javascript:void(0);"
- onclick="map.ShowDashboard();return false;">Show</a>
- <br />
- <br />
+ <a href="javascript:void(0);" onclick="map.HideDashboard();return false;">Remove</a>
+ <a href="javascript:void(0);" onclick="map.ShowDashboard();return false;">Show</a>
+ <br />
+ <br />
Type:<br />
- <a href="javascript:void(0);"
- onclick="map.SetMapStyle(VEMapStyle.Road);return false;">Road</a>
- <a href="javascript:void(0);"
- onclick="map.SetMapStyle(VEMapStyle.Aerial);return false;">Aerial</a>
- <a href="javascript:void(0);"
- onclick="map.SetMapStyle(VEMapStyle.Hybrid);return false;">Hybrid</a>
- <a href="javascript:void(0);"
- onclick="map.SetMapStyle(VEMapStyle.Birdseye);return false;">Birdseye</a>
- <br />
- <br />
+ <a href="javascript:void(0);" onclick="map.SetMapStyle(VEMapStyle.Road);return false;">Road</a>
+ <a href="javascript:void(0);" onclick="map.SetMapStyle(VEMapStyle.Aerial);return false;">Aerial</a>
+ <a href="javascript:void(0);" onclick="map.SetMapStyle(VEMapStyle.Hybrid);return false;">Hybrid</a>
+ <a href="javascript:void(0);" onclick="map.SetMapStyle(VEMapStyle.Birdseye);return false;">Birdseye</a>
+ <br />
+ <br />
Zoom:<br />
- <a href="javascript:void(0);" onclick="map.ZoomIn();return false;">In</a>
- <a href="javascript:void(0);" onclick="map.ZoomOut();return false;">Out</a>
- <br />
- <br />
- <a href="javascript:void(0);" onclick="showExadel();return false;">Show
- Exadel Office</a>
- <br />
- <a href="javascript:void(0);" onclick="showExadelInMinsk();return false;">Show Exadel in
- Belarus</a>
- </f:verbatim>
- </h:panelGroup>
-
- </h:panelGrid>
- <a4j:outputPanel id="zoomer">
- <script>
+ <a href="javascript:void(0);" onclick="map.ZoomIn();return false;">In</a>
+ <a href="javascript:void(0);" onclick="map.ZoomOut();return false;">Out</a>
+ <br />
+ <br />
+ <a href="javascript:void(0);" onclick="showExadel();return false;">Show Exadel Office</a>
+ <br />
+ <a href="javascript:void(0);" onclick="showExadelInMinsk();return false;">Show Exadel in Belarus</a>
+ </f:verbatim>
+ </h:panelGroup>
+
+ </h:panelGrid>
+ <a4j:outputPanel id="zoomer">
+ <script>
function zoomIt() {
map.setZoom(#{virtualEarth.zoom});
}
</script>
- </a4j:outputPanel>
- <a4j:outputPanel>
- <script>
+ </a4j:outputPanel>
+ <a4j:outputPanel>
+ <script>
function createMarker(point,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
@@ -72,6 +64,6 @@
map.SetMapStyle(VEMapStyle.Birdseye);
}
</script>
- </a4j:outputPanel>
+ </a4j:outputPanel>
</h:form>
-</f:subview>
+</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-DragAndDrop.xml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-DragAndDrop.xml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-DragAndDrop.xml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -7,4 +7,4 @@
<managed-bean-class>dnd.DndBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
-</faces-config>
+ </faces-config>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-Skin.xml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-Skin.xml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-Skin.xml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -2,9 +2,9 @@
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
- <managed-bean>
- <managed-bean-name>skinBean</managed-bean-name>
- <managed-bean-class>skins.Skins</managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
- </managed-bean>
+ <managed-bean>
+ <managed-bean-name>skinBean</managed-bean-name>
+ <managed-bean-class>util.skins.Skins</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
</faces-config>
Added: branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-jQuery.xml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-jQuery.xml (rev 0)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config-jQuery.xml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
+<faces-config>
+ <managed-bean>
+ <managed-bean-name>jQuery</managed-bean-name>
+ <managed-bean-class>jQuery.JQuery</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+</faces-config>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config.xml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/faces-config.xml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -66,7 +66,7 @@
</navigation-case>
<navigation-case>
<from-outcome>dnd</from-outcome>
- <to-view-id>/DragAndDrop/DragAndDrop.xhtml</to-view-id>
+ <to-view-id>/DradAndDrop/DragAndDrop.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>DS</from-outcome>
@@ -121,21 +121,21 @@
<to-view-id>/pages/Rich/Rich.xhtml</to-view-id>
</navigation-case>
<navigation-case>
- <from-outcome>RichPanels</from-outcome>
- <to-view-id>/pages/RichPanels/RichPanels.xhtml</to-view-id>
- </navigation-case>
- <navigation-case>
<from-outcome>Map</from-outcome>
<to-view-id>/pages/Select/Map.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>RichTest</from-outcome>
- <to-view-id>/Rich/RichTest.xhtml</to-view-id>
+ <to-view-id>/RichTest/RichTest.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>CustomizePage</from-outcome>
<to-view-id>/CustomizePage/CustomizePage.xhtml</to-view-id>
</navigation-case>
+ <navigation-case>
+ <from-outcome>jQuery</from-outcome>
+ <to-view-id>/jQuery/jQuery.xhtml</to-view-id>
+ </navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Panel/Panel.xhtml</from-view-id>
@@ -162,6 +162,6 @@
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
<lifecycle>
- <phase-listener id="phaseTracker">demo.PhaseTracker</phase-listener>
+ <phase-listener id="phaseTracker">util.phaseTracker.PhaseTracker</phase-listener>
</lifecycle>
</faces-config>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/web.xml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/WEB-INF/web.xml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,8 +1,8 @@
<?xml version="1.0"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <description>Vcp Test app.</description>
- <display-name>vcp-ComponentsTesting_3_0(1.1_F)</display-name>
+ <description>Vcp Test-Application</description>
+ <display-name>test-application</display-name>
<context-param>
<param-name>org.ajax4jsf.SKIN</param-name>
<param-value>#{skinBean.skin}</param-value>
@@ -33,12 +33,19 @@
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
- <param-value>/WEB-INF/faces-config-RichPanelsBean.xml,/WEB-INF/faces-config-DataTable.xml,/WEB-INF/faces-config-SimpleTogglePanel.xml,/WEB-INF/faces-config-Panel.xml,/WEB-INF/faces-config-PanelBar.xml,/WEB-INF/faces-config-TabPanel.xml,/WEB-INF/faces-config-TogglePanel.xml,/WEB-INF/faces-config-Paint2D.xml,/WEB-INF/faces-config-InputNumberSlider.xml,/WEB-INF/faces-config-InputNumberSpinner.xml,/WEB-INF/faces-config-DDMenu.xml,/WEB-INF/faces-config-Tree.xml,/WEB-INF/faces-config-PanelMenu.xml,/WEB-INF/faces-config-Icon.xml,/WEB-INF/faces-config-ModalPanel.xml,/WEB-INF/faces-config-tooltip.xml,/WEB-INF/faces-config-Skin.xml,/WEB-INF/faces-config-Calendar.xml,/WEB-INF/faces-config-Gmap.xml,/WEB-INF/faces-config-DataFilterSlider.xml,/WEB-INF/faces-config-Separator.xml,/WEB-INF/faces-config-Spacer.xml,/WEB-INF/faces-config-ToolBar.xml,/WEB-INF/faces-config-DataScroller.xml,/WEB-INF/faces-config-DragAndDrop.xml,/WEB-INF/faces-config-SuggestionBox.xml,/WEB-INF/faces-config-Messa!
ge.xml,/WEB-INF/faces-config-VirtualEarth.xml,/WEB-INF/faces-config-Effect.xml,/WEB-INF/faces-config-Insert.xml,/WEB-INF/faces-config-RichBean.xml,/WEB-INF/faces-config-ScrollableDataTable.xml,/WEB-INF/faces-config-SelectOneMenuPage.xml,/WEB-INF/faces-config-RichTest.xml</param-value>
+ <param-value>/WEB-INF/faces-config-DataTable.xml,/WEB-INF/faces-config-SimpleTogglePanel.xml,
+ /WEB-INF/faces-config-Panel.xml,/WEB-INF/faces-config-PanelBar.xml,/WEB-INF/faces-config-TabPanel.xml,
+ /WEB-INF/faces-config-TogglePanel.xml,/WEB-INF/faces-config-Paint2D.xml,/WEB-INF/faces-config-InputNumberSlider.xml,
+ /WEB-INF/faces-config-InputNumberSpinner.xml,/WEB-INF/faces-config-DDMenu.xml,/WEB-INF/faces-config-Tree.xml,
+ /WEB-INF/faces-config-PanelMenu.xml,/WEB-INF/faces-config-Icon.xml,/WEB-INF/faces-config-ModalPanel.xml,
+ /WEB-INF/faces-config-tooltip.xml,/WEB-INF/faces-config-Skin.xml,/WEB-INF/faces-config-Calendar.xml,
+ /WEB-INF/faces-config-Gmap.xml,/WEB-INF/faces-config-DataFilterSlider.xml,/WEB-INF/faces-config-Separator.xml,
+ /WEB-INF/faces-config-Spacer.xml,/WEB-INF/faces-config-ToolBar.xml,/WEB-INF/faces-config-DataScroller.xml,
+ /WEB-INF/faces-config-SuggestionBox.xml,/WEB-INF/faces-config-Message.xml,
+ /WEB-INF/faces-config-VirtualEarth.xml,/WEB-INF/faces-config-Effect.xml,/WEB-INF/faces-config-Insert.xml,
+ /WEB-INF/faces-config-RichBean.xml,/WEB-INF/faces-config-ScrollableDataTable.xml,
+ /WEB-INF/faces-config-RichTest.xml,/WEB-INF/faces-config-jQuery.xml,/WEB-INF/faces-config-DragAndDrop.xml</param-value>
</context-param>
- <context-param>
- <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
- <param-value>false</param-value>
- </context-param>
<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSlider/inputNumberSlider.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSlider/inputNumberSlider.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSlider/inputNumberSlider.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,146 +1,150 @@
-<f:subview id="inputNumberSliderSubviewID"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<f:subview id="inputNumberSliderSubviewID" xmlns:a4j="http://richfaces.org/a4j" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich">
<h:form>
- <h:panelGrid columns="1">
- <!--a4j:log level="ALL" popup="false" width="400" height="200"/-->
- <h:outputText value="Event:"></h:outputText>
- <rich:inputNumberSlider minValue="0" maxValue="100" width="300px"
- onmousedown="alert('OnMouseDown');" onblur="" onchange="" onclick="" ondblclick="" onerror="" onfocus="" onselect="" onkeydown=""
- onkeypress="" onkeyup="" onmousemove="" onmouseout="" onmouseover="" onmouseup=""></rich:inputNumberSlider>
+ <h:panelGrid columns="1">
+ <rich:inputNumberSlider id="SliderId" immediate="#{inputNumberSlider.immediate}"
+ inputPosition="#{inputNumberSlider.inputPosition}" showToolTip="#{inputNumberSlider.showToolTip}"
+ tabindex="#{inputNumberSlider.tabindex}" value="#{inputNumberSlider.value}" valueChangeListener="key"
+ required="#{inputNumberSlider.rendered}" requiredMessage="#{inputNumberSlider.requiredMessage}"
+ disabled="#{inputNumberSlider.disabled}" enableManualInput="#{inputNumberSlider.enableManualInput}"
+ inputSize="#{inputNumberSlider.inputSize}" maxValue="#{inputNumberSlider.maxValue}" minValue="#{inputNumberSlider.minValue}"
+ rendered="#{inputNumberSlider.rendered}" showBoundaryValues="#{inputNumberSlider.showBoundaryValues}"
+ step="#{inputNumberSlider.step}" showInput="#{inputNumberSlider.showInput}" width="#{inputNumberSlider.width}"
+ barClass="#{inputNumberSlider.barStyle}" tipClass="#{inputNumberSlider.tipStyle}" inputClass="#{inputNumberSlider.inputStyle}"
+ handleClass="#{inputNumberSlider.handleStyle}" styleClass="#{inputNumberSlider.tipStyle}"
+ maxlength="#{inputNumberSlider.maxlength}" onmousedown="print('onmousedownInputID', 'onmousedown work!')"
+ onblur="print('onblurInputID', 'onblur work!')" onchange="print('onchangeInputID', 'onchange work!')"
+ onclick="print('onclickInputID', 'onclick work!')" ondblclick="print('ondblclickInputID', 'ondblclick work!')"
+ onerror="print('ondblclickInputID', 'ondblclick work!')" onfocus="print('onfocusInputID', 'onfocus work!')"
+ onselect="print('onselectInputID', 'onselect work!')" onkeydown="print('onkeydownInputID', 'onkeydown work!')"
+ onkeypress="print('onkeypressInputID', 'onkeypress work!')" onkeyup="print('onkeyupInputID', 'onkeyup work!')"
+ onmousemove="print('onmousemoveInputID', 'onmousemove work!')" onmouseout="print('onmouseoutInputID', 'onmouseout work!')"
+ onmouseover="print('onmouseoverInputID', 'onmouseover work!')" onmouseup="print('onmouseupInputID', 'onmouseup work!')">
+ <a4j:support event="onchange" reRender="valueID,work" />
+ </rich:inputNumberSlider>
- <rich:spacer height="15px" width="300px"></rich:spacer>
+ <h:outputText id="work" value="#{key}" />
+ </h:panelGrid>
- <rich:inputNumberSlider id="SliderId"
- immediate="#{inputNumberSlider.immediate}"
- required="#{inputNumberSlider.rendered}"
- requiredMessage="#{inputNumberSlider.requiredMessage}"
- inputPosition="#{inputNumberSlider.inputPosition}"
- showToolTip="#{inputNumberSlider.showToolTip}"
- tabindex="#{inputNumberSlider.tabindex}"
- value="#{inputNumberSlider.value}"
- valueChangeListener="#{inputNumberSlider.changeListener}"
- disabled="#{inputNumberSlider.disabled}"
- enableManualInput="#{inputNumberSlider.enableManualInput}"
- inputSize="#{inputNumberSlider.inputSize}"
- maxValue="#{inputNumberSlider.maxValue}"
- minValue="#{inputNumberSlider.minValue}"
- rendered="#{inputNumberSlider.rendered}"
- showBoundaryValues="#{inputNumberSlider.showBoundaryValues}"
- step="#{inputNumberSlider.step}"
- showInput="#{inputNumberSlider.showInput}"
- width="#{inputNumberSlider.width}"
- barClass="#{inputNumberSlider.barStyle}"
- tipClass="#{inputNumberSlider.tipStyle}"
- inputClass="#{inputNumberSlider.inputStyle}"
- handleClass="#{inputNumberSlider.handleStyle}"
- styleClass="#{inputNumberSlider.tipStyle}"
- maxlength="#{inputNumberSlider.maxlength}"></rich:inputNumberSlider>
-
<rich:spacer height="20px"></rich:spacer>
- </h:panelGrid>
-
- <h:panelGrid columns="2" cellspacing="10px" border="1">
-
- <h:outputText value="value" />
- <h:outputText value="#{inputNumberSlider.value}" />
-
-
-
- <h:outputText value="inputPosition"></h:outputText>
- <h:selectOneRadio value="#{inputNumberSlider.inputPosition}">
- <f:selectItem itemLabel="right" itemValue="right"/>
- <f:selectItem itemLabel="left" itemValue="left"/>
- </h:selectOneRadio>
-
- <h:outputText value="Width:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.width}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
- <h:outputText value="Max Value:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.maxValue}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="inputNumberSlider straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{inputNumberSlider.bTest1}" value="run" reRender="SliderId,iNSliderPropertyID"></a4j:commandButton>
- <h:outputText value="Min Value:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.minValue}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{inputNumberSlider.bTest2}" value="run" reRender="SliderId,iNSliderPropertyID"></a4j:commandButton>
- <h:outputText value="Input Size:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.inputSize}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{inputNumberSlider.bTest3}" value="run" reRender="SliderId,iNSliderPropertyID"></a4j:commandButton>
- <h:outputText value="Input MaxLength:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.maxlength}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{inputNumberSlider.bTest4}" value="run" reRender="SliderId,iNSliderPropertyID"></a4j:commandButton>
- <h:outputText value="Step:"></h:outputText>
- <h:inputText value="#{inputNumberSlider.step}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
-
- <h:outputText value="tabindex" />
- <h:inputText value="#{inputNumberSlider.tabindex}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{inputNumberSlider.bTest5}" value="run" reRender="SliderId,iNSliderPropertyID"></a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
- <h:outputText value="Disabled:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSlider.disabled}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
+ <rich:simpleTogglePanel id="iNSliderPropertyID" switchType="client" opened="true" label="inputNumberSlider property">
+ <h:panelGrid columns="2" cellspacing="10px" border="1">
+ <h:outputText value="value" />
+ <h:inputText value="#{inputNumberSlider.value}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSlider.rendered}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
+ <h:outputText value="inputPosition"></h:outputText>
+ <h:selectOneRadio value="#{inputNumberSlider.inputPosition}">
+ <f:selectItem itemLabel="right" itemValue="right" />
+ <f:selectItem itemLabel="left" itemValue="left" />
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectOneRadio>
- <h:outputText value="Manual Input:"></h:outputText>
- <h:selectBooleanCheckbox
- value="#{inputNumberSlider.enableManualInput}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Width:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.width}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Boundary Values:"></h:outputText>
- <h:selectBooleanCheckbox
- value="#{inputNumberSlider.showBoundaryValues}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Max Value:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.maxValue}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Show Input:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSlider.showInput}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
-
- <h:outputText value="showToolTip" />
- <h:selectBooleanCheckbox value="#{inputNumberSlider.showToolTip}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Min Value:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.minValue}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
- <h:outputText value="required" />
- <h:selectBooleanCheckbox value="#{inputNumberSlider.required}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
-
- <h:outputText value="requiredMessage" />
- <h:inputText value="#{inputNumberSlider.requiredMessage}" >
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:inputText>
-
- <h:outputText value="immediate" />
- <h:selectBooleanCheckbox value="#{inputNumberSlider.immediate}">
- <a4j:support event="onchange" reRender="SliderId"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Input Size:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.inputSize}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
- <h:outputText value="Switch Styles" />
- <a4j:commandButton id="slBtn" value="#{inputNumberSlider.btnLabel}"
- action="#{inputNumberSlider.doStyles}" reRender="SliderId,slBtn">
- </a4j:commandButton>
- </h:panelGrid>
+ <h:outputText value="Input MaxLength:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.maxlength}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Step:"></h:outputText>
+ <h:inputText value="#{inputNumberSlider.step}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="tabindex" />
+ <h:inputText value="#{inputNumberSlider.tabindex}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Disabled:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.disabled}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.rendered}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Manual Input:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.enableManualInput}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Boundary Values:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.showBoundaryValues}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Show Input:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.showInput}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="showToolTip" />
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.showToolTip}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="required" />
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.required}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="requiredMessage" />
+ <h:inputText value="#{inputNumberSlider.requiredMessage}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="immediate" />
+ <h:selectBooleanCheckbox value="#{inputNumberSlider.immediate}">
+ <a4j:support event="onchange" reRender="SliderId"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Switch Styles" />
+ <a4j:commandButton id="slBtn" value="#{inputNumberSlider.btnLabel}" action="#{inputNumberSlider.doStyles}"
+ reRender="SliderId,slBtn">
+ </a4j:commandButton>
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
\ No newline at end of file
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSpinner/inputNumberSpinner.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSpinner/inputNumberSpinner.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/inputNumberSpinner/inputNumberSpinner.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,82 +1,93 @@
-<f:subview id="inputNumberSpinnerSubviewID"
- xmlns:rich="http://richfaces.org/rich"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:a4j="http://richfaces.org/a4j"
- xmlns:c="http://java.sun.com/jstl/core"
- xmlns:h="http://java.sun.com/jsf/html"
+<f:subview id="inputNumberSpinnerSubviewID" xmlns:rich="http://richfaces.org/rich" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:a4j="http://richfaces.org/a4j" xmlns:c="http://java.sun.com/jstl/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:scriptfree="http://jakarta.apache.org/taglibs/standard/scriptfree">
<h:form>
<h:messages></h:messages>
- <h:outputText value="Event:"></h:outputText>
- <rich:inputNumberSpinner minValue="0" maxValue="10"
- onchange="alert('mouse down');"></rich:inputNumberSpinner>
- <rich:spacer height="15px"></rich:spacer>
-
- <rich:inputNumberSpinner id="SpinnerID"
- cycled="#{inputNumberSpinner.cycled}"
- disabled="#{inputNumberSpinner.disabled}"
- maxValue="#{inputNumberSpinner.max}"
- minValue="#{inputNumberSpinner.min}"
- step="#{inputNumberSpinner.step}"
- rendered="#{inputNumberSpinner.rendered}"
- value="#{inputNumberSpinner.value}"
- inputClass="#{inputNumberSpinner.inputStyle}"
- styleClass="#{inputNumberSpinner.style}"
- enableManualInput="#{inputNumberSpinner.manualInput}"
- inputSize="#{inputNumberSpinner.inputSize}"></rich:inputNumberSpinner>
+ <rich:inputNumberSpinner id="SpinnerID" tabindex="#{inputNumberSpinner.tabindex}" cycled="#{inputNumberSpinner.cycled}"
+ disabled="#{inputNumberSpinner.disabled}" maxValue="#{inputNumberSpinner.max}" minValue="#{inputNumberSpinner.min}"
+ step="#{inputNumberSpinner.step}" rendered="#{inputNumberSpinner.rendered}" value="#{inputNumberSpinner.value}"
+ inputClass="#{inputNumberSpinner.inputStyle}" styleClass="#{inputNumberSpinner.style}"
+ enableManualInput="#{inputNumberSpinner.manualInput}" inputSize="#{inputNumberSpinner.inputSize}"
+ onmousedown="print('onmousedownInputID', 'onmousedown work!')" onblur="print('onblurInputID', 'onblur work!')"
+ onchange="print('onchangeInputID', 'onchange work!')" onclick="print('onclickInputID', 'onclick work!')"
+ ondblclick="print('ondblclickInputID', 'ondblclick work!')" onerror="print('ondblclickInputID', 'ondblclick work!')"
+ onfocus="print('onfocusInputID', 'onfocus work!')" onselect="print('onselectInputID', 'onselect work!')"
+ onkeydown="print('onkeydownInputID', 'onkeydown work!')" onkeypress="print('onkeypressInputID', 'onkeypress work!')"
+ onkeyup="print('onkeyupInputID', 'onkeyup work!')" onmousemove="print('onmousemoveInputID', 'onmousemove work!')"
+ onmouseout="print('onmouseoutInputID', 'onmouseout work!')" onmouseover="print('onmouseoverInputID', 'onmouseover work!')"
+ onmouseup="print('onmouseupInputID', 'onmouseup work!')" ondownclick="print('ondownclickInputID', 'ondownclick work!')"
+ onupclick="print('onupclickInputID', 'onupclick work!')"></rich:inputNumberSpinner>
<rich:spacer height="20px"></rich:spacer>
+ <rich:simpleTogglePanel switchType="client" opened="true" label="inputNumberSpinner straightforward">
+ <h:panelGrid columns="2">
+ <h:outputText value="Test1" />
+ <a4j:commandButton action="#{inputNumberSpinner.bTest1}" value="run" reRender="SpinnerID,iNSpinnerPropertyID"></a4j:commandButton>
- <h:panelGrid columns="2" cellpadding="10px" border="1">
+ <h:outputText value="Test2" />
+ <a4j:commandButton action="#{inputNumberSpinner.bTest2}" value="run" reRender="SpinnerID,iNSpinnerPropertyID"></a4j:commandButton>
- <h:outputText value="Max: "></h:outputText>
- <h:inputText value="#{inputNumberSpinner.max}">
- <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test3" />
+ <a4j:commandButton action="#{inputNumberSpinner.bTest3}" value="run" reRender="SpinnerID,iNSpinnerPropertyID"></a4j:commandButton>
- <h:outputText value="Min: "></h:outputText>
- <h:inputText value="#{inputNumberSpinner.min}">
- <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test4" />
+ <a4j:commandButton action="#{inputNumberSpinner.bTest4}" value="run" reRender="SpinnerID,iNSpinnerPropertyID"></a4j:commandButton>
- <h:outputText value="Step: "></h:outputText>
- <h:inputText value="#{inputNumberSpinner.step}">
- <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
- </h:inputText>
+ <h:outputText value="Test5" />
+ <a4j:commandButton action="#{inputNumberSpinner.bTest5}" value="run" reRender="SpinnerID,iNSpinnerPropertyID"></a4j:commandButton>
+ </h:panelGrid>
- <h:outputText value="Size: "></h:outputText>
- <h:inputText value="#{inputNumberSpinner.inputSize}">
- <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
- </h:inputText>
+ </rich:simpleTogglePanel>
- <h:outputText value="Value: "></h:outputText>
- <h:inputText value="#{inputNumberSpinner.value}">
- <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
- </h:inputText>
+ <rich:simpleTogglePanel id="iNSpinnerPropertyID" switchType="client" opened="true" label="inputNumberSpinner property">
+ <h:panelGrid columns="2" cellpadding="10px" border="1">
+ <h:outputText value="Max: "></h:outputText>
+ <h:inputText value="#{inputNumberSpinner.max}">
+ <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
+ </h:inputText>
- <h:outputText value="Cycled:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSpinner.cycled}">
- <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Min: "></h:outputText>
+ <h:inputText value="#{inputNumberSpinner.min}">
+ <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
+ </h:inputText>
- <h:outputText value="Manual Input:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSpinner.manualInput}">
- <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Step: "></h:outputText>
+ <h:inputText value="#{inputNumberSpinner.step}">
+ <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
+ </h:inputText>
- <h:outputText value="Disabled:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSpinner.disabled}">
- <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
- </h:selectBooleanCheckbox>
+ <h:outputText value="Size: "></h:outputText>
+ <h:inputText value="#{inputNumberSpinner.inputSize}">
+ <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
+ </h:inputText>
- <h:outputText value="Rendered:"></h:outputText>
- <h:selectBooleanCheckbox value="#{inputNumberSpinner.rendered}"
- onclick="submit()">
- </h:selectBooleanCheckbox>
- <h:outputText value="Switch Styles:" />
- <h:commandButton action="#{inputNumberSpinner.doStyles}"
- value="#{inputNumberSpinner.btnLabel}" />
- </h:panelGrid>
+ <h:outputText value="Value: "></h:outputText>
+ <h:inputText value="#{inputNumberSpinner.value}">
+ <a4j:support reRender="SpinnerID" event="onchange"></a4j:support>
+ </h:inputText>
+
+ <h:outputText value="Cycled:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSpinner.cycled}">
+ <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Manual Input:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSpinner.manualInput}">
+ <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Disabled:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSpinner.disabled}">
+ <a4j:support event="onclick" reRender="SpinnerID"></a4j:support>
+ </h:selectBooleanCheckbox>
+
+ <h:outputText value="Rendered:"></h:outputText>
+ <h:selectBooleanCheckbox value="#{inputNumberSpinner.rendered}" onclick="submit()">
+ </h:selectBooleanCheckbox>
+ <h:outputText value="Switch Styles:" />
+ <h:commandButton action="#{inputNumberSpinner.doStyles}" value="#{inputNumberSpinner.btnLabel}" />
+ </h:panelGrid>
+ </rich:simpleTogglePanel>
</h:form>
</f:subview>
Added: branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Action/EventInfo.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Action/EventInfo.xhtml (rev 0)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Action/EventInfo.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -0,0 +1,137 @@
+<f:subview id="EventInfoSubview" xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:rich="http://richfaces.org/rich"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+ <f:verbatim><div style="position: relative">
+ <input id="ontableaveInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onLoadMapInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onselectionchangeInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondownclickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onupclickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="oninitInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ongroupactivateInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onitemselectInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onsubmitInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowClickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowDblClickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowMouseDownInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowMouseMoveInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowMouseOutInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowMouseOverInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onRowMouseUpInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onselectInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onchangeInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onfocusInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onblurInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onclickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="oncollapseInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="oncompleteInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondblclickInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondragendInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondragenterInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondragexitInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondragstartInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondropInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="ondropendInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onexpandInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onkeydownInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onkeypressInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onkeyupInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmousedownInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmousemoveInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmouseoutInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmouseoverInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmouseupInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onselectedInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onhideInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmouseoverInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onmouseupInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+ <f:verbatim><div style="position: relative">
+ <input id="onshowInputID" type="hidden" value="" size="42" />
+ </div></f:verbatim>
+</f:subview>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Rich/Rich.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Rich/Rich.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/pages/Rich/Rich.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -8,16 +8,36 @@
<f:view>
<head>
<title></title>
+
+ <script type="text/javascript">
+ function print(info, text){
+ window.document.getElementById(info).value = text;
+ window.document.getElementById(info).type = "text";
+ }
+ </script>
<link rel="stylesheet"
href="#{facesContext.externalContext.requestContextPath}/styles/styles.css"
type="text/css" />
</head>
<body>
<div id="divOpthID" align="right" style="z-index: 200">
- <ui:include src="/pages/RichMenu/RichMenu.xhtml"/>
+ <ui:include src="/pages/RichMenu/RichMenu.xhtml" />
</div>
<ui:include src="${richBean.src}" />
+
+ <rich:modalPanel id="eventInfoID" autosize="true" minHeight="550" minWidth="200" moveable="true" resizeable="true" style="overflow: true;">
+ <f:facet name="header">
+ <h:outputText value="Events ..." />
+ </f:facet>
+ <f:facet name="controls">
+ <h:graphicImage value="/pics/error.gif" onclick="Richfaces.hideModalPanel('eventInfoID');"/>
+ </f:facet>
+ <ui:include src="/pages/Action/EventInfo.xhtml" />
+
+ </rich:modalPanel>
+ <a4j:commandButton value="Show event" onclick="Richfaces.showModalPanel('eventInfoID');return false;"></a4j:commandButton>
+
</body>
</f:view>
</html>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/pages/RichMenu/RichMenu.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/pages/RichMenu/RichMenu.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/pages/RichMenu/RichMenu.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,20 +1,25 @@
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:rich="http://richfaces.org/rich">
+<h:form id="forvDivOpthID" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j">
+ <rich:toolBar itemSeparator="none" >
+ <rich:toolBarGroup location="right">
+ <h:panelGrid columns="1">
+ <h:outputText value="Select skin: " />
+ <h:selectOneMenu binding="#{skinBean.component}" onblur="submit();">
+ <a4j:support action="#{skinBean.change}" event="onchange"/>
+
+ </h:selectOneMenu>
+ </h:panelGrid>
+ </rich:toolBarGroup>
- <h:form id="forvDivOpthID">
- <h:panelGrid columns="2">
- <h:selectOneMenu binding="#{skinBean.component}"></h:selectOneMenu>
- <h:commandLink action="#{skinBean.change}" value="set skin" />
-
+ <rich:toolBarGroup location="right">
+ <h:panelGrid columns="1">
<h:outputText value="Select component:" />
<h:selectOneMenu value="#{richBean.src}" onchange="submit();">
<f:selectItem itemValue="/Calendar/Calendar.xhtml" itemLabel="Calendar" />
<f:selectItem itemValue="/DataFilterSlider/DataFilterSlider.xhtml" itemLabel="Data Filter Slider" />
<f:selectItem itemValue="/DataScroller/DS.xhtml" itemLabel="Date Scroller" />
<f:selectItem itemValue="/DataTable/DT.xhtml" itemLabel="Date Table" />
- <f:selectItem itemValue="/DragAndDrop/DragAndDrop.xhtml" itemLabel="Drag And Drop" />
+ <f:selectItem itemValue="/DradAndDrop/DragAndDrop.xhtml" itemLabel="Drag And Drop" />
<f:selectItem itemValue="/DropDownMenu/DDMenu.xhtml" itemLabel="Drop Down Menu" />
<f:selectItem itemValue="/Effect/Effect.xhtml" itemLabel="Effect" />
<f:selectItem itemValue="/Gmap/Gmap.xhtml" itemLabel="Gmap" />
@@ -39,8 +44,10 @@
<f:selectItem itemValue="/Tree/Tree.xhtml" itemLabel="Tree" />
<f:selectItem itemValue="/VirtualEarth/VirtualEarth.xhtml" itemLabel="Virtual Earth" />
<f:selectItem itemValue="/ScrollableDataTable/ScrollableDataTable.xhtml" itemLabel="ScrollableDataTable" />
+ <f:selectItem itemValue="/jQuery/jQuery.xhtml" itemLabel="jQuery" />
</h:selectOneMenu>
</h:panelGrid>
- <h:commandLink value="Back" action="main"></h:commandLink>
- </h:form>
-</html>
\ No newline at end of file
+ </rich:toolBarGroup>
+ </rich:toolBar>
+ <h:commandLink value="Back" action="main"></h:commandLink>
+</h:form>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/pages/main.xhtml
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/pages/main.xhtml 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/pages/main.xhtml 2007-11-02 10:11:55 UTC (rev 3703)
@@ -10,18 +10,22 @@
</head>
<body>
<h:form>
- <div align="center"><h:outputText
- value="VCP Test Application (JSF 1.1RI(1.2RI) with Facelets)"
- style="font-size: 30px"></h:outputText></div>
+ <rich:panel>
+ <f:verbatim><div align="center"><font size="15px" color="#191970">RichFaces Test Application (JSF 1.1RI(1.2RI) with Facelets)</font></div></f:verbatim>
+ </rich:panel>
+ <rich:spacer></rich:spacer>
<rich:panel>
<h:panelGrid columns="2" cellpadding="5px" cellspacing="5px">
<h:commandLink value="RichFaces" action="Test"></h:commandLink>
<h:commandLink value="Div" action="TestDiv"></h:commandLink>
<h:commandLink value="Select" action="Map"></h:commandLink>
<h:commandLink value="Customize page" action="CustomizePage"></h:commandLink>
- <h:commandLink value="RichPanels" action="RichPanels"></h:commandLink>
</h:panelGrid>
</rich:panel>
+ <rich:spacer></rich:spacer>
+ <rich:panel>
+ <div align="right"><font size="4px" color="#000000">RichFace: #{a4j.version}</font></div>
+ </rich:panel>
</h:form>
</body>
</f:view>
Modified: branches/3.1.x/test-applications/facelets/src/main/webapp/styles/styles.css
===================================================================
--- branches/3.1.x/test-applications/facelets/src/main/webapp/styles/styles.css 2007-11-02 04:01:42 UTC (rev 3702)
+++ branches/3.1.x/test-applications/facelets/src/main/webapp/styles/styles.css 2007-11-02 10:11:55 UTC (rev 3703)
@@ -1,3 +1,7 @@
+/*simple toggle panel (icon position)*/
+.dr-stglpanel-marker {
+ float: right;
+}
/* Message and messages */
.rich-message-label {
padding: 0px 10px;
@@ -25,6 +29,7 @@
.infoLabel {
color: #00FF00;
+width: inherit;
}
.fatalLabel {
17 years, 2 months
JBoss Rich Faces SVN: r3702 - in trunk/sandbox/samples: columnsDemo and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-11-02 00:01:42 -0400 (Fri, 02 Nov 2007)
New Revision: 3702
Modified:
trunk/sandbox/samples/columnsDemo/pom.xml
trunk/sandbox/samples/pom.xml
Log:
columnsDemo corrected in pom.xml
Modified: trunk/sandbox/samples/columnsDemo/pom.xml
===================================================================
--- trunk/sandbox/samples/columnsDemo/pom.xml 2007-11-02 00:30:29 UTC (rev 3701)
+++ trunk/sandbox/samples/columnsDemo/pom.xml 2007-11-02 04:01:42 UTC (rev 3702)
@@ -8,7 +8,7 @@
<groupId>org.richfaces.sandbox.samples</groupId>
<artifactId>colunmsDemo</artifactId>
<packaging>war</packaging>
- <name>colunmsDemo Maven Webapp</name>
+ <name>columnsDemo Maven Webapp</name>
<version>3.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
Modified: trunk/sandbox/samples/pom.xml
===================================================================
--- trunk/sandbox/samples/pom.xml 2007-11-02 00:30:29 UTC (rev 3701)
+++ trunk/sandbox/samples/pom.xml 2007-11-02 04:01:42 UTC (rev 3702)
@@ -17,6 +17,6 @@
<module>simpleTogglePanel2-sample</module>
<module>orderingListDemo</module>
<module>listShuttleDemo</module>
- <module>colunmsDemo</module>
+ <module>columnsDemo</module>
</modules>
</project>
\ No newline at end of file
17 years, 2 months
JBoss Rich Faces SVN: r3701 - in trunk: extensions/portlet/src/main/java/org/ajax4jsf/portlet and 21 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2007-11-01 20:30:29 -0400 (Thu, 01 Nov 2007)
New Revision: 3701
Added:
trunk/DEADJOE
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/ViewHandlerPortletRenderResponseWrapper.java
trunk/samples/seamBookingPortlet/
trunk/samples/seamBookingPortlet/.exadelproject
trunk/samples/seamBookingPortlet/hibernate-console.properties
trunk/samples/seamBookingPortlet/pom.xml
trunk/samples/seamBookingPortlet/src/
trunk/samples/seamBookingPortlet/src/main/
trunk/samples/seamBookingPortlet/src/main/java/
trunk/samples/seamBookingPortlet/src/main/java/org/
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Authenticator.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Booking.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingList.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePassword.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Hotel.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBooking.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearching.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Register.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/User.java
trunk/samples/seamBookingPortlet/src/main/resources/
trunk/samples/seamBookingPortlet/src/main/resources/META-INF/
trunk/samples/seamBookingPortlet/src/main/resources/META-INF/application.xml
trunk/samples/seamBookingPortlet/src/main/resources/META-INF/ejb-jar.xml
trunk/samples/seamBookingPortlet/src/main/resources/META-INF/jboss-app.xml
trunk/samples/seamBookingPortlet/src/main/resources/META-INF/persistence.xml
trunk/samples/seamBookingPortlet/src/main/resources/booking-ds.xml
trunk/samples/seamBookingPortlet/src/main/resources/components.properties
trunk/samples/seamBookingPortlet/src/main/resources/import.sql
trunk/samples/seamBookingPortlet/src/main/resources/messages.properties
trunk/samples/seamBookingPortlet/src/main/resources/seam.properties
trunk/samples/seamBookingPortlet/src/main/webapp/
trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/
trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/persistence.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/.faces-config.xml.jsfdia
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/components.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml.l4t
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-app.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-portlet.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-web.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet-instances.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/seamBookingPortlet-object.xml
trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/web.xml
trunk/samples/seamBookingPortlet/src/main/webapp/book.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/confirm.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/conversations.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/css/
trunk/samples/seamBookingPortlet/src/main/webapp/css/date.css
trunk/samples/seamBookingPortlet/src/main/webapp/css/screen.css
trunk/samples/seamBookingPortlet/src/main/webapp/css/trailblazer_main.css
trunk/samples/seamBookingPortlet/src/main/webapp/display.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/edit.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/exp/
trunk/samples/seamBookingPortlet/src/main/webapp/exp/bookingExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/confirmExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/introExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/loginExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/mainExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/registerExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/exp/workspaceExp.html
trunk/samples/seamBookingPortlet/src/main/webapp/home.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/hotel.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/hotelview.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/img/
trunk/samples/seamBookingPortlet/src/main/webapp/img/bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/btn.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-next.png
trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-prev.png
trunk/samples/seamBookingPortlet/src/main/webapp/img/cnt.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/dtpick.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.ad.jpg
trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bar.jpg
trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.title.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/header_line.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/input.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/sdb.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/spinner.gif
trunk/samples/seamBookingPortlet/src/main/webapp/img/th.bg.gif
trunk/samples/seamBookingPortlet/src/main/webapp/index.html
trunk/samples/seamBookingPortlet/src/main/webapp/main.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/password.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/register.xhtml
trunk/samples/seamBookingPortlet/src/main/webapp/template.xhtml
trunk/samples/seamBookingPortlet/src/test/
trunk/samples/seamBookingPortlet/src/test/java/
Modified:
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/AjaxPortletBridge.java
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewHandler.java
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewState.java
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java
trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java
Log:
Continue to implement JSR-301 bridge. Finish requrements from PLT 6.
Create Seam portlet example, based on the Seam booking store.
Added: trunk/DEADJOE
===================================================================
--- trunk/DEADJOE (rev 0)
+++ trunk/DEADJOE 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,16 @@
+
+*** These modified files were found in JOE when it aborted on Wed Oct 31 15:45:33 2007
+*** JOE was aborted because the terminal closed
+
+*** File '(Unnamed)'
+/home/asmirnov/.bash_profile
+deployRelease.sh
+./ui/drag-drop/pom.xml
+./samples/ajaxPortlet/pom.xml
+./cdk/maven-archetype-jsf-component/src/main/resources/archetype-resources/pom.xml
+./framework/impl/pom.xml
+framework/impl/src/main/java/org/richfaces/VersionBean.java
+ui/paint2D/src/org/richfaces/renderkit/html/Paint2DResource.java
+ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DResource.java
+pom.xml
+/home/asmirnov/work/jboss-4.2.0.GA-src/build/output/jboss-4.2.0.GA/server/default/conf/jboss-log4j.xml
Modified: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/AjaxPortletBridge.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/AjaxPortletBridge.java 2007-11-01 22:27:10 UTC (rev 3700)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/AjaxPortletBridge.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -12,6 +12,7 @@
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
import javax.portlet.PortletException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
@@ -62,7 +63,10 @@
+ config.getPortletName());
}
this.portletConfig = config;
- init();
+ PortletContext portletContext = config.getPortletContext();
+ synchronized (portletContext) {
+ init();
+ }
} catch (FacesException e) {
throw new PortletException("Initialization error", e);
}
@@ -87,8 +91,10 @@
facesContext.getApplication().getStateManager().saveSerializedView(
facesContext);
// save request scope variables and Faces Messages.
- windowState.saveRequest(facesContext);
- // saveView(facesContext);
+ if (!facesContext.getResponseComplete()) {
+ windowState.saveRequest(facesContext);
+
+ } // saveView(facesContext);
} catch (Exception e) {
log.error("Error processing execute lifecycle", e);
throw new BridgeException("Error processing execute lifecycle ", e);
Modified: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewHandler.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewHandler.java 2007-11-01 22:27:10 UTC (rev 3700)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewHandler.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -26,11 +26,15 @@
import org.ajax4jsf.portlet.component.UIPortletViewRoot;
import org.ajax4jsf.portlet.context.AbstractExternalContext;
+
+
+
/**
* @author asmirnov
*
*/
public class PortletViewHandler extends AjaxViewHandler {
+ public static final String INTERWEAVING_RESPONSE_INTERFACE = "com.sun.faces.application.InterweavingResponse";
/**
* @param parent
*/
@@ -127,10 +131,10 @@
// to handle error page and text that exists after the <f:view> tag
// among other things which have lots of servlet dependencies -
// we're skipping this for now for portlet
- extContext.dispatch(viewToRender.getViewId());
- /*
- * if (executePageToBuildView(context, viewToRender)) { response.flushBuffer(); return; }
- */
+ // extContext.dispatch(viewToRender.getViewId());
+
+ if (executePageToBuildView(context, viewToRender)) { renderResponse.flushBuffer(); return; }
+
}
catch (IOException e)
{
@@ -182,22 +186,16 @@
context.setResponseWriter(oldWriter);
}
- Object content = extContext.getRequestMap().get(Bridge.AFTER_VIEW_CONTENT);
- if (content != null)
- {
- if (content instanceof char[])
- {
- renderResponse.getWriter().write(new String((byte[]) content));
- }
- else if (content instanceof byte[])
- {
- renderResponse.getWriter().write(new String((char[]) content));
- }
- else
- {
- throw new IOException("PortletViewHandlerImpl: invalid" + "AFTER_VIEW_CONTENT buffer type");
- }
- }
+ // write any AFTER_VIEW_CONTENT to the response
+ // side effect: AFTER_VIEW_CONTENT removed
+ if(hasInterweavingResponse()) {
+ ViewHandlerPortletRenderResponseWrapper wrapper = (ViewHandlerPortletRenderResponseWrapper)
+ extContext.getRequestMap().remove(Bridge.AFTER_VIEW_CONTENT);
+ if (null != wrapper) {
+ wrapper.flushToWriter(renderResponse.getWriter(),
+ renderResponse.getCharacterEncoding());
+ }
+ }
renderResponse.flushBuffer();
}
@@ -237,7 +235,6 @@
private void doRenderView(FacesContext context, UIViewRoot viewToRender) throws IOException,
FacesException
{
- ExternalContext extContext = context.getExternalContext();
viewToRender.encodeAll(context);
}
@@ -333,5 +330,59 @@
}
}
+ /**
+ * Execute the target view. If the HTTP status code range is
+ * not 2xx, then return true to indicate the response should be
+ * immediately flushed by the caller so that conditions such as 404
+ * are properly handled.
+ * @param context the <code>FacesContext</code> for the current request
+ * @param viewToExecute the view to build
+ * @return <code>true</code> if the response should be immediately flushed
+ * to the client, otherwise <code>false</code>
+ * @throws IOException if an error occurs executing the page
+ */
+ private boolean executePageToBuildView(FacesContext context,
+ UIViewRoot viewToExecute)
+ throws IOException {
+ String requestURI = viewToExecute.getViewId();
+
+ ExternalContext extContext = context.getExternalContext();
+
+ // replace the response with our wrapper
+ if(hasInterweavingResponse()) {
+ // save the original response
+ Object originalResponse = extContext.getResponse();
+
+ ViewHandlerPortletRenderResponseWrapper wrapped =
+ new ViewHandlerPortletRenderResponseWrapper((RenderResponse)extContext.getResponse());
+ extContext.setResponse(wrapped);
+ // build the view by executing the page
+ extContext.dispatch(requestURI);
+
+
+ // replace the original response
+ extContext.setResponse(originalResponse);
+
+ // Put the AFTER_VIEW_CONTENT into request scope
+ // temporarily
+ extContext.getRequestMap().put(Bridge.AFTER_VIEW_CONTENT, wrapped);
+ } else {
+ // build the view by executing the page
+ extContext.dispatch(requestURI);
+
+ }
+
+ return false;
+ }
+ // If the JSF RI does not contain InterweavingResponse interface skip
+ // the content Interweaving logic
+ private boolean hasInterweavingResponse() {
+ try {
+ Class.forName(INTERWEAVING_RESPONSE_INTERFACE);
+ } catch (Throwable t) {
+ return false;
+ }
+ return true;
+ }
}
Modified: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewState.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewState.java 2007-11-01 22:27:10 UTC (rev 3700)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/PortletViewState.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -63,7 +63,7 @@
private Map<String, List> messages;
- private Map<String, Object> beans;
+ private transient Map<String, Object> beans;
private Object treeStructure;
@@ -73,24 +73,10 @@
private String viewId;
- private Map requestScopeBeans;
private Map<String, String[]> _requestParameters;
- /**
- * @return the requestScopeBeans
- */
- public Map getRequestScopeBeans() {
- return requestScopeBeans;
- }
- /**
- * @param requestScopeBeans
- * the requestScopeBeans to set
- */
- public void setRequestScopeBeans(Map requestScopeBeans) {
- this.requestScopeBeans = requestScopeBeans;
- }
/**
* @return the viewId
@@ -270,6 +256,8 @@
ExternalContext externalContext = facesContext.getExternalContext();
Map<String, Object> requestMap = externalContext.getRequestMap();
if (b) {
+ facesContext.setViewRoot(getViewRoot());
+ setViewRoot(null);
restoreMessages(facesContext);
restoreBeans(facesContext);
}
@@ -292,6 +280,7 @@
public void saveRequest(FacesContext facesContext) {
UIViewRoot root = facesContext.getViewRoot();
+ setViewRoot(root);
if (null != root) {
setViewId(root.getViewId());
}
Added: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/ViewHandlerPortletRenderResponseWrapper.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/ViewHandlerPortletRenderResponseWrapper.java (rev 0)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/ViewHandlerPortletRenderResponseWrapper.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,306 @@
+/*
+ * CDDL HEADER START
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ *
+ * You can obtain a copy of the License at
+ * http://www.sun.com/cddl/cddl.html and legal/CDDLv1.0.txt
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * Copyright 2006 Sun Microsystems Inc. All Rights Reserved
+ * CDDL HEADER END
+ */
+
+package org.ajax4jsf.portlet.application;
+
+import com.sun.faces.application.InterweavingResponse;
+
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.portlet.PortletURL;
+import javax.portlet.RenderResponse;
+
+
+/**
+ * ViewHandlerPortletRenderResponseWrapper is the Portlet implementation of the InterweavingResponse wrapper.
+ * This class is loaded only if InterweavingResponse is present in JSF RI.
+ */
+public class ViewHandlerPortletRenderResponseWrapper implements RenderResponse, InterweavingResponse {
+
+ private RenderResponse response;
+ private ByteArrayWebOutputStream bawos;
+ private PrintWriter pw ;
+ private CharArrayWriter caw;
+
+ public ViewHandlerPortletRenderResponseWrapper(RenderResponse response) {
+ this.response = response;
+ }
+
+ public void resetBuffers() throws IOException {
+ if (caw != null) {
+ caw.reset();
+ } else if (bawos != null) {
+ bawos.resetByteArray();
+ }
+ }
+
+ public boolean isBytes() {
+ return (bawos != null);
+ }
+
+ public boolean isChars() {
+ return (caw != null);
+ }
+
+ public char[] getChars() {
+ if (caw != null) {
+ return caw.toCharArray();
+ }
+ return null;
+ }
+
+ public byte[] getBytes() {
+ if (bawos != null) {
+ return bawos.toByteArray();
+ }
+ return null;
+ }
+
+ public int getStatus() {
+ return Integer.MIN_VALUE;
+ }
+
+ public String getContentType() {
+ return response.getContentType();
+ }
+
+ public PortletURL createRenderURL() {
+ return response.createRenderURL();
+ }
+
+ public PortletURL createActionURL() {
+ return response.createActionURL();
+ }
+
+ public String getNamespace() {
+ return response.getNamespace();
+ }
+
+ public void setTitle(String title) {
+ response.setTitle(title);
+ }
+
+ public void setContentType(String type) {
+ response.setContentType(type);
+ }
+
+ public String getCharacterEncoding() {
+ return response.getCharacterEncoding();
+ }
+
+ public Locale getLocale() {
+ return response.getLocale();
+ }
+
+ public void setBufferSize(int size) {
+ response.setBufferSize(size);
+ }
+
+ public int getBufferSize() {
+ return response.getBufferSize();
+ }
+
+ public void flushBuffer() throws IOException {
+ response.flushBuffer();
+ }
+
+ public void resetBuffer() {
+ response.resetBuffer();
+ }
+
+ public boolean isCommitted() {
+ return response.isCommitted();
+ }
+
+ public void reset() {
+ response.reset();
+ }
+
+ public PrintWriter getWriter() throws IOException {
+ if (bawos != null) {
+ throw new IllegalStateException();
+ }
+ if (pw == null) {
+ caw = new CharArrayWriter(1024);
+ pw = new PrintWriter(caw);
+ }
+
+ return pw;
+ }
+
+ public OutputStream getPortletOutputStream() throws IOException {
+ if (pw != null) {
+ throw new IllegalStateException();
+ }
+ if (bawos == null) {
+ bawos = new ByteArrayWebOutputStream();
+ }
+ return bawos;
+ }
+
+ public void addProperty(String key, String value) {
+ response.addProperty(key, value);
+ }
+
+ public void setProperty(String key, String value) {
+ response.setProperty(key, value);
+ }
+
+ public String encodeURL(String path) {
+ return response.encodeURL(path);
+ }
+
+ public void flushContentToWrappedResponse() throws IOException {
+ if (caw != null) {
+ pw.flush();
+ caw.writeTo(response.getWriter());
+ caw.reset();
+ } else if (bawos != null) {
+ try {
+ bawos.writeTo(response.getWriter(),
+ response.getCharacterEncoding());
+ } catch (IllegalStateException ise) {
+ bawos.writeTo(response.getPortletOutputStream());
+ }
+ bawos.resetByteArray();
+ }
+
+ }
+ public void flushToWriter(Writer writer, String encoding) throws IOException {
+ if (caw != null) {
+ pw.flush();
+ caw.writeTo(writer);
+ caw.reset();
+ } else if (bawos != null) {
+ bawos.writeTo(writer, encoding);
+ bawos.resetByteArray();
+ }
+ writer.flush();
+ }
+
+}
+
+// ------------------------------------------------------------- Private Classes
+
+/**
+ * This steam convers byte content to character.
+ */
+class ByteArrayWebOutputStream extends OutputStream {
+
+ private DirectByteArrayOutputStream baos;
+
+ public ByteArrayWebOutputStream() {
+ baos = new DirectByteArrayOutputStream(1024);
+ }
+
+ public void write(int n) {
+ baos.write(n);
+ }
+
+ /**
+ * <p>It's important to not expose this as reset.</p>
+ */
+
+ public void resetByteArray() {
+ baos.reset();
+ }
+
+ public byte[] toByteArray() {
+ return baos.toByteArray();
+ }
+
+
+ /**
+ * Converts the buffered bytes into chars based on the
+ * specified encoding and writes them to the provided Writer.
+ *
+ * @param writer target Writer
+ * @param encoding character encoding
+ */
+ public void writeTo(Writer writer, String encoding) {
+
+ ByteBuffer bBuff = baos.getByteBuffer();
+ CharsetDecoder decoder = Charset.forName(encoding).newDecoder();
+
+ try {
+ CharBuffer cBuff = decoder.decode(bBuff);
+ writer.write(cBuff.array());
+ } catch (CharacterCodingException cce) {
+ throw new FacesException(cce);
+ } catch (IOException ioe) {
+ throw new FacesException(ioe);
+ }
+ }
+
+
+ /**
+ * <p>Write the buffered bytes to the provided OutputStream.</p>
+ *
+ * @param stream the stream to write to
+ */
+ public void writeTo(OutputStream stream) {
+ try {
+ stream.write(baos.getByteBuffer().array());
+ } catch (IOException ioe) {
+ throw new FacesException(ioe);
+ }
+ }
+
+ private static class DirectByteArrayOutputStream extends ByteArrayOutputStream {
+
+ // -------------------------------------------------------- Constructors
+
+
+ public DirectByteArrayOutputStream(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ // ------------------------------------------------------- PublicMethods
+
+
+ /**
+ * Return the buffer backing this ByteArrayOutputStream as a
+ * ByteBuffer.
+ *
+ * @return buf wrapped in a ByteBuffer
+ */
+ public ByteBuffer getByteBuffer() {
+ return (ByteBuffer.wrap(buf, 0, count));
+ }
+
+ }
+}
\ No newline at end of file
Property changes on: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/application/ViewHandlerPortletRenderResponseWrapper.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Modified: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java 2007-11-01 22:27:10 UTC (rev 3700)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -209,6 +209,8 @@
*/
public void setContext(Object context) {
this.context = context;
+ this.applicationMap = null;
+ this.initParameterMap = null;
}
/*
@@ -257,6 +259,12 @@
* @see javax.faces.context.ExternalContext#setRequest(java.lang.Object)
*/
public void setRequest(Object request) {
+ this.requestHeaderMap = null;
+ this.requestHeaderValues = null;
+ this.requestMap = null;
+ this.requestParameterMap = null;
+ this.requestParameterValuesMap = null;
+ this.sessionMap = null;
this.request = request;
}
Modified: trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java
===================================================================
--- trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java 2007-11-01 22:27:10 UTC (rev 3700)
+++ trunk/extensions/portlet/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -115,8 +115,10 @@
"Dispatcher for render request is not created");
}
try {
- dispatcher.include((RenderRequest) getRequest(),
- (RenderResponse) getResponse());
+ RenderRequest renderRequest = (RenderRequest) getPortletRequest();
+ RenderResponse portletResponse = (RenderResponse) getPortletResponse();
+ dispatcher.include(renderRequest,
+ portletResponse);
} catch (PortletException e) {
throw new FacesException(e);
}
Added: trunk/samples/seamBookingPortlet/.exadelproject
===================================================================
--- trunk/samples/seamBookingPortlet/.exadelproject (rev 0)
+++ trunk/samples/seamBookingPortlet/.exadelproject 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FILESYSTEMS APPLICATION_NAME="seamBookingPortlet" ENTITY="FileSystems"
+ VERSION="8.0.4" WORKSPACE_HOME="./src/main/webapp/WEB-INF">
+ <FILESYSTEM ENTITY="FileSystemFolder" LOCATION="%exadel.workspace%" NAME="WEB-INF"/>
+ <FILESYSTEM ENTITY="FileSystemFolder" INFO="Content-Type=Web"
+ LOCATION="%exadel.workspace%/.." NAME="WEB-ROOT"/>
+ <FILESYSTEM ENTITY="FileSystemFolder"
+ LOCATION="%exadel.workspace%/../../java" NAME="src"/>
+ <FILESYSTEM ENTITY="FileSystemFolder"
+ LOCATION="%exadel.workspace%/../../resources" NAME="src2"/>
+ <FILESYSTEM ENTITY="FileSystemFolder"
+ LOCATION="%exadel.workspace%/../../../test/java" NAME="src3"/>
+ <FILESYSTEM ENTITY="FileSystemFolder"
+ LOCATION="%exadel.workspace%/../../../../target/classes" NAME="classes"/>
+ <FILESYSTEM ENTITY="FileSystemFolder"
+ LOCATION="%exadel.eclipse.project%" NAME="seamBookingPortlet"/>
+ <WEB ENTITY="ExadelWeb" MODEL_PATH="/web.xml" SERVLET_VERSION="2.4">
+ <MODULE ENTITY="WebJSFModule" ROOT="WEB-ROOT" SRC="src,src2,src3" URI="/WEB-INF/faces-config.xml"/>
+ </WEB>
+</FILESYSTEMS>
Added: trunk/samples/seamBookingPortlet/hibernate-console.properties
===================================================================
--- trunk/samples/seamBookingPortlet/hibernate-console.properties (rev 0)
+++ trunk/samples/seamBookingPortlet/hibernate-console.properties 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,10 @@
+#File used by hibernate tools to override <datasource> and other container specific settings in persistence.xml
+hibernate.connection.password=password
+hibernate.connection.username=username
+hibernate.connection.driver_class=org.hsqldb.jdbcDriver
+hibernate.dialect=org.hibernate.dialect.HSQLDialect
+hibernate.connection.url=jdbc:hsqldb:hsql://host
+
+hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
+hibernate.datasource=
+hibernate.transaction.manager_lookup_class=
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/hibernate-console.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/pom.xml
===================================================================
--- trunk/samples/seamBookingPortlet/pom.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/pom.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>samples</artifactId>
+ <groupId>org.richfaces</groupId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.richfaces.samples</groupId>
+ <artifactId>seamBookingPortlet</artifactId>
+ <packaging>war</packaging>
+ <name>seamBookingPortlet Maven Webapp</name>
+ <version>3.2.0-SNAPSHOT</version>
+ <build>
+ <finalName>seamBookingPortlet</finalName>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <inherited>true</inherited>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <!--
+ <webResources>
+ <resource>
+ <directory>${seamHome}</directory>
+ <targetPath>WEB-INF/lib</targetPath>
+ <includes>
+ <include>jboss-seam.jar</include>
+ <include>jboss-seam-ui.jar</include>
+ <include>jboss-seam-debug.jar</include>
+ <include>
+ jboss-seam-remoting.jar
+ </include>
+ <include>
+ jboss-seam-pdf.jar
+ </include>
+ </includes>
+ </resource>
+ <resource>
+ <directory>${seamHome}/lib</directory>
+ <targetPath>WEB-INF/lib</targetPath>
+ <includes>
+ <include>jboss-el.jar</include>
+ </includes>
+ </resource>
+ </webResources>
+ -->
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>3.0.0.GA</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <version>3.3.0.ga</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.3.1.ga</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <version>2.0.1.SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ui</artifactId>
+ <version>2.0.1.SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-ioc</artifactId>
+ <version>2.0.1.SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam-debug</artifactId>
+ <version>2.0.1.SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.extensions</groupId>
+ <artifactId>portlet</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>richfaces-ui</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.2_05</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>1.2_05</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <repositories>
+ <repository>
+ <id>repository.jboss.com</id>
+ <url>http://repository.jboss.com/maven2</url>
+ </repository>
+ </repositories>
+</project>
+
Property changes on: trunk/samples/seamBookingPortlet/pom.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Authenticator.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Authenticator.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Authenticator.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,6 @@
+package org.jboss.seam.example.booking;
+
+public interface Authenticator
+{
+ boolean authenticate();
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Authenticator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,38 @@
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+
+@Name("authenticator")
+public class AuthenticatorAction implements Authenticator
+{
+ @In
+ private EntityManager entityManager;
+
+ @Out(required=false, scope = SESSION)
+ private User user;
+
+ public boolean authenticate()
+ {
+ List results = entityManager.createQuery("select u from User u where u.username=#{identity.username} and u.password=#{identity.password}")
+ .getResultList();
+
+ if ( results.size()==0 )
+ {
+ return false;
+ }
+ else
+ {
+ user = (User) results.get(0);
+ return true;
+ }
+ }
+
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Booking.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Booking.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Booking.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,190 @@
+//$Id: Booking.java,v 1.15 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.util.Date;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotNull;
+import org.hibernate.validator.Pattern;
+import org.jboss.seam.annotations.Name;
+
+@Entity
+@Name("booking")
+public class Booking implements Serializable
+{
+ private Long id;
+ private User user;
+ private Hotel hotel;
+ private Date checkinDate;
+ private Date checkoutDate;
+ private String creditCard;
+ private String creditCardName;
+ private int creditCardExpiryMonth;
+ private int creditCardExpiryYear;
+ private boolean smoking;
+ private int beds;
+
+ public Booking() {}
+
+ public Booking(Hotel hotel, User user)
+ {
+ this.hotel = hotel;
+ this.user = user;
+ }
+
+ @Transient
+ public BigDecimal getTotal()
+ {
+ return hotel.getPrice().multiply( new BigDecimal( getNights() ) );
+ }
+
+ @Transient
+ public int getNights()
+ {
+ return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / 1000 / 60 / 60 / 24;
+ }
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ @NotNull
+ @Basic @Temporal(TemporalType.DATE)
+ public Date getCheckinDate()
+ {
+ return checkinDate;
+ }
+ public void setCheckinDate(Date datetime)
+ {
+ this.checkinDate = datetime;
+ }
+
+ @ManyToOne @NotNull
+ public Hotel getHotel()
+ {
+ return hotel;
+ }
+ public void setHotel(Hotel hotel)
+ {
+ this.hotel = hotel;
+ }
+
+ @ManyToOne @NotNull
+ public User getUser()
+ {
+ return user;
+ }
+ public void setUser(User user)
+ {
+ this.user = user;
+ }
+
+ @Basic @Temporal(TemporalType.DATE)
+ @NotNull
+ public Date getCheckoutDate()
+ {
+ return checkoutDate;
+ }
+ public void setCheckoutDate(Date checkoutDate)
+ {
+ this.checkoutDate = checkoutDate;
+ }
+
+ @NotNull(message="Credit card number is required")
+ @Length(min=16, max=16, message="Credit card number must 16 digits long")
+ @Pattern(regex="^\\d*$", message="Credit card number must be numeric")
+ public String getCreditCard()
+ {
+ return creditCard;
+ }
+
+ public void setCreditCard(String creditCard)
+ {
+ this.creditCard = creditCard;
+ }
+
+ @Transient
+ public String getDescription()
+ {
+ DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
+ return hotel==null ? null : hotel.getName() +
+ ", " + df.format( getCheckinDate() ) +
+ " to " + df.format( getCheckoutDate() );
+ }
+
+ public boolean isSmoking()
+ {
+ return smoking;
+ }
+
+ public void setSmoking(boolean smoking)
+ {
+ this.smoking = smoking;
+ }
+
+ public int getBeds()
+ {
+ return beds;
+ }
+
+ public void setBeds(int beds)
+ {
+ this.beds = beds;
+ }
+ @NotNull(message="Credit card name is required")
+ @Length(min=3, max=70, message="Credit card name is required")
+ public String getCreditCardName()
+ {
+ return creditCardName;
+ }
+
+ public void setCreditCardName(String creditCardName)
+ {
+ this.creditCardName = creditCardName;
+ }
+
+ public int getCreditCardExpiryMonth()
+ {
+ return creditCardExpiryMonth;
+ }
+
+ public void setCreditCardExpiryMonth(int creditCardExpiryMonth)
+ {
+ this.creditCardExpiryMonth = creditCardExpiryMonth;
+ }
+
+ public int getCreditCardExpiryYear()
+ {
+ return creditCardExpiryYear;
+ }
+
+ public void setCreditCardExpiryYear(int creditCardExpiryYear)
+ {
+ this.creditCardExpiryYear = creditCardExpiryYear;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Booking(" + user + ","+ hotel + ")";
+ }
+
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Booking.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingList.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingList.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingList.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,10 @@
+//$Id: BookingList.java,v 1.7 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+public interface BookingList
+{
+ public void getBookings();
+ public Booking getBooking();
+ public void cancel();
+ public void destroy();
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingList.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingListAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingListAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,68 @@
+//$Id: BookingListAction.java,v 1.23 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.datamodel.DataModel;
+import org.jboss.seam.annotations.datamodel.DataModelSelection;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.log.Log;
+
+@Scope(SESSION)
+@Name("bookingList")
+@Restrict("#{identity.loggedIn}")
+public class BookingListAction implements BookingList, Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ @In
+ private EntityManager entityManager;
+
+ @In
+ private User user;
+
+ @DataModel
+ private List<Booking> bookings;
+ @DataModelSelection
+ private Booking booking;
+
+ @Logger
+ private Log log;
+
+ @Factory
+ @Observer("bookingConfirmed")
+ public void getBookings()
+ {
+ bookings = entityManager.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate")
+ .setParameter("username", user.getUsername())
+ .getResultList();
+ }
+
+ public void cancel()
+ {
+ log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}");
+ Booking cancelled = entityManager.find(Booking.class, booking.getId());
+ if (cancelled!=null) entityManager.remove( cancelled );
+ getBookings();
+ FacesMessages.instance().add("Booking cancelled for confirmation number #{bookingList.booking.id}");
+ }
+
+ public Booking getBooking()
+ {
+ return booking;
+ }
+
+ public void destroy() {}
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePassword.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePassword.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePassword.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,13 @@
+//$Id: ChangePassword.java,v 1.5 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+public interface ChangePassword
+{
+ public void changePassword();
+ public boolean isChanged();
+
+ public String getVerify();
+ public void setVerify(String verify);
+
+ public void destroy();
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePassword.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,68 @@
+//$Id: ChangePasswordAction.java,v 1.22 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.EVENT;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.faces.FacesMessages;
+
+@Scope(EVENT)
+@Name("changePassword")
+@Restrict("#{identity.loggedIn}")
+public class ChangePasswordAction implements ChangePassword
+{
+ @In @Out
+ private User user;
+
+ @In
+ private EntityManager entityManager;
+
+ private String verify;
+
+ private boolean changed;
+
+ @In
+ private FacesMessages facesMessages;
+
+ public void changePassword()
+ {
+ if ( user.getPassword().equals(verify) )
+ {
+ user = entityManager.merge(user);
+ facesMessages.add("Password updated");
+ changed = true;
+ }
+ else
+ {
+ facesMessages.addToControl("verify", "Re-enter new password");
+ revertUser();
+ verify=null;
+ }
+ }
+
+ public boolean isChanged()
+ {
+ return changed;
+ }
+
+ private void revertUser()
+ {
+ user = entityManager.find(User.class, user.getUsername());
+ }
+ public String getVerify()
+ {
+ return verify;
+ }
+ public void setVerify(String verify)
+ {
+ this.verify = verify;
+ }
+
+ public void destroy() {}
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Hotel.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Hotel.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Hotel.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,114 @@
+//$Id: Hotel.java,v 1.13 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotNull;
+import org.jboss.seam.annotations.Name;
+
+@Entity
+@Name("hotel")
+public class Hotel implements Serializable
+{
+ private Long id;
+ private String name;
+ private String address;
+ private String city;
+ private String state;
+ private String zip;
+ private String country;
+ private BigDecimal price;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ @Length(max=50) @NotNull
+ public String getName()
+ {
+ return name;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ @Length(max=100) @NotNull
+ public String getAddress()
+ {
+ return address;
+ }
+ public void setAddress(String address)
+ {
+ this.address = address;
+ }
+
+ @Length(max=40) @NotNull
+ public String getCity()
+ {
+ return city;
+ }
+ public void setCity(String city)
+ {
+ this.city = city;
+ }
+
+ @Length(min=4, max=6) @NotNull
+ public String getZip()
+ {
+ return zip;
+ }
+ public void setZip(String zip)
+ {
+ this.zip = zip;
+ }
+
+ @Length(min=2, max=10) @NotNull
+ public String getState()
+ {
+ return state;
+ }
+ public void setState(String state)
+ {
+ this.state = state;
+ }
+
+ @Length(min=2, max=40) @NotNull
+ public String getCountry()
+ {
+ return country;
+ }
+ public void setCountry(String country)
+ {
+ this.country = country;
+ }
+
+ @Column(precision=6, scale=2)
+ public BigDecimal getPrice()
+ {
+ return price;
+ }
+ public void setPrice(BigDecimal price)
+ {
+ this.price = price;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Hotel(" + name + "," + address + "," + city + "," + zip + ")";
+ }
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Hotel.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBooking.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBooking.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBooking.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,19 @@
+//$Id: HotelBooking.java,v 1.14 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+public interface HotelBooking
+{
+ public void selectHotel(Hotel selectedHotel);
+
+ public void bookHotel();
+
+ public void setBookingDetails();
+ public boolean isBookingValid();
+
+ public void confirm();
+
+ public void cancel();
+
+ public void destroy();
+
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBooking.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,101 @@
+//$Id: HotelBookingAction.java,v 1.53 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.util.Calendar;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.Begin;
+import org.jboss.seam.annotations.End;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.core.Events;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.log.Log;
+
+@Name("hotelBooking")
+@Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+
+ @In
+ private EntityManager entityManager;
+
+ @In
+ private User user;
+
+ @In(required=false) @Out
+ private Hotel hotel;
+
+ @In(required=false)
+ @Out(required=false)
+ private Booking booking;
+
+ @In
+ private FacesMessages facesMessages;
+
+ @In
+ private Events events;
+
+ @Logger
+ private Log log;
+
+ private boolean bookingValid;
+
+ @Begin
+ public void selectHotel(Hotel selectedHotel)
+ {
+ hotel = entityManager.merge(selectedHotel);
+ }
+
+ public void bookHotel()
+ {
+ booking = new Booking(hotel, user);
+ Calendar calendar = Calendar.getInstance();
+ booking.setCheckinDate( calendar.getTime() );
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ booking.setCheckoutDate( calendar.getTime() );
+ }
+
+ public void setBookingDetails()
+ {
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
+ if ( booking.getCheckinDate().before( calendar.getTime() ) )
+ {
+ facesMessages.addToControl("checkinDate", "Check in date must be a future date");
+ bookingValid=false;
+ }
+ else if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+ {
+ facesMessages.addToControl("checkoutDate", "Check out date must be later than check in date");
+ bookingValid=false;
+ }
+ else
+ {
+ bookingValid=true;
+ }
+ }
+
+ public boolean isBookingValid()
+ {
+ return bookingValid;
+ }
+
+ @End
+ public void confirm()
+ {
+ entityManager.persist(booking);
+ facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+ log.info("New booking: #{booking.id} for #{user.username}");
+ events.raiseTransactionSuccessEvent("bookingConfirmed");
+ }
+
+ @End
+ public void cancel() {}
+
+ public void destroy() {}
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearching.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearching.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearching.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,20 @@
+//$Id: HotelSearching.java,v 1.12 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+public interface HotelSearching
+{
+ public int getPageSize();
+ public void setPageSize(int pageSize);
+
+ public String getSearchString();
+ public void setSearchString(String searchString);
+
+ public String getSearchPattern();
+
+ public void find();
+ public void nextPage();
+ public boolean isNextPageAvailable();
+
+ public void destroy();
+
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearching.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,82 @@
+//$Id: HotelSearchingAction.java,v 1.20 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.datamodel.DataModel;
+import org.jboss.seam.annotations.security.Restrict;
+
+@Name("hotelSearch")
+(a)Scope(ScopeType.SESSION)
+@Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+
+ @In
+ private EntityManager entityManager;
+
+ private String searchString;
+ private int pageSize = 10;
+ private int page;
+
+ @DataModel
+ private List<Hotel> hotels;
+
+ public void find()
+ {
+ page = 0;
+ queryHotels();
+ }
+ public void nextPage()
+ {
+ page++;
+ queryHotels();
+ }
+
+ private void queryHotels()
+ {
+ hotels = entityManager.createQuery("select h from Hotel h where lower(h.name) like #{pattern} or lower(h.city) like #{pattern} or lower(h.zip) like #{pattern} or lower(h.address) like #{pattern}")
+ .setMaxResults(pageSize)
+ .setFirstResult( page * pageSize )
+ .getResultList();
+ }
+
+ public boolean isNextPageAvailable()
+ {
+ return hotels!=null && hotels.size()==pageSize;
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ @Factory(value="pattern", scope=ScopeType.EVENT)
+ public String getSearchPattern()
+ {
+ return searchString==null ?
+ "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
+ }
+
+ public String getSearchString()
+ {
+ return searchString;
+ }
+
+ public void setSearchString(String searchString)
+ {
+ this.searchString = searchString;
+ }
+
+ public void destroy() {}
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Register.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Register.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Register.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,13 @@
+//$Id: Register.java,v 1.5 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+public interface Register
+{
+ public void register();
+ public void invalid();
+ public String getVerify();
+ public void setVerify(String verify);
+ public boolean isRegistered();
+
+ public void destroy();
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/Register.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/RegisterAction.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/RegisterAction.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,75 @@
+//$Id: RegisterAction.java,v 1.23 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.EVENT;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.faces.FacesMessages;
+
+@Scope(EVENT)
+@Name("register")
+public class RegisterAction implements Register
+{
+ @In
+ private User user;
+
+ @In
+ private EntityManager entityManager;
+
+ @In
+ private FacesMessages facesMessages;
+
+ private String verify;
+
+ private boolean registered;
+
+ public void register()
+ {
+ if ( user.getPassword().equals(verify) )
+ {
+ List existing = entityManager.createQuery("select u.username from User u where u.username=#{user.username}")
+ .getResultList();
+ if (existing.size()==0)
+ {
+ entityManager.persist(user);
+ facesMessages.add("Successfully registered as #{user.username}");
+ registered = true;
+ }
+ else
+ {
+ facesMessages.addToControl("username", "Username #{user.username} already exists");
+ }
+ }
+ else
+ {
+ facesMessages.addToControl("verify", "Re-enter your password");
+ verify=null;
+ }
+ }
+
+ public void invalid()
+ {
+ facesMessages.add("Please try again");
+ }
+
+ public boolean isRegistered()
+ {
+ return registered;
+ }
+ public String getVerify()
+ {
+ return verify;
+ }
+ public void setVerify(String verify)
+ {
+ this.verify = verify;
+ }
+
+ public void destroy() {}
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/User.java
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/User.java (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/User.java 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,76 @@
+//$Id: User.java,v 1.8 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotNull;
+import org.hibernate.validator.Pattern;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+@Entity
+@Name("user")
+@Scope(SESSION)
+@Table(name="Customer")
+public class User implements Serializable
+{
+ private String username;
+ private String password;
+ private String name;
+
+ public User(String name, String password, String username)
+ {
+ this.name = name;
+ this.password = password;
+ this.username = username;
+ }
+
+ public User() {}
+
+ @NotNull
+ @Length(max=100)
+ public String getName()
+ {
+ return name;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ @NotNull
+ @Length(min=5, max=15)
+ public String getPassword()
+ {
+ return password;
+ }
+ public void setPassword(String password)
+ {
+ this.password = password;
+ }
+
+ @Id
+ @Length(min=4, max=15)
+ @Pattern(regex="^\\w*$", message="not a valid username")
+ public String getUsername()
+ {
+ return username;
+ }
+ public void setUsername(String username)
+ {
+ this.username = username;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "User(" + username + ")";
+ }
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/java/org/jboss/seam/example/booking/User.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/application.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/META-INF/application.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/META-INF/application.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
+ version="5">
+
+ <display-name>Seam Booking</display-name>
+
+ <module>
+ <web>
+ <web-uri>jboss-seam-booking.war</web-uri>
+ <context-root>/seam-booking</context-root>
+ </web>
+ </module>
+
+ <module>
+ <ejb>jboss-seam-booking.jar</ejb>
+ </module>
+
+ <module>
+ <ejb>jboss-seam.jar</ejb>
+ </module>
+
+</application>
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/application.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/ejb-jar.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/META-INF/ejb-jar.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/META-INF/ejb-jar.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+ version="3.0">
+
+ <interceptors>
+ <interceptor>
+ <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+ </interceptor>
+ </interceptors>
+
+ <assembly-descriptor>
+ <interceptor-binding>
+ <ejb-name>*</ejb-name>
+ <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+ </interceptor-binding>
+ </assembly-descriptor>
+
+</ejb-jar>
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/ejb-jar.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/jboss-app.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/META-INF/jboss-app.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/META-INF/jboss-app.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE jboss-app
+ PUBLIC "-//JBoss//DTD J2EE Application 4.2//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd">
+
+<jboss-app>
+ <loader-repository>
+ seam.jboss.org:loader=seam-booking
+ </loader-repository>
+</jboss-app>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/jboss-app.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/persistence.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/META-INF/persistence.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/META-INF/persistence.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+ version="1.0">
+ <persistence-unit name="bookingDatabase">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <jta-data-source>java:/bookingDatasource</jta-data-source>
+ <properties>
+ <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+ <property name="hibernate.show_sql" value="true"/>
+ <!-- These are the default for JBoss EJB3, but not for HEM: -->
+ <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
+ </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/META-INF/persistence.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/booking-ds.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/booking-ds.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/booking-ds.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE datasources
+ PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
+
+<datasources>
+ <local-tx-datasource>
+ <jndi-name>bookingDatasource</jndi-name>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+ </local-tx-datasource>
+</datasources>
+
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/booking-ds.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/resources/components.properties
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/components.properties (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/components.properties 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1 @@
+jndiPattern #{ejbName}/local
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/components.properties
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/resources/import.sql
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/import.sql (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/import.sql 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,22 @@
+insert into Customer (username, password, name) values ('gavin', 'foobar', 'Gavin King')
+insert into Customer (username, password, name) values ('demo', 'demo', 'Demo User')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 130, 'Hotel Beaulac', ' Esplanade L�opold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 250, 'Meli� White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/import.sql
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/samples/seamBookingPortlet/src/main/resources/messages.properties
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/resources/messages.properties (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/resources/messages.properties 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,50 @@
+javax.faces.component.UIInput.CONVERSION=value could not be converted to the expected type
+javax.faces.component.UIInput.REQUIRED=value is required
+javax.faces.component.UIInput.REQUIRED_detail=value is required
+javax.faces.component.UIInput.UPDATE=an error occurred when processing your submitted information
+javax.faces.component.UISelectOne.INVALID=value is not valid
+javax.faces.component.UISelectMany.INVALID=value is not valid
+
+javax.faces.converter.BigDecimalConverter.DECIMAL=value must be a number
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail=value must be a signed decimal number consisting of zero or more digits, optionally followed by a decimal point and fraction, eg. {1}
+javax.faces.converter.BigIntegerConverter.BIGINTEGER=value must be a number
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail=value must be a signed integer number consisting of zero or more digits
+javax.faces.converter.BooleanConverter.BOOLEAN=value must be true or false
+javax.faces.converter.BooleanConverter.BOOLEAN_detail=value must be true or false (any value other than true will evaluate to false)
+javax.faces.converter.ByteConverter.BYTE=value must be a number between 0 and 255
+javax.faces.converter.ByteConverter.BYTE_detail=value must be a number between 0 and 255
+javax.faces.converter.CharacterConverter.CHARACTER=value must be a character
+javax.faces.converter.CharacterConverter.CHARACTER_detail=value must be a valid ASCII character
+javax.faces.convert.DateTimeConverter.CONVERSION value must be a datetime
+javax.faces.convert.DateTimeConverter.CONVERSION_detail value must be a datetime
+javax.faces.converter.DateTimeConverter.DATE=value must be a date
+javax.faces.converter.DateTimeConverter.DATE_detail=value must be a date, eg. {1}
+javax.faces.converter.DateTimeConverter.TIME=value must be a time
+javax.faces.converter.DateTimeConverter.TIME_detail=value must be a time, eg. {1}
+javax.faces.converter.DateTimeConverter.DATETIME=value must be a date and time
+javax.faces.converter.DateTimeConverter.DATETIME_detail=value must be a date and time, eg. {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE=a pattern or type attribute must be specified to convert the value
+javax.faces.converter.DoubleConverter.DOUBLE=value must be a number
+javax.faces.converter.DoubleConverter.DOUBLE_detail=value must be a number between 4.9E-324 and 1.7976931348623157E308
+javax.faces.converter.EnumConverter.ENUM=value must be convertible to an enum
+javax.faces.converter.EnumConverter.ENUM_detail=value must be convertible to an enum or from the enum that contains the constant {1}
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS=value must be convertible to an enum or from the enum, but no enum class provided
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail=value must be convertible to an enum or from the enum, but no enum class provided
+javax.faces.converter.FloatConverter.FLOAT=value must be a number
+javax.faces.converter.FloatConverter.FLOAT_detail=value must be a number between 1.4E-45 and 3.4028235E38
+javax.faces.converter.IntegerConverter.INTEGER=value must be a number
+javax.faces.converter.IntegerConverter.INTEGER_detail=value must be a number between -2147483648 and 2147483647
+javax.faces.converter.LongConverter.LONG=value must be a number
+javax.faces.converter.LongConverter.LONG_detail=must be a number between -9223372036854775808 and 9223372036854775807
+javax.faces.converter.NumberConverter.CURRENCY=value must be a currency amount
+javax.faces.converter.NumberConverter.CURRENCY_detail=value must be a currency amount, eg. {1}
+javax.faces.converter.NumberConverter.PERCENT=value must be a percentage amount
+javax.faces.converter.NumberConverter.PERCENT_detail=value must be a percentage amount, eg. {1}
+javax.faces.converter.NumberConverter.NUMBER=value must be a number
+javax.faces.converter.NumberConverter.NUMBER_detail=value must be a number
+javax.faces.converter.NumberConverter.PATTERN=value must be a number
+javax.faces.converter.NumberConverter.PATTERN_detail=value must be a number
+javax.faces.converter.ShortConverter.SHORT=value must be a number
+javax.faces.converter.ShortConverter.SHORT_detail=value must be a number between -32768 and 32767
+
+
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/messages.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/resources/seam.properties
===================================================================
Property changes on: trunk/samples/seamBookingPortlet/src/main/resources/seam.properties
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/persistence.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/persistence.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/persistence.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+ version="1.0">
+ <persistence-unit name="bookingDatabase">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <jta-data-source>java:/bookingDatasource</jta-data-source>
+ <properties>
+ <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+ <property name="hibernate.show_sql" value="true"/>
+ <!-- These are the default for JBoss EJB3, but not for HEM: -->
+ <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
+ </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/META-INF/persistence.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/.faces-config.xml.jsfdia
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/.faces-config.xml.jsfdia (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/.faces-config.xml.jsfdia 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PROCESS ENTITY="JSFProcess"/>
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/components.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/components.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/components.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://jboss.com/products/seam/components"
+ xmlns:core="http://jboss.com/products/seam/core"
+ xmlns:security="http://jboss.com/products/seam/security"
+ xmlns:transaction="http://jboss.com/products/seam/transaction"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
+ http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.0.xsd
+ http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd
+ http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd">
+
+ <core:init jndi-pattern="seamBookingPortlet/#{ejbName}/local"
+ debug="true" />
+
+ <core:manager conversation-timeout="120000"
+ concurrent-request-timeout="500" conversation-id-parameter="cid" /><!--
+
+ <persistence:managed-persistence-context auto-create="true" name="entityManager">
+ <persistence:persistence-unit-jndi-name>java:/blogEntityManagerFactory</persistence:persistence-unit-jndi-name>
+ </persistence:managed-persistence-context>
+
+ -->
+ <transaction:ejb-transaction />
+
+ <security:identity
+ authenticate-method="#{authenticator.authenticate}" />
+
+</components>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/components.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config version="1.2"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
+
+ <application>
+ <view-handler>
+ org.ajax4jsf.portlet.application.PortletViewHandler
+ </view-handler>
+ <state-manager>
+ org.ajax4jsf.portlet.application.PortalStateManager
+ </state-manager>
+ <!--
+ <view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler>
+ -->
+ </application>
+ <factory>
+ <faces-context-factory>
+ org.ajax4jsf.portlet.context.FacesContextFactoryImpl
+ </faces-context-factory>
+ </factory>
+
+</faces-config>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml.l4t
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml.l4t (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/faces-config.xml.l4t 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PROCESS ENTITY="JSFProcess"/>
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-app.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-app.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-app.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,3 @@
+<jboss-app>
+ <app-name>seamBookingPortletApp</app-name>
+</jboss-app>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-app.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-portlet.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-portlet.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-portlet.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE portlet-app PUBLIC
+ "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
+ "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd"><portlet-app>
+ <portlet>
+ <portlet-name>seamBookingPortlet</portlet-name>
+ </portlet>
+</portlet-app>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-portlet.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-web.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-web.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-web.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,12 @@
+ <!DOCTYPE jboss-web PUBLIC
+ "-//JBoss//DTD Web Application 4.2//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
+
+<jboss-web>
+ <class-loading java2ClassLoadingCompliance="false">
+ <loader-repository>
+ seam.jboss.org:loader=seamBookingPortlet
+ <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
+ </loader-repository>
+ </class-loading>
+</jboss-web>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/jboss-web.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pages xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"
+
+ no-conversation-view-id="/main.xhtml"
+ login-view-id="/home.xhtml">
+
+ <page view-id="/register.xhtml">
+
+ <action if="#{validation.failed}"
+ execute="#{register.invalid}"/>
+
+ <navigation>
+ <rule if="#{register.registered}">
+ <redirect view-id="/home.xhtml"/>
+ </rule>
+ </navigation>
+
+ </page>
+
+ <page view-id="/home.xhtml">
+
+ <navigation>
+ <rule if="#{identity.loggedIn}">
+ <redirect view-id="/main.xhtml"/>
+ </rule>
+ </navigation>
+
+ </page>
+
+ <page view-id="/password.xhtml"
+ login-required="true">
+
+ <navigation>
+ <rule if="#{changePassword.changed}">
+ <redirect view-id="/main.xhtml"/>
+ </rule>
+ </navigation>
+
+ </page>
+
+ <page view-id="/main.xhtml"
+ login-required="true">
+
+ <navigation from-action="#{hotelBooking.selectHotel(hot)}">
+ <redirect view-id="/hotel.xhtml"/>
+ </navigation>
+
+ <navigation from-action="#{bookingList.cancel}">
+ <redirect/>
+ </navigation>
+
+ </page>
+
+ <page view-id="/hotel.xhtml"
+ conversation-required="true"
+ login-required="true">
+
+ <description>View hotel: #{hotel.name}</description>
+
+ <navigation from-action="#{hotelBooking.bookHotel}">
+ <redirect view-id="/book.xhtml"/>
+ </navigation>
+
+ </page>
+
+ <page view-id="/book.xhtml"
+ conversation-required="true"
+ login-required="true">
+
+ <description>Book hotel: #{hotel.name}</description>
+
+ <navigation from-action="#{hotelBooking.setBookingDetails}">
+ <rule if="#{hotelBooking.bookingValid}">
+ <redirect view-id="/confirm.xhtml"/>
+ </rule>
+ </navigation>
+
+ </page>
+
+ <page view-id="/confirm.xhtml"
+ conversation-required="true"
+ login-required="true">
+
+ <description>Confirm booking: #{booking.description}</description>
+
+ <navigation from-action="#{hotelBooking.confirm}">
+ <redirect view-id="/main.xhtml"/>
+ </navigation>
+
+ </page>
+
+ <page view-id="*">
+
+ <navigation from-action="#{identity.logout}">
+ <redirect view-id="/home.xhtml"/>
+ </navigation>
+
+ <navigation from-action="#{hotelBooking.cancel}">
+ <redirect view-id="/main.xhtml"/>
+ </navigation>
+
+ </page>
+
+ <exception class="org.jboss.seam.security.NotLoggedInException">
+ <redirect view-id="/home.xhtml">
+ <message severity="warn">You must be logged in to use this feature</message>
+ </redirect>
+ </exception>
+
+</pages>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet-instances.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet-instances.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet-instances.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<deployments>
+ <deployment>
+ <instance>
+ <instance-id>SeamBookingPortletInstance</instance-id>
+ <portlet-ref>seamBookingPortlet</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>SeamBookingPortletSecondInstance</instance-id>
+ <portlet-ref>seamBookingPortlet</portlet-ref>
+ </instance>
+ </deployment>
+</deployments>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet-instances.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,25 @@
+<portlet-app version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet"
+ xmlns="http://java.sun.com/xml/ns/portlet">
+ <portlet>
+ <portlet-name>seamBookingPortlet</portlet-name>
+ <portlet-class>
+ javax.portlet.faces.GenericFacesPortlet
+ </portlet-class>
+
+ <init-param>
+ <name>javax.portlet.faces.defaultViewId.view</name>
+ <value>/home.xhtml</value>
+ </init-param>
+
+
+ <expiration-cache>-0</expiration-cache>
+ <portlet-info>
+ <title>Ajax Portlet</title>
+ </portlet-info>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>VIEW</portlet-mode>
+ </supports>
+ </portlet>
+</portlet-app>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/portlet.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/seamBookingPortlet-object.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/seamBookingPortlet-object.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/seamBookingPortlet-object.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployments>
+ <deployment>
+ <parent-ref>default</parent-ref>
+ <if-exists>overwrite</if-exists>
+ <instance>
+ <instance-name>SeamBookingPortletInstance</instance-name>
+ <component-ref>seamBookingPortletApp.seamBookingPortlet</component-ref>
+ </instance>
+ </deployment>
+ <!--
+ <deployment>
+ <parent-ref>default</parent-ref>
+ <if-exists>overwrite</if-exists>
+ <page>
+ <page-name>seamBookingPortlet</page-name>
+ <window>
+ <window-name>ajaxportletWindow</window-name>
+ <instance-ref>SeamBookingPortletInstance</instance-ref>
+ <default>true</default>
+ <region>center</region>
+ <height>0</height>
+ </window>
+ <window>
+ <window-name>ajaxportletSecondWindow</window-name>
+ <instance-ref>SeamBookingPortletSecondInstance</instance-ref>
+ <default>true</default>
+ <region>center</region>
+ <height>0</height>
+ </window>
+ </page>
+ </deployment>
+ -->
+ <deployment>
+ <if-exists>overwrite</if-exists>
+ <parent-ref>default.default</parent-ref>
+ <window>
+ <window-name>otherAjaxportletWindow</window-name>
+ <instance-ref>SeamBookingPortletInstance</instance-ref>
+ <default>true</default>
+ <region>center</region>
+ <height>0</height>
+ </window>
+ </deployment><!--
+ <deployment>
+ <parent-ref>default</parent-ref>
+ <if-exists>overwrite</if-exists>
+ <instance>
+ <instance-name>SeamBookingPortletSecondInstance</instance-name>
+ <component-ref>seamBookingPortletApp.seamBookingPortlet</component-ref>
+ </instance>
+ </deployment>
+--></deployments>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/seamBookingPortlet-object.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/web.xml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+ <display-name>Seam Booking Example</display-name>
+
+ <context-param>
+ <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
+ <param-value>
+ org.ajax4jsf.portlet.application.FaceletPortletViewHandler
+ </param-value>
+ </context-param>
+ <!-- Seam -->
+
+ <listener>
+ <listener-class>
+ org.jboss.seam.servlet.SeamListener
+ </listener-class>
+ </listener>
+
+ <servlet>
+ <servlet-name>Seam Resource Servlet</servlet-name>
+ <servlet-class>
+ org.jboss.seam.servlet.SeamResourceServlet
+ </servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Seam Resource Servlet</servlet-name>
+ <url-pattern>/seam/resource/*</url-pattern>
+ </servlet-mapping>
+
+ <filter>
+ <filter-name>Seam Filter</filter-name>
+ <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>Seam Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <!-- JSF -->
+
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>facelets.DEVELOPMENT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.seam</url-pattern>
+ </servlet-mapping>
+
+ <session-config>
+ <session-timeout>10</session-timeout>
+ </session-config>
+
+</web-app>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/WEB-INF/web.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Added: trunk/samples/seamBookingPortlet/src/main/webapp/book.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/book.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/book.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,122 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:a="http://richfaces.org/a4j"
+ xmlns:rich="http://richfaces.org/rich"
+ template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+<div class="section">
+ <h1>Book Hotel</h1>
+</div>
+<div class="section">
+ <div class="entry errors">
+ <h:messages globalOnly="true"/>
+ </div>
+
+ <ui:include src="hotelview.xhtml"/>
+
+ <div style="clear:both"/>
+
+ <h:form id="booking">
+ <fieldset>
+
+ <s:decorate id="checkinDateDecorate" template="edit.xhtml">
+ <ui:define name="label">Check In Date:</ui:define>
+ <rich:calendar id="checkinDate" value="#{booking.checkinDate}" required="true" datePattern="MM/dd/yyyy" event="onblur" reRender="checkinDateDecorate" />
+ </s:decorate>
+
+ <s:decorate id="checkoutDateDecorate" template="edit.xhtml">
+ <ui:define name="label">Check Out Date:</ui:define>
+ <rich:calendar id="checkoutDate" value="#{booking.checkoutDate}" required="true" datePattern="MM/dd/yyyy" event="onblur" reRender="checkoutDateDecorate" />
+ </s:decorate>
+
+ <s:decorate id="bedsDecorate" template="edit.xhtml">
+ <ui:define name="label">Room Preference:</ui:define>
+ <h:selectOneMenu id="beds" value="#{booking.beds}">
+ <f:selectItem itemLabel="One king-size bed" itemValue="1"/>
+ <f:selectItem itemLabel="Two double beds" itemValue="2"/>
+ <f:selectItem itemLabel="Three beds" itemValue="3"/>
+ </h:selectOneMenu>
+ </s:decorate>
+
+ <s:decorate id="smokingDecorate" template="edit.xhtml">
+ <ui:define name="label">Smoking Preference:</ui:define>
+ <h:selectOneRadio id="smoking" value="#{booking.smoking}" layout="pageDirection" styleClass="radio">
+ <f:selectItem itemLabel="Smoking" itemValue="true"/>
+ <f:selectItem itemLabel="Non Smoking" itemValue="false"/>
+ </h:selectOneRadio>
+ </s:decorate>
+
+ <s:decorate id="creditCardDecorate" template="edit.xhtml">
+ <ui:define name="label">Credit Card #:</ui:define>
+ <h:inputText id="creditCard" value="#{booking.creditCard}" required="true">
+ <a:support event="onblur" reRender="creditCardDecorate"/>
+ </h:inputText>
+ </s:decorate>
+
+ <s:decorate id="creditCardNameDecorate" template="edit.xhtml">
+ <ui:define name="label">Credit Card Name:</ui:define>
+ <h:inputText id="creditCardName" value="#{booking.creditCardName}" required="true">
+ <a:support event="onblur" reRender="creditCardNameDecorate"/>
+ </h:inputText>
+ </s:decorate>
+
+ <s:decorate id="creditCardExpiryDecorate" template="edit.xhtml">
+ <ui:define name="label">Credit Card Expiry:</ui:define>
+ <h:selectOneMenu id="creditCardExpiryMonth" value="#{booking.creditCardExpiryMonth}">
+ <f:selectItem itemLabel="Jan" itemValue="1"/>
+ <f:selectItem itemLabel="Feb" itemValue="2"/>
+ <f:selectItem itemLabel="Mar" itemValue="3"/>
+ <f:selectItem itemLabel="Apr" itemValue="4"/>
+ <f:selectItem itemLabel="May" itemValue="5"/>
+ <f:selectItem itemLabel="Jun" itemValue="6"/>
+ <f:selectItem itemLabel="Jul" itemValue="7"/>
+ <f:selectItem itemLabel="Aug" itemValue="8"/>
+ <f:selectItem itemLabel="Sep" itemValue="9"/>
+ <f:selectItem itemLabel="Oct" itemValue="10"/>
+ <f:selectItem itemLabel="Nov" itemValue="11"/>
+ <f:selectItem itemLabel="Dec" itemValue="12"/>
+ </h:selectOneMenu>
+ <h:selectOneMenu id="creditCardExpiryYear" value="#{booking.creditCardExpiryYear}">
+ <f:selectItem itemLabel="2005" itemValue="2005"/>
+ <f:selectItem itemLabel="2006" itemValue="2006"/>
+ <f:selectItem itemLabel="2007" itemValue="2007"/>
+ <f:selectItem itemLabel="2008" itemValue="2008"/>
+ <f:selectItem itemLabel="2009" itemValue="2009"/>
+ </h:selectOneMenu>
+ </s:decorate>
+
+ <div class="buttonBox">
+ <h:commandButton id="proceed" value="Proceed" action="#{hotelBooking.setBookingDetails}"/>
+  
+ <s:button id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>
+ </div>
+
+ </fieldset>
+ </h:form>
+</div>
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>Workspace management</h1>
+<p>
+ As you can see, Seam makes it easy to work in multiple windows or multiple browser
+ tabs. But you can even switch between multiple tasks inside a single browser tab!
+ The "Workspaces" section showcases this advanced feature.
+</p>
+<p>
+ <a href="#" onclick="window.open('exp/workspaceExp.html','exp','width=752,height=500,scrollbars=yes');">
+ How does the workspace list work?
+ </a>
+</p>
+
+</ui:define>
+
+</ui:composition>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/book.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/confirm.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/confirm.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/confirm.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,74 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+ <h1>Confirm Hotel Booking</h1>
+</div>
+
+<div class="section">
+
+ <ui:include src="hotelview.xhtml"/>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Total Payment:</ui:define>
+ <h:outputText value="#{booking.total}">
+ <f:convertNumber type="currency" currencySymbol="$"/>
+ </h:outputText>
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Check In Date:</ui:define>
+ <h:outputText value="#{booking.checkinDate}"/>
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Check Out Date:</ui:define>
+ <h:outputText value="#{booking.checkoutDate}"/>
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Credit Card #:</ui:define>
+ #{booking.creditCard}
+ </s:decorate>
+
+ <div class="buttonBox">
+ <h:form id="confirm">
+ <h:commandButton id="confirm" value="Confirm" action="#{hotelBooking.confirm}"/>
+  
+ <s:button id="revise" value="Revise" view="/book.xhtml"/>
+  
+ <h:commandButton id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>
+ </h:form>
+ </div>
+
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+<h1>Back button navigation</h1>
+<p>
+ When you click "Confirm", the new booking is written to the database, the
+ conversation ends, and state associated with the conversation is automatically
+ destroyed by Seam. After you confirm your booking, try hitting the back button
+ on your web browser and clicking "Confirm" again. Seam makes it easy implement
+ applications that behave elegantly in response to the back, forward and refresh
+ buttons.
+</p>
+<p>
+ <a href="#" onclick="window.open('exp/confirmExp.html','exp','width=752,height=500,scrollbars=yes');">
+ What happens when the conversation ends?
+ </a>
+</p>
+</ui:define>
+
+</ui:composition>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/confirm.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/conversations.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/conversations.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/conversations.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,36 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+ <div>
+
+ <div class="section">
+ <h1><h:outputText rendered="#{not empty conversationList}" value="Workspaces"/></h1>
+ </div>
+
+ <div class="section">
+ <h:form>
+ <h:dataTable value="#{conversationList}" var="entry">
+ <h:column>
+ <h:commandLink action="#{entry.select}" value="#{entry.description}"/>
+  
+ <h:outputText value="[current]" rendered="#{entry.current}"/>
+ </h:column>
+ <h:column>
+ <h:outputText value="#{entry.startDatetime}">
+ <s:convertDateTime type="time" pattern="hh:mm"/>
+ </h:outputText>
+ -
+ <h:outputText value="#{entry.lastDatetime}">
+ <s:convertDateTime type="time" pattern="hh:mm"/>
+ </h:outputText>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+ </div>
+
+ </div>
+</ui:composition>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/conversations.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/css/date.css
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/css/date.css (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/css/date.css 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,185 @@
+div.seam-date
+{
+ margin-top: 5px;
+ border: 1px solid #AAAAAA;
+ background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+ background-color: #FFFFFF;
+ color: #505050;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+
+table.seam-date td {
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+}
+
+.seam-date-monthNames
+{
+ width: 70px;
+ border: 1px solid #dddddd;
+ border-right: 3px solid #444444;
+ border-bottom: 3px solid #444444;
+ background-color: #ffffff;
+ font-size: 12px;
+ cursor: pointer;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+a.seam-date-monthNameLink, a.seam-date-monthNameLink:visited
+{
+ text-align: center;
+ display: block;
+ color: #555555;
+}
+
+a.seam-date-monthNameLink:hover
+{
+ background-color: #CCCCCC;
+ color: red;
+}
+
+.seam-date-years
+{
+ height: 10em;
+ overflow: auto;
+ width: 60px;
+ border: 1px solid #dddddd;
+ border-right: 3px solid #444444;
+ border-bottom: 3px solid #444444;
+ background-color: #ffffff;
+ font-size: 12px;
+ cursor: pointer;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+a.seam-date-yearLink, a.seam-date-yearLink:visited
+{
+ text-align: center;
+ display: block;
+ color: #555555;
+}
+
+a.seam-date-yearLink:hover
+{
+ background-color: #CCCCCC;
+ color: red;
+}
+
+tr.seam-date-header
+{
+ padding: 2px 0px 2px 0px;
+}
+
+td.seam-date-header
+{
+ padding: 0px 8px 0px 8px;
+ text-align: center;
+ color: gray;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 12px;
+}
+
+td.seam-date-header-prevMonth
+{
+ background-image: url("../img/cal-prev.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding: 0px 2px 0px 2px;
+ width: 17px;
+ height: 16px;
+ margin-left: 2px;
+}
+
+td.seam-date-header-nextMonth
+{
+ background-image: url("../img/cal-next.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding: 0px 2px 0px 2px;
+ width: 17px;
+ height: 16px;
+ margin-right: 2px;
+}
+
+tr.seam-date-headerDays
+{
+ color: white;
+ font-weight: normal;
+}
+
+tr.seam-date-headerDays > td
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ color: white;
+ text-align: center;
+ width: 26px;
+}
+
+tr.seam-date-footer
+{
+ background-color: white;
+ color: #505050;
+ font-weight: bold;
+}
+
+tr.seam-date-footer > td
+{
+ text-align: center;
+}
+
+td.seam-date-inMonth
+{
+ background-color: white;
+ color: black;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-outMonth
+{
+ background-color: white;
+ color: #999999;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-selected
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ color: black;
+ font-weight: normal;
+}
+
+td.seam-date-dayOff-inMonth
+{
+ background-color: #efefef;
+ color: black;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-dayOff-outMonth
+{
+ background-color: #efefef;
+ color: #999999;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-hover
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ cursor: pointer;
+ color: red;
+}
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/css/date.css
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/css/screen.css
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/css/screen.css (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/css/screen.css 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,274 @@
+/* Setup defaults since variable in browsers
+----------------------------------------------- */
+body, div, span, dd, dt, dl, img, ul, ol, li, p, h1, h2, h3, h4, h5, form, hr, fieldset {
+ margin: 0;
+ padding: 0;
+}
+/* Element Defaults
+----------------------------------------------- */
+html {
+ height: 100%;
+ background-color: #DBD4C6;
+}
+img {
+ border: 0;
+}
+body {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: small;
+ line-height: 1.25em;
+ color: #362F2D;
+ position: relative;
+ width: 760px;
+ height: 100%;
+ margin-left: auto;
+ margin-right: auto;
+}
+.label {
+ font-weight: bold;
+ color: #5E5147;
+}
+input {
+ border: 1px solid #C3BBB6;
+ padding: 4px;
+ margin: 5px 0;
+ background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+}
+select {
+ border: 1px solid #C3BBB6;
+ padding: 4px;
+ margin: 5px 0;
+ background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+}
+ol, ul {
+ margin: 10px 0px 10px 6px;
+}
+li {
+ margin: 10px 12px;
+}
+fieldset {
+ border: 0;
+}
+/* Layout
+----------------------------------------------- */
+#document {
+ padding: 0 1px;
+ background: #fff url(../img/bg.gif) 0 0 repeat-y;
+ float: left;
+ border-bottom: 1px solid #C3BBB6;
+}
+#header {
+ float: left;
+ width: 758px;
+ height: 46px;
+ background: url(../img/hdr.bg.gif) 0 0 repeat-x;
+}
+#container {
+ float: left;
+ width: 758px;
+ background: url(../img/hdr.bar.jpg) 0 0 repeat-x;
+}
+#sidebar {
+ float: left;
+ width: 190px;
+ margin-top: 96px;
+ padding: 20px 10px 0 10px;
+ background: url(../img/sdb.bg.gif) 0 0 no-repeat;
+}
+#content {
+ float: left;
+ width: 548px;
+ margin-top: 75px;
+ padding-top: 5px;
+ background: #fff url(../img/cnt.bg.gif) 0 0 repeat-x;
+}
+#footer {
+ clear: both;
+ margin-top: 40px;
+ float: left;
+ padding: 20px;
+ border-top: 1px solid #C3BBB6;
+ background-color: #fff;
+ width: 718px;
+ text-align: right;
+}
+/* General
+----------------------------------------------- */
+input[type="submit"], input[type="button"] {
+ font-weight: bold;
+ color: #fff;
+ border: 1px solid #5D1414;
+ height: 26px;
+ background: #fff url(../img/btn.bg.gif) 0 0 repeat-x;
+ border-style: none;
+}
+.center {
+ text-align: center;
+}
+.entry {
+ clear: both;
+ padding-top: 10px;
+}
+.entry .label {
+ float: left;
+ padding-right: 5px;
+ font-weight: bold;
+ width: 150px;
+ text-align: right;
+}
+.entry .output {
+ float: right;
+ width: 360px;
+ padding-top: 10px;
+ text-align: left;
+}
+.entry .input {
+ float: right;
+ width: 360px;
+ text-align: left;
+}
+.entry .error {
+ float: right;
+ width: 360px;
+ text-align: left;
+}
+/* Sidebar
+----------------------------------------------- */
+.notes {
+ text-align: center;
+ font-size: small;
+}
+.errors {
+ font-size: small;
+ font-weight: bold;
+ text-align: center;
+ color: #600;
+}
+.errors div {
+ text-align: left;
+}
+.errors span {
+ text-align: left;
+}
+.errors input {
+ border: 1px solid #600;
+}
+.errors ul {
+ list-style: none;
+}
+.buttonBox {
+ text-align: center;
+ padding: 5px 0;
+ clear: both;
+}
+#sidebar p {
+ font-size: small;
+ color: #8B7869;
+ line-height: 150%;
+ padding-bottom: 10px;
+}
+#sidebar li {
+ font-size: small;
+ color: #8B7869;
+}
+#sidebar h1 {
+ line-height: normal;
+ font-weight: bold;
+ font-size: small;
+}
+/*
+#sidebar p:hover {
+ color: #362F2D;
+}
+*/
+/* Content
+----------------------------------------------- */
+#content .section {
+ float: left;
+ width: 518px;
+ padding: 15px 15px 0 15px;
+}
+#content .section h1 {
+ font-family: "Trebuchet MS", Arial, sans-serif;
+ line-height: normal;
+ font-weight: normal;
+ font-size: large;
+}
+#content .section p {
+ line-height: 150%;
+ padding: 10px 0;
+ font-size: small;
+}
+#content table {
+ width: 100%;
+ border: 1px solid #D2C9C4;
+ border-collapse: collapse;
+}
+#content table caption {
+ padding-bottom: 6px;
+ text-align: left;
+ font-weight: bold;
+}
+#content table thead th {
+ border-left: 1px solid #D2C9C4;
+ background: #fff url(../img/th.bg.gif) 0 100% repeat-x;
+ border-bottom: 1px solid #D2C9C4;
+ padding: 6px;
+ text-align: left;
+ font-size: small;
+}
+#content table tbody td {
+ border-left: 1px solid #E4DBD5;
+ padding: 4px;
+ border-bottom: 1px solid #D2C9C4;
+ font-size: small;
+}
+#content dt {
+ font-weight: bold;
+ float: left;
+ width: 33%;
+}
+#content dd {
+ padding-left: 10px;
+ float: left;
+ width: 66%;
+}
+#content table.radio {
+ border: 0px;
+}
+#content table.radio tbody tr td {
+ border: 0px;
+ border-left: 0px;
+ border-bottom: 0px;
+}
+/* Header
+----------------------------------------------- */
+#title {
+ float: left;
+ padding: 1px 0 6px 15px;
+}
+#status {
+ color: #C7B299;
+ float: right;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: x-small;
+ text-align: right;
+ padding-top: 14px;
+ padding-right: 15px;
+}
+#status a {
+ color: #C7B299;
+ text-decoration: none;
+}
+/* Homepage Modifications
+----------------------------------------------- */
+#pgHome #container {
+ background: url(../img/hdr.ad.jpg) 0 0 repeat-x;
+}
+#pgHome #sidebar {
+ margin-top: 207px;
+}
+#pgHome #content {
+ margin-top: 183px;
+}
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/css/screen.css
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/css/trailblazer_main.css
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/css/trailblazer_main.css (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/css/trailblazer_main.css 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,148 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+}
+
+body {
+ font: 1em verdana, arial, sans-serif;
+ background: #CCCCCC;
+}
+
+div#main {
+ margin-left: 0px;
+ width: 751px;
+ background: #ecefdf;
+}
+
+div#top,div#pictures{
+}
+
+div#pictures img {
+ float:left;
+}
+
+img#head1 {
+ margin-right: 3px;
+}
+
+img#head2 {
+ margin-right: 4px;
+}
+
+div.trail {
+ clear:both;
+ margin-left: 50px;
+ margin-top: 0px;
+ margin-right: 50px
+}
+
+div.foot {
+ margin-left: 50px;
+ margin-right: 50px;
+ margin-top: 50px;
+ text-align: center;
+ font-size: .5em;
+ height: 36px;
+}
+
+div.trail h1 {
+ margin-top: -30px;
+ margin-left: -50px;
+ font-size: 1.2em;
+ font-weight: bold;
+ padding-left: .4em;
+}
+
+div.trail h2 {
+ float: left;
+ font-size: 1em;
+ font-weight: bold;
+ padding-left: .4em;
+}
+
+div.trail h3 {
+ float: left;
+ font-size: .8em;
+ font-weight: bold;
+ margin-left: -1.4em;
+ margin-bottom: 1em;
+}
+
+
+div.trail p {
+ clear: both;
+ margin-top: 20px;
+ font-size: .8em;
+ text-decoration: none;
+}
+
+div#next_trail {
+ margin-left: 36px;
+}
+
+div.numbox {
+ border: thin solid black;
+ margin-left: -.8em;
+ float: left;
+ background: #ffffff;
+ padding: .2em .35em .3em;
+ font-style: normal;
+ font-weight: bold;
+ font-size: 1.4em;
+}
+
+div.figure {
+ text-align: center;
+ font-size: .6em;
+ margin-top: 30px;
+}
+
+div.figure img {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+code {
+ font: 1.1em "Courier New", Courier, mono;
+}
+
+code.block {
+ white-space: pre;
+ font: 10pt "Courier New", Courier, mono;
+ display: block;
+ border-style: dashed;
+ border-width: thin;
+ padding: .5em;
+ background: #ffffff;
+ margin: 20px;
+}
+
+div.foot_image {
+ float: left;
+ height: 86px;
+}
+
+a:active {
+ color : #666666;
+ text-decoration: none;
+}
+
+a:hover {
+ color : #000000;
+ background-color : #D6E0FE;
+ text-decoration: none;
+}
+
+a:link {
+ color : #005EB6;
+ text-decoration: none;
+}
+
+a:visited {
+ color : #888888;
+ text-decoration: none;
+}
+
+
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/css/trailblazer_main.css
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/display.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/display.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/display.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,16 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <div class="entry">
+ <span class="label">
+ <ui:insert name="label"/>
+ </span>
+ <span class="input">
+ <ui:insert/>
+ </span>
+ </div>
+
+</ui:composition>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/display.xhtml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/edit.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/edit.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/edit.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,21 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <div class="entry">
+ <s:label styleClass="label #{invalid?'errors':''}">
+ <ui:insert name="label"/>
+ <s:span styleClass="required" rendered="#{required}">*</s:span>
+ </s:label>
+ <span class="input #{invalid?'errors':''}">
+ <s:validateAll>
+ <ui:insert/>
+ </s:validateAll>
+ </span>
+ <s:message styleClass="error errors"/>
+ </div>
+
+</ui:composition>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/edit.xhtml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/bookingExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/bookingExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/bookingExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">5</div>
+ <h2>Conversations</h2>
+ <img src="../img/header_line.gif" />
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ <p>
+ The hotel booking "wizard" is implemented by a conversation-scoped
+ stateful session bean. All Seam components are in the
+ conversation scope by default.
+ The <code>HotelBookingAction</code> maintains
+ state associated with the booking process in the Seam conversation
+ scope. This ensures that if the user is working in multiple brower
+ tabs or multiple brower windows, the various conversations are
+ completely isolated from each other.
+ </p>
+ <p>
+ To see this working in practice, right click on the "View Hotel" button
+ in the search screen and select "open in new tab" or "open in new window",
+ and try working on multiple hotel bookings simultaneously.
+ In the <a href="workspaceExp.html">next step</a>, we will discuss
+ Seam's built-in components to manage multiple concurrent conversations.
+ </p>
+
+<code class="block">
+@Stateful
+@Name("hotelBooking")
+@LoggedIn
+public class HotelBookingAction implements HotelBooking
+{
+
+ @PersistenceContext(type=EXTENDED)
+ private EntityManager em;
+
+ @In
+ private User user;
+
+ @In(required=false) @Out
+ private Hotel hotel;
+
+ @In(required=false)
+ @Out(required=false)
+ private Booking booking;
+
+ @In(create=true)
+ private FacesMessages facesMessages;
+
+ @In(create=true)
+ private Events events;
+
+ @In
+ private HotelSearching hotelSearch;
+
+ @Logger
+ private Log log;
+
+ private boolean bookingValid;
+
+ @Begin
+ public void selectHotel(Hotel selectedHotel)
+ {
+ hotel = em.merge(selectedHotel);
+ }
+
+ public void bookHotel()
+ {
+ booking = new Booking(hotel, user);
+ Calendar calendar = Calendar.getInstance();
+ booking.setCheckinDate( calendar.getTime() );
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ booking.setCheckoutDate( calendar.getTime() );
+ }
+
+
+ public void setBookingDetails()
+ {
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
+ if ( booking.getCheckinDate().before( calendar.getTime() ) )
+ {
+ facesMessages.addToControl("checkinDate", "Check in date must be a future date");
+ bookingValid=false;
+ }
+ else if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+ {
+ facesMessages.addToControl("checkoutDate", "Check out date must be later than check in date");
+ bookingValid=false;
+ }
+ else
+ {
+ bookingValid=true;
+ }
+ }
+
+ public boolean isBookingValid()
+ {
+ return bookingValid;
+ }
+
+ @End
+ public void confirm()
+ {
+ em.persist(booking);
+ facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+ log.info("New booking: #{booking.id} for #{user.username}");
+ events.raiseTransactionSuccessEvent("bookingConfirmed");
+ }
+
+ @End
+ public void cancel() {}
+
+ @Remove
+ public void destroy() {}
+}</code>
+
+ <p>
+ The conversation begins when the <code>@Begin</code> annotated
+ <code>selectHotel()</code> is called, and ends when
+ the <code>@End</code> annotated
+ <code>confirm()</code> or <code>cancel()</code> is called. Between the
+ <code>@Begin</code> and <code>@End</code> methods, the user can do
+ any number of things with the application (i.e., invoke any
+ event handler method or use the BACK button etc.) and the
+ <code>hotelBooking</code> maintains its state throughout the process.
+ When the <code>@End</code> method is called, Seam destroys this
+ component and avoids any memory leak.
+ </p>
+
+ <p>
+ However, none of the <code>HotelBookingAction</code> bean methods
+ may be called outside of a long-running conversation.
+ So if we try to use the
+ back button after the end of the conversation, Seam will redirect to the main page, with an
+ error message.
+ </p>
+
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/bookingExp.html
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/confirmExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/confirmExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/confirmExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">7</div>
+ <h2>Ending Conversations</h2>
+ <img src="../img/header_line.gif" />
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ <p>
+ The "Confirm" button is bound to the action method <code>confirm()</code>
+ of <code>HotelBookingAction</code>.
+ </p>
+
+<code class="block">
+<h:commandButton value="Confirm"
+ action="#{hotelBooking.confirm}"
+ id="confirm"/>
+</code>
+
+ <p>
+ The <code>confirm()</code> method is tagged with the <code>@End</code> annotation,
+ which ends the long-running conversation and results in all state associated with
+ the conversation being destroyed at the end of the request.
+ Since the <code>pages.xml</code> file specifies a redirect for this action, the state
+ will not be destroyed
+ until <em>after the redirect completes</em>. Note that even the success message
+ that we create using the built-in <code>facesMessages</code> component is transparently
+ propagated across the redirect!
+ </p>
+
+<code class="block">
+ @End
+ public void confirm()
+ {
+ if (booking==null || hotel==null) return "main";
+ em.persist(booking);
+ facesMessages.add("Thank you, #{user.name}, your confimation number " +
+ "for #{hotel.name} is #{booking.id}");
+ log.info("New booking: #{booking.id} for #{user.username}");
+ events.raiseEvent("bookingConfirmed");
+ }
+
+ @End
+ public void cancel() {}
+
+ @Destroy @Remove
+ public void destroy() {}
+}
+</code>
+
+ <p>
+ When the conversation state is finally destroyed, Seam calls the <code>@Destroy</code> method,
+ which results in removal of the SFSB.
+ </p>
+
+ <p>
+ Notice that the <code>HotelBookingAction.confirm()</code> method
+ raises a <code>bookingConfirmed</code> event before it finishes. The
+ event mechanism allows Seam components to communicate with each other
+ without direct coupling. In this case, the <code>BookingListAction</code>
+ component captures the <code>bookingConfirmed</code> event and refreshes
+ the existing booking list for the current user.
+ </p>
+
+<code class="block">
+public class BookingListAction implements BookingList, Serializable
+{
+
+ ... ...
+
+ @Factory
+ @Observer("bookingConfirmed")
+ public void getBookings()
+ {
+ bookings = em.createQuery("from Booking b where b.user.username = " +
+ ":username order by b.checkinDate")
+ .setParameter("username", user.getUsername())
+ .getResultList();
+ }
+}
+</code>
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/confirmExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/introExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/introExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/introExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">1</div>
+ <h2>What is JBoss Seam</h2>
+ <img src="../img/header_line.gif" />
+
+ <p>
+ <center>
+ <form>
+ <INPUT type="button" value="Close Window" onclick="window.close()">
+ </form>
+ </center>
+ </p>
+
+ <p>
+ EJB 3.0 and JSF are perhaps the most exciting new developments in the Java EE 5 platform.
+ Seam is an innovative new application framework that integrates the EJB 3.0 component model
+ with JSF as a presentation tier. Seam builds upon the standard extension points provided by
+ both specifications and provides a set of Java annotations that extends the standard
+ annotations defined by the EJB specification. In addition, Seam introduces several innovative
+ new ideas: managed conversations, declarative and contextual application state management,
+ bijection and integrated business process management.
+ </p>
+
+ <p>
+ Traditional web applications are incredibly vulnerable to bugs and performance problems
+ relating to state management. Developers are forced to handle issues like back button
+ navigation, multi-window browsing, session size management in an utterly ad-hoc fashion.
+ Access to transactional components from the web tier has also been problematic. J2EE
+ provided no way to have simultaneous access to state held in contexts associated with
+ the web request, and state held in transactional resources accessed via EJB. Finally,
+ J2EE had no first-class construct for representing state associated with a long-running
+ business process. Seam tackles all these problems, and provides a uniform model for
+ stateful components in Java EE 5.
+ </p>
+
+ <p>
+ Like all JBoss software, this entire software stack is free. The full source code of this
+ sample application is available in the <code>examples/booking</code> directory of the
+ <a href="http://www.jboss.com/products/list/downloads#seam">Seam distribution</a>.
+ <!--
+ There is even a
+ <a target="_blank" href="http://docs.jboss.com/TrailBlazer/seam-booking/Seam.htm">
+ 10-minute flash demo
+ </a>
+ showing how to build a Seam web application from ground up.
+ -->
+ </p>
+
+ <p>
+ <center>
+ <form>
+ <INPUT type="button" value="Close Window" onclick="window.close()">
+ </form>
+ </center>
+ </p>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/introExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/loginExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/loginExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/loginExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">2</div>
+ <h2>What happens when you login?</h2>
+ <img src="../img/header_line.gif" />
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ <p>
+ The login page is defined using pure XHTML with JSF controls.
+ The form uses JSF EL value binding and method binding
+ expressions to refer to Seam components. For example,
+ <code>#{identity.username}</code> refers to a property of the
+ <code>Identity</code> component and <code>#{identity.login}</code>
+ refers to a method of the <code>Identity</code> component.
+ </p>
+
+<code class="block">
+<div>
+ <h:outputLabel for="username">Login Name</h:outputLabel>
+ <h:inputText id="username" value="#{identity.username}" />
+</div>
+<div>
+ <h:outputLabel for="password">Password</h:outputLabel>
+ <h:inputSecret id="password" value="#{identity.password}" />
+</div>
+
+... ...
+
+<div class="buttonBox">
+ <h:commandButton id="login"
+ action="#{identity.login}"
+ value="Account Login" />
+</div>
+</code>
+
+ <p>
+ After logging in, the <code>User</code> enity bean is mapped to the Seam
+ context variable named <code>user</code> bean via the
+ <code>@Name</code> annotation. <code>User</code> is
+ a session scoped bean, meaning that the <code>user</code>
+ component value is retained for the entire session for
+ each user. You might also notice there are validation annotation
+ on the data properties. We will discuss those annotations in the
+ <a href="registerExp.html">next step</a>.
+ </p>
+
+<code class="block">
+@Entity
+@Name("user")
+@Scope(SESSION)
+public class User implements Serializable {
+ private String username;
+ private String password;
+ private String name;
+
+ @NotNull
+ @Length(min=5, max=15)
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+
+ @Id
+ @Length(min=4, max=15)
+ @Pattern(regex="^\\w*$", message="not a valid username")
+ public String getUsername () {
+ return username;
+ }
+ public void setUsername (String username) {
+ this.username = username;
+ }
+
+ // ... ...
+}
+</code>
+
+ <p>
+ Seam comes with its own Security framework, based on JAAS. It allows you
+ to perform user authentication by configuring your own authentication method
+ in <code>components.xml</code>.
+ </p>
+
+<code class="block">
+ <security:identity authenticate-method="#{authenticator.authenticate}"/>
+</code>
+
+ <p>
+ <code>AuthenticatorAction</code> is an EJB 3.0 session bean mapped
+ to the Seam context variable named <code>authenticator</code>. When
+ the login button is clicked, the JSF method binding
+ <code>#{identity.login}</code> is evaluated, and based upon the previous configuration, the
+ <code>authenticate()</code> method is invoked upon <code>AuthenticatorAction</code>.
+ </p>
+
+<code class="block">
+@Stateless
+@Scope(EVENT)
+@Name("authenticator")
+public class AuthenticatorAction implements Authenticator
+{
+ @PersistenceContext EntityManager em;
+
+ @Out(required=false, scope = SESSION)
+ private User user;
+
+ public boolean authenticate()
+ {
+ List results = em.createQuery("select u from User u where" +
+ " u.username=#{identity.username}" +
+ " and u.password=#{identity.password}")
+ .getResultList();
+
+ if ( results.size()==0 )
+ {
+ return false;
+ }
+ else
+ {
+ user = (User) results.get(0);
+ return true;
+ }
+ }
+}
+</code>
+
+ <p>
+ The <code>@Out</code>
+ annotation indicates the <code>AuthenticatorAction</code> bean can change the
+ value of the <code>user</code> context variable and make the new instance
+ available to other session beans and JSF pages. The query expression
+ makes use of a special syntax in Seam that allows EL expressions to
+ serve as query parameters. This query references the <code>identity</code> component,
+ a built-in Seam component that provides security functionality.
+ </p>
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/loginExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/mainExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/mainExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/mainExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,214 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">4</div>
+ <h2>Stateful components</h2>
+ <img src="../img/header_line.gif" />
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ <p>
+ The hotel search page is backed by the a stateful session bean named
+ <code>hotelSearch</code> and implemented by the class
+ <code>HotelSearchingAction</code>.
+ </p>
+
+<code class="block">
+<h:inputText id="searchString" value="#{hotelSearch.searchString}" >
+ <a:support event="onkeyup" actionListener="#{hotelSearch.find}"
+ reRender="searchResults"/>
+</h:inputText>
+
+<h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize">
+ <f:selectItem itemLabel="5" itemValue="5"/>
+ <f:selectItem itemLabel="10" itemValue="10"/>
+ <f::selectItem itemLabel="20" itemValue="20"/>
+</h:selectOneMenu>
+</code>
+
+ <p>
+ When the button is clicked, the form is submitted and JSF sets the value
+ of the text box and drop down menu onto the <code>searchString</code> and
+ <code>pageSize</code> attributes of <code>HotelSearchingAction</code>
+ before calling the <code>find()</code> action listener method. We've used a
+ session-scope stateful bean because we want it's state (the search results) to
+ be held in the session between requests to the server. The <code><a:support></code>
+ tax specfies that after a keypress, the contents of the <code><a:outputPanel></code> whose
+ id is <code>searchResults</code> should be rerendererd. This is done through an AJAX-style
+ call back to the server with no additional code required of the application.
+ </p>
+
+<code class="block">
+@Stateful
+@Name("hotelSearch")
+(a)Scope(ScopeType.SESSION)
+@LoggedIn
+public class HotelSearchingAction implements HotelSearching
+{
+ @PersistenceContext
+ private EntityManager em;
+
+ private String searchString;
+ private int pageSize = 10;
+ private int page;
+
+ @DataModel
+ private List<Hotel> hotels;
+
+ public void find()
+ {
+ page = 0;
+ queryHotels();
+ }
+ public void nextPage()
+ {
+ page++;
+ queryHotels();
+ }
+
+ private void queryHotels()
+ {
+ hotels = em.createQuery("select h from Hotel h where lower(h.name) " +
+ "like #{pattern} or lower(h.city) like #{pattern} " +
+ "or lower(h.zip) like #{pattern} or " +
+ "lower(h.address) like #{pattern}")
+ .setMaxResults(pageSize)
+ .setFirstResult( page * pageSize )
+ .getResultList();
+ }
+
+ public boolean isNextPageAvailable()
+ {
+ return hotels!=null && hotels.size()==pageSize;
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ @Factory(value="pattern", scope=ScopeType.EVENT)
+ public String getSearchPattern()
+ {
+ return searchString==null ?
+ "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
+ }
+
+ public String getSearchString()
+ {
+ return searchString;
+ }
+
+ public void setSearchString(String searchString)
+ {
+ this.searchString = searchString;
+ }
+
+ @Remove
+ public void destroy() {}
+}</code>
+
+ <p>
+ The <code>find()</code> method retrieves a list of hotels from the database and
+ initializes the <code>hotels</code> field. The <code>hotels</code> field is marked
+ with the <code>@DataModel</code> annotation, so when the <code>find()</code> method
+ returns, Seam outjects an instance of <code>ListDataModel</code> to a context
+ variable named <code>hotels</code>. So, when the search page is re-rendered, the
+ result list is available to the JSF <code>dataTable</code>.
+ Each row of the data table has an associated command button or link
+ (see below).
+ </p>
+
+<code class="block">
+<h:outputText value="No Hotels Found"
+ rendered="#{hotels != null and hotels.rowCount==0}"/>
+<h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
+ <h:column>
+ <f:facet name="header">Name</f:facet>
+ #{hot.name}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Address</f:facet>
+ #{hot.address}
+ </h:column>
+ <h:column>
+ <f:facet name="header">City, State</f:facet>
+ #{hot.city}, #{hot.state}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Zip</f:facet>
+ #{hot.zip}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Action</f:facet>
+ <s:link value="View Hotel"
+ action="#{hotelBooking.selectHotel(hot)}"/>
+ </h:column>
+</h:dataTable>
+</code>
+
+ <p>
+ The "View Hotel" link is the above mentioned command link associated
+ with each row of the data table. It is implemented
+ using a Seam <code><s:link></code>, which is part of Seam's
+ extension of JSF controls.
+ This JSF control let's us call an action, and pass a request parameter, without
+ submitting any JSF form. The advantage of <code><s:link></code> is that,
+ unlike a standard JSF <code><h:commandLink></code>, there is no JavaScript
+ used, so "open link in new tab" works seamlessly.
+ </p>
+ <p>
+ When this link is clicked, the <code>selectHotel()</code> method of the
+ <code>HotelBookingAction</code> bean is called with the <code>hot</code>
+ parameter that is specified in the query. The parameter values are evaluated
+ at invocation time, not when the link is generated, so the <code><s:link></code>
+ tag adds a dataModelSelection parameter that indicates the value of the
+ <code>hot</code> loop variable for the given row.</p>
+ <p> The <code>selectHotel()</code> method merges the selected hotel into
+ the current persistence context (in case the same
+ hotel has been accessed before in the same session),
+ and starts a Seam conversation. We will discuss Seam conversations
+ in the next step.
+ </p>
+
+<code class="block">
+@Stateful
+@Name("hotelBooking")
+@LoggedIn
+public class HotelBookingAction implements HotelBooking
+{
+
+ ... ...
+
+ @Begin
+ public void selectHotel(Hotel selectedHotel)
+ {
+ hotel = em.merge(selectedHotel);
+ }
+}
+</code>
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/mainExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/registerExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/registerExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/registerExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">3</div>
+ <h2>What happens in the registration process?</h2>
+ <img src="img/header_line.gif" />
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ <p>
+ The register.xhtml JSF form captures the user input for new account
+ registration. It validates the user input, binds the data to a
+ Seam data component, and invokes a Seam UI event handler method
+ when the form is submitted.
+ </p>
+
+<code class="block">
+<s:validateAll>
+<div class="entry">
+ <div class="label">
+ <h:outputLabel for="username">Username:</h:outputLabel>
+ </div>
+ <div class="input">
+ <h:inputText id="username" value="#{user.username}"/><br/>
+ <span class="errors"><h:message for="username" /></span>
+ </div>
+</div>
+<div class="entry">
+ <div class="label">
+ <h:outputLabel for="name">Real Name:</h:outputLabel>
+ </div>
+ <div class="input">
+ <h:inputText id="name" value="#{user.name}" /><br/>
+ <span class="errors"><h:message for="name" /></span>
+ </div>
+</div>
+</s:validateAll>
+
+... ...
+
+ <div class="input">
+ <h:commandButton value="Register"
+ action="#{register.register}"
+ class="button"/>
+ <h:commandButton value="Cancel" action="login" class="button"/>
+ </div>
+</code>
+
+ <p>
+ The form fields are bound to properties of a Seam component named
+ <code>user</code> via JSF EL value binding expressions such as
+ <code>#{user.username}</code>. The form submit button is bound
+ to the <code>register()</code> method of the Seam component named
+ <code>register</code> using the JSF method binding expression
+ <code>#{register.register}</code>.
+ </p>
+
+ <p>
+ Notice that the input fields are enclosed by a <code><s:validateAll</code>
+ tag. This tag is part of Seam's extension to JSF. It tells the Seam
+ runtime to validate those input fields when the form is submitted.
+ The validation conditions are specified on the entity bean classes
+ those input fields map to (e.g., here the validation condition is
+ on the <code>User</code> class, see later).
+ This JSF form also includes <code><h:message></code> tags that
+ will display the results of any JSF validation failures.
+ </p>
+
+ <p>
+ The <code>User</code> class is an EJB 3.0 entity bean with a
+ <code>@Name</code> annotation that binds the bean instance to a
+ context variable named <code>user</code>. In addition to the standard
+ EJB 3.0 O/R mapping metadata, this bean features several Hibernate
+ Validator annotations such as
+ <code>@NotNull</code>, <code>@Length</code>. Due to the
+ <code><s:validateAll</code> tag in the form, these constraints are
+ automatically validated by Seam when the form is submitted. If the user
+ enters invalid data in the JSF form, the form will be redisplayed with
+ error messages.
+ </p>
+
+<code class="block">
+@Entity
+@Name("user")
+@Scope(SESSION)
+public class User implements Serializable
+{
+ private String username;
+ private String password;
+ private String name;
+
+ public User(String name, String password, String username)
+ {
+ this.name = name;
+ this.password = password;
+ this.username = username;
+ }
+
+ public User() {}
+
+ @NotNull
+ @Length(max=100)
+ public String getName()
+ {
+ return name;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ @NotNull
+ @Length(min=5, max=15)
+ public String getPassword()
+ {
+ return password;
+ }
+ public void setPassword(String password)
+ {
+ this.password = password;
+ }
+
+ @Id
+ @Length(min=5, max=15)
+ public String getUsername()
+ {
+ return username;
+ }
+ public void setUsername(String username)
+ {
+ this.username = username;
+ }
+
+}</code>
+
+ <p>
+ <code>RegisterAction</code> is an EJB 3.0 stateful session bean
+ bound to the Seam context variable named <code>register</code>.
+ The <code>register()</code> method is invoked when the form is
+ submitted.
+ </p>
+
+<code class="block">
+@Stateful
+@Scope(EVENT)
+@Name("register")
+public class RegisterAction implements Register
+{
+
+ @In
+ private User user;
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @In(create=true)
+ private transient FacesMessages facesMessages;
+
+ private String verify;
+
+ public String register()
+ {
+ if ( user.getPassword().equals(verify) )
+ {
+ List existing = em.createQuery("select username from User " +
+ "where username=:username")
+ .setParameter("username", user.getUsername())
+ .getResultList();
+ if (existing.size()==0)
+ {
+ em.persist(user);
+ return "login";
+ }
+ else
+ {
+ facesMessages.add("username #{user.username} already exists");
+ return null;
+ }
+ }
+ else
+ {
+ facesMessages.add("re-enter your password");
+ verify=null;
+ return null;
+ }
+ }
+
+ public String getVerify()
+ {
+ return verify;
+ }
+
+ public void setVerify(String verify)
+ {
+ this.verify = verify;
+ }
+
+ @Destroy @Remove
+ public void destroy() {}
+}</code>
+
+ <p>
+ The <code>@In</code> annotations inject Seam components into the <code>RegisterAction</code>
+ bean. The <code>user</code> component is our entity bean, of course. The <code>facesMessages</code>
+ component is a built-in Seam component that makes it very easy to display templated and localized
+ messages to the user, even when redirect after post is used.
+ </p>
+
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/registerExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/exp/workspaceExp.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/exp/workspaceExp.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/exp/workspaceExp.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>In-depth Explanation</title>
+ <link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+ <div class="trail">
+ <div class="numbox">6</div>
+ <h2>The Workspace List</h2>
+ <img src="../img/header_line.gif" />
+
+ <p>
+ <center>
+ <form>
+ <INPUT type="button" value="Close Window" onclick="window.close()">
+ </form>
+ </center>
+ </p>
+
+ <p>
+ The workspace list allows the user to switch between multiple
+ conversations from the same browser tab. There is no Java code
+ to write, just the following JSF code to include:
+ </p>
+
+<code class="block">
+<h:dataTable value="#{conversationList}" var="entry">
+ <h:column>
+ <h:commandLink action="#{entry.select}" value="#{entry.description}"/>
+
+ <h:outputText value="[current]" rendered="#{entry.current}"/>
+ </h:column>
+ <h:column>
+ <h:outputText value="#{entry.startDatetime}">
+ <f:convertDateTime type="time" pattern="hh:mm"/>
+ </h:outputText>
+ -
+ <h:outputText value="#{entry.lastDatetime}">
+ <f:convertDateTime type="time" pattern="hh:mm"/>
+ </h:outputText>
+ </h:column>
+</h:dataTable>
+</code>
+
+ <p>
+ We do need to specify what text will be displayed by <code>#{entry.description}</code>.
+ We do this by setting the <code>description</code> value for each page in <code>pages.xml</code>.
+ </p>
+
+<code class="block">
+<pages>
+ <!-- ... -->
+ <page view-id="/hotel.xhtml"
+ conversation-required="true"
+ login-required="true">
+
+ <description>View hotel: #{hotel.name}</description>
+ <!-- ... -->
+ </page>
+
+ <page view-id="/book.xhtml"
+ conversation-required="true"
+ login-required="true">
+
+ <description>Book hotel: #{hotel.name}</description>
+ <!-- ... -->
+ </page>
+<pages>
+</code>
+
+ <p>
+ Note that you don't need the <code>pages.xml</code> file if you don't want the
+ workspace list in your application.
+ </p>
+
+ <p>
+ <form>
+ <input type="button" value="Close Window" onclick="window.close()"/>
+ </form>
+ </p>
+
+ </div>
+</div>
+
+</body>
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/exp/workspaceExp.html
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/home.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/home.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/home.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,64 @@
+<f:view xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+<div id="document">
+ <div id="header">
+ <div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+ </div>
+ <div id="container">
+ <div id="sidebar">
+ <h:form id="login">
+ <fieldset>
+ <div>
+ <h:outputLabel for="username">Login Name</h:outputLabel>
+ <h:inputText id="username" value="#{identity.username}" style="width: 175px;"/>
+ <div class="errors"><h:message for="username"/></div>
+ </div>
+ <div>
+ <h:outputLabel for="password">Password</h:outputLabel>
+ <h:inputSecret id="password" value="#{identity.password}" style="width: 175px;"/>
+ </div>
+ <div class="errors"><h:messages globalOnly="true"/></div>
+ <div class="buttonBox"><h:commandButton id="login" action="#{identity.login}" value="Account Login"/></div>
+ <div class="notes"><s:link id="register" view="/register.xhtml" value="Register New User"/></div>
+ </fieldset>
+ </h:form>
+ </div>
+ <div id="content">
+ <div class="section">
+
+ <h1>About this example application</h1>
+
+ <p>
+ This sample application demonstrates how easy it is to develop stateful web
+ applications using JBoss Seam. Just register, login, and book a room to see
+ Seam in action. Throughout the application you'll see popup links like
+ the ones at the bottom of this page. Click them to see how the application
+ works under the hood.
+ </p>
+
+ <p>
+ Note: Please do NOT enter personal information or your credit card number in
+ this sample application.
+ </p>
+
+ <p>
+ <a href="#" onclick="window.open('exp/introExp.html','exp','width=752,height=500,scrollbars=yes');">
+ What is JBoss Seam?
+ </a>
+ </p>
+
+ <p>
+ <a href="#" onclick="window.open('exp/loginExp.html','exp','width=752,height=500,scrollbars=yes');">
+ What happens when I login?
+ </a>
+ </p>
+
+ </div>
+ </div>
+ </div>
+ <div id="footer">Created with JBoss EJB 3.0, Seam, MyFaces, and Facelets</div>
+</div>
+</f:view>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/home.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/hotel.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/hotel.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/hotel.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,56 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+ <h1>View Hotel</h1>
+</div>
+
+<div class="section">
+ <ui:include src="hotelview.xhtml"/>
+
+ <div class="buttonBox">
+ <h:form id="hotel">
+ <h:commandButton id="bookHotel" action="#{hotelBooking.bookHotel}" value="Book Hotel"/>
+  
+ <h:commandButton id="cancel" action="#{hotelBooking.cancel}" value="Back to Search"/>
+ </h:form>
+ </div>
+
+
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>Don't kill your database</h1>
+<p>
+ Keeping conversational state in memory in the middle tier is a great way to
+ improve your application's scalability. It saves hitting the database every
+ time we refresh a page, to re-read the data we were just looking at five
+ seconds ago. By using Seam's conversation context, we get a natural cache
+ of data associated with the what the user is currently doing. By nature,
+ this cache has a more efficient eviction policy than the MRU-type algorithms
+ used by a typical second-level data cache in an O/R mapping engine like
+ Hibernate (at least for some kinds of data). Of course, you should use
+ a clever combination of second-level caching and conversational data
+ caching to achieve the best performance for your application.
+</p>
+<p>
+ <a href="#" onclick="window.open('exp/bookingExp.html','exp','width=752,height=500,scrollbars=yes');">
+ How does the hotel booking wizard work?
+ </a>
+</p>
+
+</ui:define>
+
+</ui:composition>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/hotel.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/hotelview.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/hotelview.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/hotelview.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,45 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Name:</ui:define>
+ #{hotel.name}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Address:</ui:define>
+ #{hotel.address}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">City:</ui:define>
+ #{hotel.city}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">State:</ui:define>
+ #{hotel.state}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Zip:</ui:define>
+ #{hotel.zip}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Country:</ui:define>
+ #{hotel.country}
+ </s:decorate>
+
+ <s:decorate template="display.xhtml">
+ <ui:define name="label">Nightly rate:</ui:define>
+ <h:outputText value="#{hotel.name}">
+ <f:convertNumber type="currency" currencySymbol="$"/>
+ </h:outputText>
+ </s:decorate>
+
+</ui:composition>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/hotelview.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/btn.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/btn.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-next.png
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-next.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-prev.png
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/cal-prev.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/cnt.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/cnt.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/dtpick.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/dtpick.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.ad.jpg
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.ad.jpg
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bar.jpg
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bar.jpg
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.title.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/hdr.title.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/header_line.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/header_line.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/input.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/input.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/sdb.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/sdb.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/spinner.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/spinner.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/img/th.bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/img/th.bg.gif
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/seamBookingPortlet/src/main/webapp/index.html
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/index.html (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/index.html 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,5 @@
+<html>
+<head>
+ <meta http-equiv="Refresh" content="0; URL=home.seam">
+</head>
+</html>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/index.html
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/main.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/main.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/main.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,139 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:a="http://richfaces.org/a4j"
+ template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+
+ <span class="errors">
+ <h:messages globalOnly="true"/>
+ </span>
+
+ <h1>Search Hotels</h1>
+
+ <h:form id="searchCriteria">
+ <fieldset>
+ <h:inputText id="searchString" value="#{hotelSearch.searchString}" style="width: 165px;">
+ <a:support event="onkeyup" actionListener="#{hotelSearch.find}" reRender="searchResults" />
+ </h:inputText>
+  
+ <a:commandButton id="findHotels" value="Find Hotels" action="#{hotelSearch.find}" reRender="searchResults"/>
+  
+ <a:status>
+ <f:facet name="start">
+ <h:graphicImage value="/img/spinner.gif"/>
+ </f:facet>
+ </a:status>
+ <br/>
+ <h:outputLabel for="pageSize">Maximum results:</h:outputLabel> 
+ <h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize">
+ <f:selectItem itemLabel="5" itemValue="5"/>
+ <f:selectItem itemLabel="10" itemValue="10"/>
+ <f:selectItem itemLabel="20" itemValue="20"/>
+ </h:selectOneMenu>
+ </fieldset>
+ </h:form>
+
+</div>
+
+<a:outputPanel id="searchResults">
+ <div class="section">
+ <h:outputText value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
+ <h:dataTable id="hotels" value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
+ <h:column>
+ <f:facet name="header">Name</f:facet>
+ #{hot.name}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Address</f:facet>
+ #{hot.address}
+ </h:column>
+ <h:column>
+ <f:facet name="header">City, State</f:facet>
+ #{hot.city}, #{hot.state}, #{hot.country}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Zip</f:facet>
+ #{hot.zip}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Action</f:facet>
+ <s:link id="viewHotel" value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/>
+ </h:column>
+ </h:dataTable>
+ <s:link value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}"/>
+ </div>
+</a:outputPanel>
+
+<div class="section">
+ <h1>Current Hotel Bookings</h1>
+</div>
+<div class="section">
+ <h:form id="bookings">
+ <h:outputText value="No Bookings Found" rendered="#{bookings.rowCount==0}"/>
+ <h:dataTable id="bookings" value="#{bookings}" var="book" rendered="#{bookings.rowCount>0}">
+ <h:column>
+ <f:facet name="header">Name</f:facet>
+ #{book.hotel.name}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Address</f:facet>
+ #{book.hotel.address}
+ </h:column>
+ <h:column>
+ <f:facet name="header">City, State</f:facet>
+ #{book.hotel.city}, #{book.hotel.state}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Check in date</f:facet>
+ <h:outputText value="#{book.checkinDate}"/>
+ </h:column>
+ <h:column>
+ <f:facet name="header">Check out date</f:facet>
+ <h:outputText value="#{book.checkoutDate}"/>
+ </h:column>
+ <h:column>
+ <f:facet name="header">Confirmation number</f:facet>
+ #{book.id}
+ </h:column>
+ <h:column>
+ <f:facet name="header">Action</f:facet>
+ <h:commandLink id="cancel" value="Cancel" action="#{bookingList.cancel}"/>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>State management in Seam</h1>
+<p>
+ State in Seam is <em>contextual</em>. When you click "Find Hotels", the application
+ retrieves a list of hotels from the database and caches it in the session context. When you
+ navigate to one of the hotel records by clicking the "View Hotel" link, a <em>conversation</em>
+ begins. The conversation is attached to a particular tab, in a particular browser window. You can
+ navigate to multiple hotels using "open in new tab" or "open in new window" in your web browser.
+ Each window will execute in the context of a different conversation. The application keeps state
+ associated with your hotel booking in the conversation context, which ensures that the concurrent
+ conversations do not interfere with each other.
+</p>
+
+<p>
+ <a href="#" onclick="window.open('exp/mainExp.html','exp','width=752,height=500,scrollbars=yes');">
+ How does the search page work?
+ </a>
+</p>
+
+</ui:define>
+
+</ui:composition>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/main.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/password.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/password.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/password.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,64 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+ <h1>Change Your Password</h1>
+</div>
+
+<div class="section">
+
+ <div class="entry errors">
+ <h:messages globalOnly="true"/>
+ </div>
+
+ <h:form id="setpassword">
+
+ <fieldset>
+
+ <s:decorate template="edit.xhtml">
+ <ui:define name="label">Password:</ui:define>
+ <h:inputSecret id="password" value="#{user.password}" required="true"/>
+ </s:decorate>
+
+ <s:decorate template="edit.xhtml">
+ <ui:define name="label">Verify:</ui:define>
+ <h:inputSecret id="verify" value="#{changePassword.verify}" required="true"/>
+ </s:decorate>
+
+ <div class="buttonBox">
+ <h:commandButton id="change" value="Change" action="#{changePassword.changePassword}"/>
+  
+ <s:button id="cancel" value="Cancel" view="/main.xhtml"/>
+ </div>
+
+ </fieldset>
+
+ </h:form>
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+<h1>Simple things should be easy</h1>
+<p>
+ (And so should some complex things.) You shouldn't have to write four different classes
+ just to change a password. Traditional J2EE architectures require that developers spend
+ more time writing code to make the frameworks happy, than they ever get to spend writing
+ code to make the user happy. Seam lets you reduce the size of your code dramatically.
+ And that reduces bugs. And it makes refactoring easier. And it makes delivering new
+ functionality quicker. Productivity matters. But with Seam, JSF, EJB 3.0 and jBPM, you
+ don't need to sacrifice the ability to handle complex problems just to achieve great
+ productivity.
+</p>
+</ui:define>
+
+</ui:composition>
\ No newline at end of file
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/password.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/register.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/register.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/register.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:a="http://richfaces.org/a4j">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>JBoss Suites: Seam Framework</title>
+ <link href="css/screen.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body id="pgHome">
+
+<div id="document">
+
+ <div id="header">
+ <div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+ </div>
+
+ <div id="container">
+
+ <div id="sidebar">
+ <h1>Integrated multi-layer validation</h1>
+ <p>
+ Robust applications need data validation in several different places. Seam integrates Hibernate Validator,
+ a set of annotations for expressing data model constraints in your domain model classes. Then, these
+ constraints are applied almost completely transparently at three levels of the application: by Seam when
+ the user first enters data, by EJB before persisting data to the database, and, if you use Hibernate to
+ generate your database schema, by the database constraints themselves. Multi-layer validation hardens
+ your application and protects your data. Even better, it's self-documenting, and easy to change when
+ your business rules change.
+ </p>
+ <p>
+ <a href="#" onclick="window.open('exp/registerExp.html','exp','width=752,height=500,scrollbars=yes');">
+ What happens when I register?
+ </a>
+ </p>
+ </div>
+
+ <div id="content">
+
+ <div class="section">
+ <h1>Register</h1>
+ </div>
+
+ <div class="section">
+
+ <div class="entry errors">
+ <h:messages globalOnly="true"/>
+ </div>
+
+ <h:form id="registration">
+ <fieldset>
+
+ <s:decorate id="usernameDecorate" template="edit.xhtml">
+ <ui:define name="label">Username:</ui:define>
+ <h:inputText id="username" value="#{user.username}" required="true">
+ <a:support event="onblur" reRender="usernameDecorate"/>
+ </h:inputText>
+ </s:decorate>
+
+ <s:decorate id="nameDecorate" template="edit.xhtml">
+ <ui:define name="label">Real Name:</ui:define>
+ <h:inputText id="name" value="#{user.name}" required="true">
+ <a:support event="onblur" reRender="nameDecorate"/>
+ </h:inputText>
+ </s:decorate>
+
+ <s:decorate id="passwordDecorate" template="edit.xhtml">
+ <ui:define name="label">Password:</ui:define>
+ <h:inputSecret id="password" value="#{user.password}" required="true"/>
+ </s:decorate>
+
+ <s:decorate id="verifyDecorate" template="edit.xhtml">
+ <ui:define name="label">Verify Password:</ui:define>
+ <h:inputSecret id="verify" value="#{register.verify}" required="true"/>
+ </s:decorate>
+
+ <div class="buttonBox">
+ <h:commandButton id="register" value="Register" action="#{register.register}"/>
+  
+ <s:button id="cancel" value="Cancel" view="/home.xhtml"/>
+ </div>
+
+ </fieldset>
+ </h:form>
+
+ </div>
+
+ </div>
+
+ </div>
+
+ <div id="footer">Created with JBoss EJB 3.0, Seam, MyFaces, and Facelets</div>
+
+</div>
+
+</body>
+
+</html>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/register.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/samples/seamBookingPortlet/src/main/webapp/template.xhtml
===================================================================
--- trunk/samples/seamBookingPortlet/src/main/webapp/template.xhtml (rev 0)
+++ trunk/samples/seamBookingPortlet/src/main/webapp/template.xhtml 2007-11-02 00:30:29 UTC (rev 3701)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<f:view xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+<div id="document">
+ <div id="header">
+ <div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+ <div id="status">
+ Welcome #{user.name}
+ | <s:link id="search" view="/main.xhtml" value="Search" propagation="none"/>
+ | <s:link id="settings" view="/password.xhtml" value="Settings" propagation="none"/>
+ | <s:link id="logout" action="#{identity.logout}" value="Logout"/>
+ </div>
+ </div>
+ <div id="container">
+ <div id="sidebar">
+ <ui:insert name="sidebar"/>
+ </div>
+ <div id="content">
+ <ui:insert name="content"/>
+ <ui:include src="conversations.xhtml" />
+ </div>
+ </div>
+ <div id="footer">Created with JBoss Seam 2.0, JBoss EJB 3.0, JSF 1.2, Hibernate 3 and Facelets</div>
+</div>
+</f:view>
Property changes on: trunk/samples/seamBookingPortlet/src/main/webapp/template.xhtml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
17 years, 2 months
JBoss Rich Faces SVN: r3700 - in trunk/sandbox: impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs and 24 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: SergeySmirnov
Date: 2007-11-01 18:27:10 -0400 (Thu, 01 Nov 2007)
New Revision: 3700
Added:
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/ext-all-debug.js
trunk/sandbox/ui/rex-messageBox/
trunk/sandbox/ui/rex-messageBox/pom.xml
trunk/sandbox/ui/rex-messageBox/src/
trunk/sandbox/ui/rex-messageBox/src/main/
trunk/sandbox/ui/rex-messageBox/src/main/config/
trunk/sandbox/ui/rex-messageBox/src/main/config/component/
trunk/sandbox/ui/rex-messageBox/src/main/config/component/messageBox.xml
trunk/sandbox/ui/rex-messageBox/src/main/java/
trunk/sandbox/ui/rex-messageBox/src/main/java/org/
trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/
trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/
trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/component/
trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/component/UIMessageBox.java
trunk/sandbox/ui/rex-messageBox/src/main/resources/
trunk/sandbox/ui/rex-messageBox/src/main/templates/
trunk/sandbox/ui/rex-messageBox/src/main/templates/htmlMessageBox.jspx
trunk/sandbox/ui/rex-messageBox/src/test/
trunk/sandbox/ui/rex-messageBox/src/test/java/
trunk/sandbox/ui/rex-messageBox/src/test/java/org/
trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/
trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/
trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/component/
trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/component/JSFComponentTest.java
Removed:
trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/jQuery.xhtml
trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/jQuery/
Modified:
trunk/sandbox/impl/src/main/resources/META-INF/resources-config.xml
trunk/sandbox/samples/rex-demo/src/main/resources/org/richfaces/demo/common/components.properties
trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/resizable/examples/simple.xhtml
trunk/sandbox/samples/rex-demo/src/main/webapp/welcome.xhtml
trunk/sandbox/ui/pom.xml
trunk/sandbox/ui/rex-resizable/src/main/config/component/resizable.xml
trunk/sandbox/ui/rex-resizable/src/main/templates/resizable.jspx
Log:
rex-demo updates. rex-messageBox initial code
Modified: trunk/sandbox/impl/src/main/resources/META-INF/resources-config.xml
===================================================================
--- trunk/sandbox/impl/src/main/resources/META-INF/resources-config.xml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/impl/src/main/resources/META-INF/resources-config.xml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -2,7 +2,7 @@
<resource-config>
<resource>
<name>extjs/ext-all.js</name>
- <path>org/richfaces/renderkit/html/scripts/extjs/ext-all.js</path>
+ <path>org/richfaces/renderkit/html/scripts/extjs/ext-all-debug.js</path>
<renderer class="org.ajax4jsf.resource.ScriptRenderer"/>
</resource>
<resource>
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/ext-all-debug.js
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/ext-all-debug.js (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/ext-all-debug.js 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,32851 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+
+Ext.DomHelper = function(){
+ var tempTableEl = null;
+ var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;
+ var tableRe = /^table|tbody|tr|td$/i;
+
+
+
+ var createHtml = function(o){
+ if(typeof o == 'string'){
+ return o;
+ }
+ var b = "";
+ if(!o.tag){
+ o.tag = "div";
+ }
+ b += "<" + o.tag;
+ for(var attr in o){
+ if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue;
+ if(attr == "style"){
+ var s = o["style"];
+ if(typeof s == "function"){
+ s = s.call();
+ }
+ if(typeof s == "string"){
+ b += ' style="' + s + '"';
+ }else if(typeof s == "object"){
+ b += ' style="';
+ for(var key in s){
+ if(typeof s[key] != "function"){
+ b += key + ":" + s[key] + ";";
+ }
+ }
+ b += '"';
+ }
+ }else{
+ if(attr == "cls"){
+ b += ' class="' + o["cls"] + '"';
+ }else if(attr == "htmlFor"){
+ b += ' for="' + o["htmlFor"] + '"';
+ }else{
+ b += " " + attr + '="' + o[attr] + '"';
+ }
+ }
+ }
+ if(emptyTags.test(o.tag)){
+ b += "/>";
+ }else{
+ b += ">";
+ var cn = o.children || o.cn;
+ if(cn){
+ if(cn instanceof Array){
+ for(var i = 0, len = cn.length; i < len; i++) {
+ b += createHtml(cn[i], b);
+ }
+ }else{
+ b += createHtml(cn, b);
+ }
+ }
+ if(o.html){
+ b += o.html;
+ }
+ b += "</" + o.tag + ">";
+ }
+ return b;
+ };
+
+
+
+ var createDom = function(o, parentNode){
+ var el = document.createElement(o.tag||'div');
+ var useSet = el.setAttribute ? true : false;
+ for(var attr in o){
+ if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue;
+ if(attr=="cls"){
+ el.className = o["cls"];
+ }else{
+ if(useSet) el.setAttribute(attr, o[attr]);
+ else el[attr] = o[attr];
+ }
+ }
+ Ext.DomHelper.applyStyles(el, o.style);
+ var cn = o.children || o.cn;
+ if(cn){
+ if(cn instanceof Array){
+ for(var i = 0, len = cn.length; i < len; i++) {
+ createDom(cn[i], el);
+ }
+ }else{
+ createDom(cn, el);
+ }
+ }
+ if(o.html){
+ el.innerHTML = o.html;
+ }
+ if(parentNode){
+ parentNode.appendChild(el);
+ }
+ return el;
+ };
+
+ var ieTable = function(depth, s, h, e){
+ tempTableEl.innerHTML = [s, h, e].join('');
+ var i = -1, el = tempTableEl;
+ while(++i < depth){
+ el = el.firstChild;
+ }
+ return el;
+ };
+
+
+ var ts = '<table>',
+ te = '</table>',
+ tbs = ts+'<tbody>',
+ tbe = '</tbody>'+te,
+ trs = tbs + '<tr>',
+ tre = '</tr>'+tbe;
+
+
+ var insertIntoTable = function(tag, where, el, html){
+ if(!tempTableEl){
+ tempTableEl = document.createElement('div');
+ }
+ var node;
+ var before = null;
+ if(tag == 'td'){
+ if(where == 'afterbegin' || where == 'beforeend'){
+ return;
+ }
+ if(where == 'beforebegin'){
+ before = el;
+ el = el.parentNode;
+ } else{
+ before = el.nextSibling;
+ el = el.parentNode;
+ }
+ node = ieTable(4, trs, html, tre);
+ }
+ else if(tag == 'tr'){
+ if(where == 'beforebegin'){
+ before = el;
+ el = el.parentNode;
+ node = ieTable(3, tbs, html, tbe);
+ } else if(where == 'afterend'){
+ before = el.nextSibling;
+ el = el.parentNode;
+ node = ieTable(3, tbs, html, tbe);
+ } else{
+ if(where == 'afterbegin'){
+ before = el.firstChild;
+ }
+ node = ieTable(4, trs, html, tre);
+ }
+ } else if(tag == 'tbody'){
+ if(where == 'beforebegin'){
+ before = el;
+ el = el.parentNode;
+ node = ieTable(2, ts, html, te);
+ } else if(where == 'afterend'){
+ before = el.nextSibling;
+ el = el.parentNode;
+ node = ieTable(2, ts, html, te);
+ } else{
+ if(where == 'afterbegin'){
+ before = el.firstChild;
+ }
+ node = ieTable(3, tbs, html, tbe);
+ }
+ } else{
+ if(where == 'beforebegin' || where == 'afterend'){
+ return;
+ }
+ if(where == 'afterbegin'){
+ before = el.firstChild;
+ }
+ node = ieTable(2, ts, html, te);
+ }
+ el.insertBefore(node, before);
+ return node;
+ };
+
+
+ return {
+
+ useDom : false,
+
+
+ markup : function(o){
+ return createHtml(o);
+ },
+
+
+ applyStyles : function(el, styles){
+ if(styles){
+ el = Ext.fly(el);
+ if(typeof styles == "string"){
+ var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+ var matches;
+ while ((matches = re.exec(styles)) != null){
+ el.setStyle(matches[1], matches[2]);
+ }
+ }else if (typeof styles == "object"){
+ for (var style in styles){
+ el.setStyle(style, styles[style]);
+ }
+ }else if (typeof styles == "function"){
+ Ext.DomHelper.applyStyles(el, styles.call());
+ }
+ }
+ },
+
+
+ insertHtml : function(where, el, html){
+ where = where.toLowerCase();
+ if(el.insertAdjacentHTML){
+ if(tableRe.test(el.tagName)){
+ var rs;
+ if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
+ return rs;
+ }
+ }
+ switch(where){
+ case "beforebegin":
+ el.insertAdjacentHTML('BeforeBegin', html);
+ return el.previousSibling;
+ case "afterbegin":
+ el.insertAdjacentHTML('AfterBegin', html);
+ return el.firstChild;
+ case "beforeend":
+ el.insertAdjacentHTML('BeforeEnd', html);
+ return el.lastChild;
+ case "afterend":
+ el.insertAdjacentHTML('AfterEnd', html);
+ return el.nextSibling;
+ }
+ throw 'Illegal insertion point -> "' + where + '"';
+ }
+ var range = el.ownerDocument.createRange();
+ var frag;
+ switch(where){
+ case "beforebegin":
+ range.setStartBefore(el);
+ frag = range.createContextualFragment(html);
+ el.parentNode.insertBefore(frag, el);
+ return el.previousSibling;
+ case "afterbegin":
+ if(el.firstChild){
+ range.setStartBefore(el.firstChild);
+ frag = range.createContextualFragment(html);
+ el.insertBefore(frag, el.firstChild);
+ return el.firstChild;
+ }else{
+ el.innerHTML = html;
+ return el.firstChild;
+ }
+ case "beforeend":
+ if(el.lastChild){
+ range.setStartAfter(el.lastChild);
+ frag = range.createContextualFragment(html);
+ el.appendChild(frag);
+ return el.lastChild;
+ }else{
+ el.innerHTML = html;
+ return el.lastChild;
+ }
+ case "afterend":
+ range.setStartAfter(el);
+ frag = range.createContextualFragment(html);
+ el.parentNode.insertBefore(frag, el.nextSibling);
+ return el.nextSibling;
+ }
+ throw 'Illegal insertion point -> "' + where + '"';
+ },
+
+
+ insertBefore : function(el, o, returnElement){
+ return this.doInsert(el, o, returnElement, "beforeBegin");
+ },
+
+
+ insertAfter : function(el, o, returnElement){
+ return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
+ },
+
+
+ insertFirst : function(el, o, returnElement){
+ return this.doInsert(el, o, returnElement, "afterBegin", "firstChild");
+ },
+
+
+ doInsert : function(el, o, returnElement, pos, sibling){
+ el = Ext.getDom(el);
+ var newNode;
+ if(this.useDom){
+ newNode = createDom(o, null);
+ (sibling === "firstChild" ? el : el.parentNode).insertBefore(newNode, sibling ? el[sibling] : el);
+ }else{
+ var html = createHtml(o);
+ newNode = this.insertHtml(pos, el, html);
+ }
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ },
+
+
+ append : function(el, o, returnElement){
+ el = Ext.getDom(el);
+ var newNode;
+ if(this.useDom){
+ newNode = createDom(o, null);
+ el.appendChild(newNode);
+ }else{
+ var html = createHtml(o);
+ newNode = this.insertHtml("beforeEnd", el, html);
+ }
+ return returnElement ? Ext.get(newNode, true) : newNode;
+ },
+
+
+ overwrite : function(el, o, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = createHtml(o);
+ return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
+ },
+
+
+ createTemplate : function(o){
+ var html = createHtml(o);
+ return new Ext.Template(html);
+ }
+ };
+}();
+
+
+Ext.Template = function(html){
+ var a = arguments;
+ if(html instanceof Array){
+ html = html.join("");
+ }else if(a.length > 1){
+ var buf = [];
+ for(var i = 0, len = a.length; i < len; i++){
+ if(typeof a[i] == 'object'){
+ Ext.apply(this, a[i]);
+ }else{
+ buf[buf.length] = a[i];
+ }
+ }
+ html = buf.join('');
+ }
+
+ this.html = html;
+ if(this.compiled){
+ this.compile();
+ }
+};
+Ext.Template.prototype = {
+
+ applyTemplate : function(values){
+ if(this.compiled){
+ return this.compiled(values);
+ }
+ var useF = this.disableFormats !== true;
+ var fm = Ext.util.Format, tpl = this;
+ var fn = function(m, name, format, args){
+ if(format && useF){
+ if(format.substr(0, 5) == "this."){
+ return tpl.call(format.substr(5), values[name], values);
+ }else{
+ if(args){
+
+
+
+ var re = /^\s*['"](.*)["']\s*$/;
+ args = args.split(',');
+ for(var i = 0, len = args.length; i < len; i++){
+ args[i] = args[i].replace(re, "$1");
+ }
+ args = [values[name]].concat(args);
+ }else{
+ args = [values[name]];
+ }
+ return fm[format].apply(fm, args);
+ }
+ }else{
+ return values[name] !== undefined ? values[name] : "";
+ }
+ };
+ return this.html.replace(this.re, fn);
+ },
+
+
+ set : function(html, compile){
+ this.html = html;
+ this.compiled = null;
+ if(compile){
+ this.compile();
+ }
+ return this;
+ },
+
+
+ disableFormats : false,
+
+
+ re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
+
+
+ compile : function(){
+ var fm = Ext.util.Format;
+ var useF = this.disableFormats !== true;
+ var sep = Ext.isGecko ? "+" : ",";
+ var fn = function(m, name, format, args){
+ if(format && useF){
+ args = args ? ',' + args : "";
+ if(format.substr(0, 5) != "this."){
+ format = "fm." + format + '(';
+ }else{
+ format = 'this.call("'+ format.substr(5) + '", ';
+ args = ", values";
+ }
+ }else{
+ args= ''; format = "(values['" + name + "'] == undefined ? '' : ";
+ }
+ return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'";
+ };
+ var body;
+
+ if(Ext.isGecko){
+ body = "this.compiled = function(values){ return '" +
+ this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +
+ "';};";
+ }else{
+ body = ["this.compiled = function(values){ return ['"];
+ body.push(this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn));
+ body.push("'].join('');};");
+ body = body.join('');
+ }
+ eval(body);
+ return this;
+ },
+
+
+ call : function(fnName, value, allValues){
+ return this[fnName](value, allValues);
+ },
+
+
+ insertFirst: function(el, values, returnElement){
+ return this.doInsert('afterBegin', el, values, returnElement);
+ },
+
+
+ insertBefore: function(el, values, returnElement){
+ return this.doInsert('beforeBegin', el, values, returnElement);
+ },
+
+
+ insertAfter : function(el, values, returnElement){
+ return this.doInsert('afterEnd', el, values, returnElement);
+ },
+
+
+ append : function(el, values, returnElement){
+ return this.doInsert('beforeEnd', el, values, returnElement);
+ },
+
+ doInsert : function(where, el, values, returnEl){
+ el = Ext.getDom(el);
+ var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
+ return returnEl ? Ext.get(newNode, true) : newNode;
+ },
+
+
+ overwrite : function(el, values, returnElement){
+ el = Ext.getDom(el);
+ el.innerHTML = this.applyTemplate(values);
+ return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
+ }
+};
+
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+
+
+Ext.DomHelper.Template = Ext.Template;
+
+
+Ext.Template.from = function(el, config){
+ el = Ext.getDom(el);
+ return new Ext.Template(el.value || el.innerHTML, config || '');
+};
+
+
+Ext.DomQuery = function(){
+ var cache = {}, simpleCache = {}, valueCache = {};
+ var nonSpace = /\S/;
+ var trimRe = /^\s+|\s+$/g;
+ var tplRe = /\{(\d+)\}/g;
+ var modeRe = /^(\s?[\/>+~]\s?|\s|$)/;
+ var tagTokenRe = /^(#)?([\w-\*]+)/;
+ var nthRe = /(\d*)n\+?(\d*)/, nthRe2 = /\D/;
+
+ function child(p, index){
+ var i = 0;
+ var n = p.firstChild;
+ while(n){
+ if(n.nodeType == 1){
+ if(++i == index){
+ return n;
+ }
+ }
+ n = n.nextSibling;
+ }
+ return null;
+ };
+
+ function next(n){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ return n;
+ };
+
+ function prev(n){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ return n;
+ };
+
+ function children(d){
+ var n = d.firstChild, ni = -1;
+ while(n){
+ var nx = n.nextSibling;
+ if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
+ d.removeChild(n);
+ }else{
+ n.nodeIndex = ++ni;
+ }
+ n = nx;
+ }
+ return this;
+ };
+
+ function byClassName(c, a, v){
+ if(!v){
+ return c;
+ }
+ var r = [], ri = -1, cn;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if((' '+ci.className+' ').indexOf(v) != -1){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ };
+
+ function attrValue(n, attr){
+ if(!n.tagName && typeof n.length != "undefined"){
+ n = n[0];
+ }
+ if(!n){
+ return null;
+ }
+ if(attr == "for"){
+ return n.htmlFor;
+ }
+ if(attr == "class" || attr == "className"){
+ return n.className;
+ }
+ return n.getAttribute(attr) || n[attr];
+
+ };
+
+ function getNodes(ns, mode, tagName){
+ var result = [], ri = -1, cs;
+ if(!ns){
+ return result;
+ }
+ tagName = tagName || "*";
+ if(typeof ns.getElementsByTagName != "undefined"){
+ ns = [ns];
+ }
+ if(!mode){
+ for(var i = 0, ni; ni = ns[i]; i++){
+ cs = ni.getElementsByTagName(tagName);
+ for(var j = 0, ci; ci = cs[j]; j++){
+ result[++ri] = ci;
+ }
+ }
+ }else if(mode == "/" || mode == ">"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, ni, cn; ni = ns[i]; i++){
+ cn = ni.children || ni.childNodes;
+ for(var j = 0, cj; cj = cn[j]; j++){
+ if(cj.nodeName == utag || cj.nodeName == tagName || tagName == '*'){
+ result[++ri] = cj;
+ }
+ }
+ }
+ }else if(mode == "+"){
+ var utag = tagName.toUpperCase();
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(n && (n.nodeName == utag || n.nodeName == tagName || tagName == '*')){
+ result[++ri] = n;
+ }
+ }
+ }else if(mode == "~"){
+ for(var i = 0, n; n = ns[i]; i++){
+ while((n = n.nextSibling) && (n.nodeType != 1 || (tagName == '*' || n.tagName.toLowerCase()!=tagName)));
+ if(n){
+ result[++ri] = n;
+ }
+ }
+ }
+ return result;
+ };
+
+ function concat(a, b){
+ if(b.slice){
+ return a.concat(b);
+ }
+ for(var i = 0, l = b.length; i < l; i++){
+ a[a.length] = b[i];
+ }
+ return a;
+ }
+
+ function byTag(cs, tagName){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!tagName){
+ return cs;
+ }
+ var r = [], ri = -1;
+ tagName = tagName.toLowerCase();
+ for(var i = 0, ci; ci = cs[i]; i++){
+ if(ci.nodeType == 1 && ci.tagName.toLowerCase()==tagName){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ };
+
+ function byId(cs, attr, id){
+ if(cs.tagName || cs == document){
+ cs = [cs];
+ }
+ if(!id){
+ return cs;
+ }
+ var r = [], ri = -1;
+ for(var i = 0,ci; ci = cs[i]; i++){
+ if(ci && ci.id == id){
+ r[++ri] = ci;
+ return r;
+ }
+ }
+ return r;
+ };
+
+ function byAttribute(cs, attr, value, op, custom){
+ var r = [], ri = -1, st = custom=="{";
+ var f = Ext.DomQuery.operators[op];
+ for(var i = 0, ci; ci = cs[i]; i++){
+ var a;
+ if(st){
+ a = Ext.DomQuery.getStyle(ci, attr);
+ }
+ else if(attr == "class" || attr == "className"){
+ a = ci.className;
+ }else if(attr == "for"){
+ a = ci.htmlFor;
+ }else if(attr == "href"){
+ a = ci.getAttribute("href", 2);
+ }else{
+ a = ci.getAttribute(attr);
+ }
+ if((f && f(a, value)) || (!f && a)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ };
+
+ function byPseudo(cs, name, value){
+ return Ext.DomQuery.pseudos[name](cs, value);
+ };
+
+
+
+
+ var isIE = window.ActiveXObject ? true : false;
+
+
+
+ eval("var batch = 30803;");
+
+ var key = 30803;
+
+ function nodupIEXml(cs){
+ var d = ++key;
+ cs[0].setAttribute("_nodup", d);
+ var r = [cs[0]];
+ for(var i = 1, len = cs.length; i < len; i++){
+ var c = cs[i];
+ if(!c.getAttribute("_nodup") != d){
+ c.setAttribute("_nodup", d);
+ r[r.length] = c;
+ }
+ }
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].removeAttribute("_nodup");
+ }
+ return r;
+ }
+
+ function nodup(cs){
+ if(!cs){
+ return [];
+ }
+ var len = cs.length, c, i, r = cs, cj, ri = -1;
+ if(!len || typeof cs.nodeType != "undefined" || len == 1){
+ return cs;
+ }
+ if(isIE && typeof cs[0].selectSingleNode != "undefined"){
+ return nodupIEXml(cs);
+ }
+ var d = ++key;
+ cs[0]._nodup = d;
+ for(i = 1; c = cs[i]; i++){
+ if(c._nodup != d){
+ c._nodup = d;
+ }else{
+ r = [];
+ for(var j = 0; j < i; j++){
+ r[++ri] = cs[j];
+ }
+ for(j = i+1; cj = cs[j]; j++){
+ if(cj._nodup != d){
+ cj._nodup = d;
+ r[++ri] = cj;
+ }
+ }
+ return r;
+ }
+ }
+ return r;
+ }
+
+ function quickDiffIEXml(c1, c2){
+ var d = ++key;
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].setAttribute("_qdiff", d);
+ }
+ var r = [];
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i].getAttribute("_qdiff") != d){
+ r[r.length] = c2[i];
+ }
+ }
+ for(var i = 0, len = c1.length; i < len; i++){
+ c1[i].removeAttribute("_qdiff");
+ }
+ return r;
+ }
+
+ function quickDiff(c1, c2){
+ var len1 = c1.length;
+ if(!len1){
+ return c2;
+ }
+ if(isIE && c1[0].selectSingleNode){
+ return quickDiffIEXml(c1, c2);
+ }
+ var d = ++key;
+ for(var i = 0; i < len1; i++){
+ c1[i]._qdiff = d;
+ }
+ var r = [];
+ for(var i = 0, len = c2.length; i < len; i++){
+ if(c2[i]._qdiff != d){
+ r[r.length] = c2[i];
+ }
+ }
+ return r;
+ }
+
+ function quickId(ns, mode, root, id){
+ if(ns == root){
+ var d = root.ownerDocument || root;
+ return d.getElementById(id);
+ }
+ ns = getNodes(ns, mode, "*");
+ return byId(ns, null, id);
+ }
+
+ return {
+ getStyle : function(el, name){
+ return Ext.fly(el).getStyle(name);
+ },
+
+ compile : function(path, type){
+ type = type || "select";
+
+ var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"];
+ var q = path, mode, lq;
+ var tk = Ext.DomQuery.matchers;
+ var tklen = tk.length;
+ var mm;
+
+
+ var lmode = q.match(modeRe);
+ if(lmode && lmode[1]){
+ fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';
+ q = q.replace(lmode[1], "");
+ }
+
+ while(path.substr(0, 1)=="/"){
+ path = path.substr(1);
+ }
+
+ while(q && lq != q){
+ lq = q;
+ var tm = q.match(tagTokenRe);
+ if(type == "select"){
+ if(tm){
+ if(tm[1] == "#"){
+ fn[fn.length] = 'n = quickId(n, mode, root, "'+tm[2]+'");';
+ }else{
+ fn[fn.length] = 'n = getNodes(n, mode, "'+tm[2]+'");';
+ }
+ q = q.replace(tm[0], "");
+ }else if(q.substr(0, 1) != '@'){
+ fn[fn.length] = 'n = getNodes(n, mode, "*");';
+ }
+ }else{
+ if(tm){
+ if(tm[1] == "#"){
+ fn[fn.length] = 'n = byId(n, null, "'+tm[2]+'");';
+ }else{
+ fn[fn.length] = 'n = byTag(n, "'+tm[2]+'");';
+ }
+ q = q.replace(tm[0], "");
+ }
+ }
+ while(!(mm = q.match(modeRe))){
+ var matched = false;
+ for(var j = 0; j < tklen; j++){
+ var t = tk[j];
+ var m = q.match(t.re);
+ if(m){
+ fn[fn.length] = t.select.replace(tplRe, function(x, i){
+ return m[i];
+ });
+ q = q.replace(m[0], "");
+ matched = true;
+ break;
+ }
+ }
+
+ if(!matched){
+ throw 'Error parsing selector, parsing failed at "' + q + '"';
+ }
+ }
+ if(mm[1]){
+ fn[fn.length] = 'mode="'+mm[1].replace(trimRe, "")+'";';
+ q = q.replace(mm[1], "");
+ }
+ }
+ fn[fn.length] = "return nodup(n);\n}";
+ eval(fn.join(""));
+ return f;
+ },
+
+
+ select : function(path, root, type){
+ if(!root || root == document){
+ root = document;
+ }
+ if(typeof root == "string"){
+ root = document.getElementById(root);
+ }
+ var paths = path.split(",");
+ var results = [];
+ for(var i = 0, len = paths.length; i < len; i++){
+ var p = paths[i].replace(trimRe, "");
+ if(!cache[p]){
+ cache[p] = Ext.DomQuery.compile(p);
+ if(!cache[p]){
+ throw p + " is not a valid selector";
+ }
+ }
+ var result = cache[p](root);
+ if(result && result != document){
+ results = results.concat(result);
+ }
+ }
+ if(paths.length > 1){
+ return nodup(results);
+ }
+ return results;
+ },
+
+
+ selectNode : function(path, root){
+ return Ext.DomQuery.select(path, root)[0];
+ },
+
+
+ selectValue : function(path, root, defaultValue){
+ path = path.replace(trimRe, "");
+ if(!valueCache[path]){
+ valueCache[path] = Ext.DomQuery.compile(path, "select");
+ }
+ var n = valueCache[path](root);
+ n = n[0] ? n[0] : n;
+ var v = (n && n.firstChild ? n.firstChild.nodeValue : null);
+ return ((v === null||v === undefined||v==='') ? defaultValue : v);
+ },
+
+
+ selectNumber : function(path, root, defaultValue){
+ var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
+ return parseFloat(v);
+ },
+
+
+ is : function(el, ss){
+ if(typeof el == "string"){
+ el = document.getElementById(el);
+ }
+ var isArray = (el instanceof Array);
+ var result = Ext.DomQuery.filter(isArray ? el : [el], ss);
+ return isArray ? (result.length == el.length) : (result.length > 0);
+ },
+
+
+ filter : function(els, ss, nonMatches){
+ ss = ss.replace(trimRe, "");
+ if(!simpleCache[ss]){
+ simpleCache[ss] = Ext.DomQuery.compile(ss, "simple");
+ }
+ var result = simpleCache[ss](els);
+ return nonMatches ? quickDiff(result, els) : result;
+ },
+
+
+ matchers : [{
+ re: /^\.([\w-]+)/,
+ select: 'n = byClassName(n, null, " {1} ");'
+ }, {
+ re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
+ select: 'n = byPseudo(n, "{1}", "{2}");'
+ },{
+ re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,
+ select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'
+ }, {
+ re: /^#([\w-]+)/,
+ select: 'n = byId(n, null, "{1}");'
+ },{
+ re: /^@([\w-]+)/,
+ select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
+ }
+ ],
+
+
+ operators : {
+ "=" : function(a, v){
+ return a == v;
+ },
+ "!=" : function(a, v){
+ return a != v;
+ },
+ "^=" : function(a, v){
+ return a && a.substr(0, v.length) == v;
+ },
+ "$=" : function(a, v){
+ return a && a.substr(a.length-v.length) == v;
+ },
+ "*=" : function(a, v){
+ return a && a.indexOf(v) !== -1;
+ },
+ "%=" : function(a, v){
+ return (a % v) == 0;
+ },
+ "|=" : function(a, v){
+ return a && (a == v || a.substr(0, v.length+1) == v+'-');
+ },
+ "~=" : function(a, v){
+ return a && (' '+a+' ').indexOf(' '+v+' ') != -1;
+ }
+ },
+
+
+ pseudos : {
+ "first-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.previousSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "last-child" : function(c){
+ var r = [], ri = -1, n;
+ for(var i = 0, ci; ci = n = c[i]; i++){
+ while((n = n.nextSibling) && n.nodeType != 1);
+ if(!n){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nth-child" : function(c, a) {
+ var r = [], ri = -1;
+ var m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a);
+ var f = (m[1] || 1) - 0, l = m[2] - 0;
+ for(var i = 0, n; n = c[i]; i++){
+ var pn = n.parentNode;
+ if (batch != pn._batch) {
+ var j = 0;
+ for(var cn = pn.firstChild; cn; cn = cn.nextSibling){
+ if(cn.nodeType == 1){
+ cn.nodeIndex = ++j;
+ }
+ }
+ pn._batch = batch;
+ }
+ if (f == 1) {
+ if (l == 0 || n.nodeIndex == l){
+ r[++ri] = n;
+ }
+ } else if ((n.nodeIndex + l) % f == 0){
+ r[++ri] = n;
+ }
+ }
+
+ return r;
+ },
+
+ "only-child" : function(c){
+ var r = [], ri = -1;;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(!prev(ci) && !next(ci)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "empty" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var cns = ci.childNodes, j = 0, cn, empty = true;
+ while(cn = cns[j]){
+ ++j;
+ if(cn.nodeType == 1 || cn.nodeType == 3){
+ empty = false;
+ break;
+ }
+ }
+ if(empty){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "contains" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if((ci.textContent||ci.innerText||'').indexOf(v) != -1){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "nodeValue" : function(c, v){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.firstChild && ci.firstChild.nodeValue == v){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "checked" : function(c){
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(ci.checked == true){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "not" : function(c, ss){
+ return Ext.DomQuery.filter(c, ss, true);
+ },
+
+ "any" : function(c, selectors){
+ var ss = selectors.split('|');
+ var r = [], ri = -1, s;
+ for(var i = 0, ci; ci = c[i]; i++){
+ for(var j = 0; s = ss[j]; j++){
+ if(Ext.DomQuery.is(ci, s)){
+ r[++ri] = ci;
+ break;
+ }
+ }
+ }
+ return r;
+ },
+
+ "odd" : function(c){
+ return this["nth-child"](c, "odd");
+ },
+
+ "even" : function(c){
+ return this["nth-child"](c, "even");
+ },
+
+ "nth" : function(c, a){
+ return c[a-1] || [];
+ },
+
+ "first" : function(c){
+ return c[0] || [];
+ },
+
+ "last" : function(c){
+ return c[c.length-1] || [];
+ },
+
+ "has" : function(c, ss){
+ var s = Ext.DomQuery.select;
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ if(s(ss, ci).length > 0){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "next" : function(c, ss){
+ var is = Ext.DomQuery.is;
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = next(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ },
+
+ "prev" : function(c, ss){
+ var is = Ext.DomQuery.is;
+ var r = [], ri = -1;
+ for(var i = 0, ci; ci = c[i]; i++){
+ var n = prev(ci);
+ if(n && is(n, ss)){
+ r[++ri] = ci;
+ }
+ }
+ return r;
+ }
+ }
+ };
+}();
+
+
+Ext.query = Ext.DomQuery.select;
+
+
+Ext.util.Observable = function(){
+ if(this.listeners){
+ this.on(this.listeners);
+ delete this.listeners;
+ }
+};
+Ext.util.Observable.prototype = {
+
+ fireEvent : function(){
+ if(this.eventsSuspended !== true){
+ var ce = this.events[arguments[0].toLowerCase()];
+ if(typeof ce == "object"){
+ return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1));
+ }
+ }
+ return true;
+ },
+
+ filterOptRe : /^(?:scope|delay|buffer|single)$/,
+
+
+ addListener : function(eventName, fn, scope, o){
+ if(typeof eventName == "object"){
+ o = eventName;
+ for(var e in o){
+ if(this.filterOptRe.test(e)){
+ continue;
+ }
+ if(typeof o[e] == "function"){
+ this.addListener(e, o[e], o.scope, o);
+ }else{
+ this.addListener(e, o[e].fn, o[e].scope, o[e]);
+ }
+ }
+ return;
+ }
+ o = (!o || typeof o == "boolean") ? {} : o;
+ eventName = eventName.toLowerCase();
+ var ce = this.events[eventName] || true;
+ if(typeof ce == "boolean"){
+ ce = new Ext.util.Event(this, eventName);
+ this.events[eventName] = ce;
+ }
+ ce.addListener(fn, scope, o);
+ },
+
+
+ removeListener : function(eventName, fn, scope){
+ var ce = this.events[eventName.toLowerCase()];
+ if(typeof ce == "object"){
+ ce.removeListener(fn, scope);
+ }
+ },
+
+
+ purgeListeners : function(){
+ for(var evt in this.events){
+ if(typeof this.events[evt] == "object"){
+ this.events[evt].clearListeners();
+ }
+ }
+ },
+
+ relayEvents : function(o, events){
+ var createHandler = function(ename){
+ return function(){
+ return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0)));
+ };
+ };
+ for(var i = 0, len = events.length; i < len; i++){
+ var ename = events[i];
+ if(!this.events[ename]){ this.events[ename] = true; };
+ o.on(ename, createHandler(ename), this);
+ }
+ },
+
+
+ addEvents : function(o){
+ if(!this.events){
+ this.events = {};
+ }
+ Ext.applyIf(this.events, o);
+ },
+
+
+ hasListener : function(eventName){
+ var e = this.events[eventName];
+ return typeof e == "object" && e.listeners.length > 0;
+ },
+
+
+ suspendEvents : function(){
+ this.eventsSuspended = true;
+ },
+
+
+ resumeEvents : function(){
+ this.eventsSuspended = false;
+ },
+
+ getMethodEvent : function(method){
+ if(!this.methodEvents){
+ this.methodEvents = {};
+ }
+ var e = this.methodEvents[method];
+ if(!e){
+ e = {};
+ this.methodEvents[method] = e;
+
+ e.originalFn = this[method];
+ e.methodName = method;
+ e.before = [];
+ e.after = [];
+
+
+ var returnValue, v, cancel;
+ var obj = this;
+
+ var makeCall = function(fn, scope, args){
+ if((v = fn.apply(scope || obj, args)) !== undefined){
+ if(typeof v === 'object'){
+ if(v.returnValue !== undefined){
+ returnValue = v.returnValue;
+ }else{
+ returnValue = v;
+ }
+ if(v.cancel === true){
+ cancel = true;
+ }
+ }else if(v === false){
+ cancel = true;
+ }else {
+ returnValue = v;
+ }
+ }
+ }
+
+ this[method] = function(){
+ returnValue = v = undefined; cancel = false;
+ var args = Array.prototype.slice.call(arguments, 0);
+ for(var i = 0, len = e.before.length; i < len; i++){
+ makeCall(e.before[i].fn, e.before[i].scope, args);
+ if(cancel){
+ return returnValue;
+ }
+ }
+
+ if((v = e.originalFn.apply(obj, args)) !== undefined){
+ returnValue = v;
+ }
+
+ for(var i = 0, len = e.after.length; i < len; i++){
+ makeCall(e.after[i].fn, e.after[i].scope, args);
+ if(cancel){
+ return returnValue;
+ }
+ }
+ return returnValue;
+ };
+ }
+ return e;
+ },
+
+ beforeMethod : function(method, fn, scope){
+ var e = this.getMethodEvent(method);
+ e.before.push({fn: fn, scope: scope});
+ },
+
+ afterMethod : function(method, fn, scope){
+ var e = this.getMethodEvent(method);
+ e.after.push({fn: fn, scope: scope});
+ },
+
+ removeMethodListener : function(method, fn, scope){
+ var e = this.getMethodEvent(method);
+ for(var i = 0, len = e.before.length; i < len; i++){
+ if(e.before[i].fn == fn && e.before[i].scope == scope){
+ e.before.splice(i, 1);
+ return;
+ }
+ }
+ for(var i = 0, len = e.after.length; i < len; i++){
+ if(e.after[i].fn == fn && e.after[i].scope == scope){
+ e.after.splice(i, 1);
+ return;
+ }
+ }
+ }
+};
+
+Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener;
+
+Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener;
+
+
+Ext.util.Observable.capture = function(o, fn, scope){
+ o.fireEvent = o.fireEvent.createInterceptor(fn, scope);
+};
+
+
+Ext.util.Observable.releaseCapture = function(o){
+ o.fireEvent = Ext.util.Observable.prototype.fireEvent;
+};
+
+(function(){
+
+ var createBuffered = function(h, o, scope){
+ var task = new Ext.util.DelayedTask();
+ return function(){
+ task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
+ };
+ };
+
+ var createSingle = function(h, e, fn, scope){
+ return function(){
+ e.removeListener(fn, scope);
+ return h.apply(scope, arguments);
+ };
+ };
+
+ var createDelayed = function(h, o, scope){
+ return function(){
+ var args = Array.prototype.slice.call(arguments, 0);
+ setTimeout(function(){
+ h.apply(scope, args);
+ }, o.delay || 10);
+ };
+ };
+
+ Ext.util.Event = function(obj, name){
+ this.name = name;
+ this.obj = obj;
+ this.listeners = [];
+ };
+
+ Ext.util.Event.prototype = {
+ addListener : function(fn, scope, options){
+ scope = scope || this.obj;
+ if(!this.isListening(fn, scope)){
+ var l = this.createListener(fn, scope, options);
+ if(!this.firing){
+ this.listeners.push(l);
+ }else{ this.listeners = this.listeners.slice(0);
+ this.listeners.push(l);
+ }
+ }
+ },
+
+ createListener : function(fn, scope, o){
+ o = o || {};
+ scope = scope || this.obj;
+ var l = {fn: fn, scope: scope, options: o};
+ var h = fn;
+ if(o.delay){
+ h = createDelayed(h, o, scope);
+ }
+ if(o.single){
+ h = createSingle(h, this, fn, scope);
+ }
+ if(o.buffer){
+ h = createBuffered(h, o, scope);
+ }
+ l.fireFn = h;
+ return l;
+ },
+
+ findListener : function(fn, scope){
+ scope = scope || this.obj;
+ var ls = this.listeners;
+ for(var i = 0, len = ls.length; i < len; i++){
+ var l = ls[i];
+ if(l.fn == fn && l.scope == scope){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ isListening : function(fn, scope){
+ return this.findListener(fn, scope) != -1;
+ },
+
+ removeListener : function(fn, scope){
+ var index;
+ if((index = this.findListener(fn, scope)) != -1){
+ if(!this.firing){
+ this.listeners.splice(index, 1);
+ }else{
+ this.listeners = this.listeners.slice(0);
+ this.listeners.splice(index, 1);
+ }
+ return true;
+ }
+ return false;
+ },
+
+ clearListeners : function(){
+ this.listeners = [];
+ },
+
+ fire : function(){
+ var ls = this.listeners, scope, len = ls.length;
+ if(len > 0){
+ this.firing = true;
+ var args = Array.prototype.slice.call(arguments, 0);
+ for(var i = 0; i < len; i++){
+ var l = ls[i];
+ if(l.fireFn.apply(l.scope||this.obj||window, arguments) === false){
+ this.firing = false;
+ return false;
+ }
+ }
+ this.firing = false;
+ }
+ return true;
+ }
+ };
+})();
+
+Ext.EventManager = function(){
+ var docReadyEvent, docReadyProcId, docReadyState = false;
+ var resizeEvent, resizeTask, textEvent, textSize;
+ var E = Ext.lib.Event;
+ var D = Ext.lib.Dom;
+
+
+ var fireDocReady = function(){
+ if(!docReadyState){
+ docReadyState = true;
+ Ext.isReady = true;
+ if(docReadyProcId){
+ clearInterval(docReadyProcId);
+ }
+ if(Ext.isGecko || Ext.isOpera) {
+ document.removeEventListener("DOMContentLoaded", fireDocReady, false);
+ }
+ if(Ext.isIE){
+ var defer = document.getElementById("ie-deferred-loader");
+ if(defer){
+ defer.onreadystatechange = null;
+ defer.parentNode.removeChild(defer);
+ }
+ }
+ if(docReadyEvent){
+ docReadyEvent.fire();
+ docReadyEvent.clearListeners();
+ }
+ }
+ };
+
+ var initDocReady = function(){
+ docReadyEvent = new Ext.util.Event();
+ if(Ext.isGecko || Ext.isOpera) {
+ document.addEventListener("DOMContentLoaded", fireDocReady, false);
+ }else if(Ext.isIE){
+ document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>");
+ var defer = document.getElementById("ie-deferred-loader");
+ defer.onreadystatechange = function(){
+ if(this.readyState == "complete"){
+ fireDocReady();
+ }
+ };
+ }else if(Ext.isSafari){
+ docReadyProcId = setInterval(function(){
+ var rs = document.readyState;
+ if(rs == "complete") {
+ fireDocReady();
+ }
+ }, 10);
+ }
+
+ E.on(window, "load", fireDocReady);
+ };
+
+ var createBuffered = function(h, o){
+ var task = new Ext.util.DelayedTask(h);
+ return function(e){
+
+ e = new Ext.EventObjectImpl(e);
+ task.delay(o.buffer, h, null, [e]);
+ };
+ };
+
+ var createSingle = function(h, el, ename, fn){
+ return function(e){
+ Ext.EventManager.removeListener(el, ename, fn);
+ h(e);
+ };
+ };
+
+ var createDelayed = function(h, o){
+ return function(e){
+
+ e = new Ext.EventObjectImpl(e);
+ setTimeout(function(){
+ h(e);
+ }, o.delay || 10);
+ };
+ };
+
+ var listen = function(element, ename, opt, fn, scope){
+ var o = (!opt || typeof opt == "boolean") ? {} : opt;
+ fn = fn || o.fn; scope = scope || o.scope;
+ var el = Ext.getDom(element);
+ if(!el){
+ throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
+ }
+ var h = function(e){
+ e = Ext.EventObject.setEvent(e);
+ var t;
+ if(o.delegate){
+ t = e.getTarget(o.delegate, el);
+ if(!t){
+ return;
+ }
+ }else{
+ t = e.target;
+ }
+ if(o.stopEvent === true){
+ e.stopEvent();
+ }
+ if(o.preventDefault === true){
+ e.preventDefault();
+ }
+ if(o.stopPropagation === true){
+ e.stopPropagation();
+ }
+
+ if(o.normalized === false){
+ e = e.browserEvent;
+ }
+
+ fn.call(scope || el, e, t, o);
+ };
+ if(o.delay){
+ h = createDelayed(h, o);
+ }
+ if(o.single){
+ h = createSingle(h, el, ename, fn);
+ }
+ if(o.buffer){
+ h = createBuffered(h, o);
+ }
+ fn._handlers = fn._handlers || [];
+ fn._handlers.push([Ext.id(el), ename, h]);
+
+ E.on(el, ename, h);
+ if(ename == "mousewheel" && el.addEventListener){
+ el.addEventListener("DOMMouseScroll", h, false);
+ E.on(window, 'unload', function(){
+ el.removeEventListener("DOMMouseScroll", h, false);
+ });
+ }
+ if(ename == "mousedown" && el == document){
+ Ext.EventManager.stoppedMouseDownEvent.addListener(h);
+ }
+ return h;
+ };
+
+ var stopListening = function(el, ename, fn){
+ var id = Ext.id(el), hds = fn._handlers, hd = fn;
+ if(hds){
+ for(var i = 0, len = hds.length; i < len; i++){
+ var h = hds[i];
+ if(h[0] == id && h[1] == ename){
+ hd = h[2];
+ hds.splice(i, 1);
+ break;
+ }
+ }
+ }
+ E.un(el, ename, hd);
+ el = Ext.getDom(el);
+ if(ename == "mousewheel" && el.addEventListener){
+ el.removeEventListener("DOMMouseScroll", hd, false);
+ }
+ if(ename == "mousedown" && el == document){
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(hd);
+ }
+ };
+
+ var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
+ var pub = {
+
+
+ addListener : function(element, eventName, fn, scope, options){
+ if(typeof eventName == "object"){
+ var o = eventName;
+ for(var e in o){
+ if(propRe.test(e)){
+ continue;
+ }
+ if(typeof o[e] == "function"){
+
+ listen(element, e, o, o[e], o.scope);
+ }else{
+
+ listen(element, e, o[e]);
+ }
+ }
+ return;
+ }
+ return listen(element, eventName, options, fn, scope);
+ },
+
+
+ removeListener : function(element, eventName, fn){
+ return stopListening(element, eventName, fn);
+ },
+
+
+ onDocumentReady : function(fn, scope, options){
+ if(docReadyState){
+ docReadyEvent.addListener(fn, scope, options);
+ docReadyEvent.fire();
+ docReadyEvent.clearListeners();
+ return;
+ }
+ if(!docReadyEvent){
+ initDocReady();
+ }
+ docReadyEvent.addListener(fn, scope, options);
+ },
+
+
+ onWindowResize : function(fn, scope, options){
+ if(!resizeEvent){
+ resizeEvent = new Ext.util.Event();
+ resizeTask = new Ext.util.DelayedTask(function(){
+ resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
+ });
+ E.on(window, "resize", this.fireWindowResize, this);
+ }
+ resizeEvent.addListener(fn, scope, options);
+ },
+
+
+ fireWindowResize : function(){
+ if(resizeEvent){
+ if((Ext.isIE||Ext.isAir) && resizeTask){
+ resizeTask.delay(50);
+ }else{
+ resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
+ }
+ }
+ },
+
+
+ onTextResize : function(fn, scope, options){
+ if(!textEvent){
+ textEvent = new Ext.util.Event();
+ var textEl = new Ext.Element(document.createElement('div'));
+ textEl.dom.className = 'x-text-resize';
+ textEl.dom.innerHTML = 'X';
+ textEl.appendTo(document.body);
+ textSize = textEl.dom.offsetHeight;
+ setInterval(function(){
+ if(textEl.dom.offsetHeight != textSize){
+ textEvent.fire(textSize, textSize = textEl.dom.offsetHeight);
+ }
+ }, this.textResizeInterval);
+ }
+ textEvent.addListener(fn, scope, options);
+ },
+
+
+ removeResizeListener : function(fn, scope){
+ if(resizeEvent){
+ resizeEvent.removeListener(fn, scope);
+ }
+ },
+
+
+ fireResize : function(){
+ if(resizeEvent){
+ resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
+ }
+ },
+
+ ieDeferSrc : false,
+
+ textResizeInterval : 50
+ };
+
+ pub.on = pub.addListener;
+
+ pub.un = pub.removeListener;
+
+ pub.stoppedMouseDownEvent = new Ext.util.Event();
+ return pub;
+}();
+
+Ext.onReady = Ext.EventManager.onDocumentReady;
+
+Ext.onReady(function(){
+ var bd = Ext.getBody();
+ if(!bd){ return; }
+
+ var cls = [
+ Ext.isIE ? "ext-ie " + (Ext.isIE6 ? 'ext-ie6' : 'ext-ie7')
+ : Ext.isGecko ? "ext-gecko"
+ : Ext.isOpera ? "ext-opera"
+ : Ext.isSafari ? "ext-safari" : ""];
+
+ if(Ext.isMac){
+ cls.push("ext-mac");
+ }
+ if(Ext.isLinux){
+ cls.push("ext-linux");
+ }
+ if(Ext.isBorderBox){
+ cls.push('ext-border-box');
+ }
+ if(Ext.isStrict){
+ var p = bd.dom.parentNode;
+ if(p){
+ p.className += ' ext-strict';
+ }
+ }
+ bd.addClass(cls.join(' '));
+});
+
+
+Ext.EventObject = function(){
+
+ var E = Ext.lib.Event;
+
+
+ var safariKeys = {
+ 63234 : 37,
+ 63235 : 39,
+ 63232 : 38,
+ 63233 : 40,
+ 63276 : 33,
+ 63277 : 34,
+ 63272 : 46,
+ 63273 : 36,
+ 63275 : 35
+ };
+
+
+ var btnMap = Ext.isIE ? {1:0,4:1,2:2} :
+ (Ext.isSafari ? {1:0,2:1,3:2} : {0:0,1:1,2:2});
+
+ Ext.EventObjectImpl = function(e){
+ if(e){
+ this.setEvent(e.browserEvent || e);
+ }
+ };
+ Ext.EventObjectImpl.prototype = {
+
+ browserEvent : null,
+
+ button : -1,
+
+ shiftKey : false,
+
+ ctrlKey : false,
+
+ altKey : false,
+
+
+ BACKSPACE : 8,
+
+ TAB : 9,
+
+ RETURN : 13,
+
+ ENTER : 13,
+
+ SHIFT : 16,
+
+ CONTROL : 17,
+
+ ESC : 27,
+
+ SPACE : 32,
+
+ PAGEUP : 33,
+
+ PAGEDOWN : 34,
+
+ END : 35,
+
+ HOME : 36,
+
+ LEFT : 37,
+
+ UP : 38,
+
+ RIGHT : 39,
+
+ DOWN : 40,
+
+ DELETE : 46,
+
+ F5 : 116,
+
+
+ setEvent : function(e){
+ if(e == this || (e && e.browserEvent)){
+ return e;
+ }
+ this.browserEvent = e;
+ if(e){
+
+ this.button = e.button ? btnMap[e.button] : (e.which ? e.which-1 : -1);
+ if(e.type == 'click' && this.button == -1){
+ this.button = 0;
+ }
+ this.type = e.type;
+ this.shiftKey = e.shiftKey;
+
+ this.ctrlKey = e.ctrlKey || e.metaKey;
+ this.altKey = e.altKey;
+
+ this.keyCode = e.keyCode;
+ this.charCode = e.charCode;
+
+ this.target = E.getTarget(e);
+
+ this.xy = E.getXY(e);
+ }else{
+ this.button = -1;
+ this.shiftKey = false;
+ this.ctrlKey = false;
+ this.altKey = false;
+ this.keyCode = 0;
+ this.charCode =0;
+ this.target = null;
+ this.xy = [0, 0];
+ }
+ return this;
+ },
+
+
+ stopEvent : function(){
+ if(this.browserEvent){
+ if(this.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(this);
+ }
+ E.stopEvent(this.browserEvent);
+ }
+ },
+
+
+ preventDefault : function(){
+ if(this.browserEvent){
+ E.preventDefault(this.browserEvent);
+ }
+ },
+
+
+ isNavKeyPress : function(){
+ var k = this.keyCode;
+ k = Ext.isSafari ? (safariKeys[k] || k) : k;
+ return (k >= 33 && k <= 40) || k == this.RETURN || k == this.TAB || k == this.ESC;
+ },
+
+ isSpecialKey : function(){
+ var k = this.keyCode;
+ return (this.type == 'keypress' && this.ctrlKey) || k == 9 || k == 13 || k == 40 || k == 27 ||
+ (k == 16) || (k == 17) ||
+ (k >= 18 && k <= 20) ||
+ (k >= 33 && k <= 35) ||
+ (k >= 36 && k <= 39) ||
+ (k >= 44 && k <= 45);
+ },
+
+ stopPropagation : function(){
+ if(this.browserEvent){
+ if(this.browserEvent.type == 'mousedown'){
+ Ext.EventManager.stoppedMouseDownEvent.fire(this);
+ }
+ E.stopPropagation(this.browserEvent);
+ }
+ },
+
+
+ getCharCode : function(){
+ return this.charCode || this.keyCode;
+ },
+
+
+ getKey : function(){
+ var k = this.keyCode || this.charCode;
+ return Ext.isSafari ? (safariKeys[k] || k) : k;
+ },
+
+
+ getPageX : function(){
+ return this.xy[0];
+ },
+
+
+ getPageY : function(){
+ return this.xy[1];
+ },
+
+
+ getTime : function(){
+ if(this.browserEvent){
+ return E.getTime(this.browserEvent);
+ }
+ return null;
+ },
+
+
+ getXY : function(){
+ return this.xy;
+ },
+
+
+ getTarget : function(selector, maxDepth, returnEl){
+ return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : this.target;
+ },
+
+ getRelatedTarget : function(){
+ if(this.browserEvent){
+ return E.getRelatedTarget(this.browserEvent);
+ }
+ return null;
+ },
+
+
+ getWheelDelta : function(){
+ var e = this.browserEvent;
+ var delta = 0;
+ if(e.wheelDelta){
+ delta = e.wheelDelta/120;
+ }else if(e.detail){
+ delta = -e.detail/3;
+ }
+ return delta;
+ },
+
+
+ hasModifier : function(){
+ return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false;
+ },
+
+
+ within : function(el, related){
+ var t = this[related ? "getRelatedTarget" : "getTarget"]();
+ return t && Ext.fly(el).contains(t);
+ },
+
+ getPoint : function(){
+ return new Ext.lib.Point(this.xy[0], this.xy[1]);
+ }
+ };
+
+ return new Ext.EventObjectImpl();
+}();
+
+(function(){
+var D = Ext.lib.Dom;
+var E = Ext.lib.Event;
+var A = Ext.lib.Anim;
+
+
+var propCache = {};
+var camelRe = /(-[a-z])/gi;
+var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
+var view = document.defaultView;
+
+Ext.Element = function(element, forceNew){
+ var dom = typeof element == "string" ?
+ document.getElementById(element) : element;
+ if(!dom){
+ return null;
+ }
+ var id = dom.id;
+ if(forceNew !== true && id && Ext.Element.cache[id]){
+ return Ext.Element.cache[id];
+ }
+
+
+ this.dom = dom;
+
+
+ this.id = id || Ext.id(dom);
+};
+
+var El = Ext.Element;
+
+El.prototype = {
+
+ originalDisplay : "",
+
+ visibilityMode : 1,
+
+ defaultUnit : "px",
+
+ setVisibilityMode : function(visMode){
+ this.visibilityMode = visMode;
+ return this;
+ },
+
+ enableDisplayMode : function(display){
+ this.setVisibilityMode(El.DISPLAY);
+ if(typeof display != "undefined") this.originalDisplay = display;
+ return this;
+ },
+
+
+ findParent : function(simpleSelector, maxDepth, returnEl){
+ var p = this.dom, b = document.body, depth = 0, dq = Ext.DomQuery, stopEl;
+ maxDepth = maxDepth || 50;
+ if(typeof maxDepth != "number"){
+ stopEl = Ext.getDom(maxDepth);
+ maxDepth = 10;
+ }
+ while(p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl){
+ if(dq.is(p, simpleSelector)){
+ return returnEl ? Ext.get(p) : p;
+ }
+ depth++;
+ p = p.parentNode;
+ }
+ return null;
+ },
+
+
+
+ findParentNode : function(simpleSelector, maxDepth, returnEl){
+ var p = Ext.fly(this.dom.parentNode, '_internal');
+ return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null;
+ },
+
+
+ up : function(simpleSelector, maxDepth){
+ return this.findParentNode(simpleSelector, maxDepth, true);
+ },
+
+
+
+
+ is : function(simpleSelector){
+ return Ext.DomQuery.is(this.dom, simpleSelector);
+ },
+
+
+ animate : function(args, duration, onComplete, easing, animType){
+ this.anim(args, {duration: duration, callback: onComplete, easing: easing}, animType);
+ return this;
+ },
+
+
+ anim : function(args, opt, animType, defaultDur, defaultEase, cb){
+ animType = animType || 'run';
+ opt = opt || {};
+ var anim = Ext.lib.Anim[animType](
+ this.dom, args,
+ (opt.duration || defaultDur) || .35,
+ (opt.easing || defaultEase) || 'easeOut',
+ function(){
+ Ext.callback(cb, this);
+ Ext.callback(opt.callback, opt.scope || this, [this, opt]);
+ },
+ this
+ );
+ opt.anim = anim;
+ return anim;
+ },
+
+
+ preanim : function(a, i){
+ return !a[i] ? false : (typeof a[i] == "object" ? a[i]: {duration: a[i+1], callback: a[i+2], easing: a[i+3]});
+ },
+
+
+ clean : function(forceReclean){
+ if(this.isCleaned && forceReclean !== true){
+ return this;
+ }
+ var ns = /\S/;
+ var d = this.dom, n = d.firstChild, ni = -1;
+ while(n){
+ var nx = n.nextSibling;
+ if(n.nodeType == 3 && !ns.test(n.nodeValue)){
+ d.removeChild(n);
+ }else{
+ n.nodeIndex = ++ni;
+ }
+ n = nx;
+ }
+ this.isCleaned = true;
+ return this;
+ },
+
+
+ scrollIntoView : function(container, hscroll){
+ var c = Ext.getDom(container) || Ext.getBody().dom;
+ var el = this.dom;
+
+ var o = this.getOffsetsTo(c),
+ l = o[0] + c.scrollLeft,
+ t = o[1] + c.scrollTop,
+ b = t+el.offsetHeight,
+ r = l+el.offsetWidth;
+
+ var ch = c.clientHeight;
+ var ct = parseInt(c.scrollTop, 10);
+ var cl = parseInt(c.scrollLeft, 10);
+ var cb = ct + ch;
+ var cr = cl + c.clientWidth;
+
+ if(t < ct){
+ c.scrollTop = t;
+ }else if(b > cb){
+ c.scrollTop = b-ch;
+ }
+ c.scrollTop = c.scrollTop;
+
+ if(hscroll !== false){
+ if(l < cl){
+ c.scrollLeft = l;
+ }else if(r > cr){
+ c.scrollLeft = r-c.clientWidth;
+ }
+ c.scrollLeft = c.scrollLeft;
+ }
+ return this;
+ },
+
+
+ scrollChildIntoView : function(child, hscroll){
+ Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
+ },
+
+
+ autoHeight : function(animate, duration, onComplete, easing){
+ var oldHeight = this.getHeight();
+ this.clip();
+ this.setHeight(1);
+ setTimeout(function(){
+ var height = parseInt(this.dom.scrollHeight, 10);
+ if(!animate){
+ this.setHeight(height);
+ this.unclip();
+ if(typeof onComplete == "function"){
+ onComplete();
+ }
+ }else{
+ this.setHeight(oldHeight);
+ this.setHeight(height, animate, duration, function(){
+ this.unclip();
+ if(typeof onComplete == "function") onComplete();
+ }.createDelegate(this), easing);
+ }
+ }.createDelegate(this), 0);
+ return this;
+ },
+
+
+ contains : function(el){
+ if(!el){return false;}
+ return D.isAncestor(this.dom, el.dom ? el.dom : el);
+ },
+
+
+ isVisible : function(deep) {
+ var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none");
+ if(deep !== true || !vis){
+ return vis;
+ }
+ var p = this.dom.parentNode;
+ while(p && p.tagName.toLowerCase() != "body"){
+ if(!Ext.fly(p, '_isVisible').isVisible()){
+ return false;
+ }
+ p = p.parentNode;
+ }
+ return true;
+ },
+
+
+ select : function(selector, unique){
+ return El.select(selector, unique, this.dom);
+ },
+
+
+ query : function(selector, unique){
+ return Ext.DomQuery.select(selector, this.dom);
+ },
+
+
+ child : function(selector, returnDom){
+ var n = Ext.DomQuery.selectNode(selector, this.dom);
+ return returnDom ? n : Ext.get(n);
+ },
+
+
+ down : function(selector, returnDom){
+ var n = Ext.DomQuery.selectNode(" > " + selector, this.dom);
+ return returnDom ? n : Ext.get(n);
+ },
+
+
+ initDD : function(group, config, overrides){
+ var dd = new Ext.dd.DD(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ },
+
+
+ initDDProxy : function(group, config, overrides){
+ var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ },
+
+
+ initDDTarget : function(group, config, overrides){
+ var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config);
+ return Ext.apply(dd, overrides);
+ },
+
+
+ setVisible : function(visible, animate){
+ if(!animate || !A){
+ if(this.visibilityMode == El.DISPLAY){
+ this.setDisplayed(visible);
+ }else{
+ this.fixDisplay();
+ this.dom.style.visibility = visible ? "visible" : "hidden";
+ }
+ }else{
+
+ var dom = this.dom;
+ var visMode = this.visibilityMode;
+ if(visible){
+ this.setOpacity(.01);
+ this.setVisible(true);
+ }
+ this.anim({opacity: { to: (visible?1:0) }},
+ this.preanim(arguments, 1),
+ null, .35, 'easeIn', function(){
+ if(!visible){
+ if(visMode == El.DISPLAY){
+ dom.style.display = "none";
+ }else{
+ dom.style.visibility = "hidden";
+ }
+ Ext.get(dom).setOpacity(1);
+ }
+ });
+ }
+ return this;
+ },
+
+
+ isDisplayed : function() {
+ return this.getStyle("display") != "none";
+ },
+
+
+ toggle : function(animate){
+ this.setVisible(!this.isVisible(), this.preanim(arguments, 0));
+ return this;
+ },
+
+
+ setDisplayed : function(value) {
+ if(typeof value == "boolean"){
+ value = value ? this.originalDisplay : "none";
+ }
+ this.setStyle("display", value);
+ return this;
+ },
+
+
+ focus : function() {
+ try{
+ this.dom.focus();
+ }catch(e){}
+ return this;
+ },
+
+
+ blur : function() {
+ try{
+ this.dom.blur();
+ }catch(e){}
+ return this;
+ },
+
+
+ addClass : function(className){
+ if(className instanceof Array){
+ for(var i = 0, len = className.length; i < len; i++) {
+ this.addClass(className[i]);
+ }
+ }else{
+ if(className && !this.hasClass(className)){
+ this.dom.className = this.dom.className + " " + className;
+ }
+ }
+ return this;
+ },
+
+
+ radioClass : function(className){
+ var siblings = this.dom.parentNode.childNodes;
+ for(var i = 0; i < siblings.length; i++) {
+ var s = siblings[i];
+ if(s.nodeType == 1){
+ Ext.get(s).removeClass(className);
+ }
+ }
+ this.addClass(className);
+ return this;
+ },
+
+
+ removeClass : function(className){
+ if(!className || !this.dom.className){
+ return this;
+ }
+ if(className instanceof Array){
+ for(var i = 0, len = className.length; i < len; i++) {
+ this.removeClass(className[i]);
+ }
+ }else{
+ if(this.hasClass(className)){
+ var re = this.classReCache[className];
+ if (!re) {
+ re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', "g");
+ this.classReCache[className] = re;
+ }
+ this.dom.className =
+ this.dom.className.replace(re, " ");
+ }
+ }
+ return this;
+ },
+
+
+ classReCache: {},
+
+
+ toggleClass : function(className){
+ if(this.hasClass(className)){
+ this.removeClass(className);
+ }else{
+ this.addClass(className);
+ }
+ return this;
+ },
+
+
+ hasClass : function(className){
+ return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1;
+ },
+
+
+ replaceClass : function(oldClassName, newClassName){
+ this.removeClass(oldClassName);
+ this.addClass(newClassName);
+ return this;
+ },
+
+
+ getStyles : function(){
+ var a = arguments, len = a.length, r = {};
+ for(var i = 0; i < len; i++){
+ r[a[i]] = this.getStyle(a[i]);
+ }
+ return r;
+ },
+
+
+ getStyle : function(){
+ return view && view.getComputedStyle ?
+ function(prop){
+ var el = this.dom, v, cs, camel;
+ if(prop == 'float'){
+ prop = "cssFloat";
+ }
+ if(v = el.style[prop]){
+ return v;
+ }
+ if(cs = view.getComputedStyle(el, "")){
+ if(!(camel = propCache[prop])){
+ camel = propCache[prop] = prop.replace(camelRe, camelFn);
+ }
+ return cs[camel];
+ }
+ return null;
+ } :
+ function(prop){
+ var el = this.dom, v, cs, camel;
+ if(prop == 'opacity'){
+ if(typeof el.style.filter == 'string'){
+ var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i);
+ if(m){
+ var fv = parseFloat(m[1]);
+ if(!isNaN(fv)){
+ return fv ? fv / 100 : 0;
+ }
+ }
+ }
+ return 1;
+ }else if(prop == 'float'){
+ prop = "styleFloat";
+ }
+ if(!(camel = propCache[prop])){
+ camel = propCache[prop] = prop.replace(camelRe, camelFn);
+ }
+ if(v = el.style[camel]){
+ return v;
+ }
+ if(cs = el.currentStyle){
+ return cs[camel];
+ }
+ return null;
+ };
+ }(),
+
+
+ setStyle : function(prop, value){
+ if(typeof prop == "string"){
+ var camel;
+ if(!(camel = propCache[prop])){
+ camel = propCache[prop] = prop.replace(camelRe, camelFn);
+ }
+ if(camel == 'opacity') {
+ this.setOpacity(value);
+ }else{
+ this.dom.style[camel] = value;
+ }
+ }else{
+ for(var style in prop){
+ if(typeof prop[style] != "function"){
+ this.setStyle(style, prop[style]);
+ }
+ }
+ }
+ return this;
+ },
+
+
+ applyStyles : function(style){
+ Ext.DomHelper.applyStyles(this.dom, style);
+ return this;
+ },
+
+
+ getX : function(){
+ return D.getX(this.dom);
+ },
+
+
+ getY : function(){
+ return D.getY(this.dom);
+ },
+
+
+ getXY : function(){
+ return D.getXY(this.dom);
+ },
+
+
+ getOffsetsTo : function(el){
+ var o = this.getXY();
+ var e = Ext.fly(el, '_internal').getXY();
+ return [o[0]-e[0],o[1]-e[1]];
+ },
+
+
+ setX : function(x, animate){
+ if(!animate || !A){
+ D.setX(this.dom, x);
+ }else{
+ this.setXY([x, this.getY()], this.preanim(arguments, 1));
+ }
+ return this;
+ },
+
+
+ setY : function(y, animate){
+ if(!animate || !A){
+ D.setY(this.dom, y);
+ }else{
+ this.setXY([this.getX(), y], this.preanim(arguments, 1));
+ }
+ return this;
+ },
+
+
+ setLeft : function(left){
+ this.setStyle("left", this.addUnits(left));
+ return this;
+ },
+
+
+ setTop : function(top){
+ this.setStyle("top", this.addUnits(top));
+ return this;
+ },
+
+
+ setRight : function(right){
+ this.setStyle("right", this.addUnits(right));
+ return this;
+ },
+
+
+ setBottom : function(bottom){
+ this.setStyle("bottom", this.addUnits(bottom));
+ return this;
+ },
+
+
+ setXY : function(pos, animate){
+ if(!animate || !A){
+ D.setXY(this.dom, pos);
+ }else{
+ this.anim({points: {to: pos}}, this.preanim(arguments, 1), 'motion');
+ }
+ return this;
+ },
+
+
+ setLocation : function(x, y, animate){
+ this.setXY([x, y], this.preanim(arguments, 2));
+ return this;
+ },
+
+
+ moveTo : function(x, y, animate){
+ this.setXY([x, y], this.preanim(arguments, 2));
+ return this;
+ },
+
+
+ getRegion : function(){
+ return D.getRegion(this.dom);
+ },
+
+
+ getHeight : function(contentHeight){
+ var h = this.dom.offsetHeight || 0;
+ h = contentHeight !== true ? h : h-this.getBorderWidth("tb")-this.getPadding("tb");
+ return h < 0 ? 0 : h;
+ },
+
+
+ getWidth : function(contentWidth){
+ var w = this.dom.offsetWidth || 0;
+ w = contentWidth !== true ? w : w-this.getBorderWidth("lr")-this.getPadding("lr");
+ return w < 0 ? 0 : w;
+ },
+
+
+ getComputedHeight : function(){
+ var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight);
+ if(!h){
+ h = parseInt(this.getStyle('height'), 10) || 0;
+ if(!this.isBorderBox()){
+ h += this.getFrameWidth('tb');
+ }
+ }
+ return h;
+ },
+
+
+ getComputedWidth : function(){
+ var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
+ if(!w){
+ w = parseInt(this.getStyle('width'), 10) || 0;
+ if(!this.isBorderBox()){
+ w += this.getFrameWidth('lr');
+ }
+ }
+ return w;
+ },
+
+
+ getSize : function(contentSize){
+ return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
+ },
+
+ getStyleSize : function(){
+ var w, h, d = this.dom, s = d.style;
+ if(s.width && s.width != 'auto'){
+ w = parseInt(s.width, 10);
+ if(Ext.isBorderBox){
+ w -= this.getFrameWidth('lr');
+ }
+ }
+ if(s.height && s.height != 'auto'){
+ h = parseInt(s.height, 10);
+ if(Ext.isBorderBox){
+ h -= this.getFrameWidth('tb');
+ }
+ }
+ return {width: w || this.getWidth(true), height: h || this.getHeight(true)};
+
+ },
+
+
+ getViewSize : function(){
+ var d = this.dom, doc = document, aw = 0, ah = 0;
+ if(d == doc || d == doc.body){
+ return {width : D.getViewWidth(), height: D.getViewHeight()};
+ }else{
+ return {
+ width : d.clientWidth,
+ height: d.clientHeight
+ };
+ }
+ },
+
+
+ getValue : function(asNumber){
+ return asNumber ? parseInt(this.dom.value, 10) : this.dom.value;
+ },
+
+
+ adjustWidth : function(width){
+ if(typeof width == "number"){
+ if(this.autoBoxAdjust && !this.isBorderBox()){
+ width -= (this.getBorderWidth("lr") + this.getPadding("lr"));
+ }
+ if(width < 0){
+ width = 0;
+ }
+ }
+ return width;
+ },
+
+
+ adjustHeight : function(height){
+ if(typeof height == "number"){
+ if(this.autoBoxAdjust && !this.isBorderBox()){
+ height -= (this.getBorderWidth("tb") + this.getPadding("tb"));
+ }
+ if(height < 0){
+ height = 0;
+ }
+ }
+ return height;
+ },
+
+
+ setWidth : function(width, animate){
+ width = this.adjustWidth(width);
+ if(!animate || !A){
+ this.dom.style.width = this.addUnits(width);
+ }else{
+ this.anim({width: {to: width}}, this.preanim(arguments, 1));
+ }
+ return this;
+ },
+
+
+ setHeight : function(height, animate){
+ height = this.adjustHeight(height);
+ if(!animate || !A){
+ this.dom.style.height = this.addUnits(height);
+ }else{
+ this.anim({height: {to: height}}, this.preanim(arguments, 1));
+ }
+ return this;
+ },
+
+
+ setSize : function(width, height, animate){
+ if(typeof width == "object"){
+ height = width.height; width = width.width;
+ }
+ width = this.adjustWidth(width); height = this.adjustHeight(height);
+ if(!animate || !A){
+ this.dom.style.width = this.addUnits(width);
+ this.dom.style.height = this.addUnits(height);
+ }else{
+ this.anim({width: {to: width}, height: {to: height}}, this.preanim(arguments, 2));
+ }
+ return this;
+ },
+
+
+ setBounds : function(x, y, width, height, animate){
+ if(!animate || !A){
+ this.setSize(width, height);
+ this.setLocation(x, y);
+ }else{
+ width = this.adjustWidth(width); height = this.adjustHeight(height);
+ this.anim({points: {to: [x, y]}, width: {to: width}, height: {to: height}},
+ this.preanim(arguments, 4), 'motion');
+ }
+ return this;
+ },
+
+
+ setRegion : function(region, animate){
+ this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.preanim(arguments, 1));
+ return this;
+ },
+
+
+ addListener : function(eventName, fn, scope, options){
+ Ext.EventManager.on(this.dom, eventName, fn, scope || this, options);
+ },
+
+
+ removeListener : function(eventName, fn){
+ Ext.EventManager.removeListener(this.dom, eventName, fn);
+ return this;
+ },
+
+
+ removeAllListeners : function(){
+ E.purgeElement(this.dom);
+ return this;
+ },
+
+
+ relayEvent : function(eventName, observable){
+ this.on(eventName, function(e){
+ observable.fireEvent(eventName, e);
+ });
+ },
+
+
+ setOpacity : function(opacity, animate){
+ if(!animate || !A){
+ var s = this.dom.style;
+ if(Ext.isIE){
+ s.zoom = 1;
+ s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi,"") +
+ (opacity == 1 ? "" : " alpha(opacity=" + opacity * 100 + ")");
+ }else{
+ s.opacity = opacity;
+ }
+ }else{
+ this.anim({opacity: {to: opacity}}, this.preanim(arguments, 1), null, .35, 'easeIn');
+ }
+ return this;
+ },
+
+
+ getLeft : function(local){
+ if(!local){
+ return this.getX();
+ }else{
+ return parseInt(this.getStyle("left"), 10) || 0;
+ }
+ },
+
+
+ getRight : function(local){
+ if(!local){
+ return this.getX() + this.getWidth();
+ }else{
+ return (this.getLeft(true) + this.getWidth()) || 0;
+ }
+ },
+
+
+ getTop : function(local) {
+ if(!local){
+ return this.getY();
+ }else{
+ return parseInt(this.getStyle("top"), 10) || 0;
+ }
+ },
+
+
+ getBottom : function(local){
+ if(!local){
+ return this.getY() + this.getHeight();
+ }else{
+ return (this.getTop(true) + this.getHeight()) || 0;
+ }
+ },
+
+
+ position : function(pos, zIndex, x, y){
+ if(!pos){
+ if(this.getStyle('position') == 'static'){
+ this.setStyle('position', 'relative');
+ }
+ }else{
+ this.setStyle("position", pos);
+ }
+ if(zIndex){
+ this.setStyle("z-index", zIndex);
+ }
+ if(x !== undefined && y !== undefined){
+ this.setXY([x, y]);
+ }else if(x !== undefined){
+ this.setX(x);
+ }else if(y !== undefined){
+ this.setY(y);
+ }
+ },
+
+
+ clearPositioning : function(value){
+ value = value ||'';
+ this.setStyle({
+ "left": value,
+ "right": value,
+ "top": value,
+ "bottom": value,
+ "z-index": "",
+ "position" : "static"
+ });
+ return this;
+ },
+
+
+ getPositioning : function(){
+ var l = this.getStyle("left");
+ var t = this.getStyle("top");
+ return {
+ "position" : this.getStyle("position"),
+ "left" : l,
+ "right" : l ? "" : this.getStyle("right"),
+ "top" : t,
+ "bottom" : t ? "" : this.getStyle("bottom"),
+ "z-index" : this.getStyle("z-index")
+ };
+ },
+
+
+ getBorderWidth : function(side){
+ return this.addStyles(side, El.borders);
+ },
+
+
+ getPadding : function(side){
+ return this.addStyles(side, El.paddings);
+ },
+
+
+ setPositioning : function(pc){
+ this.applyStyles(pc);
+ if(pc.right == "auto"){
+ this.dom.style.right = "";
+ }
+ if(pc.bottom == "auto"){
+ this.dom.style.bottom = "";
+ }
+ return this;
+ },
+
+
+ fixDisplay : function(){
+ if(this.getStyle("display") == "none"){
+ this.setStyle("visibility", "hidden");
+ this.setStyle("display", this.originalDisplay);
+ if(this.getStyle("display") == "none"){
+ this.setStyle("display", "block");
+ }
+ }
+ },
+
+
+ setLeftTop : function(left, top){
+ this.dom.style.left = this.addUnits(left);
+ this.dom.style.top = this.addUnits(top);
+ return this;
+ },
+
+
+ move : function(direction, distance, animate){
+ var xy = this.getXY();
+ direction = direction.toLowerCase();
+ switch(direction){
+ case "l":
+ case "left":
+ this.moveTo(xy[0]-distance, xy[1], this.preanim(arguments, 2));
+ break;
+ case "r":
+ case "right":
+ this.moveTo(xy[0]+distance, xy[1], this.preanim(arguments, 2));
+ break;
+ case "t":
+ case "top":
+ case "up":
+ this.moveTo(xy[0], xy[1]-distance, this.preanim(arguments, 2));
+ break;
+ case "b":
+ case "bottom":
+ case "down":
+ this.moveTo(xy[0], xy[1]+distance, this.preanim(arguments, 2));
+ break;
+ }
+ return this;
+ },
+
+
+ clip : function(){
+ if(!this.isClipped){
+ this.isClipped = true;
+ this.originalClip = {
+ "o": this.getStyle("overflow"),
+ "x": this.getStyle("overflow-x"),
+ "y": this.getStyle("overflow-y")
+ };
+ this.setStyle("overflow", "hidden");
+ this.setStyle("overflow-x", "hidden");
+ this.setStyle("overflow-y", "hidden");
+ }
+ return this;
+ },
+
+
+ unclip : function(){
+ if(this.isClipped){
+ this.isClipped = false;
+ var o = this.originalClip;
+ if(o.o){this.setStyle("overflow", o.o);}
+ if(o.x){this.setStyle("overflow-x", o.x);}
+ if(o.y){this.setStyle("overflow-y", o.y);}
+ }
+ return this;
+ },
+
+
+
+ getAnchorXY : function(anchor, local, s){
+
+
+
+ var w, h, vp = false;
+ if(!s){
+ var d = this.dom;
+ if(d == document.body || d == document){
+ vp = true;
+ w = D.getViewWidth(); h = D.getViewHeight();
+ }else{
+ w = this.getWidth(); h = this.getHeight();
+ }
+ }else{
+ w = s.width; h = s.height;
+ }
+ var x = 0, y = 0, r = Math.round;
+ switch((anchor || "tl").toLowerCase()){
+ case "c":
+ x = r(w*.5);
+ y = r(h*.5);
+ break;
+ case "t":
+ x = r(w*.5);
+ y = 0;
+ break;
+ case "l":
+ x = 0;
+ y = r(h*.5);
+ break;
+ case "r":
+ x = w;
+ y = r(h*.5);
+ break;
+ case "b":
+ x = r(w*.5);
+ y = h;
+ break;
+ case "tl":
+ x = 0;
+ y = 0;
+ break;
+ case "bl":
+ x = 0;
+ y = h;
+ break;
+ case "br":
+ x = w;
+ y = h;
+ break;
+ case "tr":
+ x = w;
+ y = 0;
+ break;
+ }
+ if(local === true){
+ return [x, y];
+ }
+ if(vp){
+ var sc = this.getScroll();
+ return [x + sc.left, y + sc.top];
+ }
+
+ var o = this.getXY();
+ return [x+o[0], y+o[1]];
+ },
+
+
+ getAlignToXY : function(el, p, o){
+ el = Ext.get(el);
+ var d = this.dom;
+ if(!el.dom){
+ throw "Element.alignTo with an element that doesn't exist";
+ }
+ var c = false;
+ var p1 = "", p2 = "";
+ o = o || [0,0];
+
+ if(!p){
+ p = "tl-bl";
+ }else if(p == "?"){
+ p = "tl-bl?";
+ }else if(p.indexOf("-") == -1){
+ p = "tl-" + p;
+ }
+ p = p.toLowerCase();
+ var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/);
+ if(!m){
+ throw "Element.alignTo with an invalid alignment " + p;
+ }
+ p1 = m[1]; p2 = m[2]; c = !!m[3];
+
+
+
+ var a1 = this.getAnchorXY(p1, true);
+ var a2 = el.getAnchorXY(p2, false);
+
+ var x = a2[0] - a1[0] + o[0];
+ var y = a2[1] - a1[1] + o[1];
+
+ if(c){
+
+ var w = this.getWidth(), h = this.getHeight(), r = el.getRegion();
+
+ var dw = D.getViewWidth()-5, dh = D.getViewHeight()-5;
+
+
+
+
+ var p1y = p1.charAt(0), p1x = p1.charAt(p1.length-1);
+ var p2y = p2.charAt(0), p2x = p2.charAt(p2.length-1);
+ var swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t"));
+ var swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r"));
+
+ var doc = document;
+ var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0)+5;
+ var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0)+5;
+
+ if((x+w) > dw + scrollX){
+ x = swapX ? r.left-w : dw+scrollX-w;
+ }
+ if(x < scrollX){
+ x = swapX ? r.right : scrollX;
+ }
+ if((y+h) > dh + scrollY){
+ y = swapY ? r.top-h : dh+scrollY-h;
+ }
+ if (y < scrollY){
+ y = swapY ? r.bottom : scrollY;
+ }
+ }
+ return [x,y];
+ },
+
+
+ getConstrainToXY : function(){
+ var os = {top:0, left:0, bottom:0, right: 0};
+
+ return function(el, local, offsets, proposedXY){
+ el = Ext.get(el);
+ offsets = offsets ? Ext.applyIf(offsets, os) : os;
+
+ var vw, vh, vx = 0, vy = 0;
+ if(el.dom == document.body || el.dom == document){
+ vw = Ext.lib.Dom.getViewWidth();
+ vh = Ext.lib.Dom.getViewHeight();
+ }else{
+ vw = el.dom.clientWidth;
+ vh = el.dom.clientHeight;
+ if(!local){
+ var vxy = el.getXY();
+ vx = vxy[0];
+ vy = vxy[1];
+ }
+ }
+
+ var s = el.getScroll();
+
+ vx += offsets.left + s.left;
+ vy += offsets.top + s.top;
+
+ vw -= offsets.right;
+ vh -= offsets.bottom;
+
+ var vr = vx+vw;
+ var vb = vy+vh;
+
+ var xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]);
+ var x = xy[0], y = xy[1];
+ var w = this.dom.offsetWidth, h = this.dom.offsetHeight;
+
+
+ var moved = false;
+
+
+ if((x + w) > vr){
+ x = vr - w;
+ moved = true;
+ }
+ if((y + h) > vb){
+ y = vb - h;
+ moved = true;
+ }
+
+ if(x < vx){
+ x = vx;
+ moved = true;
+ }
+ if(y < vy){
+ y = vy;
+ moved = true;
+ }
+ return moved ? [x, y] : false;
+ };
+ }(),
+
+
+ adjustForConstraints : function(xy, parent, offsets){
+ return this.getConstrainToXY(parent || document, false, offsets, xy) || xy;
+ },
+
+
+ alignTo : function(element, position, offsets, animate){
+ var xy = this.getAlignToXY(element, position, offsets);
+ this.setXY(xy, this.preanim(arguments, 3));
+ return this;
+ },
+
+
+ anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){
+ var action = function(){
+ this.alignTo(el, alignment, offsets, animate);
+ Ext.callback(callback, this);
+ };
+ Ext.EventManager.onWindowResize(action, this);
+ var tm = typeof monitorScroll;
+ if(tm != 'undefined'){
+ Ext.EventManager.on(window, 'scroll', action, this,
+ {buffer: tm == 'number' ? monitorScroll : 50});
+ }
+ action.call(this);
+ return this;
+ },
+
+ clearOpacity : function(){
+ if (window.ActiveXObject) {
+ if(typeof this.dom.style.filter == 'string' && (/alpha/i).test(this.dom.style.filter)){
+ this.dom.style.filter = "";
+ }
+ } else {
+ this.dom.style.opacity = "";
+ this.dom.style["-moz-opacity"] = "";
+ this.dom.style["-khtml-opacity"] = "";
+ }
+ return this;
+ },
+
+
+ hide : function(animate){
+ this.setVisible(false, this.preanim(arguments, 0));
+ return this;
+ },
+
+
+ show : function(animate){
+ this.setVisible(true, this.preanim(arguments, 0));
+ return this;
+ },
+
+
+ addUnits : function(size){
+ return Ext.Element.addUnits(size, this.defaultUnit);
+ },
+
+
+ update : function(html, loadScripts, callback){
+ if(typeof html == "undefined"){
+ html = "";
+ }
+ if(loadScripts !== true){
+ this.dom.innerHTML = html;
+ if(typeof callback == "function"){
+ callback();
+ }
+ return this;
+ }
+ var id = Ext.id();
+ var dom = this.dom;
+
+ html += '<span id="' + id + '"></span>';
+
+ E.onAvailable(id, function(){
+ var hd = document.getElementsByTagName("head")[0];
+ var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;
+ var srcRe = /\ssrc=([\'\"])(.*?)\1/i;
+ var typeRe = /\stype=([\'\"])(.*?)\1/i;
+
+ var match;
+ while(match = re.exec(html)){
+ var attrs = match[1];
+ var srcMatch = attrs ? attrs.match(srcRe) : false;
+ if(srcMatch && srcMatch[2]){
+ var s = document.createElement("script");
+ s.src = srcMatch[2];
+ var typeMatch = attrs.match(typeRe);
+ if(typeMatch && typeMatch[2]){
+ s.type = typeMatch[2];
+ }
+ hd.appendChild(s);
+ }else if(match[2] && match[2].length > 0){
+ if(window.execScript) {
+ window.execScript(match[2]);
+ } else {
+ window.eval(match[2]);
+ }
+ }
+ }
+ var el = document.getElementById(id);
+ if(el){Ext.removeNode(el);}
+ if(typeof callback == "function"){
+ callback();
+ }
+ });
+ dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
+ return this;
+ },
+
+
+ load : function(){
+ var um = this.getUpdater();
+ um.update.apply(um, arguments);
+ return this;
+ },
+
+
+ getUpdater : function(){
+ if(!this.updateManager){
+ this.updateManager = new Ext.Updater(this);
+ }
+ return this.updateManager;
+ },
+
+
+ unselectable : function(){
+ this.dom.unselectable = "on";
+ this.swallowEvent("selectstart", true);
+ this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");
+ this.addClass("x-unselectable");
+ return this;
+ },
+
+
+ getCenterXY : function(){
+ return this.getAlignToXY(document, 'c-c');
+ },
+
+
+ center : function(centerIn){
+ this.alignTo(centerIn || document, 'c-c');
+ return this;
+ },
+
+
+ isBorderBox : function(){
+ return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox;
+ },
+
+
+ getBox : function(contentBox, local){
+ var xy;
+ if(!local){
+ xy = this.getXY();
+ }else{
+ var left = parseInt(this.getStyle("left"), 10) || 0;
+ var top = parseInt(this.getStyle("top"), 10) || 0;
+ xy = [left, top];
+ }
+ var el = this.dom, w = el.offsetWidth, h = el.offsetHeight, bx;
+ if(!contentBox){
+ bx = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: w, height: h};
+ }else{
+ var l = this.getBorderWidth("l")+this.getPadding("l");
+ var r = this.getBorderWidth("r")+this.getPadding("r");
+ var t = this.getBorderWidth("t")+this.getPadding("t");
+ var b = this.getBorderWidth("b")+this.getPadding("b");
+ bx = {x: xy[0]+l, y: xy[1]+t, 0: xy[0]+l, 1: xy[1]+t, width: w-(l+r), height: h-(t+b)};
+ }
+ bx.right = bx.x + bx.width;
+ bx.bottom = bx.y + bx.height;
+ return bx;
+ },
+
+
+ getFrameWidth : function(sides, onlyContentBox){
+ return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
+ },
+
+
+ setBox : function(box, adjust, animate){
+ var w = box.width, h = box.height;
+ if((adjust && !this.autoBoxAdjust) && !this.isBorderBox()){
+ w -= (this.getBorderWidth("lr") + this.getPadding("lr"));
+ h -= (this.getBorderWidth("tb") + this.getPadding("tb"));
+ }
+ this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2));
+ return this;
+ },
+
+
+ repaint : function(){
+ var dom = this.dom;
+ this.addClass("x-repaint");
+ setTimeout(function(){
+ Ext.get(dom).removeClass("x-repaint");
+ }, 1);
+ return this;
+ },
+
+
+ getMargins : function(side){
+ if(!side){
+ return {
+ top: parseInt(this.getStyle("margin-top"), 10) || 0,
+ left: parseInt(this.getStyle("margin-left"), 10) || 0,
+ bottom: parseInt(this.getStyle("margin-bottom"), 10) || 0,
+ right: parseInt(this.getStyle("margin-right"), 10) || 0
+ };
+ }else{
+ return this.addStyles(side, El.margins);
+ }
+ },
+
+
+ addStyles : function(sides, styles){
+ var val = 0, v, w;
+ for(var i = 0, len = sides.length; i < len; i++){
+ v = this.getStyle(styles[sides.charAt(i)]);
+ if(v){
+ w = parseInt(v, 10);
+ if(w){ val += (w >= 0 ? w : -1 * w); }
+ }
+ }
+ return val;
+ },
+
+
+ createProxy : function(config, renderTo, matchBox){
+ config = typeof config == "object" ?
+ config : {tag : "div", cls: config};
+
+ var proxy;
+ if(renderTo){
+ proxy = Ext.DomHelper.append(renderTo, config, true);
+ }else {
+ proxy = Ext.DomHelper.insertBefore(this.dom, config, true);
+ }
+ if(matchBox){
+ proxy.setBox(this.getBox());
+ }
+ return proxy;
+ },
+
+
+ mask : function(msg, msgCls){
+ if(this.getStyle("position") == "static"){
+ this.setStyle("position", "relative");
+ }
+ if(this._maskMsg){
+ this._maskMsg.remove();
+ }
+ if(this._mask){
+ this._mask.remove();
+ }
+
+ this._mask = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask"}, true);
+
+ this.addClass("x-masked");
+ this._mask.setDisplayed(true);
+ if(typeof msg == 'string'){
+ this._maskMsg = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask-msg", cn:{tag:'div'}}, true);
+ var mm = this._maskMsg;
+ mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg";
+ mm.dom.firstChild.innerHTML = msg;
+ mm.setDisplayed(true);
+ mm.center(this);
+ }
+ if(Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle('height') == 'auto'){
+ this._mask.setSize(this.dom.clientWidth, this.getHeight());
+ }
+ return this._mask;
+ },
+
+
+ unmask : function(){
+ if(this._mask){
+ if(this._maskMsg){
+ this._maskMsg.remove();
+ delete this._maskMsg;
+ }
+ this._mask.remove();
+ delete this._mask;
+ }
+ this.removeClass("x-masked");
+ },
+
+
+ isMasked : function(){
+ return this._mask && this._mask.isVisible();
+ },
+
+
+ createShim : function(){
+ var el = document.createElement('iframe');
+ el.frameBorder = 'no';
+ el.className = 'ext-shim';
+ if(Ext.isIE && Ext.isSecure){
+ el.src = Ext.SSL_SECURE_URL;
+ }
+ var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
+ shim.autoBoxAdjust = false;
+ return shim;
+ },
+
+
+ remove : function(){
+ Ext.removeNode(this.dom);
+ delete El.cache[this.dom.id];
+ },
+
+
+ hover : function(overFn, outFn, scope){
+ var preOverFn = function(e){
+ if(!e.within(this, true)){
+ overFn.apply(scope || this, arguments);
+ }
+ };
+ var preOutFn = function(e){
+ if(!e.within(this, true)){
+ outFn.apply(scope || this, arguments);
+ }
+ };
+ this.on("mouseover", preOverFn, this.dom);
+ this.on("mouseout", preOutFn, this.dom);
+ return this;
+ },
+
+
+ addClassOnOver : function(className, preventFlicker){
+ this.hover(
+ function(){
+ Ext.fly(this, '_internal').addClass(className);
+ },
+ function(){
+ Ext.fly(this, '_internal').removeClass(className);
+ }
+ );
+ return this;
+ },
+
+
+ addClassOnFocus : function(className){
+ this.on("focus", function(){
+ Ext.fly(this, '_internal').addClass(className);
+ }, this.dom);
+ this.on("blur", function(){
+ Ext.fly(this, '_internal').removeClass(className);
+ }, this.dom);
+ return this;
+ },
+
+ addClassOnClick : function(className){
+ var dom = this.dom;
+ this.on("mousedown", function(){
+ Ext.fly(dom, '_internal').addClass(className);
+ var d = Ext.getDoc();
+ var fn = function(){
+ Ext.fly(dom, '_internal').removeClass(className);
+ d.removeListener("mouseup", fn);
+ };
+ d.on("mouseup", fn);
+ });
+ return this;
+ },
+
+
+ swallowEvent : function(eventName, preventDefault){
+ var fn = function(e){
+ e.stopPropagation();
+ if(preventDefault){
+ e.preventDefault();
+ }
+ };
+ if(eventName instanceof Array){
+ for(var i = 0, len = eventName.length; i < len; i++){
+ this.on(eventName[i], fn);
+ }
+ return this;
+ }
+ this.on(eventName, fn);
+ return this;
+ },
+
+
+ next : function(selector, returnDom){
+ return this.matchNode('nextSibling', 'nextSibling', selector, returnDom);
+ },
+
+
+ prev : function(selector, returnDom){
+ return this.matchNode('previousSibling', 'previousSibling', selector, returnDom);
+ },
+
+
+
+ first : function(selector, returnDom){
+ return this.matchNode('nextSibling', 'firstChild', selector, returnDom);
+ },
+
+
+ last : function(selector, returnDom){
+ return this.matchNode('previousSibling', 'lastChild', selector, returnDom);
+ },
+
+ matchNode : function(dir, start, selector, returnDom){
+ var n = this.dom[start];
+ while(n){
+ if(n.nodeType == 1 && (!selector || Ext.DomQuery.is(n, selector))){
+ return n;
+ }
+ n = n[dir];
+ }
+ return n && !returnDom ? Ext.get(n) : n;
+ },
+
+
+ appendChild: function(el){
+ el = Ext.get(el);
+ el.appendTo(this);
+ return this;
+ },
+
+
+ createChild: function(config, insertBefore, returnDom){
+ config = config || {tag:'div'};
+ if(insertBefore){
+ return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true);
+ }
+ return Ext.DomHelper[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config, returnDom !== true);
+ },
+
+
+ appendTo: function(el){
+ el = Ext.getDom(el);
+ el.appendChild(this.dom);
+ return this;
+ },
+
+
+ insertBefore: function(el){
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el);
+ return this;
+ },
+
+
+ insertAfter: function(el){
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el.nextSibling);
+ return this;
+ },
+
+
+ insertFirst: function(el, returnDom){
+ el = el || {};
+ if(typeof el == 'object' && !el.nodeType){
+ return this.createChild(el, this.dom.firstChild, returnDom);
+ }else{
+ el = Ext.getDom(el);
+ this.dom.insertBefore(el, this.dom.firstChild);
+ return !returnDom ? Ext.get(el) : el;
+ }
+ },
+
+
+ insertSibling: function(el, where, returnDom){
+ var rt;
+ if(el instanceof Array){
+ for(var i = 0, len = el.length; i < len; i++){
+ rt = this.insertSibling(el[i], where, returnDom);
+ }
+ return rt;
+ }
+ where = where ? where.toLowerCase() : 'before';
+ el = el || {};
+ var refNode = where == 'before' ? this.dom : this.dom.nextSibling;
+
+ if(typeof el == 'object' && !el.nodeType){
+ if(where == 'after' && !this.dom.nextSibling){
+ rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom);
+ }else{
+ rt = Ext.DomHelper[where == 'after' ? 'insertAfter' : 'insertBefore'](this.dom, el, !returnDom);
+ }
+
+ }else{
+ rt = this.dom.parentNode.insertBefore(Ext.getDom(el), refNode);
+ if(!returnDom){
+ rt = Ext.get(rt);
+ }
+ }
+ return rt;
+ },
+
+
+ wrap: function(config, returnDom){
+ if(!config){
+ config = {tag: "div"};
+ }
+ var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom);
+ newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom);
+ return newEl;
+ },
+
+
+ replace: function(el){
+ el = Ext.get(el);
+ this.insertBefore(el);
+ el.remove();
+ return this;
+ },
+
+
+ replaceWith: function(el){
+ if(typeof el == 'object' && !el.nodeType){
+ el = this.insertSibling(el, 'before');
+ }else{
+ el = Ext.getDom(el);
+ this.dom.parentNode.insertBefore(el, this.dom);
+ }
+ El.uncache(this.id);
+ this.dom.parentNode.removeChild(this.dom);
+ this.dom = el;
+ this.id = Ext.id(el);
+ El.cache[this.id] = this;
+ return this;
+ },
+
+
+ insertHtml : function(where, html, returnEl){
+ var el = Ext.DomHelper.insertHtml(where, this.dom, html);
+ return returnEl ? Ext.get(el) : el;
+ },
+
+
+ set : function(o, useSet){
+ var el = this.dom;
+ useSet = typeof useSet == 'undefined' ? (el.setAttribute ? true : false) : useSet;
+ for(var attr in o){
+ if(attr == "style" || typeof o[attr] == "function") continue;
+ if(attr=="cls"){
+ el.className = o["cls"];
+ }else{
+ if(useSet) el.setAttribute(attr, o[attr]);
+ else el[attr] = o[attr];
+ }
+ }
+ if(o.style){
+ Ext.DomHelper.applyStyles(el, o.style);
+ }
+ return this;
+ },
+
+
+ addKeyListener : function(key, fn, scope){
+ var config;
+ if(typeof key != "object" || key instanceof Array){
+ config = {
+ key: key,
+ fn: fn,
+ scope: scope
+ };
+ }else{
+ config = {
+ key : key.key,
+ shift : key.shift,
+ ctrl : key.ctrl,
+ alt : key.alt,
+ fn: fn,
+ scope: scope
+ };
+ }
+ return new Ext.KeyMap(this, config);
+ },
+
+
+ addKeyMap : function(config){
+ return new Ext.KeyMap(this, config);
+ },
+
+
+ isScrollable : function(){
+ var dom = this.dom;
+ return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
+ },
+
+
+ scrollTo : function(side, value, animate){
+ var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop";
+ if(!animate || !A){
+ this.dom[prop] = value;
+ }else{
+ var to = prop == "scrollLeft" ? [value, this.dom.scrollTop] : [this.dom.scrollLeft, value];
+ this.anim({scroll: {"to": to}}, this.preanim(arguments, 2), 'scroll');
+ }
+ return this;
+ },
+
+
+ scroll : function(direction, distance, animate){
+ if(!this.isScrollable()){
+ return;
+ }
+ var el = this.dom;
+ var l = el.scrollLeft, t = el.scrollTop;
+ var w = el.scrollWidth, h = el.scrollHeight;
+ var cw = el.clientWidth, ch = el.clientHeight;
+ direction = direction.toLowerCase();
+ var scrolled = false;
+ var a = this.preanim(arguments, 2);
+ switch(direction){
+ case "l":
+ case "left":
+ if(w - l > cw){
+ var v = Math.min(l + distance, w-cw);
+ this.scrollTo("left", v, a);
+ scrolled = true;
+ }
+ break;
+ case "r":
+ case "right":
+ if(l > 0){
+ var v = Math.max(l - distance, 0);
+ this.scrollTo("left", v, a);
+ scrolled = true;
+ }
+ break;
+ case "t":
+ case "top":
+ case "up":
+ if(t > 0){
+ var v = Math.max(t - distance, 0);
+ this.scrollTo("top", v, a);
+ scrolled = true;
+ }
+ break;
+ case "b":
+ case "bottom":
+ case "down":
+ if(h - t > ch){
+ var v = Math.min(t + distance, h-ch);
+ this.scrollTo("top", v, a);
+ scrolled = true;
+ }
+ break;
+ }
+ return scrolled;
+ },
+
+
+ translatePoints : function(x, y){
+ if(typeof x == 'object' || x instanceof Array){
+ y = x[1]; x = x[0];
+ }
+ var p = this.getStyle('position');
+ var o = this.getXY();
+
+ var l = parseInt(this.getStyle('left'), 10);
+ var t = parseInt(this.getStyle('top'), 10);
+
+ if(isNaN(l)){
+ l = (p == "relative") ? 0 : this.dom.offsetLeft;
+ }
+ if(isNaN(t)){
+ t = (p == "relative") ? 0 : this.dom.offsetTop;
+ }
+
+ return {left: (x - o[0] + l), top: (y - o[1] + t)};
+ },
+
+
+ getScroll : function(){
+ var d = this.dom, doc = document;
+ if(d == doc || d == doc.body){
+ var l, t;
+ if(Ext.isIE && Ext.isStrict){
+ l = doc.documentElement.scrollLeft || (doc.body.scrollLeft || 0);
+ t = doc.documentElement.scrollTop || (doc.body.scrollTop || 0);
+ }else{
+ l = window.pageXOffset || (doc.body.scrollLeft || 0);
+ t = window.pageYOffset || (doc.body.scrollTop || 0);
+ }
+ return {left: l, top: t};
+ }else{
+ return {left: d.scrollLeft, top: d.scrollTop};
+ }
+ },
+
+
+ getColor : function(attr, defaultValue, prefix){
+ var v = this.getStyle(attr);
+ if(!v || v == "transparent" || v == "inherit") {
+ return defaultValue;
+ }
+ var color = typeof prefix == "undefined" ? "#" : prefix;
+ if(v.substr(0, 4) == "rgb("){
+ var rvs = v.slice(4, v.length -1).split(",");
+ for(var i = 0; i < 3; i++){
+ var h = parseInt(rvs[i]).toString(16);
+ if(h < 16){
+ h = "0" + h;
+ }
+ color += h;
+ }
+ } else {
+ if(v.substr(0, 1) == "#"){
+ if(v.length == 4) {
+ for(var i = 1; i < 4; i++){
+ var c = v.charAt(i);
+ color += c + c;
+ }
+ }else if(v.length == 7){
+ color += v.substr(1);
+ }
+ }
+ }
+ return(color.length > 5 ? color.toLowerCase() : defaultValue);
+ },
+
+
+ boxWrap : function(cls){
+ cls = cls || 'x-box';
+ var el = Ext.get(this.insertHtml('beforeBegin', String.format('<div class="{0}">'+El.boxMarkup+'</div>', cls)));
+ el.child('.'+cls+'-mc').dom.appendChild(this.dom);
+ return el;
+ },
+
+
+ getAttributeNS : Ext.isIE ? function(ns, name){
+ var d = this.dom;
+ var type = typeof d[ns+":"+name];
+ if(type != 'undefined' && type != 'unknown'){
+ return d[ns+":"+name];
+ }
+ return d[name];
+ } : function(ns, name){
+ var d = this.dom;
+ return d.getAttributeNS(ns, name) || d.getAttribute(ns+":"+name) || d.getAttribute(name) || d[name];
+ },
+
+ getTextWidth : function(text, min, max){
+ return (Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min || 0, max || 1000000);
+ }
+};
+
+var ep = El.prototype;
+
+
+ep.on = ep.addListener;
+
+ep.mon = ep.addListener;
+
+ep.getUpdateManager = ep.getUpdater;
+
+
+ep.un = ep.removeListener;
+
+
+ep.autoBoxAdjust = true;
+
+
+El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;
+
+
+El.addUnits = function(v, defaultUnit){
+ if(v === "" || v == "auto"){
+ return v;
+ }
+ if(v === undefined){
+ return '';
+ }
+ if(typeof v == "number" || !El.unitPattern.test(v)){
+ return v + (defaultUnit || 'px');
+ }
+ return v;
+};
+
+
+El.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
+
+El.VISIBILITY = 1;
+
+El.DISPLAY = 2;
+
+El.borders = {l: "border-left-width", r: "border-right-width", t: "border-top-width", b: "border-bottom-width"};
+El.paddings = {l: "padding-left", r: "padding-right", t: "padding-top", b: "padding-bottom"};
+El.margins = {l: "margin-left", r: "margin-right", t: "margin-top", b: "margin-bottom"};
+
+
+
+
+El.cache = {};
+
+var docEl;
+
+
+El.get = function(el){
+ var ex, elm, id;
+ if(!el){ return null; }
+ if(typeof el == "string"){
+ if(!(elm = document.getElementById(el))){
+ return null;
+ }
+ if(ex = El.cache[el]){
+ ex.dom = elm;
+ }else{
+ ex = El.cache[el] = new El(elm);
+ }
+ return ex;
+ }else if(el.tagName){
+ if(!(id = el.id)){
+ id = Ext.id(el);
+ }
+ if(ex = El.cache[id]){
+ ex.dom = el;
+ }else{
+ ex = El.cache[id] = new El(el);
+ }
+ return ex;
+ }else if(el instanceof El){
+ if(el != docEl){
+ el.dom = document.getElementById(el.id) || el.dom;
+
+ El.cache[el.id] = el;
+ }
+ return el;
+ }else if(el.isComposite){
+ return el;
+ }else if(el instanceof Array){
+ return El.select(el);
+ }else if(el == document){
+
+ if(!docEl){
+ var f = function(){};
+ f.prototype = El.prototype;
+ docEl = new f();
+ docEl.dom = document;
+ }
+ return docEl;
+ }
+ return null;
+};
+
+
+El.uncache = function(el){
+ for(var i = 0, a = arguments, len = a.length; i < len; i++) {
+ if(a[i]){
+ delete El.cache[a[i].id || a[i]];
+ }
+ }
+};
+
+
+
+
+El.garbageCollect = function(){
+ if(!Ext.enableGarbageCollector){
+ clearInterval(El.collectorThread);
+ return;
+ }
+ for(var eid in El.cache){
+ var el = El.cache[eid], d = el.dom;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if(!d || !d.parentNode || (!d.offsetParent && !document.getElementById(eid))){
+ delete El.cache[eid];
+ if(d && Ext.enableListenerCollection){
+ E.purgeElement(d);
+ }
+ }
+ }
+}
+El.collectorThreadId = setInterval(El.garbageCollect, 30000);
+
+var flyFn = function(){};
+flyFn.prototype = El.prototype;
+var _cls = new flyFn();
+
+
+El.Flyweight = function(dom){
+ this.dom = dom;
+};
+
+El.Flyweight.prototype = _cls;
+El.Flyweight.prototype.isFlyweight = true;
+
+El._flyweights = {};
+
+El.fly = function(el, named){
+ named = named || '_global';
+ el = Ext.getDom(el);
+ if(!el){
+ return null;
+ }
+ if(!El._flyweights[named]){
+ El._flyweights[named] = new El.Flyweight();
+ }
+ El._flyweights[named].dom = el;
+ return El._flyweights[named];
+};
+
+
+Ext.get = El.get;
+
+Ext.fly = El.fly;
+
+
+var noBoxAdjust = Ext.isStrict ? {
+ select:1
+} : {
+ input:1, select:1, textarea:1
+};
+if(Ext.isIE || Ext.isGecko){
+ noBoxAdjust['button'] = 1;
+}
+
+
+Ext.EventManager.on(window, 'unload', function(){
+ delete El.cache;
+ delete El._flyweights;
+});
+})();
+
+Ext.enableFx = true;
+
+
+Ext.Fx = {
+
+ slideIn : function(anchor, o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+
+ anchor = anchor || "t";
+
+ this.fixDisplay();
+
+ var r = this.getFxRestore();
+ var b = this.getBox();
+ this.setSize(b);
+
+ var wrap = this.fxWrap(r.pos, o, "hidden");
+
+ var st = this.dom.style;
+ st.visibility = "visible";
+ st.position = "absolute";
+
+ var after = function(){
+ el.fxUnwrap(wrap, r.pos, o);
+ st.width = r.width;
+ st.height = r.height;
+ el.afterFx(o);
+ };
+ var a, pt = {to: [b.x, b.y]}, bw = {to: b.width}, bh = {to: b.height};
+
+ switch(anchor.toLowerCase()){
+ case "t":
+ wrap.setSize(b.width, 0);
+ st.left = st.bottom = "0";
+ a = {height: bh};
+ break;
+ case "l":
+ wrap.setSize(0, b.height);
+ st.right = st.top = "0";
+ a = {width: bw};
+ break;
+ case "r":
+ wrap.setSize(0, b.height);
+ wrap.setX(b.right);
+ st.left = st.top = "0";
+ a = {width: bw, points: pt};
+ break;
+ case "b":
+ wrap.setSize(b.width, 0);
+ wrap.setY(b.bottom);
+ st.left = st.top = "0";
+ a = {height: bh, points: pt};
+ break;
+ case "tl":
+ wrap.setSize(0, 0);
+ st.right = st.bottom = "0";
+ a = {width: bw, height: bh};
+ break;
+ case "bl":
+ wrap.setSize(0, 0);
+ wrap.setY(b.y+b.height);
+ st.right = st.top = "0";
+ a = {width: bw, height: bh, points: pt};
+ break;
+ case "br":
+ wrap.setSize(0, 0);
+ wrap.setXY([b.right, b.bottom]);
+ st.left = st.top = "0";
+ a = {width: bw, height: bh, points: pt};
+ break;
+ case "tr":
+ wrap.setSize(0, 0);
+ wrap.setX(b.x+b.width);
+ st.left = st.bottom = "0";
+ a = {width: bw, height: bh, points: pt};
+ break;
+ }
+ this.dom.style.visibility = "visible";
+ wrap.show();
+
+ arguments.callee.anim = wrap.fxanim(a,
+ o,
+ 'motion',
+ .5,
+ 'easeOut', after);
+ });
+ return this;
+ },
+
+
+ slideOut : function(anchor, o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+
+ anchor = anchor || "t";
+
+ var r = this.getFxRestore();
+
+ var b = this.getBox();
+ this.setSize(b);
+
+ var wrap = this.fxWrap(r.pos, o, "visible");
+
+ var st = this.dom.style;
+ st.visibility = "visible";
+ st.position = "absolute";
+
+ wrap.setSize(b);
+
+ var after = function(){
+ if(o.useDisplay){
+ el.setDisplayed(false);
+ }else{
+ el.hide();
+ }
+
+ el.fxUnwrap(wrap, r.pos, o);
+
+ st.width = r.width;
+ st.height = r.height;
+
+ el.afterFx(o);
+ };
+
+ var a, zero = {to: 0};
+ switch(anchor.toLowerCase()){
+ case "t":
+ st.left = st.bottom = "0";
+ a = {height: zero};
+ break;
+ case "l":
+ st.right = st.top = "0";
+ a = {width: zero};
+ break;
+ case "r":
+ st.left = st.top = "0";
+ a = {width: zero, points: {to:[b.right, b.y]}};
+ break;
+ case "b":
+ st.left = st.top = "0";
+ a = {height: zero, points: {to:[b.x, b.bottom]}};
+ break;
+ case "tl":
+ st.right = st.bottom = "0";
+ a = {width: zero, height: zero};
+ break;
+ case "bl":
+ st.right = st.top = "0";
+ a = {width: zero, height: zero, points: {to:[b.x, b.bottom]}};
+ break;
+ case "br":
+ st.left = st.top = "0";
+ a = {width: zero, height: zero, points: {to:[b.x+b.width, b.bottom]}};
+ break;
+ case "tr":
+ st.left = st.bottom = "0";
+ a = {width: zero, height: zero, points: {to:[b.right, b.y]}};
+ break;
+ }
+
+ arguments.callee.anim = wrap.fxanim(a,
+ o,
+ 'motion',
+ .5,
+ "easeOut", after);
+ });
+ return this;
+ },
+
+
+ puff : function(o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+ this.clearOpacity();
+ this.show();
+
+ var r = this.getFxRestore();
+ var st = this.dom.style;
+
+ var after = function(){
+ if(o.useDisplay){
+ el.setDisplayed(false);
+ }else{
+ el.hide();
+ }
+
+ el.clearOpacity();
+
+ el.setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+ st.fontSize = '';
+ el.afterFx(o);
+ };
+
+ var width = this.getWidth();
+ var height = this.getHeight();
+
+ arguments.callee.anim = this.fxanim({
+ width : {to: this.adjustWidth(width * 2)},
+ height : {to: this.adjustHeight(height * 2)},
+ points : {by: [-(width * .5), -(height * .5)]},
+ opacity : {to: 0},
+ fontSize: {to:200, unit: "%"}
+ },
+ o,
+ 'motion',
+ .5,
+ "easeOut", after);
+ });
+ return this;
+ },
+
+
+ switchOff : function(o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+ this.clearOpacity();
+ this.clip();
+
+ var r = this.getFxRestore();
+ var st = this.dom.style;
+
+ var after = function(){
+ if(o.useDisplay){
+ el.setDisplayed(false);
+ }else{
+ el.hide();
+ }
+
+ el.clearOpacity();
+ el.setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+
+ el.afterFx(o);
+ };
+
+ this.fxanim({opacity:{to:0.3}}, null, null, .1, null, function(){
+ this.clearOpacity();
+ (function(){
+ this.fxanim({
+ height:{to:1},
+ points:{by:[0, this.getHeight() * .5]}
+ }, o, 'motion', 0.3, 'easeIn', after);
+ }).defer(100, this);
+ });
+ });
+ return this;
+ },
+
+
+ highlight : function(color, o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+ color = color || "ffff9c";
+ attr = o.attr || "backgroundColor";
+
+ this.clearOpacity();
+ this.show();
+
+ var origColor = this.getColor(attr);
+ var restoreColor = this.dom.style[attr];
+ endColor = (o.endColor || origColor) || "ffffff";
+
+ var after = function(){
+ el.dom.style[attr] = restoreColor;
+ el.afterFx(o);
+ };
+
+ var a = {};
+ a[attr] = {from: color, to: endColor};
+ arguments.callee.anim = this.fxanim(a,
+ o,
+ 'color',
+ 1,
+ 'easeIn', after);
+ });
+ return this;
+ },
+
+
+ frame : function(color, count, o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+ color = color || "#C3DAF9";
+ if(color.length == 6){
+ color = "#" + color;
+ }
+ count = count || 1;
+ var duration = o.duration || 1;
+ this.show();
+
+ var b = this.getBox();
+ var animFn = function(){
+ var proxy = Ext.getBody().createChild({
+ style:{
+ visbility:"hidden",
+ position:"absolute",
+ "z-index":"35000", border:"0px solid " + color
+ }
+ });
+ var scale = Ext.isBorderBox ? 2 : 1;
+ proxy.animate({
+ top:{from:b.y, to:b.y - 20},
+ left:{from:b.x, to:b.x - 20},
+ borderWidth:{from:0, to:10},
+ opacity:{from:1, to:0},
+ height:{from:b.height, to:(b.height + (20*scale))},
+ width:{from:b.width, to:(b.width + (20*scale))}
+ }, duration, function(){
+ proxy.remove();
+ if(--count > 0){
+ animFn();
+ }else{
+ el.afterFx(o);
+ }
+ });
+ };
+ animFn.call(this);
+ });
+ return this;
+ },
+
+
+ pause : function(seconds){
+ var el = this.getFxEl();
+ var o = {};
+
+ el.queueFx(o, function(){
+ setTimeout(function(){
+ el.afterFx(o);
+ }, seconds * 1000);
+ });
+ return this;
+ },
+
+
+ fadeIn : function(o){
+ var el = this.getFxEl();
+ o = o || {};
+ el.queueFx(o, function(){
+ this.setOpacity(0);
+ this.fixDisplay();
+ this.dom.style.visibility = 'visible';
+ var to = o.endOpacity || 1;
+ arguments.callee.anim = this.fxanim({opacity:{to:to}},
+ o, null, .5, "easeOut", function(){
+ if(to == 1){
+ this.clearOpacity();
+ }
+ el.afterFx(o);
+ });
+ });
+ return this;
+ },
+
+
+ fadeOut : function(o){
+ var el = this.getFxEl();
+ o = o || {};
+ el.queueFx(o, function(){
+ arguments.callee.anim = this.fxanim({opacity:{to:o.endOpacity || 0}},
+ o, null, .5, "easeOut", function(){
+ if(this.visibilityMode == Ext.Element.DISPLAY || o.useDisplay){
+ this.dom.style.display = "none";
+ }else{
+ this.dom.style.visibility = "hidden";
+ }
+ this.clearOpacity();
+ el.afterFx(o);
+ });
+ });
+ return this;
+ },
+
+
+ scale : function(w, h, o){
+ this.shift(Ext.apply({}, o, {
+ width: w,
+ height: h
+ }));
+ return this;
+ },
+
+
+ shift : function(o){
+ var el = this.getFxEl();
+ o = o || {};
+ el.queueFx(o, function(){
+ var a = {}, w = o.width, h = o.height, x = o.x, y = o.y, op = o.opacity;
+ if(w !== undefined){
+ a.width = {to: this.adjustWidth(w)};
+ }
+ if(h !== undefined){
+ a.height = {to: this.adjustHeight(h)};
+ }
+ if(x !== undefined || y !== undefined){
+ a.points = {to: [
+ x !== undefined ? x : this.getX(),
+ y !== undefined ? y : this.getY()
+ ]};
+ }
+ if(op !== undefined){
+ a.opacity = {to: op};
+ }
+ if(o.xy !== undefined){
+ a.points = {to: o.xy};
+ }
+ arguments.callee.anim = this.fxanim(a,
+ o, 'motion', .35, "easeOut", function(){
+ el.afterFx(o);
+ });
+ });
+ return this;
+ },
+
+
+ ghost : function(anchor, o){
+ var el = this.getFxEl();
+ o = o || {};
+
+ el.queueFx(o, function(){
+ anchor = anchor || "b";
+
+ var r = this.getFxRestore();
+ var w = this.getWidth(),
+ h = this.getHeight();
+
+ var st = this.dom.style;
+
+ var after = function(){
+ if(o.useDisplay){
+ el.setDisplayed(false);
+ }else{
+ el.hide();
+ }
+
+ el.clearOpacity();
+ el.setPositioning(r.pos);
+ st.width = r.width;
+ st.height = r.height;
+
+ el.afterFx(o);
+ };
+
+ var a = {opacity: {to: 0}, points: {}}, pt = a.points;
+ switch(anchor.toLowerCase()){
+ case "t":
+ pt.by = [0, -h];
+ break;
+ case "l":
+ pt.by = [-w, 0];
+ break;
+ case "r":
+ pt.by = [w, 0];
+ break;
+ case "b":
+ pt.by = [0, h];
+ break;
+ case "tl":
+ pt.by = [-w, -h];
+ break;
+ case "bl":
+ pt.by = [-w, h];
+ break;
+ case "br":
+ pt.by = [w, h];
+ break;
+ case "tr":
+ pt.by = [w, -h];
+ break;
+ }
+
+ arguments.callee.anim = this.fxanim(a,
+ o,
+ 'motion',
+ .5,
+ "easeOut", after);
+ });
+ return this;
+ },
+
+
+ syncFx : function(){
+ this.fxDefaults = Ext.apply(this.fxDefaults || {}, {
+ block : false,
+ concurrent : true,
+ stopFx : false
+ });
+ return this;
+ },
+
+
+ sequenceFx : function(){
+ this.fxDefaults = Ext.apply(this.fxDefaults || {}, {
+ block : false,
+ concurrent : false,
+ stopFx : false
+ });
+ return this;
+ },
+
+
+ nextFx : function(){
+ var ef = this.fxQueue[0];
+ if(ef){
+ ef.call(this);
+ }
+ },
+
+
+ hasActiveFx : function(){
+ return this.fxQueue && this.fxQueue[0];
+ },
+
+
+ stopFx : function(){
+ if(this.hasActiveFx()){
+ var cur = this.fxQueue[0];
+ if(cur && cur.anim && cur.anim.isAnimated()){
+ this.fxQueue = [cur]; cur.anim.stop(true);
+ }
+ }
+ return this;
+ },
+
+
+ beforeFx : function(o){
+ if(this.hasActiveFx() && !o.concurrent){
+ if(o.stopFx){
+ this.stopFx();
+ return true;
+ }
+ return false;
+ }
+ return true;
+ },
+
+
+ hasFxBlock : function(){
+ var q = this.fxQueue;
+ return q && q[0] && q[0].block;
+ },
+
+
+ queueFx : function(o, fn){
+ if(!this.fxQueue){
+ this.fxQueue = [];
+ }
+ if(!this.hasFxBlock()){
+ Ext.applyIf(o, this.fxDefaults);
+ if(!o.concurrent){
+ var run = this.beforeFx(o);
+ fn.block = o.block;
+ this.fxQueue.push(fn);
+ if(run){
+ this.nextFx();
+ }
+ }else{
+ fn.call(this);
+ }
+ }
+ return this;
+ },
+
+
+ fxWrap : function(pos, o, vis){
+ var wrap;
+ if(!o.wrap || !(wrap = Ext.get(o.wrap))){
+ var wrapXY;
+ if(o.fixPosition){
+ wrapXY = this.getXY();
+ }
+ var div = document.createElement("div");
+ div.style.visibility = vis;
+ wrap = Ext.get(this.dom.parentNode.insertBefore(div, this.dom));
+ wrap.setPositioning(pos);
+ if(wrap.getStyle("position") == "static"){
+ wrap.position("relative");
+ }
+ this.clearPositioning('auto');
+ wrap.clip();
+ wrap.dom.appendChild(this.dom);
+ if(wrapXY){
+ wrap.setXY(wrapXY);
+ }
+ }
+ return wrap;
+ },
+
+
+ fxUnwrap : function(wrap, pos, o){
+ this.clearPositioning();
+ this.setPositioning(pos);
+ if(!o.wrap){
+ wrap.dom.parentNode.insertBefore(this.dom, wrap.dom);
+ wrap.remove();
+ }
+ },
+
+
+ getFxRestore : function(){
+ var st = this.dom.style;
+ return {pos: this.getPositioning(), width: st.width, height : st.height};
+ },
+
+
+ afterFx : function(o){
+ if(o.afterStyle){
+ this.applyStyles(o.afterStyle);
+ }
+ if(o.afterCls){
+ this.addClass(o.afterCls);
+ }
+ if(o.remove === true){
+ this.remove();
+ }
+ Ext.callback(o.callback, o.scope, [this]);
+ if(!o.concurrent){
+ this.fxQueue.shift();
+ this.nextFx();
+ }
+ },
+
+
+ getFxEl : function(){ return Ext.get(this.dom);
+ },
+
+
+ fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){
+ animType = animType || 'run';
+ opt = opt || {};
+ var anim = Ext.lib.Anim[animType](
+ this.dom, args,
+ (opt.duration || defaultDur) || .35,
+ (opt.easing || defaultEase) || 'easeOut',
+ function(){
+ Ext.callback(cb, this);
+ },
+ this
+ );
+ opt.anim = anim;
+ return anim;
+ }
+};
+
+Ext.Fx.resize = Ext.Fx.scale;
+
+Ext.apply(Ext.Element.prototype, Ext.Fx);
+
+
+Ext.CompositeElement = function(els){
+ this.elements = [];
+ this.addElements(els);
+};
+Ext.CompositeElement.prototype = {
+ isComposite: true,
+ addElements : function(els){
+ if(!els) return this;
+ if(typeof els == "string"){
+ els = Ext.Element.selectorFunction(els);
+ }
+ var yels = this.elements;
+ var index = yels.length-1;
+ for(var i = 0, len = els.length; i < len; i++) {
+ yels[++index] = Ext.get(els[i]);
+ }
+ return this;
+ },
+
+
+ fill : function(els){
+ this.elements = [];
+ this.add(els);
+ return this;
+ },
+
+
+ filter : function(selector){
+ var els = [];
+ this.each(function(el){
+ if(el.is(selector)){
+ els[els.length] = el.dom;
+ }
+ });
+ this.fill(els);
+ return this;
+ },
+
+ invoke : function(fn, args){
+ var els = this.elements;
+ for(var i = 0, len = els.length; i < len; i++) {
+ Ext.Element.prototype[fn].apply(els[i], args);
+ }
+ return this;
+ },
+
+ add : function(els){
+ if(typeof els == "string"){
+ this.addElements(Ext.Element.selectorFunction(els));
+ }else if(els.length !== undefined){
+ this.addElements(els);
+ }else{
+ this.addElements([els]);
+ }
+ return this;
+ },
+
+ each : function(fn, scope){
+ var els = this.elements;
+ for(var i = 0, len = els.length; i < len; i++){
+ if(fn.call(scope || els[i], els[i], this, i) === false) {
+ break;
+ }
+ }
+ return this;
+ },
+
+
+ item : function(index){
+ return this.elements[index] || null;
+ },
+
+
+ first : function(){
+ return this.item(0);
+ },
+
+
+ last : function(){
+ return this.item(this.elements.length-1);
+ },
+
+
+ getCount : function(){
+ return this.elements.length;
+ },
+
+
+ contains : function(el){
+ return this.indexOf(el) !== -1;
+ },
+
+
+ indexOf : function(el){
+ return this.elements.indexOf(Ext.get(el));
+ },
+
+
+
+ removeElement : function(el, removeDom){
+ if(el instanceof Array){
+ for(var i = 0, len = el.length; i < len; i++){
+ this.removeElement(el[i]);
+ }
+ return this;
+ }
+ var index = typeof el == 'number' ? el : this.indexOf(el);
+ if(index !== -1 && this.elements[index]){
+ if(removeDom){
+ var d = this.elements[index];
+ if(d.dom){
+ d.remove();
+ }else{
+ Ext.removeNode(d);
+ }
+ }
+ this.elements.splice(index, 1);
+ }
+ return this;
+ },
+
+
+ replaceElement : function(el, replacement, domReplace){
+ var index = typeof el == 'number' ? el : this.indexOf(el);
+ if(index !== -1){
+ if(domReplace){
+ this.elements[index].replaceWith(replacement);
+ }else{
+ this.elements.splice(index, 1, Ext.get(replacement))
+ }
+ }
+ return this;
+ },
+
+
+ clear : function(){
+ this.elements = [];
+ }
+};
+(function(){
+Ext.CompositeElement.createCall = function(proto, fnName){
+ if(!proto[fnName]){
+ proto[fnName] = function(){
+ return this.invoke(fnName, arguments);
+ };
+ }
+};
+for(var fnName in Ext.Element.prototype){
+ if(typeof Ext.Element.prototype[fnName] == "function"){
+ Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, fnName);
+ }
+};
+})();
+
+
+Ext.CompositeElementLite = function(els){
+ Ext.CompositeElementLite.superclass.constructor.call(this, els);
+ this.el = new Ext.Element.Flyweight();
+};
+Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, {
+ addElements : function(els){
+ if(els){
+ if(els instanceof Array){
+ this.elements = this.elements.concat(els);
+ }else{
+ var yels = this.elements;
+ var index = yels.length-1;
+ for(var i = 0, len = els.length; i < len; i++) {
+ yels[++index] = els[i];
+ }
+ }
+ }
+ return this;
+ },
+ invoke : function(fn, args){
+ var els = this.elements;
+ var el = this.el;
+ for(var i = 0, len = els.length; i < len; i++) {
+ el.dom = els[i];
+ Ext.Element.prototype[fn].apply(el, args);
+ }
+ return this;
+ },
+
+ item : function(index){
+ if(!this.elements[index]){
+ return null;
+ }
+ this.el.dom = this.elements[index];
+ return this.el;
+ },
+
+
+ addListener : function(eventName, handler, scope, opt){
+ var els = this.elements;
+ for(var i = 0, len = els.length; i < len; i++) {
+ Ext.EventManager.on(els[i], eventName, handler, scope || els[i], opt);
+ }
+ return this;
+ },
+
+
+ each : function(fn, scope){
+ var els = this.elements;
+ var el = this.el;
+ for(var i = 0, len = els.length; i < len; i++){
+ el.dom = els[i];
+ if(fn.call(scope || el, el, this, i) === false){
+ break;
+ }
+ }
+ return this;
+ },
+
+ indexOf : function(el){
+ return this.elements.indexOf(Ext.getDom(el));
+ },
+
+ replaceElement : function(el, replacement, domReplace){
+ var index = typeof el == 'number' ? el : this.indexOf(el);
+ if(index !== -1){
+ replacement = Ext.getDom(replacement);
+ if(domReplace){
+ var d = this.elements[index];
+ d.parentNode.insertBefore(replacement, d);
+ Ext.removeNode(d);
+ }
+ this.elements.splice(index, 1, replacement);
+ }
+ return this;
+ }
+});
+Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener;
+if(Ext.DomQuery){
+ Ext.Element.selectorFunction = Ext.DomQuery.select;
+}
+
+Ext.Element.select = function(selector, unique, root){
+ var els;
+ if(typeof selector == "string"){
+ els = Ext.Element.selectorFunction(selector, root);
+ }else if(selector.length !== undefined){
+ els = selector;
+ }else{
+ throw "Invalid selector";
+ }
+ if(unique === true){
+ return new Ext.CompositeElement(els);
+ }else{
+ return new Ext.CompositeElementLite(els);
+ }
+};
+
+Ext.select = Ext.Element.select;
+
+Ext.data.Connection = function(config){
+ Ext.apply(this, config);
+ this.addEvents({
+
+ "beforerequest" : true,
+
+ "requestcomplete" : true,
+
+ "requestexception" : true
+ });
+ Ext.data.Connection.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.data.Connection, Ext.util.Observable, {
+
+
+
+
+
+ timeout : 30000,
+
+ autoAbort:false,
+
+
+ disableCaching: true,
+
+
+ request : function(o){
+ if(this.fireEvent("beforerequest", this, o) !== false){
+ var p = o.params;
+
+ if(typeof p == "function"){
+ p = p.call(o.scope||window, o);
+ }
+ if(typeof p == "object"){
+ p = Ext.urlEncode(o.params);
+ }
+ if(this.extraParams){
+ var extras = Ext.urlEncode(this.extraParams);
+ p = p ? (p + '&' + extras) : extras;
+ }
+
+ var url = o.url || this.url;
+ if(typeof url == 'function'){
+ url = url.call(o.scope||window, o);
+ }
+
+ if(o.form){
+ var form = Ext.getDom(o.form);
+ url = url || form.action;
+
+ var enctype = form.getAttribute("enctype");
+ if(o.isUpload || (enctype && enctype.toLowerCase() == 'multipart/form-data')){
+ return this.doFormUpload(o, p, url);
+ }
+ var f = Ext.lib.Ajax.serializeForm(form);
+ p = p ? (p + '&' + f) : f;
+ }
+
+ var hs = o.headers;
+ if(this.defaultHeaders){
+ hs = Ext.apply(hs || {}, this.defaultHeaders);
+ if(!o.headers){
+ o.headers = hs;
+ }
+ }
+
+ var cb = {
+ success: this.handleResponse,
+ failure: this.handleFailure,
+ scope: this,
+ argument: {options: o},
+ timeout : this.timeout
+ };
+
+ var method = o.method||this.method||(p ? "POST" : "GET");
+
+ if(method == 'GET' && (this.disableCaching && o.disableCaching !== false) || o.disableCaching === true){
+ url += (url.indexOf('?') != -1 ? '&' : '?') + '_dc=' + (new Date().getTime());
+ }
+
+ if(typeof o.autoAbort == 'boolean'){
+ if(o.autoAbort){
+ this.abort();
+ }
+ }else if(this.autoAbort !== false){
+ this.abort();
+ }
+ if((method == 'GET' && p) || o.xmlData){
+ url += (url.indexOf('?') != -1 ? '&' : '?') + p;
+ p = '';
+ }
+ this.transId = Ext.lib.Ajax.request(method, url, cb, p, o);
+ return this.transId;
+ }else{
+ Ext.callback(o.callback, o.scope, [o, null, null]);
+ return null;
+ }
+ },
+
+
+ isLoading : function(transId){
+ if(transId){
+ return Ext.lib.Ajax.isCallInProgress(transId);
+ }else{
+ return this.transId ? true : false;
+ }
+ },
+
+
+ abort : function(transId){
+ if(transId || this.isLoading()){
+ Ext.lib.Ajax.abort(transId || this.transId);
+ }
+ },
+
+
+ handleResponse : function(response){
+ this.transId = false;
+ var options = response.argument.options;
+ response.argument = options ? options.argument : null;
+ this.fireEvent("requestcomplete", this, response, options);
+ Ext.callback(options.success, options.scope, [response, options]);
+ Ext.callback(options.callback, options.scope, [options, true, response]);
+ },
+
+
+ handleFailure : function(response, e){
+ this.transId = false;
+ var options = response.argument.options;
+ response.argument = options ? options.argument : null;
+ this.fireEvent("requestexception", this, response, options, e);
+ Ext.callback(options.failure, options.scope, [response, options]);
+ Ext.callback(options.callback, options.scope, [options, false, response]);
+ },
+
+
+ doFormUpload : function(o, ps, url){
+ var id = Ext.id();
+ var frame = document.createElement('iframe');
+ frame.id = id;
+ frame.name = id;
+ frame.className = 'x-hidden';
+ if(Ext.isIE){
+ frame.src = Ext.SSL_SECURE_URL;
+ }
+ document.body.appendChild(frame);
+
+ if(Ext.isIE){
+ document.frames[id].name = id;
+ }
+
+ var form = Ext.getDom(o.form);
+ form.target = id;
+ form.method = 'POST';
+ form.enctype = form.encoding = 'multipart/form-data';
+ if(url){
+ form.action = url;
+ }
+
+ var hiddens, hd;
+ if(ps){
+ hiddens = [];
+ ps = Ext.urlDecode(ps, false);
+ for(var k in ps){
+ if(ps.hasOwnProperty(k)){
+ hd = document.createElement('input');
+ hd.type = 'hidden';
+ hd.name = k;
+ hd.value = ps[k];
+ form.appendChild(hd);
+ hiddens.push(hd);
+ }
+ }
+ }
+
+ function cb(){
+ var r = {
+ responseText : '',
+ responseXML : null
+ };
+
+ r.argument = o ? o.argument : null;
+
+ try {
+ var doc;
+ if(Ext.isIE){
+ doc = frame.contentWindow.document;
+ }else {
+ doc = (frame.contentDocument || window.frames[id].document);
+ }
+ if(doc && doc.body){
+ r.responseText = doc.body.innerHTML;
+ }
+ if(doc && doc.XMLDocument){
+ r.responseXML = doc.XMLDocument;
+ }else {
+ r.responseXML = doc;
+ }
+ }
+ catch(e) {
+
+ }
+
+ Ext.EventManager.removeListener(frame, 'load', cb, this);
+
+ this.fireEvent("requestcomplete", this, r, o);
+
+ Ext.callback(o.success, o.scope, [r, o]);
+ Ext.callback(o.callback, o.scope, [o, true, r]);
+
+ setTimeout(function(){Ext.removeNode(frame);}, 100);
+ }
+
+ Ext.EventManager.on(frame, 'load', cb, this);
+ form.submit();
+
+ if(hiddens){
+ for(var i = 0, len = hiddens.length; i < len; i++){
+ Ext.removeNode(hiddens[i]);
+ }
+ }
+ }
+});
+
+
+Ext.Ajax = new Ext.data.Connection({
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ autoAbort : false,
+
+
+ serializeForm : function(form){
+ return Ext.lib.Ajax.serializeForm(form);
+ }
+});
+
+Ext.Updater = function(el, forceNew){
+ el = Ext.get(el);
+ if(!forceNew && el.updateManager){
+ return el.updateManager;
+ }
+
+ this.el = el;
+
+ this.defaultUrl = null;
+
+ this.addEvents({
+
+ "beforeupdate": true,
+
+ "update": true,
+
+ "failure": true
+ });
+ var d = Ext.Updater.defaults;
+
+ this.sslBlankUrl = d.sslBlankUrl;
+
+ this.disableCaching = d.disableCaching;
+
+ this.indicatorText = d.indicatorText;
+
+ this.showLoadIndicator = d.showLoadIndicator;
+
+ this.timeout = d.timeout;
+
+
+ this.loadScripts = d.loadScripts;
+
+
+ this.transaction = null;
+
+
+ this.autoRefreshProcId = null;
+
+ this.refreshDelegate = this.refresh.createDelegate(this);
+
+ this.updateDelegate = this.update.createDelegate(this);
+
+ this.formUpdateDelegate = this.formUpdate.createDelegate(this);
+
+ this.successDelegate = this.processSuccess.createDelegate(this);
+
+ this.failureDelegate = this.processFailure.createDelegate(this);
+
+ if(!this.renderer){
+
+ this.renderer = new Ext.Updater.BasicRenderer();
+ }
+ Ext.Updater.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.Updater, Ext.util.Observable, {
+
+ getEl : function(){
+ return this.el;
+ },
+
+ update : function(url, params, callback, discardUrl){
+ if(this.fireEvent("beforeupdate", this.el, url, params) !== false){
+ var method = this.method, cfg;
+ if(typeof url == "object"){
+ cfg = url;
+ url = cfg.url;
+ params = params || cfg.params;
+ callback = callback || cfg.callback;
+ discardUrl = discardUrl || cfg.discardUrl;
+ if(callback && cfg.scope){
+ callback = callback.createDelegate(cfg.scope);
+ }
+ if(typeof cfg.method != "undefined"){method = cfg.method;};
+ if(typeof cfg.nocache != "undefined"){this.disableCaching = cfg.nocache;};
+ if(typeof cfg.text != "undefined"){this.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";};
+ if(typeof cfg.scripts != "undefined"){this.loadScripts = cfg.scripts;};
+ if(typeof cfg.timeout != "undefined"){this.timeout = cfg.timeout;};
+ }
+ this.showLoading();
+ if(!discardUrl){
+ this.defaultUrl = url;
+ }
+ if(typeof url == "function"){
+ url = url.call(this);
+ }
+
+ method = method || (params ? "POST" : "GET");
+ if(method == "GET"){
+ url = this.prepareUrl(url);
+ }
+
+ var o = Ext.apply(cfg ||{}, {
+ url : url,
+ params: params,
+ success: this.successDelegate,
+ failure: this.failureDelegate,
+ callback: undefined,
+ timeout: (this.timeout*1000),
+ argument: {"url": url, "form": null, "callback": callback, "params": params}
+ });
+
+ this.transaction = Ext.Ajax.request(o);
+ }
+ },
+
+
+ formUpdate : function(form, url, reset, callback){
+ if(this.fireEvent("beforeupdate", this.el, form, url) !== false){
+ if(typeof url == "function"){
+ url = url.call(this);
+ }
+ form = Ext.getDom(form)
+ this.transaction = Ext.Ajax.request({
+ form: form,
+ url:url,
+ success: this.successDelegate,
+ failure: this.failureDelegate,
+ timeout: (this.timeout*1000),
+ argument: {"url": url, "form": form, "callback": callback, "reset": reset}
+ });
+ this.showLoading.defer(1, this);
+ }
+ },
+
+
+ refresh : function(callback){
+ if(this.defaultUrl == null){
+ return;
+ }
+ this.update(this.defaultUrl, null, callback, true);
+ },
+
+
+ startAutoRefresh : function(interval, url, params, callback, refreshNow){
+ if(refreshNow){
+ this.update(url || this.defaultUrl, params, callback, true);
+ }
+ if(this.autoRefreshProcId){
+ clearInterval(this.autoRefreshProcId);
+ }
+ this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [url || this.defaultUrl, params, callback, true]), interval*1000);
+ },
+
+
+ stopAutoRefresh : function(){
+ if(this.autoRefreshProcId){
+ clearInterval(this.autoRefreshProcId);
+ delete this.autoRefreshProcId;
+ }
+ },
+
+ isAutoRefreshing : function(){
+ return this.autoRefreshProcId ? true : false;
+ },
+
+ showLoading : function(){
+ if(this.showLoadIndicator){
+ this.el.update(this.indicatorText);
+ }
+ },
+
+
+ prepareUrl : function(url){
+ if(this.disableCaching){
+ var append = "_dc=" + (new Date().getTime());
+ if(url.indexOf("?") !== -1){
+ url += "&" + append;
+ }else{
+ url += "?" + append;
+ }
+ }
+ return url;
+ },
+
+
+ processSuccess : function(response){
+ this.transaction = null;
+ if(response.argument.form && response.argument.reset){
+ try{
+ response.argument.form.reset();
+ }catch(e){}
+ }
+ if(this.loadScripts){
+ this.renderer.render(this.el, response, this,
+ this.updateComplete.createDelegate(this, [response]));
+ }else{
+ this.renderer.render(this.el, response, this);
+ this.updateComplete(response);
+ }
+ },
+
+ updateComplete : function(response){
+ this.fireEvent("update", this.el, response);
+ if(typeof response.argument.callback == "function"){
+ response.argument.callback(this.el, true, response);
+ }
+ },
+
+
+ processFailure : function(response){
+ this.transaction = null;
+ this.fireEvent("failure", this.el, response);
+ if(typeof response.argument.callback == "function"){
+ response.argument.callback(this.el, false, response);
+ }
+ },
+
+
+ setRenderer : function(renderer){
+ this.renderer = renderer;
+ },
+
+ getRenderer : function(){
+ return this.renderer;
+ },
+
+
+ setDefaultUrl : function(defaultUrl){
+ this.defaultUrl = defaultUrl;
+ },
+
+
+ abort : function(){
+ if(this.transaction){
+ Ext.Ajax.abort(this.transaction);
+ }
+ },
+
+
+ isUpdating : function(){
+ if(this.transaction){
+ return Ext.Ajax.isLoading(this.transaction);
+ }
+ return false;
+ }
+});
+
+
+ Ext.Updater.defaults = {
+
+ timeout : 30,
+
+
+ loadScripts : false,
+
+
+ sslBlankUrl : (Ext.SSL_SECURE_URL || "javascript:false"),
+
+ disableCaching : false,
+
+ showLoadIndicator : true,
+
+ indicatorText : '<div class="loading-indicator">Loading...</div>'
+ };
+
+
+Ext.Updater.updateElement = function(el, url, params, options){
+ var um = Ext.get(el).getUpdater();
+ Ext.apply(um, options);
+ um.update(url, params, options ? options.callback : null);
+};
+
+Ext.Updater.update = Ext.Updater.updateElement;
+
+Ext.Updater.BasicRenderer = function(){};
+
+Ext.Updater.BasicRenderer.prototype = {
+
+ render : function(el, response, updateManager, callback){
+ el.update(response.responseText, updateManager.loadScripts, callback);
+ }
+};
+
+Ext.UpdateManager = Ext.Updater;
+
+
+
+
+
+Date.parseFunctions = {count:0};
+Date.parseRegexes = [];
+Date.formatFunctions = {count:0};
+
+Date.prototype.dateFormat = function(format) {
+ if (Date.formatFunctions[format] == null) {
+ Date.createNewFormat(format);
+ }
+ var func = Date.formatFunctions[format];
+ return this[func]();
+};
+
+
+
+Date.prototype.format = Date.prototype.dateFormat;
+
+Date.createNewFormat = function(format) {
+ var funcName = "format" + Date.formatFunctions.count++;
+ Date.formatFunctions[format] = funcName;
+ var code = "Date.prototype." + funcName + " = function(){return ";
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ code += "'" + String.escape(ch) + "' + ";
+ }
+ else {
+ code += Date.getFormatCode(ch);
+ }
+ }
+ eval(code.substring(0, code.length - 3) + ";}");
+};
+
+Date.getFormatCode = function(character) {
+ switch (character) {
+ case "d":
+ return "String.leftPad(this.getDate(), 2, '0') + ";
+ case "D":
+ return "Date.dayNames[this.getDay()].substring(0, 3) + ";
+ case "j":
+ return "this.getDate() + ";
+ case "l":
+ return "Date.dayNames[this.getDay()] + ";
+ case "S":
+ return "this.getSuffix() + ";
+ case "w":
+ return "this.getDay() + ";
+ case "z":
+ return "this.getDayOfYear() + ";
+ case "W":
+ return "this.getWeekOfYear() + ";
+ case "F":
+ return "Date.monthNames[this.getMonth()] + ";
+ case "m":
+ return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
+ case "M":
+ return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
+ case "n":
+ return "(this.getMonth() + 1) + ";
+ case "t":
+ return "this.getDaysInMonth() + ";
+ case "L":
+ return "(this.isLeapYear() ? 1 : 0) + ";
+ case "Y":
+ return "this.getFullYear() + ";
+ case "y":
+ return "('' + this.getFullYear()).substring(2, 4) + ";
+ case "a":
+ return "(this.getHours() < 12 ? 'am' : 'pm') + ";
+ case "A":
+ return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
+ case "g":
+ return "((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";
+ case "G":
+ return "this.getHours() + ";
+ case "h":
+ return "String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0') + ";
+ case "H":
+ return "String.leftPad(this.getHours(), 2, '0') + ";
+ case "i":
+ return "String.leftPad(this.getMinutes(), 2, '0') + ";
+ case "s":
+ return "String.leftPad(this.getSeconds(), 2, '0') + ";
+ case "u":
+ return "String.leftPad(this.getMilliseconds(), 3, '0') + ";
+ case "O":
+ return "this.getGMTOffset() + ";
+ case "T":
+ return "this.getTimezone() + ";
+ case "Z":
+ return "(this.getTimezoneOffset() * -60) + ";
+ default:
+ return "'" + String.escape(character) + "' + ";
+ }
+};
+
+
+Date.parseDate = function(input, format) {
+ if (Date.parseFunctions[format] == null) {
+ Date.createParser(format);
+ }
+ var func = Date.parseFunctions[format];
+ return Date[func](input);
+};
+
+Date.createParser = function(format) {
+ var funcName = "parse" + Date.parseFunctions.count++;
+ var regexNum = Date.parseRegexes.length;
+ var currentGroup = 1;
+ Date.parseFunctions[format] = funcName;
+
+ var code = "Date." + funcName + " = function(input){\n"
+ + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, ms = -1, o, z, v;\n"
+ + "var d = new Date();\n"
+ + "y = d.getFullYear();\n"
+ + "m = d.getMonth();\n"
+ + "d = d.getDate();\n"
+ + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
+ + "if (results && results.length > 0) {";
+ var regex = "";
+
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ regex += String.escape(ch);
+ }
+ else {
+ var obj = Date.formatCodeToRegex(ch, currentGroup);
+ currentGroup += obj.g;
+ regex += obj.s;
+ if (obj.g && obj.c) {
+ code += obj.c;
+ }
+ }
+ }
+
+ code += "if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n"
+ + "{v = new Date(y, m, d, h, i, s, ms);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
+ + "{v = new Date(y, m, d, h, i, s);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
+ + "{v = new Date(y, m, d, h, i);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"
+ + "{v = new Date(y, m, d, h);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0)\n"
+ + "{v = new Date(y, m, d);}\n"
+ + "else if (y >= 0 && m >= 0)\n"
+ + "{v = new Date(y, m);}\n"
+ + "else if (y >= 0)\n"
+ + "{v = new Date(y);}\n"
+ + "}return (v && (z || o))?\n" + " ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n" + " v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n" + ";}";
+
+ Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$", "i");
+ eval(code);
+};
+
+Date.formatCodeToRegex = function(character, currentGroup) {
+
+ switch (character) {
+ case "D":
+ return {g:0,
+ c:null,
+ s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
+ case "j":
+ return {g:1,
+ c:"d = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"}; case "d":
+ return {g:1,
+ c:"d = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"}; case "l":
+ return {g:0,
+ c:null,
+ s:"(?:" + Date.dayNames.join("|") + ")"};
+ case "S":
+ return {g:0,
+ c:null,
+ s:"(?:st|nd|rd|th)"};
+ case "w":
+ return {g:0,
+ c:null,
+ s:"\\d"};
+ case "z":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{1,3})"};
+ case "W":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{1,2})"};
+ case "F":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 1).toUpperCase() + results[" + currentGroup + "].substring(1, 3).toLowerCase()], 10);\n",
+ s:"(" + Date.monthNames.join("|") + ")"};
+ case "M":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 1).toUpperCase() + results[" + currentGroup + "].substring(1, 3).toLowerCase()], 10);\n",
+ s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
+ case "n":
+ return {g:1,
+ c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+ s:"(\\d{1,2})"}; case "m":
+ return {g:1,
+ c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+ s:"(\\d{2})"}; case "t":
+ return {g:0,
+ c:null,
+ s:"\\d{1,2}"};
+ case "L":
+ return {g:0,
+ c:null,
+ s:"(?:1|0)"};
+ case "Y":
+ return {g:1,
+ c:"y = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{4})"};
+ case "y":
+ return {g:1,
+ c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"
+ + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
+ s:"(\\d{1,2})"};
+ case "a":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'am') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(am|pm)"};
+ case "A":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'AM') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(AM|PM)"};
+ case "g":
+ case "G":
+ return {g:1,
+ c:"h = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"}; case "h":
+ case "H":
+ return {g:1,
+ c:"h = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"}; case "i":
+ return {g:1,
+ c:"i = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "s":
+ return {g:1,
+ c:"s = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "u":
+ return {g:1,
+ c:"ms = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{3})"};
+ case "O":
+ return {g:1,
+ c:[
+ "o = results[", currentGroup, "];\n",
+ "var sn = o.substring(0,1);\n", "var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n", "var mn = o.substring(3,5) % 60;\n", "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n", " (sn + String.leftPad(hr, 2, 0) + String.leftPad(mn, 2, 0)) : null;\n"
+ ].join(""),
+ s:"([+\-]\\d{4})"};
+ case "T":
+ return {g:0,
+ c:null,
+ s:"[A-Z]{1,4}"}; case "Z":
+ return {g:1,
+ c:"z = results[" + currentGroup + "] * 1;\n" + "z = (-43200 <= z && z <= 50400)? z : null;\n",
+ s:"([+\-]?\\d{1,5})"}; default:
+ return {g:0,
+ c:null,
+ s:String.escape(character)};
+ }
+};
+
+
+Date.prototype.getTimezone = function() {
+ return this.toString().replace(/^.*? ([A-Z]{1,4})[\-+][0-9]{4} .*$/, "$1");
+};
+
+
+Date.prototype.getGMTOffset = function() {
+ return (this.getTimezoneOffset() > 0 ? "-" : "+")
+ + String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset() / 60)), 2, "0")
+ + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");
+};
+
+
+Date.prototype.getDayOfYear = function() {
+ var num = 0;
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ for (var i = 0; i < this.getMonth(); ++i) {
+ num += Date.daysInMonth[i];
+ }
+ return num + this.getDate() - 1;
+};
+
+
+Date.prototype.getWeekOfYear = function() {
+
+ var jan1 = new Date(this.getFullYear(), 0, 1);
+ var day = jan1.getDay() - 1; day = (day >= 0 ? day : day + 7);
+ var daynum = Math.floor((this.getTime() - jan1.getTime() - (this.getTimezoneOffset()-jan1.getTimezoneOffset())*60000)/86400000) + 1;
+ var weeknum;
+ if (day < 4) {
+ weeknum = Math.floor((daynum + day - 1) / 7) + 1;
+ if (weeknum > 52) {
+ jan1 = new Date(this.getFullYear() + 1, 0, 1);
+ day = jan1.getDay() - 1;
+ day = (day >= 0 ? day : day + 7);
+ weeknum = day < 4 ? 1 : 53;
+ }
+ } else {
+ weeknum = Math.floor((daynum + day - 1) / 7) || 52;
+ }
+ return weeknum;
+};
+
+
+Date.prototype.isLeapYear = function() {
+ var year = this.getFullYear();
+ return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
+};
+
+
+Date.prototype.getFirstDayOfMonth = function() {
+ var day = (this.getDay() - (this.getDate() - 1)) % 7;
+ return (day < 0) ? (day + 7) : day;
+};
+
+
+Date.prototype.getLastDayOfMonth = function() {
+ var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
+ return (day < 0) ? (day + 7) : day;
+};
+
+
+
+Date.prototype.getFirstDateOfMonth = function() {
+ return new Date(this.getFullYear(), this.getMonth(), 1);
+};
+
+
+Date.prototype.getLastDateOfMonth = function() {
+ return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth());
+};
+
+Date.prototype.getDaysInMonth = function() {
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ return Date.daysInMonth[this.getMonth()];
+};
+
+
+Date.prototype.getSuffix = function() {
+ switch (this.getDate()) {
+ case 1:
+ case 21:
+ case 31:
+ return "st";
+ case 2:
+ case 22:
+ return "nd";
+ case 3:
+ case 23:
+ return "rd";
+ default:
+ return "th";
+ }
+};
+
+Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+
+
+Date.monthNames =
+ ["January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"];
+
+
+Date.dayNames =
+ ["Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"];
+
+Date.y2kYear = 50;
+Date.monthNumbers = {
+ Jan:0,
+ Feb:1,
+ Mar:2,
+ Apr:3,
+ May:4,
+ Jun:5,
+ Jul:6,
+ Aug:7,
+ Sep:8,
+ Oct:9,
+ Nov:10,
+ Dec:11};
+
+
+Date.prototype.clone = function() {
+ return new Date(this.getTime());
+};
+
+
+Date.prototype.clearTime = function(clone){
+ if(clone){
+ return this.clone().clearTime();
+ }
+ this.setHours(0);
+ this.setMinutes(0);
+ this.setSeconds(0);
+ this.setMilliseconds(0);
+ return this;
+};
+
+if(Ext.isSafari){
+ Date.brokenSetMonth = Date.prototype.setMonth;
+ Date.prototype.setMonth = function(num){
+ if(num <= -1){
+ var n = Math.ceil(-num);
+ var back_year = Math.ceil(n/12);
+ var month = (n % 12) ? 12 - n % 12 : 0 ;
+ this.setFullYear(this.getFullYear() - back_year);
+ return Date.brokenSetMonth.call(this, month);
+ } else {
+ return Date.brokenSetMonth.apply(this, arguments);
+ }
+ };
+}
+
+
+Date.MILLI = "ms";
+
+Date.SECOND = "s";
+
+Date.MINUTE = "mi";
+
+Date.HOUR = "h";
+
+Date.DAY = "d";
+
+Date.MONTH = "mo";
+
+Date.YEAR = "y";
+
+
+Date.prototype.add = function(interval, value){
+ var d = this.clone();
+ if (!interval || value === 0) return d;
+ switch(interval.toLowerCase()){
+ case Date.MILLI:
+ d.setMilliseconds(this.getMilliseconds() + value);
+ break;
+ case Date.SECOND:
+ d.setSeconds(this.getSeconds() + value);
+ break;
+ case Date.MINUTE:
+ d.setMinutes(this.getMinutes() + value);
+ break;
+ case Date.HOUR:
+ d.setHours(this.getHours() + value);
+ break;
+ case Date.DAY:
+ d.setDate(this.getDate() + value);
+ break;
+ case Date.MONTH:
+ var day = this.getDate();
+ if(day > 28){
+ day = Math.min(day, this.getFirstDateOfMonth().add('mo', value).getLastDateOfMonth().getDate());
+ }
+ d.setDate(day);
+ d.setMonth(this.getMonth() + value);
+ break;
+ case Date.YEAR:
+ d.setFullYear(this.getFullYear() + value);
+ break;
+ }
+ return d;
+};
+
+
+Date.prototype.between = function(start, end){
+ var t = this.getTime();
+ return start.getTime() <= t && t <= end.getTime();
+}
+
+Ext.util.DelayedTask = function(fn, scope, args){
+ var id = null, d, t;
+
+ var call = function(){
+ var now = new Date().getTime();
+ if(now - t >= d){
+ clearInterval(id);
+ id = null;
+ fn.apply(scope, args || []);
+ }
+ };
+
+ this.delay = function(delay, newFn, newScope, newArgs){
+ if(id && delay != d){
+ this.cancel();
+ }
+ d = delay;
+ t = new Date().getTime();
+ fn = newFn || fn;
+ scope = newScope || scope;
+ args = newArgs || args;
+ if(!id){
+ id = setInterval(call, d);
+ }
+ };
+
+
+ this.cancel = function(){
+ if(id){
+ clearInterval(id);
+ id = null;
+ }
+ };
+};
+
+Ext.util.TaskRunner = function(interval){
+ interval = interval || 10;
+ var tasks = [], removeQueue = [];
+ var id = 0;
+ var running = false;
+
+ var stopThread = function(){
+ running = false;
+ clearInterval(id);
+ id = 0;
+ };
+
+ var startThread = function(){
+ if(!running){
+ running = true;
+ id = setInterval(runTasks, interval);
+ }
+ };
+
+ var removeTask = function(t){
+ removeQueue.push(t);
+ if(t.onStop){
+ t.onStop.apply(t.scope || t);
+ }
+ };
+
+ var runTasks = function(){
+ if(removeQueue.length > 0){
+ for(var i = 0, len = removeQueue.length; i < len; i++){
+ tasks.remove(removeQueue[i]);
+ }
+ removeQueue = [];
+ if(tasks.length < 1){
+ stopThread();
+ return;
+ }
+ }
+ var now = new Date().getTime();
+ for(var i = 0, len = tasks.length; i < len; ++i){
+ var t = tasks[i];
+ var itime = now - t.taskRunTime;
+ if(t.interval <= itime){
+ var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
+ t.taskRunTime = now;
+ if(rt === false || t.taskRunCount === t.repeat){
+ removeTask(t);
+ return;
+ }
+ }
+ if(t.duration && t.duration <= (now - t.taskStartTime)){
+ removeTask(t);
+ }
+ }
+ };
+
+
+ this.start = function(task){
+ tasks.push(task);
+ task.taskStartTime = new Date().getTime();
+ task.taskRunTime = 0;
+ task.taskRunCount = 0;
+ startThread();
+ return task;
+ };
+
+
+ this.stop = function(task){
+ removeTask(task);
+ return task;
+ };
+
+
+ this.stopAll = function(){
+ stopThread();
+ for(var i = 0, len = tasks.length; i < len; i++){
+ if(tasks[i].onStop){
+ tasks[i].onStop();
+ }
+ }
+ tasks = [];
+ removeQueue = [];
+ };
+};
+
+
+Ext.TaskMgr = new Ext.util.TaskRunner();
+
+Ext.util.MixedCollection = function(allowFunctions, keyFn){
+ this.items = [];
+ this.map = {};
+ this.keys = [];
+ this.length = 0;
+ this.addEvents({
+
+ "clear" : true,
+
+ "add" : true,
+
+ "replace" : true,
+
+ "remove" : true,
+ "sort" : true
+ });
+ this.allowFunctions = allowFunctions === true;
+ if(keyFn){
+ this.getKey = keyFn;
+ }
+ Ext.util.MixedCollection.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
+ allowFunctions : false,
+
+
+ add : function(key, o){
+ if(arguments.length == 1){
+ o = arguments[0];
+ key = this.getKey(o);
+ }
+ if(typeof key == "undefined" || key === null){
+ this.length++;
+ this.items.push(o);
+ this.keys.push(null);
+ }else{
+ var old = this.map[key];
+ if(old){
+ return this.replace(key, o);
+ }
+ this.length++;
+ this.items.push(o);
+ this.map[key] = o;
+ this.keys.push(key);
+ }
+ this.fireEvent("add", this.length-1, o, key);
+ return o;
+ },
+
+
+ getKey : function(o){
+ return o.id;
+ },
+
+
+ replace : function(key, o){
+ if(arguments.length == 1){
+ o = arguments[0];
+ key = this.getKey(o);
+ }
+ var old = this.item(key);
+ if(typeof key == "undefined" || key === null || typeof old == "undefined"){
+ return this.add(key, o);
+ }
+ var index = this.indexOfKey(key);
+ this.items[index] = o;
+ this.map[key] = o;
+ this.fireEvent("replace", key, old, o);
+ return o;
+ },
+
+
+ addAll : function(objs){
+ if(arguments.length > 1 || objs instanceof Array){
+ var args = arguments.length > 1 ? arguments : objs;
+ for(var i = 0, len = args.length; i < len; i++){
+ this.add(args[i]);
+ }
+ }else{
+ for(var key in objs){
+ if(this.allowFunctions || typeof objs[key] != "function"){
+ this.add(key, objs[key]);
+ }
+ }
+ }
+ },
+
+
+ each : function(fn, scope){
+ var items = [].concat(this.items);
+ for(var i = 0, len = items.length; i < len; i++){
+ if(fn.call(scope || items[i], items[i], i, len) === false){
+ break;
+ }
+ }
+ },
+
+
+ eachKey : function(fn, scope){
+ for(var i = 0, len = this.keys.length; i < len; i++){
+ fn.call(scope || window, this.keys[i], this.items[i], i, len);
+ }
+ },
+
+
+ find : function(fn, scope){
+ for(var i = 0, len = this.items.length; i < len; i++){
+ if(fn.call(scope || window, this.items[i], this.keys[i])){
+ return this.items[i];
+ }
+ }
+ return null;
+ },
+
+
+ insert : function(index, key, o){
+ if(arguments.length == 2){
+ o = arguments[1];
+ key = this.getKey(o);
+ }
+ if(index >= this.length){
+ return this.add(key, o);
+ }
+ this.length++;
+ this.items.splice(index, 0, o);
+ if(typeof key != "undefined" && key != null){
+ this.map[key] = o;
+ }
+ this.keys.splice(index, 0, key);
+ this.fireEvent("add", index, o, key);
+ return o;
+ },
+
+
+ remove : function(o){
+ return this.removeAt(this.indexOf(o));
+ },
+
+
+ removeAt : function(index){
+ if(index < this.length && index >= 0){
+ this.length--;
+ var o = this.items[index];
+ this.items.splice(index, 1);
+ var key = this.keys[index];
+ if(typeof key != "undefined"){
+ delete this.map[key];
+ }
+ this.keys.splice(index, 1);
+ this.fireEvent("remove", o, key);
+ return o;
+ }
+ return false;
+ },
+
+
+ removeKey : function(key){
+ return this.removeAt(this.indexOfKey(key));
+ },
+
+
+ getCount : function(){
+ return this.length;
+ },
+
+
+ indexOf : function(o){
+ return this.items.indexOf(o);
+ },
+
+
+ indexOfKey : function(key){
+ return this.keys.indexOf(key);
+ },
+
+
+ item : function(key){
+ var item = typeof this.map[key] != "undefined" ? this.map[key] : this.items[key];
+ return typeof item != 'function' || this.allowFunctions ? item : null;
+ },
+
+
+ itemAt : function(index){
+ return this.items[index];
+ },
+
+
+ key : function(key){
+ return this.map[key];
+ },
+
+
+ contains : function(o){
+ return this.indexOf(o) != -1;
+ },
+
+
+ containsKey : function(key){
+ return typeof this.map[key] != "undefined";
+ },
+
+
+ clear : function(){
+ this.length = 0;
+ this.items = [];
+ this.keys = [];
+ this.map = {};
+ this.fireEvent("clear");
+ },
+
+
+ first : function(){
+ return this.items[0];
+ },
+
+
+ last : function(){
+ return this.items[this.length-1];
+ },
+
+
+ _sort : function(property, dir, fn){
+ var dsc = String(dir).toUpperCase() == "DESC" ? -1 : 1;
+ fn = fn || function(a, b){
+ return a-b;
+ };
+ var c = [], k = this.keys, items = this.items;
+ for(var i = 0, len = items.length; i < len; i++){
+ c[c.length] = {key: k[i], value: items[i], index: i};
+ }
+ c.sort(function(a, b){
+ var v = fn(a[property], b[property]) * dsc;
+ if(v == 0){
+ v = (a.index < b.index ? -1 : 1);
+ }
+ return v;
+ });
+ for(var i = 0, len = c.length; i < len; i++){
+ items[i] = c[i].value;
+ k[i] = c[i].key;
+ }
+ this.fireEvent("sort", this);
+ },
+
+
+ sort : function(dir, fn){
+ this._sort("value", dir, fn);
+ },
+
+
+ keySort : function(dir, fn){
+ this._sort("key", dir, fn || function(a, b){
+ return String(a).toUpperCase()-String(b).toUpperCase();
+ });
+ },
+
+
+ getRange : function(start, end){
+ var items = this.items;
+ if(items.length < 1){
+ return [];
+ }
+ start = start || 0;
+ end = Math.min(typeof end == "undefined" ? this.length-1 : end, this.length-1);
+ var r = [];
+ if(start <= end){
+ for(var i = start; i <= end; i++) {
+ r[r.length] = items[i];
+ }
+ }else{
+ for(var i = start; i >= end; i--) {
+ r[r.length] = items[i];
+ }
+ }
+ return r;
+ },
+
+
+ filter : function(property, value, anyMatch, caseSensitive){
+ if(Ext.isEmpty(value, false)){
+ return this.clone();
+ }
+ value = this.createValueMatcher(value, anyMatch, caseSensitive);
+ return this.filterBy(function(o){
+ return o && value.test(o[property]);
+ });
+ },
+
+
+ filterBy : function(fn, scope){
+ var r = new Ext.util.MixedCollection();
+ r.getKey = this.getKey;
+ var k = this.keys, it = this.items;
+ for(var i = 0, len = it.length; i < len; i++){
+ if(fn.call(scope||this, it[i], k[i])){
+ r.add(k[i], it[i]);
+ }
+ }
+ return r;
+ },
+
+
+ findIndex : function(property, value, start, anyMatch, caseSensitive){
+ if(Ext.isEmpty(value, false)){
+ return -1;
+ }
+ value = this.createValueMatcher(value, anyMatch, caseSensitive);
+ return this.findIndexBy(function(o){
+ return o && value.test(o[property]);
+ }, null, start);
+ },
+
+
+ findIndexBy : function(fn, scope, start){
+ var k = this.keys, it = this.items;
+ for(var i = (start||0), len = it.length; i < len; i++){
+ if(fn.call(scope||this, it[i], k[i])){
+ return i;
+ }
+ }
+ if(typeof start == 'number' && start > 0){
+ for(var i = 0; i < start; i++){
+ if(fn.call(scope||this, it[i], k[i])){
+ return i;
+ }
+ }
+ }
+ return -1;
+ },
+
+
+ createValueMatcher : function(value, anyMatch, caseSensitive){
+ if(!value.exec){
+ value = String(value);
+ value = new RegExp((anyMatch === true ? '' : '^') + Ext.escapeRe(value), caseSensitive ? '' : 'i');
+ }
+ return value;
+ },
+
+
+ clone : function(){
+ var r = new Ext.util.MixedCollection();
+ var k = this.keys, it = this.items;
+ for(var i = 0, len = it.length; i < len; i++){
+ r.add(k[i], it[i]);
+ }
+ r.getKey = this.getKey;
+ return r;
+ }
+});
+
+Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item;
+
+Ext.util.JSON = new (function(){
+ var useHasOwn = {}.hasOwnProperty ? true : false;
+
+
+
+
+ var pad = function(n) {
+ return n < 10 ? "0" + n : n;
+ };
+
+ var m = {
+ "\b": '\\b',
+ "\t": '\\t',
+ "\n": '\\n',
+ "\f": '\\f',
+ "\r": '\\r',
+ '"' : '\\"',
+ "\\": '\\\\'
+ };
+
+ var encodeString = function(s){
+ if (/["\\\x00-\x1f]/.test(s)) {
+ return '"' + s.replace(/([\x00-\x1f\\"])/g, function(a, b) {
+ var c = m[b];
+ if(c){
+ return c;
+ }
+ c = b.charCodeAt();
+ return "\\u00" +
+ Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + s + '"';
+ };
+
+ var encodeArray = function(o){
+ var a = ["["], b, i, l = o.length, v;
+ for (i = 0; i < l; i += 1) {
+ v = o[i];
+ switch (typeof v) {
+ case "undefined":
+ case "function":
+ case "unknown":
+ break;
+ default:
+ if (b) {
+ a.push(',');
+ }
+ a.push(v === null ? "null" : Ext.util.JSON.encode(v));
+ b = true;
+ }
+ }
+ a.push("]");
+ return a.join("");
+ };
+
+ var encodeDate = function(o){
+ return '"' + o.getFullYear() + "-" +
+ pad(o.getMonth() + 1) + "-" +
+ pad(o.getDate()) + "T" +
+ pad(o.getHours()) + ":" +
+ pad(o.getMinutes()) + ":" +
+ pad(o.getSeconds()) + '"';
+ };
+
+
+ this.encode = function(o){
+ if(typeof o == "undefined" || o === null){
+ return "null";
+ }else if(o instanceof Array){
+ return encodeArray(o);
+ }else if(o instanceof Date){
+ return encodeDate(o);
+ }else if(typeof o == "string"){
+ return encodeString(o);
+ }else if(typeof o == "number"){
+ return isFinite(o) ? String(o) : "null";
+ }else if(typeof o == "boolean"){
+ return String(o);
+ }else {
+ var a = ["{"], b, i, v;
+ for (i in o) {
+ if(!useHasOwn || o.hasOwnProperty(i)) {
+ v = o[i];
+ switch (typeof v) {
+ case "undefined":
+ case "function":
+ case "unknown":
+ break;
+ default:
+ if(b){
+ a.push(',');
+ }
+ a.push(this.encode(i), ":",
+ v === null ? "null" : this.encode(v));
+ b = true;
+ }
+ }
+ }
+ a.push("}");
+ return a.join("");
+ }
+ };
+
+
+ this.decode = function(json){
+ return eval("(" + json + ')');
+ };
+})();
+
+Ext.encode = Ext.util.JSON.encode;
+
+Ext.decode = Ext.util.JSON.decode;
+
+
+Ext.util.Format = function(){
+ var trimRe = /^\s+|\s+$/g;
+ return {
+
+ ellipsis : function(value, len){
+ if(value && value.length > len){
+ return value.substr(0, len-3)+"...";
+ }
+ return value;
+ },
+
+
+ undef : function(value){
+ return value !== undefined ? value : "";
+ },
+
+
+ defaultValue : function(value, defaultValue){
+ return value !== undefined && value !== '' ? value : defaultValue;
+ },
+
+
+ htmlEncode : function(value){
+ return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """);
+ },
+
+
+ htmlDecode : function(value){
+ return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, '"');
+ },
+
+
+ trim : function(value){
+ return String(value).replace(trimRe, "");
+ },
+
+
+ substr : function(value, start, length){
+ return String(value).substr(start, length);
+ },
+
+
+ lowercase : function(value){
+ return String(value).toLowerCase();
+ },
+
+
+ uppercase : function(value){
+ return String(value).toUpperCase();
+ },
+
+
+ capitalize : function(value){
+ return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase();
+ },
+
+
+ call : function(value, fn){
+ if(arguments.length > 2){
+ var args = Array.prototype.slice.call(arguments, 2);
+ args.unshift(value);
+ return eval(fn).apply(window, args);
+ }else{
+ return eval(fn).call(window, value);
+ }
+ },
+
+
+ usMoney : function(v){
+ v = (Math.round((v-0)*100))/100;
+ v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
+ v = String(v);
+ var ps = v.split('.');
+ var whole = ps[0];
+ var sub = ps[1] ? '.'+ ps[1] : '.00';
+ var r = /(\d+)(\d{3})/;
+ while (r.test(whole)) {
+ whole = whole.replace(r, '$1' + ',' + '$2');
+ }
+ v = whole + sub;
+ if(v.charAt(0) == '-'){
+ return '-$' + v.substr(1);
+ }
+ return "$" + v;
+ },
+
+
+ date : function(v, format){
+ if(!v){
+ return "";
+ }
+ if(!(v instanceof Date)){
+ v = new Date(Date.parse(v));
+ }
+ return v.dateFormat(format || "m/d/Y");
+ },
+
+
+ dateRenderer : function(format){
+ return function(v){
+ return Ext.util.Format.date(v, format);
+ };
+ },
+
+
+ stripTagsRE : /<\/?[^>]+>/gi,
+
+
+ stripTags : function(v){
+ return !v ? v : String(v).replace(this.stripTagsRE, "");
+ },
+
+ stripScriptsRe : /(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,
+
+
+ stripScripts : function(v){
+ return !v ? v : String(v).replace(this.stripScriptsRe, "");
+ },
+
+
+ fileSize : function(size){
+ if(size < 1024) {
+ return size + " bytes";
+ } else if(size < 1048576) {
+ return (Math.round(((size*10) / 1024))/10) + " KB";
+ } else {
+ return (Math.round(((size*10) / 1048576))/10) + " MB";
+ }
+ },
+
+ math : function(){
+ var fns = {};
+ return function(v, a){
+ if(!fns[a]){
+ fns[a] = new Function('v', 'return v ' + a + ';');
+ }
+ return fns[a](v);
+ }
+ }()
+ };
+}();
+
+Ext.XTemplate = function(){
+ Ext.XTemplate.superclass.constructor.apply(this, arguments);
+ var s = this.html;
+
+ s = ['<tpl>', s, '</tpl>'].join('');
+
+ var re = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;
+
+ var nameRe = /^<tpl\b[^>]*?for="(.*?)"/;
+ var ifRe = /^<tpl\b[^>]*?if="(.*?)"/;
+ var execRe = /^<tpl\b[^>]*?exec="(.*?)"/;
+ var m, id = 0;
+ var tpls = [];
+
+ while(m = s.match(re)){
+ var m2 = m[0].match(nameRe);
+ var m3 = m[0].match(ifRe);
+ var m4 = m[0].match(execRe);
+ var exp = null, fn = null, exec = null;
+ var name = m2 && m2[1] ? m2[1] : '';
+ if(m3){
+ exp = m3 && m3[1] ? m3[1] : null;
+ if(exp){
+ fn = new Function('values', 'parent', 'xindex', 'xcount', 'with(values){ return '+(Ext.util.Format.htmlDecode(exp))+'; }');
+ }
+ }
+ if(m4){
+ exp = m4 && m4[1] ? m4[1] : null;
+ if(exp){
+ exec = new Function('values', 'parent', 'xindex', 'xcount', 'with(values){ '+(Ext.util.Format.htmlDecode(exp))+'; }');
+ }
+ }
+ if(name){
+ switch(name){
+ case '.': name = new Function('values', 'parent', 'with(values){ return values; }'); break;
+ case '..': name = new Function('values', 'parent', 'with(values){ return parent; }'); break;
+ default: name = new Function('values', 'parent', 'with(values){ return '+name+'; }');
+ }
+ }
+ tpls.push({
+ id: id,
+ target: name,
+ exec: exec,
+ test: fn,
+ body: m[1]||''
+ });
+ s = s.replace(m[0], '{xtpl'+ id + '}');
+ ++id;
+ }
+ for(var i = tpls.length-1; i >= 0; --i){
+ this.compileTpl(tpls[i]);
+ }
+ this.master = tpls[tpls.length-1];
+ this.tpls = tpls;
+};
+Ext.extend(Ext.XTemplate, Ext.Template, {
+
+ re : /\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,
+
+ codeRe : /\{\[((?:\\\]|.|\n)*?)\]\}/g,
+
+
+ applySubTemplate : function(id, values, parent, xindex, xcount){
+ var t = this.tpls[id];
+ if(t.test && !t.test.call(this, values, parent, xindex, xcount)){
+ return '';
+ }
+ if(t.exec && t.exec.call(this, values, parent, xindex, xcount)){
+ return '';
+ }
+ var vs = t.target ? t.target.call(this, values, parent) : values;
+ parent = t.target ? values : parent;
+ if(t.target && vs instanceof Array){
+ var buf = [];
+ for(var i = 0, len = vs.length; i < len; i++){
+ buf[buf.length] = t.compiled.call(this, vs[i], parent, i+1, len);
+ }
+ return buf.join('');
+ }
+ return t.compiled.call(this, vs, parent, xindex, xcount);
+ },
+
+
+ compileTpl : function(tpl){
+ var fm = Ext.util.Format;
+ var useF = this.disableFormats !== true;
+ var sep = Ext.isGecko ? "+" : ",";
+ var fn = function(m, name, format, args, math){
+ if(name.substr(0, 4) == 'xtpl'){
+ return "'"+ sep +'this.applySubTemplate('+name.substr(4)+', values, parent, xindex, xcount)'+sep+"'";
+ }
+ var v;
+ if(name === '.'){
+ v = 'values';
+ }else if(name === '#'){
+ v = 'xindex';
+ }else if(name.indexOf('.') != -1){
+ v = name;
+ }else{
+ v = "values['" + name + "']";
+ }
+ if(math){
+ v = '(' + v + math + ')';
+ }
+ if(format && useF){
+ args = args ? ',' + args : "";
+ if(format.substr(0, 5) != "this."){
+ format = "fm." + format + '(';
+ }else{
+ format = 'this.call("'+ format.substr(5) + '", ';
+ args = ", values";
+ }
+ }else{
+ args= ''; format = "("+v+" === undefined ? '' : ";
+ }
+ return "'"+ sep + format + v + args + ")"+sep+"'";
+ };
+ var codeFn = function(m, code){
+ return "'"+ sep +'('+code+')'+sep+"'";
+ };
+
+ var body;
+
+ if(Ext.isGecko){
+ body = "tpl.compiled = function(values, parent, xindex, xcount){ return '" +
+ tpl.body.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn) +
+ "';};";
+ }else{
+ body = ["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];
+ body.push(tpl.body.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn));
+ body.push("'].join('');};");
+ body = body.join('');
+ }
+ eval(body);
+ return this;
+ },
+
+
+ apply : function(values){
+ return this.master.compiled.call(this, values, {}, 1, 1);
+ },
+
+
+ applyTemplate : function(values){
+ return this.master.compiled.call(this, values, {}, 1, 1);
+ },
+
+
+ compile : function(){return this;}
+});
+
+
+Ext.XTemplate.from = function(el){
+ el = Ext.getDom(el);
+ return new Ext.XTemplate(el.value || el.innerHTML);
+};
+
+Ext.util.CSS = function(){
+ var rules = null;
+ var doc = document;
+
+ var camelRe = /(-[a-z])/gi;
+ var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
+
+ return {
+
+ createStyleSheet : function(cssText, id){
+ var ss;
+ var head = doc.getElementsByTagName("head")[0];
+ var rules = doc.createElement("style");
+ rules.setAttribute("type", "text/css");
+ if(id){
+ rules.setAttribute("id", id);
+ }
+ if(Ext.isIE){
+ head.appendChild(rules);
+ ss = rules.styleSheet;
+ ss.cssText = cssText;
+ }else{
+ try{
+ rules.appendChild(doc.createTextNode(cssText));
+ }catch(e){
+ rules.cssText = cssText;
+ }
+ head.appendChild(rules);
+ ss = rules.styleSheet ? rules.styleSheet : (rules.sheet || doc.styleSheets[doc.styleSheets.length-1]);
+ }
+ this.cacheStyleSheet(ss);
+ return ss;
+ },
+
+
+ removeStyleSheet : function(id){
+ var existing = doc.getElementById(id);
+ if(existing){
+ existing.parentNode.removeChild(existing);
+ }
+ },
+
+
+ swapStyleSheet : function(id, url){
+ this.removeStyleSheet(id);
+ var ss = doc.createElement("link");
+ ss.setAttribute("rel", "stylesheet");
+ ss.setAttribute("type", "text/css");
+ ss.setAttribute("id", id);
+ ss.setAttribute("href", url);
+ doc.getElementsByTagName("head")[0].appendChild(ss);
+ },
+
+
+ refreshCache : function(){
+ return this.getRules(true);
+ },
+
+
+ cacheStyleSheet : function(ss){
+ if(!rules){
+ rules = {};
+ }
+ try{
+ var ssRules = ss.cssRules || ss.rules;
+ for(var j = ssRules.length-1; j >= 0; --j){
+ rules[ssRules[j].selectorText] = ssRules[j];
+ }
+ }catch(e){}
+ },
+
+
+ getRules : function(refreshCache){
+ if(rules == null || refreshCache){
+ rules = {};
+ var ds = doc.styleSheets;
+ for(var i =0, len = ds.length; i < len; i++){
+ try{
+ this.cacheStyleSheet(ds[i]);
+ }catch(e){}
+ }
+ }
+ return rules;
+ },
+
+
+ getRule : function(selector, refreshCache){
+ var rs = this.getRules(refreshCache);
+ if(!(selector instanceof Array)){
+ return rs[selector];
+ }
+ for(var i = 0; i < selector.length; i++){
+ if(rs[selector[i]]){
+ return rs[selector[i]];
+ }
+ }
+ return null;
+ },
+
+
+
+ updateRule : function(selector, property, value){
+ if(!(selector instanceof Array)){
+ var rule = this.getRule(selector);
+ if(rule){
+ rule.style[property.replace(camelRe, camelFn)] = value;
+ return true;
+ }
+ }else{
+ for(var i = 0; i < selector.length; i++){
+ if(this.updateRule(selector[i], property, value)){
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ };
+}();
+
+Ext.util.ClickRepeater = function(el, config)
+{
+ this.el = Ext.get(el);
+ this.el.unselectable();
+
+ Ext.apply(this, config);
+
+ this.addEvents({
+
+ "mousedown" : true,
+
+ "click" : true,
+
+ "mouseup" : true
+ });
+
+ this.el.on("mousedown", this.handleMouseDown, this);
+ if(this.preventDefault || this.stopDefault){
+ this.el.on("click", function(e){
+ if(this.preventDefault){
+ e.preventDefault();
+ }
+ if(this.stopDefault){
+ e.stopEvent();
+ }
+ }, this);
+ }
+
+ if(this.handler){
+ this.on("click", this.handler, this.scope || this);
+ }
+
+ Ext.util.ClickRepeater.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.util.ClickRepeater, Ext.util.Observable, {
+ interval : 20,
+ delay: 250,
+ preventDefault : true,
+ stopDefault : false,
+ timer : 0,
+
+ handleMouseDown : function(){
+ clearTimeout(this.timer);
+ this.el.blur();
+ if(this.pressClass){
+ this.el.addClass(this.pressClass);
+ }
+ this.mousedownTime = new Date();
+
+ Ext.getDoc().on("mouseup", this.handleMouseUp, this);
+ this.el.on("mouseout", this.handleMouseOut, this);
+
+ this.fireEvent("mousedown", this);
+ this.fireEvent("click", this);
+
+ if (this.accelerate) {
+ this.delay = 400;
+ }
+ this.timer = this.click.defer(this.delay || this.interval, this);
+ },
+
+ click : function(){
+ this.fireEvent("click", this);
+ this.timer = this.click.defer(this.accelerate ?
+ this.easeOutExpo(this.mousedownTime.getElapsed(),
+ 400,
+ -390,
+ 12000) :
+ this.interval, this);
+ },
+
+ easeOutExpo : function (t, b, c, d) {
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
+ },
+
+ handleMouseOut : function(){
+ clearTimeout(this.timer);
+ if(this.pressClass){
+ this.el.removeClass(this.pressClass);
+ }
+ this.el.on("mouseover", this.handleMouseReturn, this);
+ },
+
+ handleMouseReturn : function(){
+ this.el.un("mouseover", this.handleMouseReturn);
+ if(this.pressClass){
+ this.el.addClass(this.pressClass);
+ }
+ this.click();
+ },
+
+ handleMouseUp : function(){
+ clearTimeout(this.timer);
+ this.el.un("mouseover", this.handleMouseReturn);
+ this.el.un("mouseout", this.handleMouseOut);
+ Ext.getDoc().un("mouseup", this.handleMouseUp);
+ this.el.removeClass(this.pressClass);
+ this.fireEvent("mouseup", this);
+ }
+});
+
+Ext.KeyNav = function(el, config){
+ this.el = Ext.get(el);
+ Ext.apply(this, config);
+ if(!this.disabled){
+ this.disabled = true;
+ this.enable();
+ }
+};
+
+Ext.KeyNav.prototype = {
+
+ disabled : false,
+
+ defaultEventAction: "stopEvent",
+
+ forceKeyDown : false,
+
+ prepareEvent : function(e){
+ var k = e.getKey();
+ var h = this.keyToHandler[k];
+ if(Ext.isSafari && h && k >= 37 && k <= 40){
+ e.stopEvent();
+ }
+ },
+
+ relay : function(e){
+ var k = e.getKey();
+ var h = this.keyToHandler[k];
+ if(h && this[h]){
+ if(this.doRelay(e, this[h], h) !== true){
+ e[this.defaultEventAction]();
+ }
+ }
+ },
+
+ doRelay : function(e, h, hname){
+ return h.call(this.scope || this, e);
+ },
+
+ enter : false,
+ left : false,
+ right : false,
+ up : false,
+ down : false,
+ tab : false,
+ esc : false,
+ pageUp : false,
+ pageDown : false,
+ del : false,
+ home : false,
+ end : false,
+
+ keyToHandler : {
+ 37 : "left",
+ 39 : "right",
+ 38 : "up",
+ 40 : "down",
+ 33 : "pageUp",
+ 34 : "pageDown",
+ 46 : "del",
+ 36 : "home",
+ 35 : "end",
+ 13 : "enter",
+ 27 : "esc",
+ 9 : "tab"
+ },
+
+
+ enable: function(){
+ if(this.disabled){
+ if(this.forceKeyDown || Ext.isIE || Ext.isAir){
+ this.el.on("keydown", this.relay, this);
+ }else{
+ this.el.on("keydown", this.prepareEvent, this);
+ this.el.on("keypress", this.relay, this);
+ }
+ this.disabled = false;
+ }
+ },
+
+
+ disable: function(){
+ if(!this.disabled){
+ if(this.forceKeyDown || Ext.isIE || Ext.isAir){
+ this.el.un("keydown", this.relay);
+ }else{
+ this.el.un("keydown", this.prepareEvent);
+ this.el.un("keypress", this.relay);
+ }
+ this.disabled = true;
+ }
+ }
+};
+
+Ext.KeyMap = function(el, config, eventName){
+ this.el = Ext.get(el);
+ this.eventName = eventName || "keydown";
+ this.bindings = [];
+ if(config){
+ this.addBinding(config);
+ }
+ this.enable();
+};
+
+Ext.KeyMap.prototype = {
+
+ stopEvent : false,
+
+
+ addBinding : function(config){
+ if(config instanceof Array){
+ for(var i = 0, len = config.length; i < len; i++){
+ this.addBinding(config[i]);
+ }
+ return;
+ }
+ var keyCode = config.key,
+ shift = config.shift,
+ ctrl = config.ctrl,
+ alt = config.alt,
+ fn = config.fn,
+ scope = config.scope;
+ if(typeof keyCode == "string"){
+ var ks = [];
+ var keyString = keyCode.toUpperCase();
+ for(var j = 0, len = keyString.length; j < len; j++){
+ ks.push(keyString.charCodeAt(j));
+ }
+ keyCode = ks;
+ }
+ var keyArray = keyCode instanceof Array;
+ var handler = function(e){
+ if((!shift || e.shiftKey) && (!ctrl || e.ctrlKey) && (!alt || e.altKey)){
+ var k = e.getKey();
+ if(keyArray){
+ for(var i = 0, len = keyCode.length; i < len; i++){
+ if(keyCode[i] == k){
+ if(this.stopEvent){
+ e.stopEvent();
+ }
+ fn.call(scope || window, k, e);
+ return;
+ }
+ }
+ }else{
+ if(k == keyCode){
+ if(this.stopEvent){
+ e.stopEvent();
+ }
+ fn.call(scope || window, k, e);
+ }
+ }
+ }
+ };
+ this.bindings.push(handler);
+ },
+
+
+ on : function(key, fn, scope){
+ var keyCode, shift, ctrl, alt;
+ if(typeof key == "object" && !(key instanceof Array)){
+ keyCode = key.key;
+ shift = key.shift;
+ ctrl = key.ctrl;
+ alt = key.alt;
+ }else{
+ keyCode = key;
+ }
+ this.addBinding({
+ key: keyCode,
+ shift: shift,
+ ctrl: ctrl,
+ alt: alt,
+ fn: fn,
+ scope: scope
+ })
+ },
+
+
+ handleKeyDown : function(e){
+ if(this.enabled){
+ var b = this.bindings;
+ for(var i = 0, len = b.length; i < len; i++){
+ b[i].call(this, e);
+ }
+ }
+ },
+
+
+ isEnabled : function(){
+ return this.enabled;
+ },
+
+
+ enable: function(){
+ if(!this.enabled){
+ this.el.on(this.eventName, this.handleKeyDown, this);
+ this.enabled = true;
+ }
+ },
+
+
+ disable: function(){
+ if(this.enabled){
+ this.el.removeListener(this.eventName, this.handleKeyDown, this);
+ this.enabled = false;
+ }
+ }
+};
+
+Ext.util.TextMetrics = function(){
+ var shared;
+ return {
+
+ measure : function(el, text, fixedWidth){
+ if(!shared){
+ shared = Ext.util.TextMetrics.Instance(el, fixedWidth);
+ }
+ shared.bind(el);
+ shared.setFixedWidth(fixedWidth || 'auto');
+ return shared.getSize(text);
+ },
+
+
+ createInstance : function(el, fixedWidth){
+ return Ext.util.TextMetrics.Instance(el, fixedWidth);
+ }
+ };
+}();
+
+Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){
+ var ml = new Ext.Element(document.createElement('div'));
+ document.body.appendChild(ml.dom);
+ ml.position('absolute');
+ ml.setLeftTop(-1000, -1000);
+ ml.hide();
+
+ if(fixedWidth){
+ ml.setWidth(fixedWidth);
+ }
+
+ var instance = {
+
+ getSize : function(text){
+ ml.update(text);
+ var s = ml.getSize();
+ ml.update('');
+ return s;
+ },
+
+
+ bind : function(el){
+ ml.setStyle(
+ Ext.fly(el).getStyles('font-size','font-style', 'font-weight', 'font-family','line-height')
+ );
+ },
+
+
+ setFixedWidth : function(width){
+ ml.setWidth(width);
+ },
+
+
+ getWidth : function(text){
+ ml.dom.style.width = 'auto';
+ return this.getSize(text).width;
+ },
+
+
+ getHeight : function(text){
+ return this.getSize(text).height;
+ }
+ };
+
+ instance.bind(bindTo);
+
+ return instance;
+};
+
+Ext.Element.measureText = Ext.util.TextMetrics.measure;
+
+
+(function() {
+
+var Event=Ext.EventManager;
+var Dom=Ext.lib.Dom;
+
+
+Ext.dd.DragDrop = function(id, sGroup, config) {
+ if(id) {
+ this.init(id, sGroup, config);
+ }
+};
+
+Ext.dd.DragDrop.prototype = {
+
+
+ id: null,
+
+
+ config: null,
+
+
+ dragElId: null,
+
+
+ handleElId: null,
+
+
+ invalidHandleTypes: null,
+
+
+ invalidHandleIds: null,
+
+
+ invalidHandleClasses: null,
+
+
+ startPageX: 0,
+
+
+ startPageY: 0,
+
+
+ groups: null,
+
+
+ locked: false,
+
+
+ lock: function() { this.locked = true; },
+
+
+ unlock: function() { this.locked = false; },
+
+
+ isTarget: true,
+
+
+ padding: null,
+
+
+ _domRef: null,
+
+
+ __ygDragDrop: true,
+
+
+ constrainX: false,
+
+
+ constrainY: false,
+
+
+ minX: 0,
+
+
+ maxX: 0,
+
+
+ minY: 0,
+
+
+ maxY: 0,
+
+
+ maintainOffset: false,
+
+
+ xTicks: null,
+
+
+ yTicks: null,
+
+
+ primaryButtonOnly: true,
+
+
+ available: false,
+
+
+ hasOuterHandles: false,
+
+
+ b4StartDrag: function(x, y) { },
+
+
+ startDrag: function(x, y) { },
+
+
+ b4Drag: function(e) { },
+
+
+ onDrag: function(e) { },
+
+
+ onDragEnter: function(e, id) { },
+
+
+ b4DragOver: function(e) { },
+
+
+ onDragOver: function(e, id) { },
+
+
+ b4DragOut: function(e) { },
+
+
+ onDragOut: function(e, id) { },
+
+
+ b4DragDrop: function(e) { },
+
+
+ onDragDrop: function(e, id) { },
+
+
+ onInvalidDrop: function(e) { },
+
+
+ b4EndDrag: function(e) { },
+
+
+ endDrag: function(e) { },
+
+
+ b4MouseDown: function(e) { },
+
+
+ onMouseDown: function(e) { },
+
+
+ onMouseUp: function(e) { },
+
+
+ onAvailable: function () {
+ },
+
+
+ defaultPadding : {left:0, right:0, top:0, bottom:0},
+
+
+ constrainTo : function(constrainTo, pad, inContent){
+ if(typeof pad == "number"){
+ pad = {left: pad, right:pad, top:pad, bottom:pad};
+ }
+ pad = pad || this.defaultPadding;
+ var b = Ext.get(this.getEl()).getBox();
+ var ce = Ext.get(constrainTo);
+ var s = ce.getScroll();
+ var c, cd = ce.dom;
+ if(cd == document.body){
+ c = { x: s.left, y: s.top, width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()};
+ }else{
+ var xy = ce.getXY();
+ c = {x : xy[0]+s.left, y: xy[1]+s.top, width: cd.clientWidth, height: cd.clientHeight};
+ }
+
+
+ var topSpace = b.y - c.y;
+ var leftSpace = b.x - c.x;
+
+ this.resetConstraints();
+ this.setXConstraint(leftSpace - (pad.left||0),
+ c.width - leftSpace - b.width - (pad.right||0)
+ );
+ this.setYConstraint(topSpace - (pad.top||0),
+ c.height - topSpace - b.height - (pad.bottom||0)
+ );
+ },
+
+
+ getEl: function() {
+ if (!this._domRef) {
+ this._domRef = Ext.getDom(this.id);
+ }
+
+ return this._domRef;
+ },
+
+
+ getDragEl: function() {
+ return Ext.getDom(this.dragElId);
+ },
+
+
+ init: function(id, sGroup, config) {
+ this.initTarget(id, sGroup, config);
+ Event.on(this.id, "mousedown", this.handleMouseDown, this);
+
+ },
+
+
+ initTarget: function(id, sGroup, config) {
+
+
+ this.config = config || {};
+
+
+ this.DDM = Ext.dd.DDM;
+
+ this.groups = {};
+
+
+
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+
+
+ this.id = id;
+
+
+ this.addToGroup((sGroup) ? sGroup : "default");
+
+
+
+ this.handleElId = id;
+
+
+ this.setDragElId(id);
+
+
+ this.invalidHandleTypes = { A: "A" };
+ this.invalidHandleIds = {};
+ this.invalidHandleClasses = [];
+
+ this.applyConfig();
+
+ this.handleOnAvailable();
+ },
+
+
+ applyConfig: function() {
+
+
+
+ this.padding = this.config.padding || [0, 0, 0, 0];
+ this.isTarget = (this.config.isTarget !== false);
+ this.maintainOffset = (this.config.maintainOffset);
+ this.primaryButtonOnly = (this.config.primaryButtonOnly !== false);
+
+ },
+
+
+ handleOnAvailable: function() {
+ this.available = true;
+ this.resetConstraints();
+ this.onAvailable();
+ },
+
+
+ setPadding: function(iTop, iRight, iBot, iLeft) {
+
+ if (!iRight && 0 !== iRight) {
+ this.padding = [iTop, iTop, iTop, iTop];
+ } else if (!iBot && 0 !== iBot) {
+ this.padding = [iTop, iRight, iTop, iRight];
+ } else {
+ this.padding = [iTop, iRight, iBot, iLeft];
+ }
+ },
+
+
+ setInitPosition: function(diffX, diffY) {
+ var el = this.getEl();
+
+ if (!this.DDM.verifyEl(el)) {
+ return;
+ }
+
+ var dx = diffX || 0;
+ var dy = diffY || 0;
+
+ var p = Dom.getXY( el );
+
+ this.initPageX = p[0] - dx;
+ this.initPageY = p[1] - dy;
+
+ this.lastPageX = p[0];
+ this.lastPageY = p[1];
+
+
+ this.setStartPosition(p);
+ },
+
+
+ setStartPosition: function(pos) {
+ var p = pos || Dom.getXY( this.getEl() );
+ this.deltaSetXY = null;
+
+ this.startPageX = p[0];
+ this.startPageY = p[1];
+ },
+
+
+ addToGroup: function(sGroup) {
+ this.groups[sGroup] = true;
+ this.DDM.regDragDrop(this, sGroup);
+ },
+
+
+ removeFromGroup: function(sGroup) {
+ if (this.groups[sGroup]) {
+ delete this.groups[sGroup];
+ }
+
+ this.DDM.removeDDFromGroup(this, sGroup);
+ },
+
+
+ setDragElId: function(id) {
+ this.dragElId = id;
+ },
+
+
+ setHandleElId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ this.handleElId = id;
+ this.DDM.regHandle(this.id, id);
+ },
+
+
+ setOuterHandleElId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ Event.on(id, "mousedown",
+ this.handleMouseDown, this);
+ this.setHandleElId(id);
+
+ this.hasOuterHandles = true;
+ },
+
+
+ unreg: function() {
+ Event.un(this.id, "mousedown",
+ this.handleMouseDown);
+ this._domRef = null;
+ this.DDM._remove(this);
+ },
+
+ destroy : function(){
+ this.unreg();
+ },
+
+
+ isLocked: function() {
+ return (this.DDM.isLocked() || this.locked);
+ },
+
+
+ handleMouseDown: function(e, oDD){
+ if (this.primaryButtonOnly && e.button != 0) {
+ return;
+ }
+
+ if (this.isLocked()) {
+ return;
+ }
+
+ this.DDM.refreshCache(this.groups);
+
+ var pt = new Ext.lib.Point(Ext.lib.Event.getPageX(e), Ext.lib.Event.getPageY(e));
+ if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) ) {
+ } else {
+ if (this.clickValidator(e)) {
+
+
+ this.setStartPosition();
+
+
+ this.b4MouseDown(e);
+ this.onMouseDown(e);
+
+ this.DDM.handleMouseDown(e, this);
+
+ this.DDM.stopEvent(e);
+ } else {
+
+
+ }
+ }
+ },
+
+ clickValidator: function(e) {
+ var target = e.getTarget();
+ return ( this.isValidHandleChild(target) &&
+ (this.id == this.handleElId ||
+ this.DDM.handleWasClicked(target, this.id)) );
+ },
+
+
+ addInvalidHandleType: function(tagName) {
+ var type = tagName.toUpperCase();
+ this.invalidHandleTypes[type] = type;
+ },
+
+
+ addInvalidHandleId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ this.invalidHandleIds[id] = id;
+ },
+
+
+ addInvalidHandleClass: function(cssClass) {
+ this.invalidHandleClasses.push(cssClass);
+ },
+
+
+ removeInvalidHandleType: function(tagName) {
+ var type = tagName.toUpperCase();
+
+ delete this.invalidHandleTypes[type];
+ },
+
+
+ removeInvalidHandleId: function(id) {
+ if (typeof id !== "string") {
+ id = Ext.id(id);
+ }
+ delete this.invalidHandleIds[id];
+ },
+
+
+ removeInvalidHandleClass: function(cssClass) {
+ for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) {
+ if (this.invalidHandleClasses[i] == cssClass) {
+ delete this.invalidHandleClasses[i];
+ }
+ }
+ },
+
+
+ isValidHandleChild: function(node) {
+
+ var valid = true;
+
+ var nodeName;
+ try {
+ nodeName = node.nodeName.toUpperCase();
+ } catch(e) {
+ nodeName = node.nodeName;
+ }
+ valid = valid && !this.invalidHandleTypes[nodeName];
+ valid = valid && !this.invalidHandleIds[node.id];
+
+ for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) {
+ valid = !Dom.hasClass(node, this.invalidHandleClasses[i]);
+ }
+
+
+ return valid;
+
+ },
+
+
+ setXTicks: function(iStartX, iTickSize) {
+ this.xTicks = [];
+ this.xTickSize = iTickSize;
+
+ var tickMap = {};
+
+ for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) {
+ if (!tickMap[i]) {
+ this.xTicks[this.xTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) {
+ if (!tickMap[i]) {
+ this.xTicks[this.xTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ this.xTicks.sort(this.DDM.numericSort) ;
+ },
+
+
+ setYTicks: function(iStartY, iTickSize) {
+ this.yTicks = [];
+ this.yTickSize = iTickSize;
+
+ var tickMap = {};
+
+ for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) {
+ if (!tickMap[i]) {
+ this.yTicks[this.yTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) {
+ if (!tickMap[i]) {
+ this.yTicks[this.yTicks.length] = i;
+ tickMap[i] = true;
+ }
+ }
+
+ this.yTicks.sort(this.DDM.numericSort) ;
+ },
+
+
+ setXConstraint: function(iLeft, iRight, iTickSize) {
+ this.leftConstraint = iLeft;
+ this.rightConstraint = iRight;
+
+ this.minX = this.initPageX - iLeft;
+ this.maxX = this.initPageX + iRight;
+ if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); }
+
+ this.constrainX = true;
+ },
+
+
+ clearConstraints: function() {
+ this.constrainX = false;
+ this.constrainY = false;
+ this.clearTicks();
+ },
+
+
+ clearTicks: function() {
+ this.xTicks = null;
+ this.yTicks = null;
+ this.xTickSize = 0;
+ this.yTickSize = 0;
+ },
+
+
+ setYConstraint: function(iUp, iDown, iTickSize) {
+ this.topConstraint = iUp;
+ this.bottomConstraint = iDown;
+
+ this.minY = this.initPageY - iUp;
+ this.maxY = this.initPageY + iDown;
+ if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); }
+
+ this.constrainY = true;
+
+ },
+
+
+ resetConstraints: function() {
+
+
+
+ if (this.initPageX || this.initPageX === 0) {
+
+ var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
+ var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
+
+ this.setInitPosition(dx, dy);
+
+
+ } else {
+ this.setInitPosition();
+ }
+
+ if (this.constrainX) {
+ this.setXConstraint( this.leftConstraint,
+ this.rightConstraint,
+ this.xTickSize );
+ }
+
+ if (this.constrainY) {
+ this.setYConstraint( this.topConstraint,
+ this.bottomConstraint,
+ this.yTickSize );
+ }
+ },
+
+
+ getTick: function(val, tickArray) {
+
+ if (!tickArray) {
+
+
+ return val;
+ } else if (tickArray[0] >= val) {
+
+
+ return tickArray[0];
+ } else {
+ for (var i=0, len=tickArray.length; i<len; ++i) {
+ var next = i + 1;
+ if (tickArray[next] && tickArray[next] >= val) {
+ var diff1 = val - tickArray[i];
+ var diff2 = tickArray[next] - val;
+ return (diff2 > diff1) ? tickArray[i] : tickArray[next];
+ }
+ }
+
+
+
+ return tickArray[tickArray.length - 1];
+ }
+ },
+
+
+ toString: function() {
+ return ("DragDrop " + this.id);
+ }
+
+};
+
+})();
+
+
+
+
+if (!Ext.dd.DragDropMgr) {
+
+
+Ext.dd.DragDropMgr = function() {
+
+ var Event = Ext.EventManager;
+
+ return {
+
+
+ ids: {},
+
+
+ handleIds: {},
+
+
+ dragCurrent: null,
+
+
+ dragOvers: {},
+
+
+ deltaX: 0,
+
+
+ deltaY: 0,
+
+
+ preventDefault: true,
+
+
+ stopPropagation: true,
+
+
+ initalized: false,
+
+
+ locked: false,
+
+
+ init: function() {
+ this.initialized = true;
+ },
+
+
+ POINT: 0,
+
+
+ INTERSECT: 1,
+
+
+ mode: 0,
+
+
+ _execOnAll: function(sMethod, args) {
+ for (var i in this.ids) {
+ for (var j in this.ids[i]) {
+ var oDD = this.ids[i][j];
+ if (! this.isTypeOfDD(oDD)) {
+ continue;
+ }
+ oDD[sMethod].apply(oDD, args);
+ }
+ }
+ },
+
+
+ _onLoad: function() {
+
+ this.init();
+
+
+ Event.on(document, "mouseup", this.handleMouseUp, this, true);
+ Event.on(document, "mousemove", this.handleMouseMove, this, true);
+ Event.on(window, "unload", this._onUnload, this, true);
+ Event.on(window, "resize", this._onResize, this, true);
+
+
+ },
+
+
+ _onResize: function(e) {
+ this._execOnAll("resetConstraints", []);
+ },
+
+
+ lock: function() { this.locked = true; },
+
+
+ unlock: function() { this.locked = false; },
+
+
+ isLocked: function() { return this.locked; },
+
+
+ locationCache: {},
+
+
+ useCache: true,
+
+
+ clickPixelThresh: 3,
+
+
+ clickTimeThresh: 350,
+
+
+ dragThreshMet: false,
+
+
+ clickTimeout: null,
+
+
+ startX: 0,
+
+
+ startY: 0,
+
+
+ regDragDrop: function(oDD, sGroup) {
+ if (!this.initialized) { this.init(); }
+
+ if (!this.ids[sGroup]) {
+ this.ids[sGroup] = {};
+ }
+ this.ids[sGroup][oDD.id] = oDD;
+ },
+
+
+ removeDDFromGroup: function(oDD, sGroup) {
+ if (!this.ids[sGroup]) {
+ this.ids[sGroup] = {};
+ }
+
+ var obj = this.ids[sGroup];
+ if (obj && obj[oDD.id]) {
+ delete obj[oDD.id];
+ }
+ },
+
+
+ _remove: function(oDD) {
+ for (var g in oDD.groups) {
+ if (g && this.ids[g][oDD.id]) {
+ delete this.ids[g][oDD.id];
+ }
+ }
+ delete this.handleIds[oDD.id];
+ },
+
+
+ regHandle: function(sDDId, sHandleId) {
+ if (!this.handleIds[sDDId]) {
+ this.handleIds[sDDId] = {};
+ }
+ this.handleIds[sDDId][sHandleId] = sHandleId;
+ },
+
+
+ isDragDrop: function(id) {
+ return ( this.getDDById(id) ) ? true : false;
+ },
+
+
+ getRelated: function(p_oDD, bTargetsOnly) {
+ var oDDs = [];
+ for (var i in p_oDD.groups) {
+ for (j in this.ids[i]) {
+ var dd = this.ids[i][j];
+ if (! this.isTypeOfDD(dd)) {
+ continue;
+ }
+ if (!bTargetsOnly || dd.isTarget) {
+ oDDs[oDDs.length] = dd;
+ }
+ }
+ }
+
+ return oDDs;
+ },
+
+
+ isLegalTarget: function (oDD, oTargetDD) {
+ var targets = this.getRelated(oDD, true);
+ for (var i=0, len=targets.length;i<len;++i) {
+ if (targets[i].id == oTargetDD.id) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+
+ isTypeOfDD: function (oDD) {
+ return (oDD && oDD.__ygDragDrop);
+ },
+
+
+ isHandle: function(sDDId, sHandleId) {
+ return ( this.handleIds[sDDId] &&
+ this.handleIds[sDDId][sHandleId] );
+ },
+
+
+ getDDById: function(id) {
+ for (var i in this.ids) {
+ if (this.ids[i][id]) {
+ return this.ids[i][id];
+ }
+ }
+ return null;
+ },
+
+
+ handleMouseDown: function(e, oDD) {
+ if(Ext.QuickTips){
+ Ext.QuickTips.disable();
+ }
+ this.currentTarget = e.getTarget();
+
+ this.dragCurrent = oDD;
+
+ var el = oDD.getEl();
+
+
+ this.startX = e.getPageX();
+ this.startY = e.getPageY();
+
+ this.deltaX = this.startX - el.offsetLeft;
+ this.deltaY = this.startY - el.offsetTop;
+
+ this.dragThreshMet = false;
+
+ this.clickTimeout = setTimeout(
+ function() {
+ var DDM = Ext.dd.DDM;
+ DDM.startDrag(DDM.startX, DDM.startY);
+ },
+ this.clickTimeThresh );
+ },
+
+
+ startDrag: function(x, y) {
+ clearTimeout(this.clickTimeout);
+ if (this.dragCurrent) {
+ this.dragCurrent.b4StartDrag(x, y);
+ this.dragCurrent.startDrag(x, y);
+ }
+ this.dragThreshMet = true;
+ },
+
+
+ handleMouseUp: function(e) {
+
+ if(Ext.QuickTips){
+ Ext.QuickTips.enable();
+ }
+ if (! this.dragCurrent) {
+ return;
+ }
+
+ clearTimeout(this.clickTimeout);
+
+ if (this.dragThreshMet) {
+ this.fireEvents(e, true);
+ } else {
+ }
+
+ this.stopDrag(e);
+
+ this.stopEvent(e);
+ },
+
+
+ stopEvent: function(e){
+ if(this.stopPropagation) {
+ e.stopPropagation();
+ }
+
+ if (this.preventDefault) {
+ e.preventDefault();
+ }
+ },
+
+
+ stopDrag: function(e) {
+
+ if (this.dragCurrent) {
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4EndDrag(e);
+ this.dragCurrent.endDrag(e);
+ }
+
+ this.dragCurrent.onMouseUp(e);
+ }
+
+ this.dragCurrent = null;
+ this.dragOvers = {};
+ },
+
+
+ handleMouseMove: function(e) {
+ if (! this.dragCurrent) {
+ return true;
+ }
+
+
+
+
+ if (Ext.isIE && (e.button !== 0 && e.button !== 1 && e.button !== 2)) {
+ this.stopEvent(e);
+ return this.handleMouseUp(e);
+ }
+
+ if (!this.dragThreshMet) {
+ var diffX = Math.abs(this.startX - e.getPageX());
+ var diffY = Math.abs(this.startY - e.getPageY());
+ if (diffX > this.clickPixelThresh ||
+ diffY > this.clickPixelThresh) {
+ this.startDrag(this.startX, this.startY);
+ }
+ }
+
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4Drag(e);
+ this.dragCurrent.onDrag(e);
+ if(!this.dragCurrent.moveOnly){
+ this.fireEvents(e, false);
+ }
+ }
+
+ this.stopEvent(e);
+
+ return true;
+ },
+
+
+ fireEvents: function(e, isDrop) {
+ var dc = this.dragCurrent;
+
+
+
+ if (!dc || dc.isLocked()) {
+ return;
+ }
+
+ var pt = e.getPoint();
+
+
+ var oldOvers = [];
+
+ var outEvts = [];
+ var overEvts = [];
+ var dropEvts = [];
+ var enterEvts = [];
+
+
+
+ for (var i in this.dragOvers) {
+
+ var ddo = this.dragOvers[i];
+
+ if (! this.isTypeOfDD(ddo)) {
+ continue;
+ }
+
+ if (! this.isOverTarget(pt, ddo, this.mode)) {
+ outEvts.push( ddo );
+ }
+
+ oldOvers[i] = true;
+ delete this.dragOvers[i];
+ }
+
+ for (var sGroup in dc.groups) {
+
+ if ("string" != typeof sGroup) {
+ continue;
+ }
+
+ for (i in this.ids[sGroup]) {
+ var oDD = this.ids[sGroup][i];
+ if (! this.isTypeOfDD(oDD)) {
+ continue;
+ }
+
+ if (oDD.isTarget && !oDD.isLocked() && oDD != dc) {
+ if (this.isOverTarget(pt, oDD, this.mode)) {
+
+ if (isDrop) {
+ dropEvts.push( oDD );
+
+ } else {
+
+
+ if (!oldOvers[oDD.id]) {
+ enterEvts.push( oDD );
+
+ } else {
+ overEvts.push( oDD );
+ }
+
+ this.dragOvers[oDD.id] = oDD;
+ }
+ }
+ }
+ }
+ }
+
+ if (this.mode) {
+ if (outEvts.length) {
+ dc.b4DragOut(e, outEvts);
+ dc.onDragOut(e, outEvts);
+ }
+
+ if (enterEvts.length) {
+ dc.onDragEnter(e, enterEvts);
+ }
+
+ if (overEvts.length) {
+ dc.b4DragOver(e, overEvts);
+ dc.onDragOver(e, overEvts);
+ }
+
+ if (dropEvts.length) {
+ dc.b4DragDrop(e, dropEvts);
+ dc.onDragDrop(e, dropEvts);
+ }
+
+ } else {
+
+ var len = 0;
+ for (i=0, len=outEvts.length; i<len; ++i) {
+ dc.b4DragOut(e, outEvts[i].id);
+ dc.onDragOut(e, outEvts[i].id);
+ }
+
+
+ for (i=0,len=enterEvts.length; i<len; ++i) {
+
+ dc.onDragEnter(e, enterEvts[i].id);
+ }
+
+
+ for (i=0,len=overEvts.length; i<len; ++i) {
+ dc.b4DragOver(e, overEvts[i].id);
+ dc.onDragOver(e, overEvts[i].id);
+ }
+
+
+ for (i=0, len=dropEvts.length; i<len; ++i) {
+ dc.b4DragDrop(e, dropEvts[i].id);
+ dc.onDragDrop(e, dropEvts[i].id);
+ }
+
+ }
+
+
+ if (isDrop && !dropEvts.length) {
+ dc.onInvalidDrop(e);
+ }
+
+ },
+
+
+ getBestMatch: function(dds) {
+ var winner = null;
+
+
+
+
+
+
+ var len = dds.length;
+
+ if (len == 1) {
+ winner = dds[0];
+ } else {
+
+ for (var i=0; i<len; ++i) {
+ var dd = dds[i];
+
+
+
+ if (dd.cursorIsOver) {
+ winner = dd;
+ break;
+
+ } else {
+ if (!winner ||
+ winner.overlap.getArea() < dd.overlap.getArea()) {
+ winner = dd;
+ }
+ }
+ }
+ }
+
+ return winner;
+ },
+
+
+ refreshCache: function(groups) {
+ for (var sGroup in groups) {
+ if ("string" != typeof sGroup) {
+ continue;
+ }
+ for (var i in this.ids[sGroup]) {
+ var oDD = this.ids[sGroup][i];
+
+ if (this.isTypeOfDD(oDD)) {
+
+ var loc = this.getLocation(oDD);
+ if (loc) {
+ this.locationCache[oDD.id] = loc;
+ } else {
+ delete this.locationCache[oDD.id];
+
+
+
+ }
+ }
+ }
+ }
+ },
+
+
+ verifyEl: function(el) {
+ if (el) {
+ var parent;
+ if(Ext.isIE){
+ try{
+ parent = el.offsetParent;
+ }catch(e){}
+ }else{
+ parent = el.offsetParent;
+ }
+ if (parent) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+
+ getLocation: function(oDD) {
+ if (! this.isTypeOfDD(oDD)) {
+ return null;
+ }
+
+ var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l;
+
+ try {
+ pos= Ext.lib.Dom.getXY(el);
+ } catch (e) { }
+
+ if (!pos) {
+ return null;
+ }
+
+ x1 = pos[0];
+ x2 = x1 + el.offsetWidth;
+ y1 = pos[1];
+ y2 = y1 + el.offsetHeight;
+
+ t = y1 - oDD.padding[0];
+ r = x2 + oDD.padding[1];
+ b = y2 + oDD.padding[2];
+ l = x1 - oDD.padding[3];
+
+ return new Ext.lib.Region( t, r, b, l );
+ },
+
+
+ isOverTarget: function(pt, oTarget, intersect) {
+
+ var loc = this.locationCache[oTarget.id];
+ if (!loc || !this.useCache) {
+ loc = this.getLocation(oTarget);
+ this.locationCache[oTarget.id] = loc;
+
+ }
+
+ if (!loc) {
+ return false;
+ }
+
+ oTarget.cursorIsOver = loc.contains( pt );
+
+
+
+
+
+
+ var dc = this.dragCurrent;
+ if (!dc || !dc.getTargetCoord ||
+ (!intersect && !dc.constrainX && !dc.constrainY)) {
+ return oTarget.cursorIsOver;
+ }
+
+ oTarget.overlap = null;
+
+
+
+
+
+ var pos = dc.getTargetCoord(pt.x, pt.y);
+
+ var el = dc.getDragEl();
+ var curRegion = new Ext.lib.Region( pos.y,
+ pos.x + el.offsetWidth,
+ pos.y + el.offsetHeight,
+ pos.x );
+
+ var overlap = curRegion.intersect(loc);
+
+ if (overlap) {
+ oTarget.overlap = overlap;
+ return (intersect) ? true : oTarget.cursorIsOver;
+ } else {
+ return false;
+ }
+ },
+
+
+ _onUnload: function(e, me) {
+ Ext.dd.DragDropMgr.unregAll();
+ },
+
+
+ unregAll: function() {
+
+ if (this.dragCurrent) {
+ this.stopDrag();
+ this.dragCurrent = null;
+ }
+
+ this._execOnAll("unreg", []);
+
+ for (var i in this.elementCache) {
+ delete this.elementCache[i];
+ }
+
+ this.elementCache = {};
+ this.ids = {};
+ },
+
+
+ elementCache: {},
+
+
+ getElWrapper: function(id) {
+ var oWrapper = this.elementCache[id];
+ if (!oWrapper || !oWrapper.el) {
+ oWrapper = this.elementCache[id] =
+ new this.ElementWrapper(Ext.getDom(id));
+ }
+ return oWrapper;
+ },
+
+
+ getElement: function(id) {
+ return Ext.getDom(id);
+ },
+
+
+ getCss: function(id) {
+ var el = Ext.getDom(id);
+ return (el) ? el.style : null;
+ },
+
+
+ ElementWrapper: function(el) {
+
+ this.el = el || null;
+
+ this.id = this.el && el.id;
+
+ this.css = this.el && el.style;
+ },
+
+
+ getPosX: function(el) {
+ return Ext.lib.Dom.getX(el);
+ },
+
+
+ getPosY: function(el) {
+ return Ext.lib.Dom.getY(el);
+ },
+
+
+ swapNode: function(n1, n2) {
+ if (n1.swapNode) {
+ n1.swapNode(n2);
+ } else {
+ var p = n2.parentNode;
+ var s = n2.nextSibling;
+
+ if (s == n1) {
+ p.insertBefore(n1, n2);
+ } else if (n2 == n1.nextSibling) {
+ p.insertBefore(n2, n1);
+ } else {
+ n1.parentNode.replaceChild(n2, n1);
+ p.insertBefore(n1, s);
+ }
+ }
+ },
+
+
+ getScroll: function () {
+ var t, l, dde=document.documentElement, db=document.body;
+ if (dde && (dde.scrollTop || dde.scrollLeft)) {
+ t = dde.scrollTop;
+ l = dde.scrollLeft;
+ } else if (db) {
+ t = db.scrollTop;
+ l = db.scrollLeft;
+ } else {
+
+ }
+ return { top: t, left: l };
+ },
+
+
+ getStyle: function(el, styleProp) {
+ return Ext.fly(el).getStyle(styleProp);
+ },
+
+
+ getScrollTop: function () { return this.getScroll().top; },
+
+
+ getScrollLeft: function () { return this.getScroll().left; },
+
+
+ moveToEl: function (moveEl, targetEl) {
+ var aCoord = Ext.lib.Dom.getXY(targetEl);
+ Ext.lib.Dom.setXY(moveEl, aCoord);
+ },
+
+
+ numericSort: function(a, b) { return (a - b); },
+
+
+ _timeoutCount: 0,
+
+
+ _addListeners: function() {
+ var DDM = Ext.dd.DDM;
+ if ( Ext.lib.Event && document ) {
+ DDM._onLoad();
+ } else {
+ if (DDM._timeoutCount > 2000) {
+ } else {
+ setTimeout(DDM._addListeners, 10);
+ if (document && document.body) {
+ DDM._timeoutCount += 1;
+ }
+ }
+ }
+ },
+
+
+ handleWasClicked: function(node, id) {
+ if (this.isHandle(id, node.id)) {
+ return true;
+ } else {
+
+ var p = node.parentNode;
+
+ while (p) {
+ if (this.isHandle(id, p.id)) {
+ return true;
+ } else {
+ p = p.parentNode;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ };
+
+}();
+
+
+Ext.dd.DDM = Ext.dd.DragDropMgr;
+Ext.dd.DDM._addListeners();
+
+}
+
+
+Ext.dd.DD = function(id, sGroup, config) {
+ if (id) {
+ this.init(id, sGroup, config);
+ }
+};
+
+Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, {
+
+
+ scroll: true,
+
+
+ autoOffset: function(iPageX, iPageY) {
+ var x = iPageX - this.startPageX;
+ var y = iPageY - this.startPageY;
+ this.setDelta(x, y);
+ },
+
+
+ setDelta: function(iDeltaX, iDeltaY) {
+ this.deltaX = iDeltaX;
+ this.deltaY = iDeltaY;
+ },
+
+
+ setDragElPos: function(iPageX, iPageY) {
+
+
+
+ var el = this.getDragEl();
+ this.alignElWithMouse(el, iPageX, iPageY);
+ },
+
+
+ alignElWithMouse: function(el, iPageX, iPageY) {
+ var oCoord = this.getTargetCoord(iPageX, iPageY);
+ var fly = el.dom ? el : Ext.fly(el, '_dd');
+ if (!this.deltaSetXY) {
+ var aCoord = [oCoord.x, oCoord.y];
+ fly.setXY(aCoord);
+ var newLeft = fly.getLeft(true);
+ var newTop = fly.getTop(true);
+ this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ];
+ } else {
+ fly.setLeftTop(oCoord.x + this.deltaSetXY[0], oCoord.y + this.deltaSetXY[1]);
+ }
+
+ this.cachePosition(oCoord.x, oCoord.y);
+ this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
+ return oCoord;
+ },
+
+
+ cachePosition: function(iPageX, iPageY) {
+ if (iPageX) {
+ this.lastPageX = iPageX;
+ this.lastPageY = iPageY;
+ } else {
+ var aCoord = Ext.lib.Dom.getXY(this.getEl());
+ this.lastPageX = aCoord[0];
+ this.lastPageY = aCoord[1];
+ }
+ },
+
+
+ autoScroll: function(x, y, h, w) {
+
+ if (this.scroll) {
+
+ var clientH = Ext.lib.Dom.getViewHeight();
+
+
+ var clientW = Ext.lib.Dom.getViewWidth();
+
+
+ var st = this.DDM.getScrollTop();
+
+
+ var sl = this.DDM.getScrollLeft();
+
+
+ var bot = h + y;
+
+
+ var right = w + x;
+
+
+
+
+ var toBot = (clientH + st - y - this.deltaY);
+
+
+ var toRight = (clientW + sl - x - this.deltaX);
+
+
+
+
+ var thresh = 40;
+
+
+
+
+ var scrAmt = (document.all) ? 80 : 30;
+
+
+
+ if ( bot > clientH && toBot < thresh ) {
+ window.scrollTo(sl, st + scrAmt);
+ }
+
+
+
+ if ( y < st && st > 0 && y - st < thresh ) {
+ window.scrollTo(sl, st - scrAmt);
+ }
+
+
+
+ if ( right > clientW && toRight < thresh ) {
+ window.scrollTo(sl + scrAmt, st);
+ }
+
+
+
+ if ( x < sl && sl > 0 && x - sl < thresh ) {
+ window.scrollTo(sl - scrAmt, st);
+ }
+ }
+ },
+
+
+ getTargetCoord: function(iPageX, iPageY) {
+
+
+ var x = iPageX - this.deltaX;
+ var y = iPageY - this.deltaY;
+
+ if (this.constrainX) {
+ if (x < this.minX) { x = this.minX; }
+ if (x > this.maxX) { x = this.maxX; }
+ }
+
+ if (this.constrainY) {
+ if (y < this.minY) { y = this.minY; }
+ if (y > this.maxY) { y = this.maxY; }
+ }
+
+ x = this.getTick(x, this.xTicks);
+ y = this.getTick(y, this.yTicks);
+
+
+ return {x:x, y:y};
+ },
+
+
+ applyConfig: function() {
+ Ext.dd.DD.superclass.applyConfig.call(this);
+ this.scroll = (this.config.scroll !== false);
+ },
+
+
+ b4MouseDown: function(e) {
+
+ this.autoOffset(e.getPageX(),
+ e.getPageY());
+ },
+
+
+ b4Drag: function(e) {
+ this.setDragElPos(e.getPageX(),
+ e.getPageY());
+ },
+
+ toString: function() {
+ return ("DD " + this.id);
+ }
+
+
+
+
+
+
+});
+
+Ext.dd.DDProxy = function(id, sGroup, config) {
+ if (id) {
+ this.init(id, sGroup, config);
+ this.initFrame();
+ }
+};
+
+
+Ext.dd.DDProxy.dragElId = "ygddfdiv";
+
+Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, {
+
+
+ resizeFrame: true,
+
+
+ centerFrame: false,
+
+
+ createFrame: function() {
+ var self = this;
+ var body = document.body;
+
+ if (!body || !body.firstChild) {
+ setTimeout( function() { self.createFrame(); }, 50 );
+ return;
+ }
+
+ var div = this.getDragEl();
+
+ if (!div) {
+ div = document.createElement("div");
+ div.id = this.dragElId;
+ var s = div.style;
+
+ s.position = "absolute";
+ s.visibility = "hidden";
+ s.cursor = "move";
+ s.border = "2px solid #aaa";
+ s.zIndex = 999;
+
+
+
+
+ body.insertBefore(div, body.firstChild);
+ }
+ },
+
+
+ initFrame: function() {
+ this.createFrame();
+ },
+
+ applyConfig: function() {
+ Ext.dd.DDProxy.superclass.applyConfig.call(this);
+
+ this.resizeFrame = (this.config.resizeFrame !== false);
+ this.centerFrame = (this.config.centerFrame);
+ this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId);
+ },
+
+
+ showFrame: function(iPageX, iPageY) {
+ var el = this.getEl();
+ var dragEl = this.getDragEl();
+ var s = dragEl.style;
+
+ this._resizeProxy();
+
+ if (this.centerFrame) {
+ this.setDelta( Math.round(parseInt(s.width, 10)/2),
+ Math.round(parseInt(s.height, 10)/2) );
+ }
+
+ this.setDragElPos(iPageX, iPageY);
+
+ Ext.fly(dragEl).show();
+ },
+
+
+ _resizeProxy: function() {
+ if (this.resizeFrame) {
+ var el = this.getEl();
+ Ext.fly(this.getDragEl()).setSize(el.offsetWidth, el.offsetHeight);
+ }
+ },
+
+
+ b4MouseDown: function(e) {
+ var x = e.getPageX();
+ var y = e.getPageY();
+ this.autoOffset(x, y);
+ this.setDragElPos(x, y);
+ },
+
+
+ b4StartDrag: function(x, y) {
+
+ this.showFrame(x, y);
+ },
+
+
+ b4EndDrag: function(e) {
+ Ext.fly(this.getDragEl()).hide();
+ },
+
+
+
+
+ endDrag: function(e) {
+
+ var lel = this.getEl();
+ var del = this.getDragEl();
+
+
+ del.style.visibility = "";
+
+ this.beforeMove();
+
+
+ lel.style.visibility = "hidden";
+ Ext.dd.DDM.moveToEl(lel, del);
+ del.style.visibility = "hidden";
+ lel.style.visibility = "";
+
+ this.afterDrag();
+ },
+
+ beforeMove : function(){
+
+ },
+
+ afterDrag : function(){
+
+ },
+
+ toString: function() {
+ return ("DDProxy " + this.id);
+ }
+
+});
+
+Ext.dd.DDTarget = function(id, sGroup, config) {
+ if (id) {
+ this.initTarget(id, sGroup, config);
+ }
+};
+
+
+Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, {
+ toString: function() {
+ return ("DDTarget " + this.id);
+ }
+});
+
+Ext.dd.DragTracker = function(config){
+ Ext.apply(this, config);
+ this.addEvents({
+ mousedown: true,
+ mouseup: true,
+ mousemove: true,
+ dragstart: true,
+ dragend: true,
+ drag: true
+ });
+
+ this.dragRegion = new Ext.lib.Region(0,0,0,0);
+
+ if(this.el){
+ this.initEl(this.el);
+ }
+}
+
+Ext.extend(Ext.dd.DragTracker, Ext.util.Observable, {
+ active: false,
+ tolerance: 5,
+ autoStart: false,
+
+ initEl: function(el){
+ this.el = Ext.get(el);
+ el.on('mousedown', this.onMouseDown, this,
+ this.delegate ? {delegate: this.delegate} : undefined);
+ },
+
+ destroy : function(){
+ this.el.un('mousedown', this.onMouseDown, this);
+ },
+
+ onMouseDown: function(e, target){
+ if(this.fireEvent('mousedown', this, e) !== false && this.onBeforeStart(e) !== false){
+ this.startXY = this.lastXY = e.getXY();
+ this.dragTarget = this.delegate ? target : this.el.dom;
+ e.preventDefault();
+ var doc = Ext.getDoc();
+ doc.on('mouseup', this.onMouseUp, this);
+ doc.on('mousemove', this.onMouseMove, this);
+ doc.on('selectstart', this.stopSelect, this);
+ if(this.autoStart){
+ this.timer = this.triggerStart.defer(this.autoStart === true ? 1000 : this.autoStart, this);
+ }
+ }
+ },
+
+ onMouseMove: function(e, target){
+ e.preventDefault();
+ var xy = e.getXY(), s = this.startXY;
+ this.lastXY = xy;
+ if(!this.active){
+ if(Math.abs(s[0]-xy[0]) > this.tolerance || Math.abs(s[1]-xy[1]) > this.tolerance){
+ this.triggerStart();
+ }else{
+ return;
+ }
+ }
+ this.fireEvent('mousemove', this, e);
+ this.onDrag(e);
+ this.fireEvent('drag', this, e);
+ },
+
+ onMouseUp: function(e){
+ var doc = Ext.getDoc();
+ doc.un('mousemove', this.onMouseMove, this);
+ doc.un('mouseup', this.onMouseUp, this);
+ doc.un('selectstart', this.stopSelect, this);
+ e.preventDefault();
+ this.clearStart();
+ this.active = false;
+ delete this.elRegion;
+ this.fireEvent('mouseup', this, e);
+ this.onEnd(e);
+ this.fireEvent('dragend', this, e);
+ },
+
+ triggerStart: function(isTimer){
+ this.clearStart();
+ this.active = true;
+ this.onStart(this.startXY);
+ this.fireEvent('dragstart', this, this.startXY);
+ },
+
+ clearStart : function(){
+ if(this.timer){
+ clearTimeout(this.timer);
+ delete this.timer;
+ }
+ },
+
+ stopSelect : function(e){
+ e.stopEvent();
+ return false;
+ },
+
+ onBeforeStart : function(e){
+
+ },
+
+ onStart : function(xy){
+
+ },
+
+ onDrag : function(e){
+
+ },
+
+ onEnd : function(e){
+
+ },
+
+ getDragTarget : function(){
+ return this.dragTarget;
+ },
+
+ getDragCt : function(){
+ return this.el;
+ },
+
+ getXY : function(constrain){
+ return constrain ?
+ this.constrainModes[constrain].call(this, this.lastXY) : this.lastXY;
+ },
+
+ getOffset : function(constrain){
+ var xy = this.getXY(constrain);
+ var s = this.startXY;
+ return [s[0]-xy[0], s[1]-xy[1]];
+ },
+
+ constrainModes: {
+ 'point' : function(xy){
+
+ if(!this.elRegion){
+ this.elRegion = this.getDragCt().getRegion();
+ }
+
+ var dr = this.dragRegion;
+
+ dr.left = xy[0];
+ dr.top = xy[1];
+ dr.right = xy[0];
+ dr.bottom = xy[1];
+
+ dr.constrainTo(this.elRegion);
+
+ return [dr.left, dr.top];
+ }
+ }
+});
+
+Ext.dd.ScrollManager = function(){
+ var ddm = Ext.dd.DragDropMgr;
+ var els = {};
+ var dragEl = null;
+ var proc = {};
+
+ var onStop = function(e){
+ dragEl = null;
+ clearProc();
+ };
+
+ var triggerRefresh = function(){
+ if(ddm.dragCurrent){
+ ddm.refreshCache(ddm.dragCurrent.groups);
+ }
+ };
+
+ var doScroll = function(){
+ if(ddm.dragCurrent){
+ var dds = Ext.dd.ScrollManager;
+ var inc = proc.el.ddScrollConfig ?
+ proc.el.ddScrollConfig.increment : dds.increment;
+ if(!dds.animate){
+ if(proc.el.scroll(proc.dir, inc)){
+ triggerRefresh();
+ }
+ }else{
+ proc.el.scroll(proc.dir, inc, true, dds.animDuration, triggerRefresh);
+ }
+ }
+ };
+
+ var clearProc = function(){
+ if(proc.id){
+ clearInterval(proc.id);
+ }
+ proc.id = 0;
+ proc.el = null;
+ proc.dir = "";
+ };
+
+ var startProc = function(el, dir){
+ clearProc();
+ proc.el = el;
+ proc.dir = dir;
+ proc.id = setInterval(doScroll, Ext.dd.ScrollManager.frequency);
+ };
+
+ var onFire = function(e, isDrop){
+ if(isDrop || !ddm.dragCurrent){ return; }
+ var dds = Ext.dd.ScrollManager;
+ if(!dragEl || dragEl != ddm.dragCurrent){
+ dragEl = ddm.dragCurrent;
+
+ dds.refreshCache();
+ }
+
+ var xy = Ext.lib.Event.getXY(e);
+ var pt = new Ext.lib.Point(xy[0], xy[1]);
+ for(var id in els){
+ var el = els[id], r = el._region;
+ var c = el.ddScrollConfig ? el.ddScrollConfig : dds;
+ if(r && r.contains(pt) && el.isScrollable()){
+ if(r.bottom - pt.y <= c.vthresh){
+ if(proc.el != el){
+ startProc(el, "down");
+ }
+ return;
+ }else if(r.right - pt.x <= c.hthresh){
+ if(proc.el != el){
+ startProc(el, "left");
+ }
+ return;
+ }else if(pt.y - r.top <= c.vthresh){
+ if(proc.el != el){
+ startProc(el, "up");
+ }
+ return;
+ }else if(pt.x - r.left <= c.hthresh){
+ if(proc.el != el){
+ startProc(el, "right");
+ }
+ return;
+ }
+ }
+ }
+ clearProc();
+ };
+
+ ddm.fireEvents = ddm.fireEvents.createSequence(onFire, ddm);
+ ddm.stopDrag = ddm.stopDrag.createSequence(onStop, ddm);
+
+ return {
+
+ register : function(el){
+ if(el instanceof Array){
+ for(var i = 0, len = el.length; i < len; i++) {
+ this.register(el[i]);
+ }
+ }else{
+ el = Ext.get(el);
+ els[el.id] = el;
+ }
+ },
+
+
+ unregister : function(el){
+ if(el instanceof Array){
+ for(var i = 0, len = el.length; i < len; i++) {
+ this.unregister(el[i]);
+ }
+ }else{
+ el = Ext.get(el);
+ delete els[el.id];
+ }
+ },
+
+
+ vthresh : 25,
+
+ hthresh : 25,
+
+
+ increment : 100,
+
+
+ frequency : 500,
+
+
+ animate: true,
+
+
+ animDuration: .4,
+
+
+ refreshCache : function(){
+ for(var id in els){
+ if(typeof els[id] == 'object'){
+ els[id]._region = els[id].getRegion();
+ }
+ }
+ }
+ };
+}();
+
+Ext.dd.Registry = function(){
+ var elements = {};
+ var handles = {};
+ var autoIdSeed = 0;
+
+ var getId = function(el, autogen){
+ if(typeof el == "string"){
+ return el;
+ }
+ var id = el.id;
+ if(!id && autogen !== false){
+ id = "extdd-" + (++autoIdSeed);
+ el.id = id;
+ }
+ return id;
+ };
+
+ return {
+
+ register : function(el, data){
+ data = data || {};
+ if(typeof el == "string"){
+ el = document.getElementById(el);
+ }
+ data.ddel = el;
+ elements[getId(el)] = data;
+ if(data.isHandle !== false){
+ handles[data.ddel.id] = data;
+ }
+ if(data.handles){
+ var hs = data.handles;
+ for(var i = 0, len = hs.length; i < len; i++){
+ handles[getId(hs[i])] = data;
+ }
+ }
+ },
+
+
+ unregister : function(el){
+ var id = getId(el, false);
+ var data = elements[id];
+ if(data){
+ delete elements[id];
+ if(data.handles){
+ var hs = data.handles;
+ for(var i = 0, len = hs.length; i < len; i++){
+ delete handles[getId(hs[i], false)];
+ }
+ }
+ }
+ },
+
+
+ getHandle : function(id){
+ if(typeof id != "string"){
+ id = id.id;
+ }
+ return handles[id];
+ },
+
+
+ getHandleFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ return t ? handles[t.id] : null;
+ },
+
+
+ getTarget : function(id){
+ if(typeof id != "string"){
+ id = id.id;
+ }
+ return elements[id];
+ },
+
+
+ getTargetFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ return t ? elements[t.id] || handles[t.id] : null;
+ }
+ };
+}();
+
+Ext.dd.StatusProxy = function(config){
+ Ext.apply(this, config);
+ this.id = this.id || Ext.id();
+ this.el = new Ext.Layer({
+ dh: {
+ id: this.id, tag: "div", cls: "x-dd-drag-proxy "+this.dropNotAllowed, children: [
+ {tag: "div", cls: "x-dd-drop-icon"},
+ {tag: "div", cls: "x-dd-drag-ghost"}
+ ]
+ },
+ shadow: !config || config.shadow !== false
+ });
+ this.ghost = Ext.get(this.el.dom.childNodes[1]);
+ this.dropStatus = this.dropNotAllowed;
+};
+
+Ext.dd.StatusProxy.prototype = {
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ setStatus : function(cssClass){
+ cssClass = cssClass || this.dropNotAllowed;
+ if(this.dropStatus != cssClass){
+ this.el.replaceClass(this.dropStatus, cssClass);
+ this.dropStatus = cssClass;
+ }
+ },
+
+
+ reset : function(clearGhost){
+ this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed;
+ this.dropStatus = this.dropNotAllowed;
+ if(clearGhost){
+ this.ghost.update("");
+ }
+ },
+
+
+ update : function(html){
+ if(typeof html == "string"){
+ this.ghost.update(html);
+ }else{
+ this.ghost.update("");
+ html.style.margin = "0";
+ this.ghost.dom.appendChild(html);
+ }
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getGhost : function(){
+ return this.ghost;
+ },
+
+
+ hide : function(clear){
+ this.el.hide();
+ if(clear){
+ this.reset(true);
+ }
+ },
+
+
+ stop : function(){
+ if(this.anim && this.anim.isAnimated && this.anim.isAnimated()){
+ this.anim.stop();
+ }
+ },
+
+
+ show : function(){
+ this.el.show();
+ },
+
+
+ sync : function(){
+ this.el.sync();
+ },
+
+
+ repair : function(xy, callback, scope){
+ this.callback = callback;
+ this.scope = scope;
+ if(xy && this.animRepair !== false){
+ this.el.addClass("x-dd-drag-repair");
+ this.el.hideUnders(true);
+ this.anim = this.el.shift({
+ duration: this.repairDuration || .5,
+ easing: 'easeOut',
+ xy: xy,
+ stopFx: true,
+ callback: this.afterRepair,
+ scope: this
+ });
+ }else{
+ this.afterRepair();
+ }
+ },
+
+
+ afterRepair : function(){
+ this.hide(true);
+ if(typeof this.callback == "function"){
+ this.callback.call(this.scope || this);
+ }
+ this.callback = null;
+ this.scope = null;
+ }
+};
+
+Ext.dd.DragSource = function(el, config){
+ this.el = Ext.get(el);
+ if(!this.dragData){
+ this.dragData = {};
+ }
+
+ Ext.apply(this, config);
+
+ if(!this.proxy){
+ this.proxy = new Ext.dd.StatusProxy();
+ }
+ Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group,
+ {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true});
+
+ this.dragging = false;
+};
+
+Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, {
+
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ getDragData : function(e){
+ return this.dragData;
+ },
+
+
+ onDragEnter : function(e, id){
+ var target = Ext.dd.DragDropMgr.getDDById(id);
+ this.cachedTarget = target;
+ if(this.beforeDragEnter(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ var status = target.notifyEnter(this, e, this.dragData);
+ this.proxy.setStatus(status);
+ }else{
+ this.proxy.setStatus(this.dropAllowed);
+ }
+
+ if(this.afterDragEnter){
+
+ this.afterDragEnter(target, e, id);
+ }
+ }
+ },
+
+
+ beforeDragEnter : function(target, e, id){
+ return true;
+ },
+
+
+ alignElWithMouse: function() {
+ Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments);
+ this.proxy.sync();
+ },
+
+
+ onDragOver : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragOver(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ var status = target.notifyOver(this, e, this.dragData);
+ this.proxy.setStatus(status);
+ }
+
+ if(this.afterDragOver){
+
+ this.afterDragOver(target, e, id);
+ }
+ }
+ },
+
+
+ beforeDragOver : function(target, e, id){
+ return true;
+ },
+
+
+ onDragOut : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragOut(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ target.notifyOut(this, e, this.dragData);
+ }
+ this.proxy.reset();
+ if(this.afterDragOut){
+
+ this.afterDragOut(target, e, id);
+ }
+ }
+ this.cachedTarget = null;
+ },
+
+
+ beforeDragOut : function(target, e, id){
+ return true;
+ },
+
+
+ onDragDrop : function(e, id){
+ var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id);
+ if(this.beforeDragDrop(target, e, id) !== false){
+ if(target.isNotifyTarget){
+ if(target.notifyDrop(this, e, this.dragData)){
+ this.onValidDrop(target, e, id);
+ }else{
+ this.onInvalidDrop(target, e, id);
+ }
+ }else{
+ this.onValidDrop(target, e, id);
+ }
+
+ if(this.afterDragDrop){
+
+ this.afterDragDrop(target, e, id);
+ }
+ }
+ delete this.cachedTarget;
+ },
+
+
+ beforeDragDrop : function(target, e, id){
+ return true;
+ },
+
+
+ onValidDrop : function(target, e, id){
+ this.hideProxy();
+ if(this.afterValidDrop){
+
+ this.afterValidDrop(target, e, id);
+ }
+ },
+
+
+ getRepairXY : function(e, data){
+ return this.el.getXY();
+ },
+
+
+ onInvalidDrop : function(target, e, id){
+ this.beforeInvalidDrop(target, e, id);
+ if(this.cachedTarget){
+ if(this.cachedTarget.isNotifyTarget){
+ this.cachedTarget.notifyOut(this, e, this.dragData);
+ }
+ this.cacheTarget = null;
+ }
+ this.proxy.repair(this.getRepairXY(e, this.dragData), this.afterRepair, this);
+
+ if(this.afterInvalidDrop){
+
+ this.afterInvalidDrop(e, id);
+ }
+ },
+
+
+ afterRepair : function(){
+ if(Ext.enableFx){
+ this.el.highlight(this.hlColor || "c3daf9");
+ }
+ this.dragging = false;
+ },
+
+
+ beforeInvalidDrop : function(target, e, id){
+ return true;
+ },
+
+
+ handleMouseDown : function(e){
+ if(this.dragging) {
+ return;
+ }
+ var data = this.getDragData(e);
+ if(data && this.onBeforeDrag(data, e) !== false){
+ this.dragData = data;
+ this.proxy.stop();
+ Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments);
+ }
+ },
+
+
+ onBeforeDrag : function(data, e){
+ return true;
+ },
+
+
+ onStartDrag : Ext.emptyFn,
+
+
+ startDrag : function(x, y){
+ this.proxy.reset();
+ this.dragging = true;
+ this.proxy.update("");
+ this.onInitDrag(x, y);
+ this.proxy.show();
+ },
+
+
+ onInitDrag : function(x, y){
+ var clone = this.el.dom.cloneNode(true);
+ clone.id = Ext.id();
+ this.proxy.update(clone);
+ this.onStartDrag(x, y);
+ return true;
+ },
+
+
+ getProxy : function(){
+ return this.proxy;
+ },
+
+
+ hideProxy : function(){
+ this.proxy.hide();
+ this.proxy.reset(true);
+ this.dragging = false;
+ },
+
+
+ triggerCacheRefresh : function(){
+ Ext.dd.DDM.refreshCache(this.groups);
+ },
+
+
+ b4EndDrag: function(e) {
+ },
+
+
+ endDrag : function(e){
+ this.onEndDrag(this.dragData, e);
+ },
+
+
+ onEndDrag : function(data, e){
+ },
+
+
+ autoOffset : function(x, y) {
+ this.setDelta(-12, -20);
+ }
+});
+
+Ext.dd.DropTarget = function(el, config){
+ this.el = Ext.get(el);
+
+ Ext.apply(this, config);
+
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.el);
+ }
+
+ Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group,
+ {isTarget: true});
+
+};
+
+Ext.extend(Ext.dd.DropTarget, Ext.dd.DDTarget, {
+
+
+
+ dropAllowed : "x-dd-drop-ok",
+
+ dropNotAllowed : "x-dd-drop-nodrop",
+
+
+ isTarget : true,
+
+
+ isNotifyTarget : true,
+
+
+ notifyEnter : function(dd, e, data){
+ if(this.overClass){
+ this.el.addClass(this.overClass);
+ }
+ return this.dropAllowed;
+ },
+
+
+ notifyOver : function(dd, e, data){
+ return this.dropAllowed;
+ },
+
+
+ notifyOut : function(dd, e, data){
+ if(this.overClass){
+ this.el.removeClass(this.overClass);
+ }
+ },
+
+
+ notifyDrop : function(dd, e, data){
+ return false;
+ }
+});
+
+Ext.dd.DragZone = function(el, config){
+ Ext.dd.DragZone.superclass.constructor.call(this, el, config);
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.el);
+ }
+};
+
+Ext.extend(Ext.dd.DragZone, Ext.dd.DragSource, {
+
+
+
+
+ getDragData : function(e){
+ return Ext.dd.Registry.getHandleFromEvent(e);
+ },
+
+
+ onInitDrag : function(x, y){
+ this.proxy.update(this.dragData.ddel.cloneNode(true));
+ this.onStartDrag(x, y);
+ return true;
+ },
+
+
+ afterRepair : function(){
+ if(Ext.enableFx){
+ Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9");
+ }
+ this.dragging = false;
+ },
+
+
+ getRepairXY : function(e){
+ return Ext.Element.fly(this.dragData.ddel).getXY();
+ }
+});
+
+Ext.dd.DropZone = function(el, config){
+ Ext.dd.DropZone.superclass.constructor.call(this, el, config);
+};
+
+Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, {
+
+ getTargetFromEvent : function(e){
+ return Ext.dd.Registry.getTargetFromEvent(e);
+ },
+
+
+ onNodeEnter : function(n, dd, e, data){
+
+ },
+
+
+ onNodeOver : function(n, dd, e, data){
+ return this.dropAllowed;
+ },
+
+
+ onNodeOut : function(n, dd, e, data){
+
+ },
+
+
+ onNodeDrop : function(n, dd, e, data){
+ return false;
+ },
+
+
+ onContainerOver : function(dd, e, data){
+ return this.dropNotAllowed;
+ },
+
+
+ onContainerDrop : function(dd, e, data){
+ return false;
+ },
+
+
+ notifyEnter : function(dd, e, data){
+ return this.dropNotAllowed;
+ },
+
+
+ notifyOver : function(dd, e, data){
+ var n = this.getTargetFromEvent(e);
+ if(!n){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ return this.onContainerOver(dd, e, data);
+ }
+ if(this.lastOverNode != n){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ }
+ this.onNodeEnter(n, dd, e, data);
+ this.lastOverNode = n;
+ }
+ return this.onNodeOver(n, dd, e, data);
+ },
+
+
+ notifyOut : function(dd, e, data){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ },
+
+
+ notifyDrop : function(dd, e, data){
+ if(this.lastOverNode){
+ this.onNodeOut(this.lastOverNode, dd, e, data);
+ this.lastOverNode = null;
+ }
+ var n = this.getTargetFromEvent(e);
+ return n ?
+ this.onNodeDrop(n, dd, e, data) :
+ this.onContainerDrop(dd, e, data);
+ },
+
+
+ triggerCacheRefresh : function(){
+ Ext.dd.DDM.refreshCache(this.groups);
+ }
+});
+
+
+Ext.data.SortTypes = {
+
+ none : function(s){
+ return s;
+ },
+
+
+ stripTagsRE : /<\/?[^>]+>/gi,
+
+
+ asText : function(s){
+ return String(s).replace(this.stripTagsRE, "");
+ },
+
+
+ asUCText : function(s){
+ return String(s).toUpperCase().replace(this.stripTagsRE, "");
+ },
+
+
+ asUCString : function(s) {
+ return String(s).toUpperCase();
+ },
+
+
+ asDate : function(s) {
+ if(!s){
+ return 0;
+ }
+ if(s instanceof Date){
+ return s.getTime();
+ }
+ return Date.parse(String(s));
+ },
+
+
+ asFloat : function(s) {
+ var val = parseFloat(String(s).replace(/,/g, ""));
+ if(isNaN(val)) val = 0;
+ return val;
+ },
+
+
+ asInt : function(s) {
+ var val = parseInt(String(s).replace(/,/g, ""));
+ if(isNaN(val)) val = 0;
+ return val;
+ }
+};
+
+Ext.data.Record = function(data, id){
+ this.id = (id || id === 0) ? id : ++Ext.data.Record.AUTO_ID;
+ this.data = data;
+};
+
+
+Ext.data.Record.create = function(o){
+ var f = Ext.extend(Ext.data.Record, {});
+ var p = f.prototype;
+ p.fields = new Ext.util.MixedCollection(false, function(field){
+ return field.name;
+ });
+ for(var i = 0, len = o.length; i < len; i++){
+ p.fields.add(new Ext.data.Field(o[i]));
+ }
+ f.getField = function(name){
+ return p.fields.get(name);
+ };
+ return f;
+};
+
+Ext.data.Record.AUTO_ID = 1000;
+Ext.data.Record.EDIT = 'edit';
+Ext.data.Record.REJECT = 'reject';
+Ext.data.Record.COMMIT = 'commit';
+
+Ext.data.Record.prototype = {
+
+
+
+ dirty : false,
+ editing : false,
+ error: null,
+
+ modified: null,
+
+
+ join : function(store){
+ this.store = store;
+ },
+
+
+ set : function(name, value){
+ if(String(this.data[name]) == String(value)){
+ return;
+ }
+ this.dirty = true;
+ if(!this.modified){
+ this.modified = {};
+ }
+ if(typeof this.modified[name] == 'undefined'){
+ this.modified[name] = this.data[name];
+ }
+ this.data[name] = value;
+ if(!this.editing){
+ this.store.afterEdit(this);
+ }
+ },
+
+
+ get : function(name){
+ return this.data[name];
+ },
+
+
+ beginEdit : function(){
+ this.editing = true;
+ this.modified = {};
+ },
+
+
+ cancelEdit : function(){
+ this.editing = false;
+ delete this.modified;
+ },
+
+
+ endEdit : function(){
+ this.editing = false;
+ if(this.dirty && this.store){
+ this.store.afterEdit(this);
+ }
+ },
+
+
+ reject : function(silent){
+ var m = this.modified;
+ for(var n in m){
+ if(typeof m[n] != "function"){
+ this.data[n] = m[n];
+ }
+ }
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if(this.store && silent !== true){
+ this.store.afterReject(this);
+ }
+ },
+
+
+ commit : function(silent){
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if(this.store && silent !== true){
+ this.store.afterCommit(this);
+ }
+ },
+
+
+ getChanges : function(){
+ var m = this.modified, cs = {};
+ for(var n in m){
+ if(m.hasOwnProperty(n)){
+ cs[n] = this.data[n];
+ }
+ }
+ return cs;
+ },
+
+
+ hasError : function(){
+ return this.error != null;
+ },
+
+
+ clearError : function(){
+ this.error = null;
+ },
+
+
+ copy : function(newId) {
+ return new this.constructor(Ext.apply({}, this.data), newId || this.id);
+ }
+};
+
+Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(), {
+ register : function(){
+ for(var i = 0, s; s = arguments[i]; i++){
+ this.add(s);
+ }
+ },
+
+ unregister : function(){
+ for(var i = 0, s; s = arguments[i]; i++){
+ this.remove(this.lookup(s));
+ }
+ },
+
+
+ lookup : function(id){
+ return typeof id == "object" ? id : this.get(id);
+ }
+});
+
+Ext.data.Store = function(config){
+ this.data = new Ext.util.MixedCollection(false);
+ this.data.getKey = function(o){
+ return o.id;
+ };
+ this.baseParams = {};
+
+ this.paramNames = {
+ "start" : "start",
+ "limit" : "limit",
+ "sort" : "sort",
+ "dir" : "dir"
+ };
+
+ if(config && config.data){
+ this.inlineData = config.data;
+ delete config.data;
+ }
+
+ Ext.apply(this, config);
+
+ if(this.url && !this.proxy){
+ this.proxy = new Ext.data.HttpProxy({url: this.url});
+ }
+
+ if(this.reader){
+ if(!this.recordType){
+ this.recordType = this.reader.recordType;
+ }
+ if(this.reader.onMetaChange){
+ this.reader.onMetaChange = this.onMetaChange.createDelegate(this);
+ }
+ }
+
+ if(this.recordType){
+ this.fields = this.recordType.prototype.fields;
+ }
+ this.modified = [];
+
+ this.addEvents({
+
+ datachanged : true,
+
+ metachange : true,
+
+ add : true,
+
+ remove : true,
+
+ update : true,
+
+ clear : true,
+
+ beforeload : true,
+
+ load : true,
+
+ loadexception : true
+ });
+
+ if(this.proxy){
+ this.relayEvents(this.proxy, ["loadexception"]);
+ }
+ this.sortToggle = {};
+
+ Ext.data.Store.superclass.constructor.call(this);
+
+ if(this.id){
+ Ext.StoreMgr.register(this);
+ }
+ if(this.inlineData){
+ this.loadData(this.inlineData);
+ delete this.inlineData;
+ }else if(this.autoLoad){
+ this.load.defer(10, this, [
+ typeof this.autoLoad == 'object' ?
+ this.autoLoad : undefined]);
+ }
+};
+Ext.extend(Ext.data.Store, Ext.util.Observable, {
+
+
+
+
+
+
+
+
+ remoteSort : false,
+
+
+ pruneModifiedRecords : false,
+
+
+ lastOptions : null,
+
+ destroy : function(){
+ if(this.id){
+ Ext.StoreMgr.unregister(this);
+ }
+ this.data = null;
+ this.purgeListeners();
+ },
+
+
+ add : function(records){
+ records = [].concat(records);
+ for(var i = 0, len = records.length; i < len; i++){
+ records[i].join(this);
+ }
+ var index = this.data.length;
+ this.data.addAll(records);
+ if(this.snapshot){
+ this.snapshot.addAll(records);
+ }
+ this.fireEvent("add", this, records, index);
+ },
+
+
+ addSorted : function(record){
+ var index = this.findInsertIndex(record);
+ this.insert(index, record);
+ },
+
+
+ remove : function(record){
+ var index = this.data.indexOf(record);
+ this.data.removeAt(index);
+ if(this.pruneModifiedRecords){
+ this.modified.remove(record);
+ }
+ if(this.snapshot){
+ this.snapshot.remove(record);
+ }
+ this.fireEvent("remove", this, record, index);
+ },
+
+
+ removeAll : function(){
+ this.data.clear();
+ if(this.snapshot){
+ this.snapshot.clear();
+ }
+ if(this.pruneModifiedRecords){
+ this.modified = [];
+ }
+ this.fireEvent("clear", this);
+ },
+
+
+ insert : function(index, records){
+ records = [].concat(records);
+ for(var i = 0, len = records.length; i < len; i++){
+ this.data.insert(index, records[i]);
+ records[i].join(this);
+ }
+ this.fireEvent("add", this, records, index);
+ },
+
+
+ indexOf : function(record){
+ return this.data.indexOf(record);
+ },
+
+
+ indexOfId : function(id){
+ return this.data.indexOfKey(id);
+ },
+
+
+ getById : function(id){
+ return this.data.key(id);
+ },
+
+
+ getAt : function(index){
+ return this.data.itemAt(index);
+ },
+
+
+ getRange : function(start, end){
+ return this.data.getRange(start, end);
+ },
+
+
+ storeOptions : function(o){
+ o = Ext.apply({}, o);
+ delete o.callback;
+ delete o.scope;
+ this.lastOptions = o;
+ },
+
+
+ load : function(options){
+ options = options || {};
+ if(this.fireEvent("beforeload", this, options) !== false){
+ this.storeOptions(options);
+ var p = Ext.apply(options.params || {}, this.baseParams);
+ if(this.sortInfo && this.remoteSort){
+ var pn = this.paramNames;
+ p[pn["sort"]] = this.sortInfo.field;
+ p[pn["dir"]] = this.sortInfo.direction;
+ }
+ this.proxy.load(p, this.reader, this.loadRecords, this, options);
+ }
+ },
+
+
+ reload : function(options){
+ this.load(Ext.applyIf(options||{}, this.lastOptions));
+ },
+
+
+
+ loadRecords : function(o, options, success){
+ if(!o || success === false){
+ if(success !== false){
+ this.fireEvent("load", this, [], options);
+ }
+ if(options.callback){
+ options.callback.call(options.scope || this, [], options, false);
+ }
+ return;
+ }
+ var r = o.records, t = o.totalRecords || r.length;
+ if(!options || options.add !== true){
+ if(this.pruneModifiedRecords){
+ this.modified = [];
+ }
+ for(var i = 0, len = r.length; i < len; i++){
+ r[i].join(this);
+ }
+ if(this.snapshot){
+ this.data = this.snapshot;
+ delete this.snapshot;
+ }
+ this.data.clear();
+ this.data.addAll(r);
+ this.totalLength = t;
+ this.applySort();
+ this.fireEvent("datachanged", this);
+ }else{
+ this.totalLength = Math.max(t, this.data.length+r.length);
+ this.add(r);
+ }
+ this.fireEvent("load", this, r, options);
+ if(options.callback){
+ options.callback.call(options.scope || this, r, options, true);
+ }
+ },
+
+
+ loadData : function(o, append){
+ var r = this.reader.readRecords(o);
+ this.loadRecords(r, {add: append}, true);
+ },
+
+
+ getCount : function(){
+ return this.data.length || 0;
+ },
+
+
+ getTotalCount : function(){
+ return this.totalLength || 0;
+ },
+
+
+ getSortState : function(){
+ return this.sortInfo;
+ },
+
+
+ applySort : function(){
+ if(this.sortInfo && !this.remoteSort){
+ var s = this.sortInfo, f = s.field;
+ this.sortData(f, s.direction);
+ }
+ },
+
+
+ sortData : function(f, direction){
+ direction = direction || 'ASC';
+ var st = this.fields.get(f).sortType;
+ var fn = function(r1, r2){
+ var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
+ return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
+ };
+ this.data.sort(direction, fn);
+ if(this.snapshot && this.snapshot != this.data){
+ this.snapshot.sort(direction, fn);
+ }
+ },
+
+
+ setDefaultSort : function(field, dir){
+ dir = dir ? dir.toUpperCase() : "ASC";
+ this.sortInfo = {field: field, direction: dir};
+ this.sortToggle[field] = dir;
+ },
+
+
+ sort : function(fieldName, dir){
+ var f = this.fields.get(fieldName);
+ if(!dir){
+ if(this.sortInfo && this.sortInfo.field == f.name){
+ dir = (this.sortToggle[f.name] || "ASC").toggle("ASC", "DESC");
+ }else{
+ dir = f.sortDir;
+ }
+ }
+ this.sortToggle[f.name] = dir;
+ this.sortInfo = {field: f.name, direction: dir};
+ if(!this.remoteSort){
+ this.applySort();
+ this.fireEvent("datachanged", this);
+ }else{
+ this.load(this.lastOptions);
+ }
+ },
+
+
+ each : function(fn, scope){
+ this.data.each(fn, scope);
+ },
+
+
+ getModifiedRecords : function(){
+ return this.modified;
+ },
+
+
+ createFilterFn : function(property, value, anyMatch, caseSensitive){
+ if(Ext.isEmpty(value, false)){
+ return false;
+ }
+ value = this.data.createValueMatcher(value, anyMatch, caseSensitive);
+ return function(r){
+ return value.test(r.data[property]);
+ };
+ },
+
+
+ sum : function(property, start, end){
+ var rs = this.data.items, v = 0;
+ start = start || 0;
+ end = (end || end === 0) ? end : rs.length-1;
+
+ for(var i = start; i <= end; i++){
+ v += (rs[i].data[property] || 0);
+ }
+ return v;
+ },
+
+
+ filter : function(property, value, anyMatch, caseSensitive){
+ var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
+ return fn ? this.filterBy(fn) : this.clearFilter();
+ },
+
+
+ filterBy : function(fn, scope){
+ this.snapshot = this.snapshot || this.data;
+ this.data = this.queryBy(fn, scope||this);
+ this.fireEvent("datachanged", this);
+ },
+
+
+ query : function(property, value, anyMatch, caseSensitive){
+ var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
+ return fn ? this.queryBy(fn) : this.data.clone();
+ },
+
+
+ queryBy : function(fn, scope){
+ var data = this.snapshot || this.data;
+ return data.filterBy(fn, scope||this);
+ },
+
+
+ find : function(property, value, start, anyMatch, caseSensitive){
+ var fn = this.createFilterFn(property, value, anyMatch, caseSensitive);
+ return fn ? this.data.findIndexBy(fn, null, start) : -1;
+ },
+
+
+ findBy : function(fn, scope, start){
+ return this.data.findIndexBy(fn, scope, start);
+ },
+
+
+ collect : function(dataIndex, allowNull, bypassFilter){
+ var d = (bypassFilter === true && this.snapshot) ?
+ this.snapshot.items : this.data.items;
+ var v, sv, r = [], l = {};
+ for(var i = 0, len = d.length; i < len; i++){
+ v = d[i].data[dataIndex];
+ sv = String(v);
+ if((allowNull || !Ext.isEmpty(v)) && !l[sv]){
+ l[sv] = true;
+ r[r.length] = v;
+ }
+ }
+ return r;
+ },
+
+
+ clearFilter : function(suppressEvent){
+ if(this.isFiltered()){
+ this.data = this.snapshot;
+ delete this.snapshot;
+ if(suppressEvent !== true){
+ this.fireEvent("datachanged", this);
+ }
+ }
+ },
+
+
+ isFiltered : function(){
+ return this.snapshot && this.snapshot != this.data;
+ },
+
+
+ afterEdit : function(record){
+ if(this.modified.indexOf(record) == -1){
+ this.modified.push(record);
+ }
+ this.fireEvent("update", this, record, Ext.data.Record.EDIT);
+ },
+
+
+ afterReject : function(record){
+ this.modified.remove(record);
+ this.fireEvent("update", this, record, Ext.data.Record.REJECT);
+ },
+
+
+ afterCommit : function(record){
+ this.modified.remove(record);
+ this.fireEvent("update", this, record, Ext.data.Record.COMMIT);
+ },
+
+
+ commitChanges : function(){
+ var m = this.modified.slice(0);
+ this.modified = [];
+ for(var i = 0, len = m.length; i < len; i++){
+ m[i].commit();
+ }
+ },
+
+
+ rejectChanges : function(){
+ var m = this.modified.slice(0);
+ this.modified = [];
+ for(var i = 0, len = m.length; i < len; i++){
+ m[i].reject();
+ }
+ },
+
+
+ onMetaChange : function(meta, rtype, o){
+ this.recordType = rtype;
+ this.fields = rtype.prototype.fields;
+ delete this.snapshot;
+ this.sortInfo = meta.sortInfo;
+ this.modified = [];
+ this.fireEvent('metachange', this, this.reader.meta);
+ },
+
+
+ findInsertIndex : function(record){
+ this.suspendEvents();
+ var data = this.data.clone();
+ this.data.add(record);
+ this.applySort();
+ var index = this.data.indexOf(record);
+ this.data = data;
+ this.resumeEvents();
+ return index;
+ }
+});
+
+Ext.data.SimpleStore = function(config){
+ Ext.data.SimpleStore.superclass.constructor.call(this, Ext.apply(config, {
+ reader: new Ext.data.ArrayReader({
+ id: config.id
+ },
+ Ext.data.Record.create(config.fields)
+ )
+ }));
+};
+Ext.extend(Ext.data.SimpleStore, Ext.data.Store, {
+ loadData : function(data, append){
+ if(this.expandData === true){
+ var r = [];
+ for(var i = 0, len = data.length; i < len; i++){
+ r[r.length] = [data[i]];
+ }
+ data = r;
+ }
+ Ext.data.SimpleStore.superclass.loadData.call(this, data, append);
+ }
+});
+
+Ext.data.JsonStore = function(c){
+ Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(c, {
+ proxy: !c.data ? new Ext.data.HttpProxy({url: c.url}) : undefined,
+ reader: new Ext.data.JsonReader(c, c.fields)
+ }));
+};
+Ext.extend(Ext.data.JsonStore, Ext.data.Store);
+Ext.data.Field = function(config){
+ if(typeof config == "string"){
+ config = {name: config};
+ }
+ Ext.apply(this, config);
+
+ if(!this.type){
+ this.type = "auto";
+ }
+
+ var st = Ext.data.SortTypes;
+
+ if(typeof this.sortType == "string"){
+ this.sortType = st[this.sortType];
+ }
+
+
+ if(!this.sortType){
+ switch(this.type){
+ case "string":
+ this.sortType = st.asUCString;
+ break;
+ case "date":
+ this.sortType = st.asDate;
+ break;
+ default:
+ this.sortType = st.none;
+ }
+ }
+
+
+ var stripRe = /[\$,%]/g;
+
+
+
+ if(!this.convert){
+ var cv, dateFormat = this.dateFormat;
+ switch(this.type){
+ case "":
+ case "auto":
+ case undefined:
+ cv = function(v){ return v; };
+ break;
+ case "string":
+ cv = function(v){ return (v === undefined || v === null) ? '' : String(v); };
+ break;
+ case "int":
+ cv = function(v){
+ return v !== undefined && v !== null && v !== '' ?
+ parseInt(String(v).replace(stripRe, ""), 10) : '';
+ };
+ break;
+ case "float":
+ cv = function(v){
+ return v !== undefined && v !== null && v !== '' ?
+ parseFloat(String(v).replace(stripRe, ""), 10) : '';
+ };
+ break;
+ case "bool":
+ case "boolean":
+ cv = function(v){ return v === true || v === "true" || v == 1; };
+ break;
+ case "date":
+ cv = function(v){
+ if(!v){
+ return '';
+ }
+ if(v instanceof Date){
+ return v;
+ }
+ if(dateFormat){
+ if(dateFormat == "timestamp"){
+ return new Date(v*1000);
+ }
+ if(dateFormat == "time"){
+ return new Date(parseInt(v, 10));
+ }
+ return Date.parseDate(v, dateFormat);
+ }
+ var parsed = Date.parse(v);
+ return parsed ? new Date(parsed) : null;
+ };
+ break;
+
+ }
+ this.convert = cv;
+ }
+};
+
+Ext.data.Field.prototype = {
+ dateFormat: null,
+ defaultValue: "",
+ mapping: null,
+ sortType : null,
+ sortDir : "ASC"
+};
+
+Ext.data.DataReader = function(meta, recordType){
+ this.meta = meta;
+ this.recordType = recordType instanceof Array ?
+ Ext.data.Record.create(recordType) : recordType;
+};
+
+Ext.data.DataReader.prototype = {
+
+};
+
+Ext.data.DataProxy = function(){
+ this.addEvents({
+
+ beforeload : true,
+
+ load : true,
+
+ loadexception : true
+ });
+ Ext.data.DataProxy.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.data.DataProxy, Ext.util.Observable);
+
+Ext.data.MemoryProxy = function(data){
+ Ext.data.MemoryProxy.superclass.constructor.call(this);
+ this.data = data;
+};
+
+Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, {
+
+ load : function(params, reader, callback, scope, arg){
+ params = params || {};
+ var result;
+ try {
+ result = reader.readRecords(this.data);
+ }catch(e){
+ this.fireEvent("loadexception", this, arg, null, e);
+ callback.call(scope, null, arg, false);
+ return;
+ }
+ callback.call(scope, result, arg, true);
+ },
+
+
+ update : function(params, records){
+
+ }
+});
+
+Ext.data.HttpProxy = function(conn){
+ Ext.data.HttpProxy.superclass.constructor.call(this);
+
+ this.conn = conn;
+ this.useAjax = !conn || !conn.events;
+};
+
+Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, {
+
+ getConnection : function(){
+ return this.useAjax ? Ext.Ajax : this.conn;
+ },
+
+
+ load : function(params, reader, callback, scope, arg){
+ if(this.fireEvent("beforeload", this, params) !== false){
+ var o = {
+ params : params || {},
+ request: {
+ callback : callback,
+ scope : scope,
+ arg : arg
+ },
+ reader: reader,
+ callback : this.loadResponse,
+ scope: this
+ };
+ if(this.useAjax){
+ Ext.applyIf(o, this.conn);
+ if(this.activeRequest){
+ Ext.Ajax.abort(this.activeRequest);
+ }
+ this.activeRequest = Ext.Ajax.request(o);
+ }else{
+ this.conn.request(o);
+ }
+ }else{
+ callback.call(scope||this, null, arg, false);
+ }
+ },
+
+
+ loadResponse : function(o, success, response){
+ delete this.activeRequest;
+ if(!success){
+ this.fireEvent("loadexception", this, o, response);
+ o.request.callback.call(o.request.scope, null, o.request.arg, false);
+ return;
+ }
+ var result;
+ try {
+ result = o.reader.read(response);
+ }catch(e){
+ this.fireEvent("loadexception", this, o, response, e);
+ o.request.callback.call(o.request.scope, null, o.request.arg, false);
+ return;
+ }
+ this.fireEvent("load", this, o, o.request.arg);
+ o.request.callback.call(o.request.scope, result, o.request.arg, true);
+ },
+
+
+ update : function(dataSet){
+
+ },
+
+
+ updateResponse : function(dataSet){
+
+ }
+});
+
+Ext.data.ScriptTagProxy = function(config){
+ Ext.data.ScriptTagProxy.superclass.constructor.call(this);
+ Ext.apply(this, config);
+ this.head = document.getElementsByTagName("head")[0];
+};
+
+Ext.data.ScriptTagProxy.TRANS_ID = 1000;
+
+Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, {
+
+
+ timeout : 30000,
+
+ callbackParam : "callback",
+
+ nocache : true,
+
+
+ load : function(params, reader, callback, scope, arg){
+ if(this.fireEvent("beforeload", this, params) !== false){
+
+ var p = Ext.urlEncode(Ext.apply(params, this.extraParams));
+
+ var url = this.url;
+ url += (url.indexOf("?") != -1 ? "&" : "?") + p;
+ if(this.nocache){
+ url += "&_dc=" + (new Date().getTime());
+ }
+ var transId = ++Ext.data.ScriptTagProxy.TRANS_ID;
+ var trans = {
+ id : transId,
+ cb : "stcCallback"+transId,
+ scriptId : "stcScript"+transId,
+ params : params,
+ arg : arg,
+ url : url,
+ callback : callback,
+ scope : scope,
+ reader : reader
+ };
+ var conn = this;
+
+ window[trans.cb] = function(o){
+ conn.handleResponse(o, trans);
+ };
+
+ url += String.format("&{0}={1}", this.callbackParam, trans.cb);
+
+ if(this.autoAbort !== false){
+ this.abort();
+ }
+
+ trans.timeoutId = this.handleFailure.defer(this.timeout, this, [trans]);
+
+ var script = document.createElement("script");
+ script.setAttribute("src", url);
+ script.setAttribute("type", "text/javascript");
+ script.setAttribute("id", trans.scriptId);
+ this.head.appendChild(script);
+
+ this.trans = trans;
+ }else{
+ callback.call(scope||this, null, arg, false);
+ }
+ },
+
+
+ isLoading : function(){
+ return this.trans ? true : false;
+ },
+
+
+ abort : function(){
+ if(this.isLoading()){
+ this.destroyTrans(this.trans);
+ }
+ },
+
+
+ destroyTrans : function(trans, isLoaded){
+ this.head.removeChild(document.getElementById(trans.scriptId));
+ clearTimeout(trans.timeoutId);
+ if(isLoaded){
+ window[trans.cb] = undefined;
+ try{
+ delete window[trans.cb];
+ }catch(e){}
+ }else{
+
+ window[trans.cb] = function(){
+ window[trans.cb] = undefined;
+ try{
+ delete window[trans.cb];
+ }catch(e){}
+ };
+ }
+ },
+
+
+ handleResponse : function(o, trans){
+ this.trans = false;
+ this.destroyTrans(trans, true);
+ var result;
+ try {
+ result = trans.reader.readRecords(o);
+ }catch(e){
+ this.fireEvent("loadexception", this, o, trans.arg, e);
+ trans.callback.call(trans.scope||window, null, trans.arg, false);
+ return;
+ }
+ this.fireEvent("load", this, o, trans.arg);
+ trans.callback.call(trans.scope||window, result, trans.arg, true);
+ },
+
+
+ handleFailure : function(trans){
+ this.trans = false;
+ this.destroyTrans(trans, false);
+ this.fireEvent("loadexception", this, null, trans.arg);
+ trans.callback.call(trans.scope||window, null, trans.arg, false);
+ }
+});
+
+Ext.data.JsonReader = function(meta, recordType){
+ meta = meta || {};
+ Ext.data.JsonReader.superclass.constructor.call(this, meta, recordType || meta.fields);
+};
+Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, {
+
+ read : function(response){
+ var json = response.responseText;
+ var o = eval("("+json+")");
+ if(!o) {
+ throw {message: "JsonReader.read: Json object not found"};
+ }
+ if(o.metaData){
+ delete this.ef;
+ this.meta = o.metaData;
+ this.recordType = Ext.data.Record.create(o.metaData.fields);
+ this.onMetaChange(this.meta, this.recordType, o);
+ }
+ return this.readRecords(o);
+ },
+
+
+ onMetaChange : function(meta, recordType, o){
+
+ },
+
+
+ simpleAccess: function(obj, subsc) {
+ return obj[subsc];
+ },
+
+
+ getJsonAccessor: function(){
+ var re = /[\[\.]/;
+ return function(expr) {
+ try {
+ return(re.test(expr))
+ ? new Function("obj", "return obj." + expr)
+ : function(obj){
+ return obj[expr];
+ };
+ } catch(e){}
+ return Ext.emptyFn;
+ };
+ }(),
+
+
+ readRecords : function(o){
+
+ this.jsonData = o;
+ var s = this.meta, Record = this.recordType,
+ f = Record.prototype.fields, fi = f.items, fl = f.length;
+
+
+ if (!this.ef) {
+ if(s.totalProperty) {
+ this.getTotal = this.getJsonAccessor(s.totalProperty);
+ }
+ if(s.successProperty) {
+ this.getSuccess = this.getJsonAccessor(s.successProperty);
+ }
+ this.getRoot = s.root ? this.getJsonAccessor(s.root) : function(p){return p;};
+ if (s.id) {
+ var g = this.getJsonAccessor(s.id);
+ this.getId = function(rec) {
+ var r = g(rec);
+ return (r === undefined || r === "") ? null : r;
+ };
+ } else {
+ this.getId = function(){return null;};
+ }
+ this.ef = [];
+ for(var i = 0; i < fl; i++){
+ f = fi[i];
+ var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
+ this.ef[i] = this.getJsonAccessor(map);
+ }
+ }
+
+ var root = this.getRoot(o), c = root.length, totalRecords = c, success = true;
+ if(s.totalProperty){
+ var v = parseInt(this.getTotal(o), 10);
+ if(!isNaN(v)){
+ totalRecords = v;
+ }
+ }
+ if(s.successProperty){
+ var v = this.getSuccess(o);
+ if(v === false || v === 'false'){
+ success = false;
+ }
+ }
+ var records = [];
+ for(var i = 0; i < c; i++){
+ var n = root[i];
+ var values = {};
+ var id = this.getId(n);
+ for(var j = 0; j < fl; j++){
+ f = fi[j];
+ var v = this.ef[j](n);
+ values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue);
+ }
+ var record = new Record(values, id);
+ record.json = n;
+ records[i] = record;
+ }
+ return {
+ success : success,
+ records : records,
+ totalRecords : totalRecords
+ };
+ }
+});
+
+Ext.data.XmlReader = function(meta, recordType){
+ meta = meta || {};
+ Ext.data.XmlReader.superclass.constructor.call(this, meta, recordType || meta.fields);
+};
+Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, {
+
+ read : function(response){
+ var doc = response.responseXML;
+ if(!doc) {
+ throw {message: "XmlReader.read: XML Document not available"};
+ }
+ return this.readRecords(doc);
+ },
+
+
+ readRecords : function(doc){
+
+ this.xmlData = doc;
+ var root = doc.documentElement || doc;
+ var q = Ext.DomQuery;
+ var recordType = this.recordType, fields = recordType.prototype.fields;
+ var sid = this.meta.id;
+ var totalRecords = 0, success = true;
+ if(this.meta.totalRecords){
+ totalRecords = q.selectNumber(this.meta.totalRecords, root, 0);
+ }
+
+ if(this.meta.success){
+ var sv = q.selectValue(this.meta.success, root, true);
+ success = sv !== false && sv !== 'false';
+ }
+ var records = [];
+ var ns = q.select(this.meta.record, root);
+ for(var i = 0, len = ns.length; i < len; i++) {
+ var n = ns[i];
+ var values = {};
+ var id = sid ? q.selectValue(sid, n) : undefined;
+ for(var j = 0, jlen = fields.length; j < jlen; j++){
+ var f = fields.items[j];
+ var v = q.selectValue(f.mapping || f.name, n, f.defaultValue);
+ v = f.convert(v);
+ values[f.name] = v;
+ }
+ var record = new recordType(values, id);
+ record.node = n;
+ records[records.length] = record;
+ }
+
+ return {
+ success : success,
+ records : records,
+ totalRecords : totalRecords || records.length
+ };
+ }
+});
+
+Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, {
+
+ readRecords : function(o){
+ var sid = this.meta ? this.meta.id : null;
+ var recordType = this.recordType, fields = recordType.prototype.fields;
+ var records = [];
+ var root = o;
+ for(var i = 0; i < root.length; i++){
+ var n = root[i];
+ var values = {};
+ var id = ((sid || sid === 0) && n[sid] !== undefined && n[sid] !== "" ? n[sid] : null);
+ for(var j = 0, jlen = fields.length; j < jlen; j++){
+ var f = fields.items[j];
+ var k = f.mapping !== undefined && f.mapping !== null ? f.mapping : j;
+ var v = n[k] !== undefined ? n[k] : f.defaultValue;
+ v = f.convert(v);
+ values[f.name] = v;
+ }
+ var record = new recordType(values, id);
+ record.json = n;
+ records[records.length] = record;
+ }
+ return {
+ records : records,
+ totalRecords : records.length
+ };
+ }
+});
+
+Ext.data.Tree = function(root){
+ this.nodeHash = {};
+
+ this.root = null;
+ if(root){
+ this.setRootNode(root);
+ }
+ this.addEvents({
+
+ "append" : true,
+
+ "remove" : true,
+
+ "move" : true,
+
+ "insert" : true,
+
+ "beforeappend" : true,
+
+ "beforeremove" : true,
+
+ "beforemove" : true,
+
+ "beforeinsert" : true
+ });
+
+ Ext.data.Tree.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.data.Tree, Ext.util.Observable, {
+
+ pathSeparator: "/",
+
+
+ proxyNodeEvent : function(){
+ return this.fireEvent.apply(this, arguments);
+ },
+
+
+ getRootNode : function(){
+ return this.root;
+ },
+
+
+ setRootNode : function(node){
+ this.root = node;
+ node.ownerTree = this;
+ node.isRoot = true;
+ this.registerNode(node);
+ return node;
+ },
+
+
+ getNodeById : function(id){
+ return this.nodeHash[id];
+ },
+
+
+ registerNode : function(node){
+ this.nodeHash[node.id] = node;
+ },
+
+
+ unregisterNode : function(node){
+ delete this.nodeHash[node.id];
+ },
+
+ toString : function(){
+ return "[Tree"+(this.id?" "+this.id:"")+"]";
+ }
+});
+
+
+Ext.data.Node = function(attributes){
+
+ this.attributes = attributes || {};
+ this.leaf = this.attributes.leaf;
+
+ this.id = this.attributes.id;
+ if(!this.id){
+ this.id = Ext.id(null, "ynode-");
+ this.attributes.id = this.id;
+ }
+
+ this.childNodes = [];
+ if(!this.childNodes.indexOf){
+ this.childNodes.indexOf = function(o){
+ for(var i = 0, len = this.length; i < len; i++){
+ if(this[i] == o) return i;
+ }
+ return -1;
+ };
+ }
+
+ this.parentNode = null;
+
+ this.firstChild = null;
+
+ this.lastChild = null;
+
+ this.previousSibling = null;
+
+ this.nextSibling = null;
+
+ this.addEvents({
+
+ "append" : true,
+
+ "remove" : true,
+
+ "move" : true,
+
+ "insert" : true,
+
+ "beforeappend" : true,
+
+ "beforeremove" : true,
+
+ "beforemove" : true,
+
+ "beforeinsert" : true
+ });
+ this.listeners = this.attributes.listeners;
+ Ext.data.Node.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.data.Node, Ext.util.Observable, {
+
+ fireEvent : function(evtName){
+
+ if(Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false){
+ return false;
+ }
+
+ var ot = this.getOwnerTree();
+ if(ot){
+ if(ot.proxyNodeEvent.apply(ot, arguments) === false){
+ return false;
+ }
+ }
+ return true;
+ },
+
+
+ isLeaf : function(){
+ return this.leaf === true;
+ },
+
+
+ setFirstChild : function(node){
+ this.firstChild = node;
+ },
+
+
+ setLastChild : function(node){
+ this.lastChild = node;
+ },
+
+
+
+ isLast : function(){
+ return (!this.parentNode ? true : this.parentNode.lastChild == this);
+ },
+
+
+ isFirst : function(){
+ return (!this.parentNode ? true : this.parentNode.firstChild == this);
+ },
+
+ hasChildNodes : function(){
+ return !this.isLeaf() && this.childNodes.length > 0;
+ },
+
+
+ appendChild : function(node){
+ var multi = false;
+ if(node instanceof Array){
+ multi = node;
+ }else if(arguments.length > 1){
+ multi = arguments;
+ }
+
+ if(multi){
+ for(var i = 0, len = multi.length; i < len; i++) {
+ this.appendChild(multi[i]);
+ }
+ }else{
+ if(this.fireEvent("beforeappend", this.ownerTree, this, node) === false){
+ return false;
+ }
+ var index = this.childNodes.length;
+ var oldParent = node.parentNode;
+
+ if(oldParent){
+ if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index) === false){
+ return false;
+ }
+ oldParent.removeChild(node);
+ }
+ index = this.childNodes.length;
+ if(index == 0){
+ this.setFirstChild(node);
+ }
+ this.childNodes.push(node);
+ node.parentNode = this;
+ var ps = this.childNodes[index-1];
+ if(ps){
+ node.previousSibling = ps;
+ ps.nextSibling = node;
+ }else{
+ node.previousSibling = null;
+ }
+ node.nextSibling = null;
+ this.setLastChild(node);
+ node.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("append", this.ownerTree, this, node, index);
+ if(oldParent){
+ node.fireEvent("move", this.ownerTree, node, oldParent, this, index);
+ }
+ return node;
+ }
+ },
+
+
+ removeChild : function(node){
+ var index = this.childNodes.indexOf(node);
+ if(index == -1){
+ return false;
+ }
+ if(this.fireEvent("beforeremove", this.ownerTree, this, node) === false){
+ return false;
+ }
+
+
+ this.childNodes.splice(index, 1);
+
+
+ if(node.previousSibling){
+ node.previousSibling.nextSibling = node.nextSibling;
+ }
+ if(node.nextSibling){
+ node.nextSibling.previousSibling = node.previousSibling;
+ }
+
+
+ if(this.firstChild == node){
+ this.setFirstChild(node.nextSibling);
+ }
+ if(this.lastChild == node){
+ this.setLastChild(node.previousSibling);
+ }
+
+ node.setOwnerTree(null);
+
+ node.parentNode = null;
+ node.previousSibling = null;
+ node.nextSibling = null;
+ this.fireEvent("remove", this.ownerTree, this, node);
+ return node;
+ },
+
+
+ insertBefore : function(node, refNode){
+ if(!refNode){
+ return this.appendChild(node);
+ }
+
+ if(node == refNode){
+ return false;
+ }
+
+ if(this.fireEvent("beforeinsert", this.ownerTree, this, node, refNode) === false){
+ return false;
+ }
+ var index = this.childNodes.indexOf(refNode);
+ var oldParent = node.parentNode;
+ var refIndex = index;
+
+
+ if(oldParent == this && this.childNodes.indexOf(node) < index){
+ refIndex--;
+ }
+
+
+ if(oldParent){
+ if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index, refNode) === false){
+ return false;
+ }
+ oldParent.removeChild(node);
+ }
+ if(refIndex == 0){
+ this.setFirstChild(node);
+ }
+ this.childNodes.splice(refIndex, 0, node);
+ node.parentNode = this;
+ var ps = this.childNodes[refIndex-1];
+ if(ps){
+ node.previousSibling = ps;
+ ps.nextSibling = node;
+ }else{
+ node.previousSibling = null;
+ }
+ node.nextSibling = refNode;
+ refNode.previousSibling = node;
+ node.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("insert", this.ownerTree, this, node, refNode);
+ if(oldParent){
+ node.fireEvent("move", this.ownerTree, node, oldParent, this, refIndex, refNode);
+ }
+ return node;
+ },
+
+
+ remove : function(){
+ this.parentNode.removeChild(this);
+ return this;
+ },
+
+
+ item : function(index){
+ return this.childNodes[index];
+ },
+
+
+ replaceChild : function(newChild, oldChild){
+ this.insertBefore(newChild, oldChild);
+ this.removeChild(oldChild);
+ return oldChild;
+ },
+
+
+ indexOf : function(child){
+ return this.childNodes.indexOf(child);
+ },
+
+
+ getOwnerTree : function(){
+
+ if(!this.ownerTree){
+ var p = this;
+ while(p){
+ if(p.ownerTree){
+ this.ownerTree = p.ownerTree;
+ break;
+ }
+ p = p.parentNode;
+ }
+ }
+ return this.ownerTree;
+ },
+
+
+ getDepth : function(){
+ var depth = 0;
+ var p = this;
+ while(p.parentNode){
+ ++depth;
+ p = p.parentNode;
+ }
+ return depth;
+ },
+
+
+ setOwnerTree : function(tree){
+
+ if(tree != this.ownerTree){
+ if(this.ownerTree){
+ this.ownerTree.unregisterNode(this);
+ }
+ this.ownerTree = tree;
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].setOwnerTree(tree);
+ }
+ if(tree){
+ tree.registerNode(this);
+ }
+ }
+ },
+
+
+ getPath : function(attr){
+ attr = attr || "id";
+ var p = this.parentNode;
+ var b = [this.attributes[attr]];
+ while(p){
+ b.unshift(p.attributes[attr]);
+ p = p.parentNode;
+ }
+ var sep = this.getOwnerTree().pathSeparator;
+ return sep + b.join(sep);
+ },
+
+
+ bubble : function(fn, scope, args){
+ var p = this;
+ while(p){
+ if(fn.call(scope || p, args || p) === false){
+ break;
+ }
+ p = p.parentNode;
+ }
+ },
+
+
+ cascade : function(fn, scope, args){
+ if(fn.call(scope || this, args || this) !== false){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].cascade(fn, scope, args);
+ }
+ }
+ },
+
+
+ eachChild : function(fn, scope, args){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ if(fn.call(scope || this, args || cs[i]) === false){
+ break;
+ }
+ }
+ },
+
+
+ findChild : function(attribute, value){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ if(cs[i].attributes[attribute] == value){
+ return cs[i];
+ }
+ }
+ return null;
+ },
+
+
+ findChildBy : function(fn, scope){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ if(fn.call(scope||cs[i], cs[i]) === true){
+ return cs[i];
+ }
+ }
+ return null;
+ },
+
+
+ sort : function(fn, scope){
+ var cs = this.childNodes;
+ var len = cs.length;
+ if(len > 0){
+ var sortFn = scope ? function(){fn.apply(scope, arguments);} : fn;
+ cs.sort(sortFn);
+ for(var i = 0; i < len; i++){
+ var n = cs[i];
+ n.previousSibling = cs[i-1];
+ n.nextSibling = cs[i+1];
+ if(i == 0){
+ this.setFirstChild(n);
+ }
+ if(i == len-1){
+ this.setLastChild(n);
+ }
+ }
+ }
+ },
+
+
+ contains : function(node){
+ return node.isAncestor(this);
+ },
+
+
+ isAncestor : function(node){
+ var p = this.parentNode;
+ while(p){
+ if(p == node){
+ return true;
+ }
+ p = p.parentNode;
+ }
+ return false;
+ },
+
+ toString : function(){
+ return "[Node"+(this.id?" "+this.id:"")+"]";
+ }
+});
+
+Ext.data.GroupingStore = Ext.extend(Ext.data.Store, {
+
+
+ remoteGroup : false,
+
+ groupOnSort:false,
+
+
+ clearGrouping : function(){
+ this.groupField = false;
+ if(this.remoteGroup){
+ if(this.baseParams){
+ delete this.baseParams.groupBy;
+ }
+ this.reload();
+ }else{
+ this.applySort();
+ this.fireEvent('datachanged', this);
+ }
+ },
+
+
+ groupBy : function(field, forceRegroup){
+ if(this.groupField == field && !forceRegroup){
+ return;
+ }
+ this.groupField = field;
+ if(this.remoteGroup){
+ if(!this.baseParams){
+ this.baseParams = {};
+ }
+ this.baseParams['groupBy'] = field;
+ }
+ if(this.groupOnSort){
+ this.sort(field);
+ return;
+ }
+ if(this.remoteGroup){
+ this.reload();
+ }else{
+ var si = this.sortInfo || {};
+ if(si.field != field){
+ this.applySort();
+ }else{
+ this.sortData(field);
+ }
+ this.fireEvent('datachanged', this);
+ }
+ },
+
+
+ applySort : function(){
+ Ext.data.GroupingStore.superclass.applySort.call(this);
+ if(!this.groupOnSort && !this.remoteGroup){
+ var gs = this.getGroupState();
+ if(gs && gs != this.sortInfo.field){
+ this.sortData(this.groupField);
+ }
+ }
+ },
+
+
+ applyGrouping : function(alwaysFireChange){
+ if(this.groupField !== false){
+ this.groupBy(this.groupField, true);
+ return true;
+ }else{
+ if(alwaysFireChange === true){
+ this.fireEvent('datachanged', this);
+ }
+ return false;
+ }
+ },
+
+
+ getGroupState : function(){
+ return this.groupOnSort && this.groupField !== false ?
+ (this.sortInfo ? this.sortInfo.field : undefined) : this.groupField;
+ }
+});
+
+Ext.ComponentMgr = function(){
+ var all = new Ext.util.MixedCollection();
+ var types = {};
+
+ return {
+
+ register : function(c){
+ all.add(c);
+ },
+
+
+ unregister : function(c){
+ all.remove(c);
+ },
+
+
+ get : function(id){
+ return all.get(id);
+ },
+
+
+ onAvailable : function(id, fn, scope){
+ all.on("add", function(index, o){
+ if(o.id == id){
+ fn.call(scope || o, o);
+ all.un("add", fn, scope);
+ }
+ });
+ },
+
+
+ all : all,
+
+
+ registerType : function(xtype, cls){
+ types[xtype] = cls;
+ cls.xtype = xtype;
+ },
+
+
+ create : function(config, defaultType){
+ return new types[config.xtype || defaultType](config);
+ }
+ };
+}();
+
+
+
+Ext.reg = Ext.ComponentMgr.registerType;
+
+Ext.Component = function(config){
+ config = config || {};
+ if(config.initialConfig){
+ if(config.isAction){ this.baseAction = config;
+ }
+ config = config.initialConfig; }else if(config.tagName || config.dom || typeof config == "string"){ config = {applyTo: config, id: config.id || config};
+ }
+
+ this.initialConfig = config;
+
+ Ext.apply(this, config);
+ this.addEvents({
+
+ disable : true,
+
+ enable : true,
+
+ beforeshow : true,
+
+ show : true,
+
+ beforehide : true,
+
+ hide : true,
+
+ beforerender : true,
+
+ render : true,
+
+ beforedestroy : true,
+
+ destroy : true
+ });
+ this.getId();
+ Ext.ComponentMgr.register(this);
+ Ext.Component.superclass.constructor.call(this);
+
+ if(this.baseAction){
+ this.baseAction.addComponent(this);
+ }
+
+ this.initComponent();
+
+ if(this.stateful !== false){
+ this.initState(config);
+ }
+
+ if(this.plugins){
+ if(this.plugins instanceof Array){
+ for(var i = 0, len = this.plugins.length; i < len; i++){
+ this.plugins[i].init(this);
+ }
+ }else{
+ this.plugins.init(this);
+ }
+ }
+
+ if(this.applyTo){
+ this.applyToMarkup(this.applyTo);
+ delete this.applyTo;
+ }else if(this.renderTo){
+ this.render(this.renderTo);
+ delete this.renderTo;
+ }
+};
+
+Ext.Component.AUTO_ID = 1000;
+
+Ext.extend(Ext.Component, Ext.util.Observable, {
+
+
+
+
+
+
+
+
+
+
+
+
+ disabledClass : "x-item-disabled",
+
+ allowDomMove : true,
+
+ autoShow : false,
+
+ hideMode: 'display',
+
+ hideParent: false,
+
+
+
+ hidden : false,
+
+ disabled : false,
+
+ rendered : false,
+
+ ctype : "Ext.Component",
+
+ actionMode : "el",
+
+ getActionEl : function(){
+ return this[this.actionMode];
+ },
+
+
+ initComponent : Ext.emptyFn,
+
+
+ render : function(container, position){
+ if(!this.rendered && this.fireEvent("beforerender", this) !== false){
+ if(!container && this.el){
+ this.el = Ext.get(this.el);
+ container = this.el.dom.parentNode;
+ this.allowDomMove = false;
+ }
+ this.container = Ext.get(container);
+ if(this.ctCls){
+ this.container.addClass(this.ctCls);
+ }
+ this.rendered = true;
+ if(position !== undefined){
+ if(typeof position == 'number'){
+ position = this.container.dom.childNodes[position];
+ }else{
+ position = Ext.getDom(position);
+ }
+ }
+ this.onRender(this.container, position || null);
+ if(this.autoShow){
+ this.el.removeClass(['x-hidden','x-hide-' + this.hideMode]);
+ }
+ if(this.cls){
+ this.el.addClass(this.cls);
+ delete this.cls;
+ }
+ if(this.style){
+ this.el.applyStyles(this.style);
+ delete this.style;
+ }
+ this.fireEvent("render", this);
+ this.afterRender(this.container);
+ if(this.hidden){
+ this.hide();
+ }
+ if(this.disabled){
+ this.disable();
+ }
+
+ this.initStateEvents();
+ }
+ return this;
+ },
+
+ initState : function(config){
+ if(Ext.state.Manager){
+ var state = Ext.state.Manager.get(this.stateId || this.id);
+ if(state){
+ this.applyState(state);
+ }
+ }
+ },
+
+ initStateEvents : function(){
+ if(this.stateEvents){
+ for(var i = 0, e; e = this.stateEvents[i]; i++){
+ this.on(e, this.saveState, this, {delay:100});
+ }
+ }
+ },
+
+ applyState : function(state, config){
+ if(state){
+ Ext.apply(this, state);
+ }
+ },
+
+ getState : function(){
+ return null;
+ },
+
+ saveState : function(){
+ if(Ext.state.Manager){
+ Ext.state.Manager.set(this.stateId || this.id, this.getState());
+ }
+ },
+
+
+ applyToMarkup : function(el){
+ this.allowDomMove = false;
+ this.el = Ext.get(el);
+ this.render(this.el.dom.parentNode);
+ },
+
+
+ addClass : function(cls){
+ if(this.el){
+ this.el.addClass(cls);
+ }else{
+ this.cls = this.cls ? this.cls + ' ' + cls : cls;
+ }
+ },
+
+
+ removeClass : function(cls){
+ if(this.el){
+ this.el.removeClass(cls);
+ }else if(this.cls){
+ this.cls = this.cls.split(' ').remove(cls).join(' ');
+ }
+ },
+
+ onRender : function(ct, position){
+ if(this.autoEl){
+ if(typeof this.autoEl == 'string'){
+ this.el = document.createElement(this.autoEl);
+ }else{
+ var div = document.createElement('div');
+ Ext.DomHelper.overwrite(div, this.autoEl);
+ this.el = div.firstChild;
+ }
+ }
+ if(this.el){
+ this.el = Ext.get(this.el);
+ if(this.allowDomMove !== false){
+ ct.dom.insertBefore(this.el.dom, position);
+ }
+ }
+ },
+
+ getAutoCreate : function(){
+ var cfg = typeof this.autoCreate == "object" ?
+ this.autoCreate : Ext.apply({}, this.defaultAutoCreate);
+ if(this.id && !cfg.id){
+ cfg.id = this.id;
+ }
+ return cfg;
+ },
+
+ afterRender : Ext.emptyFn,
+
+
+ destroy : function(){
+ if(this.fireEvent("beforedestroy", this) !== false){
+ this.beforeDestroy();
+ if(this.rendered){
+ this.el.removeAllListeners();
+ this.el.remove();
+ if(this.actionMode == "container"){
+ this.container.remove();
+ }
+ }
+ this.onDestroy();
+ Ext.ComponentMgr.unregister(this);
+ this.fireEvent("destroy", this);
+ this.purgeListeners();
+ }
+ },
+
+ beforeDestroy : function(){
+
+ },
+
+ onDestroy : function(){
+
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getId : function(){
+ return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID));
+ },
+
+
+ focus : function(selectText){
+ if(this.rendered){
+ this.el.focus();
+ if(selectText === true){
+ this.el.dom.select();
+ }
+ }
+ return this;
+ },
+
+ blur : function(){
+ if(this.rendered){
+ this.el.blur();
+ }
+ return this;
+ },
+
+
+ disable : function(){
+ if(this.rendered){
+ this.onDisable();
+ }
+ this.disabled = true;
+ this.fireEvent("disable", this);
+ return this;
+ },
+
+ onDisable : function(){
+ this.getActionEl().addClass(this.disabledClass);
+ this.el.dom.disabled = true;
+ },
+
+
+ enable : function(){
+ if(this.rendered){
+ this.onEnable();
+ }
+ this.disabled = false;
+ this.fireEvent("enable", this);
+ return this;
+ },
+
+ onEnable : function(){
+ this.getActionEl().removeClass(this.disabledClass);
+ this.el.dom.disabled = false;
+ },
+
+
+ setDisabled : function(disabled){
+ this[disabled ? "disable" : "enable"]();
+ },
+
+
+ show: function(){
+ if(this.fireEvent("beforeshow", this) !== false){
+ this.hidden = false;
+ if(this.autoRender){
+ this.render(typeof this.autoRender == 'boolean' ? Ext.getBody() : this.autoRender);
+ }
+ if(this.rendered){
+ this.onShow();
+ }
+ this.fireEvent("show", this);
+ }
+ return this;
+ },
+
+ onShow : function(){
+ if(this.hideParent){
+ this.container.removeClass('x-hide-' + this.hideMode);
+ }else{
+ this.getActionEl().removeClass('x-hide-' + this.hideMode);
+ }
+
+ },
+
+
+ hide: function(){
+ if(this.fireEvent("beforehide", this) !== false){
+ this.hidden = true;
+ if(this.rendered){
+ this.onHide();
+ }
+ this.fireEvent("hide", this);
+ }
+ return this;
+ },
+
+ onHide : function(){
+ if(this.hideParent){
+ this.container.addClass('x-hide-' + this.hideMode);
+ }else{
+ this.getActionEl().addClass('x-hide-' + this.hideMode);
+ }
+ },
+
+
+ setVisible: function(visible){
+ if(visible) {
+ this.show();
+ }else{
+ this.hide();
+ }
+ return this;
+ },
+
+
+ isVisible : function(){
+ return this.rendered && this.getActionEl().isVisible();
+ },
+
+
+ cloneConfig : function(overrides){
+ overrides = overrides || {};
+ var id = overrides.id || Ext.id();
+ var cfg = Ext.applyIf(overrides, this.initialConfig);
+ cfg.id = id; return new this.constructor(cfg);
+ },
+
+
+ getXType : function(){
+ return this.constructor.xtype;
+ },
+
+
+ isXType : function(xtype, shallow){
+ return !shallow ?
+ ('/' + this.getXTypes() + '/').indexOf('/' + xtype + '/') != -1 :
+ this.constructor.xtype == xtype;
+ },
+
+
+ getXTypes : function(){
+ var tc = this.constructor;
+ if(!tc.xtypes){
+ var c = [], sc = this;
+ while(sc && sc.constructor.xtype){
+ c.unshift(sc.constructor.xtype);
+ sc = sc.constructor.superclass;
+ }
+ tc.xtypeChain = c;
+ tc.xtypes = c.join('/');
+ }
+ return tc.xtypes;
+ }
+});
+
+Ext.reg('component', Ext.Component);
+
+Ext.Action = function(config){
+ this.initialConfig = config;
+ this.items = [];
+}
+
+Ext.Action.prototype = {
+
+
+
+
+
+
+
+
+ isAction : true,
+
+
+ setText : function(text){
+ this.initialConfig.text = text;
+ this.callEach('setText', [text]);
+ },
+
+
+ getText : function(){
+ return this.initialConfig.text;
+ },
+
+
+ setIconClass : function(cls){
+ this.initialConfig.iconCls = cls;
+ this.callEach('setIconClass', [cls]);
+ },
+
+
+ getIconClass : function(){
+ return this.initialConfig.iconCls;
+ },
+
+
+ setDisabled : function(v){
+ this.initialConfig.disabled = v;
+ this.callEach('setDisabled', [v]);
+ },
+
+
+ enable : function(){
+ this.setDisabled(false);
+ },
+
+
+ disable : function(){
+ this.setDisabled(true);
+ },
+
+
+ isDisabled : function(){
+ return this.initialConfig.disabled;
+ },
+
+
+ setHidden : function(v){
+ this.initialConfig.hidden = v;
+ this.callEach('setVisible', [!v]);
+ },
+
+
+ show : function(){
+ this.setHidden(false);
+ },
+
+
+ hide : function(){
+ this.setHidden(true);
+ },
+
+
+ isHidden : function(){
+ return this.initialConfig.hidden;
+ },
+
+
+ setHandler : function(fn, scope){
+ this.initialConfig.handler = fn;
+ this.initialConfig.scope = scope;
+ this.callEach('setHandler', [fn, scope]);
+ },
+
+
+ each : function(fn, scope){
+ Ext.each(this.items, fn, scope);
+ },
+
+
+ callEach : function(fnName, args){
+ var cs = this.items;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i][fnName].apply(cs[i], args);
+ }
+ },
+
+
+ addComponent : function(comp){
+ this.items.push(comp);
+ comp.on('destroy', this.removeComponent, this);
+ },
+
+
+ removeComponent : function(comp){
+ this.items.remove(comp);
+ }
+};
+
+(function(){
+Ext.Layer = function(config, existingEl){
+ config = config || {};
+ var dh = Ext.DomHelper;
+ var cp = config.parentEl, pel = cp ? Ext.getDom(cp) : document.body;
+ if(existingEl){
+ this.dom = Ext.getDom(existingEl);
+ }
+ if(!this.dom){
+ var o = config.dh || {tag: "div", cls: "x-layer"};
+ this.dom = dh.append(pel, o);
+ }
+ if(config.cls){
+ this.addClass(config.cls);
+ }
+ this.constrain = config.constrain !== false;
+ this.visibilityMode = Ext.Element.VISIBILITY;
+ if(config.id){
+ this.id = this.dom.id = config.id;
+ }else{
+ this.id = Ext.id(this.dom);
+ }
+ this.zindex = config.zindex || this.getZIndex();
+ this.position("absolute", this.zindex);
+ if(config.shadow){
+ this.shadowOffset = config.shadowOffset || 4;
+ this.shadow = new Ext.Shadow({
+ offset : this.shadowOffset,
+ mode : config.shadow
+ });
+ }else{
+ this.shadowOffset = 0;
+ }
+ this.useShim = config.shim !== false && Ext.useShims;
+ this.useDisplay = config.useDisplay;
+ this.hide();
+};
+
+var supr = Ext.Element.prototype;
+
+
+var shims = [];
+
+Ext.extend(Ext.Layer, Ext.Element, {
+
+ getZIndex : function(){
+ return this.zindex || parseInt(this.getStyle("z-index"), 10) || 11000;
+ },
+
+ getShim : function(){
+ if(!this.useShim){
+ return null;
+ }
+ if(this.shim){
+ return this.shim;
+ }
+ var shim = shims.shift();
+ if(!shim){
+ shim = this.createShim();
+ shim.enableDisplayMode('block');
+ shim.dom.style.display = 'none';
+ shim.dom.style.visibility = 'visible';
+ }
+ var pn = this.dom.parentNode;
+ if(shim.dom.parentNode != pn){
+ pn.insertBefore(shim.dom, this.dom);
+ }
+ shim.setStyle('z-index', this.getZIndex()-2);
+ this.shim = shim;
+ return shim;
+ },
+
+ hideShim : function(){
+ if(this.shim){
+ this.shim.setDisplayed(false);
+ shims.push(this.shim);
+ delete this.shim;
+ }
+ },
+
+ disableShadow : function(){
+ if(this.shadow){
+ this.shadowDisabled = true;
+ this.shadow.hide();
+ this.lastShadowOffset = this.shadowOffset;
+ this.shadowOffset = 0;
+ }
+ },
+
+ enableShadow : function(show){
+ if(this.shadow){
+ this.shadowDisabled = false;
+ this.shadowOffset = this.lastShadowOffset;
+ delete this.lastShadowOffset;
+ if(show){
+ this.sync(true);
+ }
+ }
+ },
+
+
+
+
+ sync : function(doShow){
+ var sw = this.shadow;
+ if(!this.updating && this.isVisible() && (sw || this.useShim)){
+ var sh = this.getShim();
+
+ var w = this.getWidth(),
+ h = this.getHeight();
+
+ var l = this.getLeft(true),
+ t = this.getTop(true);
+
+ if(sw && !this.shadowDisabled){
+ if(doShow && !sw.isVisible()){
+ sw.show(this);
+ }else{
+ sw.realign(l, t, w, h);
+ }
+ if(sh){
+ if(doShow){
+ sh.show();
+ }
+
+ var a = sw.adjusts, s = sh.dom.style;
+ s.left = (Math.min(l, l+a.l))+"px";
+ s.top = (Math.min(t, t+a.t))+"px";
+ s.width = (w+a.w)+"px";
+ s.height = (h+a.h)+"px";
+ }
+ }else if(sh){
+ if(doShow){
+ sh.show();
+ }
+ sh.setSize(w, h);
+ sh.setLeftTop(l, t);
+ }
+
+ }
+ },
+
+
+ destroy : function(){
+ this.hideShim();
+ if(this.shadow){
+ this.shadow.hide();
+ }
+ this.removeAllListeners();
+ Ext.removeNode(this.dom);
+ Ext.Element.uncache(this.id);
+ },
+
+ remove : function(){
+ this.destroy();
+ },
+
+
+ beginUpdate : function(){
+ this.updating = true;
+ },
+
+
+ endUpdate : function(){
+ this.updating = false;
+ this.sync(true);
+ },
+
+
+ hideUnders : function(negOffset){
+ if(this.shadow){
+ this.shadow.hide();
+ }
+ this.hideShim();
+ },
+
+
+ constrainXY : function(){
+ if(this.constrain){
+ var vw = Ext.lib.Dom.getViewWidth(),
+ vh = Ext.lib.Dom.getViewHeight();
+ var s = Ext.getDoc().getScroll();
+
+ var xy = this.getXY();
+ var x = xy[0], y = xy[1];
+ var w = this.dom.offsetWidth+this.shadowOffset, h = this.dom.offsetHeight+this.shadowOffset;
+
+ var moved = false;
+
+ if((x + w) > vw+s.left){
+ x = vw - w - this.shadowOffset;
+ moved = true;
+ }
+ if((y + h) > vh+s.top){
+ y = vh - h - this.shadowOffset;
+ moved = true;
+ }
+
+ if(x < s.left){
+ x = s.left;
+ moved = true;
+ }
+ if(y < s.top){
+ y = s.top;
+ moved = true;
+ }
+ if(moved){
+ if(this.avoidY){
+ var ay = this.avoidY;
+ if(y <= ay && (y+h) >= ay){
+ y = ay-h-5;
+ }
+ }
+ xy = [x, y];
+ this.storeXY(xy);
+ supr.setXY.call(this, xy);
+ this.sync();
+ }
+ }
+ },
+
+ isVisible : function(){
+ return this.visible;
+ },
+
+
+ showAction : function(){
+ this.visible = true;
+ if(this.useDisplay === true){
+ this.setDisplayed("");
+ }else if(this.lastXY){
+ supr.setXY.call(this, this.lastXY);
+ }else if(this.lastLT){
+ supr.setLeftTop.call(this, this.lastLT[0], this.lastLT[1]);
+ }
+ },
+
+
+ hideAction : function(){
+ this.visible = false;
+ if(this.useDisplay === true){
+ this.setDisplayed(false);
+ }else{
+ this.setLeftTop(-10000,-10000);
+ }
+ },
+
+
+ setVisible : function(v, a, d, c, e){
+ if(v){
+ this.showAction();
+ }
+ if(a && v){
+ var cb = function(){
+ this.sync(true);
+ if(c){
+ c();
+ }
+ }.createDelegate(this);
+ supr.setVisible.call(this, true, true, d, cb, e);
+ }else{
+ if(!v){
+ this.hideUnders(true);
+ }
+ var cb = c;
+ if(a){
+ cb = function(){
+ this.hideAction();
+ if(c){
+ c();
+ }
+ }.createDelegate(this);
+ }
+ supr.setVisible.call(this, v, a, d, cb, e);
+ if(v){
+ this.sync(true);
+ }else if(!a){
+ this.hideAction();
+ }
+ }
+ },
+
+ storeXY : function(xy){
+ delete this.lastLT;
+ this.lastXY = xy;
+ },
+
+ storeLeftTop : function(left, top){
+ delete this.lastXY;
+ this.lastLT = [left, top];
+ },
+
+
+ beforeFx : function(){
+ this.beforeAction();
+ return Ext.Layer.superclass.beforeFx.apply(this, arguments);
+ },
+
+
+ afterFx : function(){
+ Ext.Layer.superclass.afterFx.apply(this, arguments);
+ this.sync(this.isVisible());
+ },
+
+
+ beforeAction : function(){
+ if(!this.updating && this.shadow){
+ this.shadow.hide();
+ }
+ },
+
+
+ setLeft : function(left){
+ this.storeLeftTop(left, this.getTop(true));
+ supr.setLeft.apply(this, arguments);
+ this.sync();
+ },
+
+ setTop : function(top){
+ this.storeLeftTop(this.getLeft(true), top);
+ supr.setTop.apply(this, arguments);
+ this.sync();
+ },
+
+ setLeftTop : function(left, top){
+ this.storeLeftTop(left, top);
+ supr.setLeftTop.apply(this, arguments);
+ this.sync();
+ },
+
+ setXY : function(xy, a, d, c, e){
+ this.fixDisplay();
+ this.beforeAction();
+ this.storeXY(xy);
+ var cb = this.createCB(c);
+ supr.setXY.call(this, xy, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ },
+
+
+ createCB : function(c){
+ var el = this;
+ return function(){
+ el.constrainXY();
+ el.sync(true);
+ if(c){
+ c();
+ }
+ };
+ },
+
+
+ setX : function(x, a, d, c, e){
+ this.setXY([x, this.getY()], a, d, c, e);
+ },
+
+
+ setY : function(y, a, d, c, e){
+ this.setXY([this.getX(), y], a, d, c, e);
+ },
+
+
+ setSize : function(w, h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setSize.call(this, w, h, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ },
+
+
+ setWidth : function(w, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setWidth.call(this, w, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ },
+
+
+ setHeight : function(h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ supr.setHeight.call(this, h, a, d, cb, e);
+ if(!a){
+ cb();
+ }
+ },
+
+
+ setBounds : function(x, y, w, h, a, d, c, e){
+ this.beforeAction();
+ var cb = this.createCB(c);
+ if(!a){
+ this.storeXY([x, y]);
+ supr.setXY.call(this, [x, y]);
+ supr.setSize.call(this, w, h, a, d, cb, e);
+ cb();
+ }else{
+ supr.setBounds.call(this, x, y, w, h, a, d, cb, e);
+ }
+ return this;
+ },
+
+
+ setZIndex : function(zindex){
+ this.zindex = zindex;
+ this.setStyle("z-index", zindex + 2);
+ if(this.shadow){
+ this.shadow.setZIndex(zindex + 1);
+ }
+ if(this.shim){
+ this.shim.setStyle("z-index", zindex);
+ }
+ }
+});
+})();
+
+Ext.Shadow = function(config){
+ Ext.apply(this, config);
+ if(typeof this.mode != "string"){
+ this.mode = this.defaultMode;
+ }
+ var o = this.offset, a = {h: 0};
+ var rad = Math.floor(this.offset/2);
+ switch(this.mode.toLowerCase()){ case "drop":
+ a.w = 0;
+ a.l = a.t = o;
+ a.t -= 1;
+ if(Ext.isIE){
+ a.l -= this.offset + rad;
+ a.t -= this.offset + rad;
+ a.w -= rad;
+ a.h -= rad;
+ a.t += 1;
+ }
+ break;
+ case "sides":
+ a.w = (o*2);
+ a.l = -o;
+ a.t = o-1;
+ if(Ext.isIE){
+ a.l -= (this.offset - rad);
+ a.t -= this.offset + rad;
+ a.l += 1;
+ a.w -= (this.offset - rad)*2;
+ a.w -= rad + 1;
+ a.h -= 1;
+ }
+ break;
+ case "frame":
+ a.w = a.h = (o*2);
+ a.l = a.t = -o;
+ a.t += 1;
+ a.h -= 2;
+ if(Ext.isIE){
+ a.l -= (this.offset - rad);
+ a.t -= (this.offset - rad);
+ a.l += 1;
+ a.w -= (this.offset + rad + 1);
+ a.h -= (this.offset + rad);
+ a.h += 1;
+ }
+ break;
+ };
+
+ this.adjusts = a;
+};
+
+Ext.Shadow.prototype = {
+
+
+ offset: 4,
+
+ defaultMode: "drop",
+
+
+ show : function(target){
+ target = Ext.get(target);
+ if(!this.el){
+ this.el = Ext.Shadow.Pool.pull();
+ if(this.el.dom.nextSibling != target.dom){
+ this.el.insertBefore(target);
+ }
+ }
+ this.el.setStyle("z-index", this.zIndex || parseInt(target.getStyle("z-index"), 10)-1);
+ if(Ext.isIE){
+ this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")";
+ }
+ this.realign(
+ target.getLeft(true),
+ target.getTop(true),
+ target.getWidth(),
+ target.getHeight()
+ );
+ this.el.dom.style.display = "block";
+ },
+
+
+ isVisible : function(){
+ return this.el ? true : false;
+ },
+
+
+ realign : function(l, t, w, h){
+ if(!this.el){
+ return;
+ }
+ var a = this.adjusts, d = this.el.dom, s = d.style;
+ var iea = 0;
+ s.left = (l+a.l)+"px";
+ s.top = (t+a.t)+"px";
+ var sw = (w+a.w), sh = (h+a.h), sws = sw +"px", shs = sh + "px";
+ if(s.width != sws || s.height != shs){
+ s.width = sws;
+ s.height = shs;
+ if(!Ext.isIE){
+ var cn = d.childNodes;
+ var sww = Math.max(0, (sw-12))+"px";
+ cn[0].childNodes[1].style.width = sww;
+ cn[1].childNodes[1].style.width = sww;
+ cn[2].childNodes[1].style.width = sww;
+ cn[1].style.height = Math.max(0, (sh-12))+"px";
+ }
+ }
+ },
+
+
+ hide : function(){
+ if(this.el){
+ this.el.dom.style.display = "none";
+ Ext.Shadow.Pool.push(this.el);
+ delete this.el;
+ }
+ },
+
+
+ setZIndex : function(z){
+ this.zIndex = z;
+ if(this.el){
+ this.el.setStyle("z-index", z);
+ }
+ }
+};
+
+Ext.Shadow.Pool = function(){
+ var p = [];
+ var markup = Ext.isIE ?
+ '<div class="x-ie-shadow"></div>' :
+ '<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';
+ return {
+ pull : function(){
+ var sh = p.shift();
+ if(!sh){
+ sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, markup));
+ sh.autoBoxAdjust = false;
+ }
+ return sh;
+ },
+
+ push : function(sh){
+ p.push(sh);
+ }
+ };
+}();
+
+Ext.BoxComponent = Ext.extend(Ext.Component, {
+
+
+
+
+
+
+ initComponent : function(){
+ Ext.BoxComponent.superclass.initComponent.call(this);
+ this.addEvents({
+
+ resize : true,
+
+ move : true
+ });
+ },
+
+ boxReady : false,
+ deferHeight: false,
+
+
+ setSize : function(w, h){
+ if(typeof w == 'object'){
+ h = w.height;
+ w = w.width;
+ }
+ if(!this.boxReady){
+ this.width = w;
+ this.height = h;
+ return this;
+ }
+
+ if(this.lastSize && this.lastSize.width == w && this.lastSize.height == h){
+ return this;
+ }
+ this.lastSize = {width: w, height: h};
+ var adj = this.adjustSize(w, h);
+ var aw = adj.width, ah = adj.height;
+ if(aw !== undefined || ah !== undefined){ var rz = this.getResizeEl();
+ if(!this.deferHeight && aw !== undefined && ah !== undefined){
+ rz.setSize(aw, ah);
+ }else if(!this.deferHeight && ah !== undefined){
+ rz.setHeight(ah);
+ }else if(aw !== undefined){
+ rz.setWidth(aw);
+ }
+ this.onResize(aw, ah, w, h);
+ this.fireEvent('resize', this, aw, ah, w, h);
+ }
+ return this;
+ },
+
+
+ setWidth : function(width){
+ return this.setSize(width);
+ },
+
+
+ setHeight : function(height){
+ return this.setSize(undefined, height);
+ },
+
+
+ getSize : function(){
+ return this.el.getSize();
+ },
+
+
+ getPosition : function(local){
+ if(local === true){
+ return [this.el.getLeft(true), this.el.getTop(true)];
+ }
+ return this.xy || this.el.getXY();
+ },
+
+
+ getBox : function(local){
+ var s = this.el.getSize();
+ if(local === true){
+ s.x = this.el.getLeft(true);
+ s.y = this.el.getTop(true);
+ }else{
+ var xy = this.xy || this.el.getXY();
+ s.x = xy[0];
+ s.y = xy[1];
+ }
+ return s;
+ },
+
+
+ updateBox : function(box){
+ this.setSize(box.width, box.height);
+ this.setPagePosition(box.x, box.y);
+ return this;
+ },
+
+ getResizeEl : function(){
+ return this.resizeEl || this.el;
+ },
+
+ getPositionEl : function(){
+ return this.positionEl || this.el;
+ },
+
+
+ setPosition : function(x, y){
+ if(x && typeof x[1] == 'number'){
+ y = x[1];
+ x = x[0];
+ }
+ this.x = x;
+ this.y = y;
+ if(!this.boxReady){
+ return this;
+ }
+ var adj = this.adjustPosition(x, y);
+ var ax = adj.x, ay = adj.y;
+
+ var el = this.getPositionEl();
+ if(ax !== undefined || ay !== undefined){
+ if(ax !== undefined && ay !== undefined){
+ el.setLeftTop(ax, ay);
+ }else if(ax !== undefined){
+ el.setLeft(ax);
+ }else if(ay !== undefined){
+ el.setTop(ay);
+ }
+ this.onPosition(ax, ay);
+ this.fireEvent('move', this, ax, ay);
+ }
+ return this;
+ },
+
+
+ setPagePosition : function(x, y){
+ if(x && typeof x[1] == 'number'){
+ y = x[1];
+ x = x[0];
+ }
+ this.pageX = x;
+ this.pageY = y;
+ if(!this.boxReady){
+ return;
+ }
+ if(x === undefined || y === undefined){ return;
+ }
+ var p = this.el.translatePoints(x, y);
+ this.setPosition(p.left, p.top);
+ return this;
+ },
+
+ onRender : function(ct, position){
+ Ext.BoxComponent.superclass.onRender.call(this, ct, position);
+ if(this.resizeEl){
+ this.resizeEl = Ext.get(this.resizeEl);
+ }
+ if(this.positionEl){
+ this.positionEl = Ext.get(this.positionEl);
+ }
+ },
+
+ afterRender : function(){
+ Ext.BoxComponent.superclass.afterRender.call(this);
+ this.boxReady = true;
+ this.setSize(this.width, this.height);
+ if(this.x || this.y){
+ this.setPosition(this.x, this.y);
+ }else if(this.pageX || this.pageY){
+ this.setPagePosition(this.pageX, this.pageY);
+ }
+ },
+
+
+ syncSize : function(){
+ this.setSize(this.el.getWidth(), this.el.getHeight());
+ return this;
+ },
+
+
+ onResize : function(adjWidth, adjHeight, rawWidth, rawHeight){
+
+ },
+
+
+ onPosition : function(x, y){
+
+ },
+
+ adjustSize : function(w, h){
+ if(this.autoWidth){
+ w = 'auto';
+ }
+ if(this.autoHeight){
+ h = 'auto';
+ }
+ return {width : w, height: h};
+ },
+
+ adjustPosition : function(x, y){
+ return {x : x, y: y};
+ }
+});
+Ext.reg('box', Ext.BoxComponent);
+
+Ext.SplitBar = function(dragElement, resizingElement, orientation, placement, existingProxy){
+
+
+ this.el = Ext.get(dragElement, true);
+ this.el.dom.unselectable = "on";
+
+ this.resizingEl = Ext.get(resizingElement, true);
+
+
+ this.orientation = orientation || Ext.SplitBar.HORIZONTAL;
+
+
+ this.minSize = 0;
+
+
+ this.maxSize = 2000;
+
+
+ this.animate = false;
+
+
+ this.useShim = false;
+
+
+ this.shim = null;
+
+ if(!existingProxy){
+
+ this.proxy = Ext.SplitBar.createProxy(this.orientation);
+ }else{
+ this.proxy = Ext.get(existingProxy).dom;
+ }
+
+ this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId : this.proxy.id});
+
+
+ this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this);
+
+
+ this.dd.endDrag = this.onEndProxyDrag.createDelegate(this);
+
+
+ this.dragSpecs = {};
+
+
+ this.adapter = new Ext.SplitBar.BasicLayoutAdapter();
+ this.adapter.init(this);
+
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+
+ this.placement = placement || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT);
+ this.el.addClass("x-splitbar-h");
+ }else{
+
+ this.placement = placement || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM);
+ this.el.addClass("x-splitbar-v");
+ }
+
+ this.addEvents({
+
+ "resize" : true,
+
+ "moved" : true,
+
+ "beforeresize" : true,
+
+ "beforeapply" : true
+ });
+
+ Ext.SplitBar.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.SplitBar, Ext.util.Observable, {
+ onStartProxyDrag : function(x, y){
+ this.fireEvent("beforeresize", this);
+ this.overlay = Ext.DomHelper.append(document.body, {cls: "x-drag-overlay", html: " "}, true);
+ this.overlay.unselectable();
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+ Ext.get(this.proxy).setDisplayed("block");
+ var size = this.adapter.getElementSize(this);
+ this.activeMinSize = this.getMinimumSize();;
+ this.activeMaxSize = this.getMaximumSize();;
+ var c1 = size - this.activeMinSize;
+ var c2 = Math.max(this.activeMaxSize - size, 0);
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(
+ this.placement == Ext.SplitBar.LEFT ? c1 : c2,
+ this.placement == Ext.SplitBar.LEFT ? c2 : c1
+ );
+ this.dd.setYConstraint(0, 0);
+ }else{
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(0, 0);
+ this.dd.setYConstraint(
+ this.placement == Ext.SplitBar.TOP ? c1 : c2,
+ this.placement == Ext.SplitBar.TOP ? c2 : c1
+ );
+ }
+ this.dragSpecs.startSize = size;
+ this.dragSpecs.startPoint = [x, y];
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, x, y);
+ },
+
+
+ onEndProxyDrag : function(e){
+ Ext.get(this.proxy).setDisplayed(false);
+ var endPoint = Ext.lib.Event.getXY(e);
+ if(this.overlay){
+ this.overlay.remove();
+ delete this.overlay;
+ }
+ var newSize;
+ if(this.orientation == Ext.SplitBar.HORIZONTAL){
+ newSize = this.dragSpecs.startSize +
+ (this.placement == Ext.SplitBar.LEFT ?
+ endPoint[0] - this.dragSpecs.startPoint[0] :
+ this.dragSpecs.startPoint[0] - endPoint[0]
+ );
+ }else{
+ newSize = this.dragSpecs.startSize +
+ (this.placement == Ext.SplitBar.TOP ?
+ endPoint[1] - this.dragSpecs.startPoint[1] :
+ this.dragSpecs.startPoint[1] - endPoint[1]
+ );
+ }
+ newSize = Math.min(Math.max(newSize, this.activeMinSize), this.activeMaxSize);
+ if(newSize != this.dragSpecs.startSize){
+ if(this.fireEvent('beforeapply', this, newSize) !== false){
+ this.adapter.setElementSize(this, newSize);
+ this.fireEvent("moved", this, newSize);
+ this.fireEvent("resize", this, newSize);
+ }
+ }
+ },
+
+
+ getAdapter : function(){
+ return this.adapter;
+ },
+
+
+ setAdapter : function(adapter){
+ this.adapter = adapter;
+ this.adapter.init(this);
+ },
+
+
+ getMinimumSize : function(){
+ return this.minSize;
+ },
+
+
+ setMinimumSize : function(minSize){
+ this.minSize = minSize;
+ },
+
+
+ getMaximumSize : function(){
+ return this.maxSize;
+ },
+
+
+ setMaximumSize : function(maxSize){
+ this.maxSize = maxSize;
+ },
+
+
+ setCurrentSize : function(size){
+ var oldAnimate = this.animate;
+ this.animate = false;
+ this.adapter.setElementSize(this, size);
+ this.animate = oldAnimate;
+ },
+
+
+ destroy : function(removeEl){
+ if(this.shim){
+ this.shim.remove();
+ }
+ this.dd.unreg();
+ Ext.removeNode(this.proxy);
+ if(removeEl){
+ this.el.remove();
+ }
+ }
+});
+
+
+Ext.SplitBar.createProxy = function(dir){
+ var proxy = new Ext.Element(document.createElement("div"));
+ proxy.unselectable();
+ var cls = 'x-splitbar-proxy';
+ proxy.addClass(cls + ' ' + (dir == Ext.SplitBar.HORIZONTAL ? cls +'-h' : cls + '-v'));
+ document.body.appendChild(proxy.dom);
+ return proxy.dom;
+};
+
+
+Ext.SplitBar.BasicLayoutAdapter = function(){
+};
+
+Ext.SplitBar.BasicLayoutAdapter.prototype = {
+
+ init : function(s){
+
+ },
+
+ getElementSize : function(s){
+ if(s.orientation == Ext.SplitBar.HORIZONTAL){
+ return s.resizingEl.getWidth();
+ }else{
+ return s.resizingEl.getHeight();
+ }
+ },
+
+
+ setElementSize : function(s, newSize, onComplete){
+ if(s.orientation == Ext.SplitBar.HORIZONTAL){
+ if(!s.animate){
+ s.resizingEl.setWidth(newSize);
+ if(onComplete){
+ onComplete(s, newSize);
+ }
+ }else{
+ s.resizingEl.setWidth(newSize, true, .1, onComplete, 'easeOut');
+ }
+ }else{
+
+ if(!s.animate){
+ s.resizingEl.setHeight(newSize);
+ if(onComplete){
+ onComplete(s, newSize);
+ }
+ }else{
+ s.resizingEl.setHeight(newSize, true, .1, onComplete, 'easeOut');
+ }
+ }
+ }
+};
+
+
+Ext.SplitBar.AbsoluteLayoutAdapter = function(container){
+ this.basic = new Ext.SplitBar.BasicLayoutAdapter();
+ this.container = Ext.get(container);
+};
+
+Ext.SplitBar.AbsoluteLayoutAdapter.prototype = {
+ init : function(s){
+ this.basic.init(s);
+ },
+
+ getElementSize : function(s){
+ return this.basic.getElementSize(s);
+ },
+
+ setElementSize : function(s, newSize, onComplete){
+ this.basic.setElementSize(s, newSize, this.moveSplitter.createDelegate(this, [s]));
+ },
+
+ moveSplitter : function(s){
+ var yes = Ext.SplitBar;
+ switch(s.placement){
+ case yes.LEFT:
+ s.el.setX(s.resizingEl.getRight());
+ break;
+ case yes.RIGHT:
+ s.el.setStyle("right", (this.container.getWidth() - s.resizingEl.getLeft()) + "px");
+ break;
+ case yes.TOP:
+ s.el.setY(s.resizingEl.getBottom());
+ break;
+ case yes.BOTTOM:
+ s.el.setY(s.resizingEl.getTop() - s.el.getHeight());
+ break;
+ }
+ }
+};
+
+
+Ext.SplitBar.VERTICAL = 1;
+
+
+Ext.SplitBar.HORIZONTAL = 2;
+
+
+Ext.SplitBar.LEFT = 1;
+
+
+Ext.SplitBar.RIGHT = 2;
+
+
+Ext.SplitBar.TOP = 3;
+
+
+Ext.SplitBar.BOTTOM = 4;
+
+
+Ext.Container = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+
+
+
+
+ autoDestroy: true,
+
+
+ defaultType: 'panel',
+
+ initComponent : function(){
+ Ext.Container.superclass.initComponent.call(this);
+
+ this.addEvents({
+
+ 'beforeadd':true,
+
+ 'beforeremove':true,
+
+ 'add':true,
+
+ 'remove':true
+ });
+
+
+ var items = this.items;
+ if(items){
+ delete this.items;
+ if(items instanceof Array){
+ this.add.apply(this, items);
+ }else{
+ this.add(items);
+ }
+ }
+ },
+
+ initItems : function(){
+ if(!this.items){
+ this.items = new Ext.util.MixedCollection(false, this.getComponentId);
+ this.getLayout(); }
+ },
+
+ setLayout : function(layout){
+ if(this.layout && this.layout != layout){
+ this.layout.setContainer(null);
+ }
+ this.initItems();
+ this.layout = layout;
+ layout.setContainer(this);
+ },
+
+ render : function(){
+ Ext.Container.superclass.render.apply(this, arguments);
+ if(this.layout){
+ if(typeof this.layout == 'string'){
+ this.layout = new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig);
+ }
+ this.setLayout(this.layout);
+
+ if(this.activeItem !== undefined){
+ var item = this.activeItem;
+ delete this.activeItem;
+ this.layout.setActiveItem(item);
+ return;
+ }
+ }
+ if(!this.ownerCt){
+ this.doLayout();
+ }
+ if(this.monitorResize === true){
+ Ext.EventManager.onWindowResize(this.doLayout, this);
+ }
+ },
+
+ getLayoutTarget : function(){
+ return this.el;
+ },
+
+ getComponentId : function(comp){
+ return comp.itemId || comp.id;
+ },
+
+
+ add : function(comp){
+ if(!this.items){
+ this.initItems();
+ }
+ var a = arguments, len = a.length;
+ if(len > 1){
+ for(var i = 0; i < len; i++) {
+ this.add(a[i]);
+ }
+ return;
+ }
+ var c = this.lookupComponent(this.applyDefaults(comp));
+ var pos = this.items.length;
+ if(this.fireEvent('beforeadd', this, c, pos) !== false && this.onBeforeAdd(c) !== false){
+ this.items.add(c);
+ c.ownerCt = this;
+ this.fireEvent('add', this, c, pos);
+ }
+ return c;
+ },
+
+
+ insert : function(index, comp){
+ if(!this.items){
+ this.initItems();
+ }
+ var a = arguments, len = a.length;
+ if(len > 2){
+ for(var i = len-1; i >= 1; --i) {
+ this.insert(index, a[i]);
+ }
+ return;
+ }
+ var c = this.lookupComponent(this.applyDefaults(comp));
+
+ if(c.ownerCt == this && this.items.indexOf(c) < index){
+ --index;
+ }
+
+ if(this.fireEvent('beforeadd', this, c, index) !== false && this.onBeforeAdd(c) !== false){
+ this.items.insert(index, c);
+ c.ownerCt = this;
+ this.fireEvent('add', this, c, index);
+ }
+ return c;
+ },
+
+ applyDefaults : function(c){
+ if(this.defaults){
+ if(typeof c == 'string'){
+ c = Ext.ComponentMgr.get(c);
+ Ext.apply(c, this.defaults);
+ }else if(!c.events){
+ Ext.applyIf(c, this.defaults);
+ }else{
+ Ext.apply(c, this.defaults);
+ }
+ }
+ return c;
+ },
+
+ onBeforeAdd : function(item){
+ if(item.ownerCt){
+ item.ownerCt.remove(item, false);
+ }
+ if(this.hideBorders === true){
+ item.border = (item.border === true);
+ }
+ },
+
+
+ remove : function(comp, autoDestroy){
+ var c = this.getComponent(comp);
+ if(c && this.fireEvent('beforeremove', this, c) !== false){
+ this.items.remove(c);
+ delete c.ownerCt;
+ if(autoDestroy === true || (autoDestroy !== false && this.autoDestroy)){
+ c.destroy();
+ }
+ if(this.layout && this.layout.activeItem == c){
+ delete this.layout.activeItem;
+ }
+ this.fireEvent('remove', this, c);
+ }
+ return c;
+ },
+
+
+ getComponent : function(comp){
+ if(typeof comp == 'object'){
+ return comp;
+ }
+ return this.items.get(comp);
+ },
+
+ lookupComponent : function(comp){
+ if(typeof comp == 'string'){
+ return Ext.ComponentMgr.get(comp);
+ }else if(!comp.events){
+ return this.createComponent(comp);
+ }
+ return comp;
+ },
+
+ createComponent : function(config){
+ return Ext.ComponentMgr.create(config, this.defaultType);
+ },
+
+
+ doLayout : function(){
+ if(this.rendered && this.layout){
+ this.layout.layout();
+ }
+ if(this.items){
+ var cs = this.items.items;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ var c = cs[i];
+ if(c.doLayout){
+ c.doLayout();
+ }
+ }
+ }
+ },
+
+
+ getLayout : function(){
+ if(!this.layout){
+ var layout = new Ext.layout.ContainerLayout(this.layoutConfig);
+ this.setLayout(layout);
+ }
+ return this.layout;
+ },
+
+ onDestroy : function(){
+ if(this.items){
+ var cs = this.items.items;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ Ext.destroy(cs[i]);
+ }
+ }
+ if(this.monitorResize){
+ Ext.EventManager.removeResizeListener(this.doLayout, this);
+ }
+ Ext.Container.superclass.onDestroy.call(this);
+ },
+
+
+ bubble : function(fn, scope, args){
+ var p = this;
+ while(p){
+ if(fn.call(scope || p, args || p) === false){
+ break;
+ }
+ p = p.ownerCt;
+ }
+ },
+
+
+ cascade : function(fn, scope, args){
+ if(fn.call(scope || this, args || this) !== false){
+ if(this.items){
+ var cs = this.items.items;
+ for(var i = 0, len = cs.length; i < len; i++){
+ if(cs[i].cascade){
+ cs[i].cascade(fn, scope, args);
+ }
+ }
+ }
+ }
+ },
+
+
+ findById : function(id){
+ var m, ct = this;
+ this.cascade(function(c){
+ if(ct != c && c.id === id){
+ m = c;
+ return false;
+ }
+ });
+ return m || null;
+ },
+
+
+ findByType : function(xtype){
+ return typeof xtype == 'function' ?
+ this.findBy(function(c){
+ return c.constructor === xtype;
+ }) :
+ this.findBy(function(c){
+ return c.constructor.xtype === xtype;
+ });
+ },
+
+
+ find : function(prop, value){
+ return this.findBy(function(c){
+ return c[prop] === value;
+ });
+ },
+
+
+ findBy : function(fn, scope){
+ var m = [], ct = this;
+ this.cascade(function(c){
+ if(ct != c && fn.call(scope || c, c, ct) === true){
+ m.push(c);
+ }
+ });
+ return m;
+ }
+});
+
+Ext.Container.LAYOUTS = {};
+Ext.reg('container', Ext.Container);
+
+Ext.layout.ContainerLayout = function(config){
+ Ext.apply(this, config);
+};
+
+Ext.layout.ContainerLayout.prototype = {
+
+
+
+
+
+ monitorResize:false,
+ activeItem : null,
+
+ layout : function(){
+ var target = this.container.getLayoutTarget();
+ this.onLayout(this.container, target);
+ },
+
+ onLayout : function(ct, target){
+ this.renderAll(ct, target);
+ },
+
+ isValidParent : function(c, target){
+ return c.getEl().dom.parentNode == target.dom;
+ },
+
+ renderAll : function(ct, target){
+ var items = ct.items.items;
+ for(var i = 0, len = items.length; i < len; i++) {
+ var c = items[i];
+ if(c && (!c.rendered || !this.isValidParent(c, target))){
+ this.renderItem(c, i, target);
+ }
+ }
+ },
+
+ renderItem : function(c, position, target){
+ if(c && !c.rendered){
+ if(this.extraCls){
+ c.addClass(this.extraCls);
+ }
+ c.render(target, position);
+ if (this.renderHidden && c != this.activeItem) {
+ c.hide();
+ }
+ }else if(c && !this.isValidParent(c, target)){
+ if(this.extraCls){
+ c.addClass(this.extraCls);
+ }
+ if(typeof position == 'number'){
+ position = target.dom.childNodes[position];
+ }
+ target.dom.insertBefore(c.getEl().dom, position || null);
+ if (this.renderHidden && c != this.activeItem) {
+ c.hide();
+ }
+ }
+ },
+
+ onResize: function(){
+ if(this.container.collapsed){
+ return;
+ }
+ var b = this.container.bufferResize;
+ if(b){
+ if(!this.resizeTask){
+ this.resizeTask = new Ext.util.DelayedTask(this.layout, this);
+ this.resizeBuffer = typeof b == 'number' ? b : 100;
+ }
+ this.resizeTask.delay(this.resizeBuffer);
+ }else{
+ this.layout();
+ }
+ },
+
+ setContainer : function(ct){
+ if(this.monitorResize){
+ if(ct && this.container && ct != this.container){
+ this.container.un('resize', this.onResize, this);
+ }
+ ct.on('resize', this.onResize, this);
+ }
+ this.container = ct;
+ },
+
+ parseMargins : function(v){
+ var ms = v.split(' ');
+ var len = ms.length;
+ if(len == 1){
+ ms[1] = ms[0];
+ ms[2] = ms[0];
+ ms[3] = ms[0];
+ }
+ if(len == 2){
+ ms[2] = ms[0];
+ ms[3] = ms[1];
+ }
+ return {
+ top:parseInt(ms[0], 10) || 0,
+ right:parseInt(ms[1], 10) || 0,
+ bottom:parseInt(ms[2], 10) || 0,
+ left:parseInt(ms[3], 10) || 0
+ };
+ }
+};
+Ext.Container.LAYOUTS['auto'] = Ext.layout.ContainerLayout;
+
+Ext.layout.FitLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+
+ onLayout : function(ct, target){
+ Ext.layout.FitLayout.superclass.onLayout.call(this, ct, target);
+ if(!this.container.collapsed){
+ this.setItemSize(this.activeItem || ct.items.itemAt(0), target.getStyleSize());
+ }
+ },
+
+
+ setItemSize : function(item, size){
+ if(item && size.height > 0){
+ item.setSize(size);
+ }
+ }
+});
+Ext.Container.LAYOUTS['fit'] = Ext.layout.FitLayout;
+
+Ext.layout.CardLayout = Ext.extend(Ext.layout.FitLayout, {
+
+ deferredRender : false,
+
+
+ renderHidden : true,
+
+
+ setActiveItem : function(item){
+ item = this.container.getComponent(item);
+ if(this.activeItem != item){
+ if(this.activeItem){
+ this.activeItem.hide();
+ }
+ this.activeItem = item;
+ item.show();
+ this.layout();
+ }
+ },
+
+
+ renderAll : function(ct, target){
+ if(this.deferredRender){
+ this.renderItem(this.activeItem, undefined, target);
+ }else{
+ Ext.layout.CardLayout.superclass.renderAll.call(this, ct, target);
+ }
+ }
+});
+Ext.Container.LAYOUTS['card'] = Ext.layout.CardLayout;
+
+Ext.layout.AnchorLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+
+ getAnchorViewSize : function(ct, target){
+ return target.dom == document.body ?
+ target.getViewSize() : target.getStyleSize();
+ },
+
+
+ onLayout : function(ct, target){
+ Ext.layout.AnchorLayout.superclass.onLayout.call(this, ct, target);
+
+ var size = this.getAnchorViewSize(ct, target);
+
+ var w = size.width, h = size.height;
+
+ if(w < 20 || h < 20){
+ return;
+ }
+
+
+ var aw, ah;
+ if(ct.anchorSize){
+ if(typeof ct.anchorSize == 'number'){
+ aw = ct.anchorSize;
+ }else{
+ aw = ct.anchorSize.width;
+ ah = ct.anchorSize.height;
+ }
+ }else{
+ aw = ct.initialConfig.width;
+ ah = ct.initialConfig.height;
+ }
+
+ var cs = ct.items.items, len = cs.length, i, c, a, cw, ch;
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ if(c.anchor){
+ a = c.anchorSpec;
+ if(!a){
+ var vs = c.anchor.split(' ');
+ c.anchorSpec = a = {
+ right: this.parseAnchor(vs[0], c.initialConfig.width, aw),
+ bottom: this.parseAnchor(vs[1], c.initialConfig.width, ah)
+ };
+ }
+ cw = a.right ? this.adjustWidthAnchor(a.right(w), c) : undefined;
+ ch = a.bottom ? this.adjustHeightAnchor(a.bottom(h), c) : undefined;
+
+ if(cw || ch){
+ c.setSize(cw || undefined, ch || undefined);
+ }
+ }
+ }
+ },
+
+
+ parseAnchor : function(a, start, cstart){
+ if(a && a != 'none'){
+ var last;
+ if(/^(r|right|b|bottom)$/i.test(a)){
+ var diff = cstart - start;
+ return function(v){
+ if(v !== last){
+ last = v;
+ return v - diff;
+ }
+ }
+ }else if(a.indexOf('%') != -1){
+ var ratio = parseFloat(a.replace('%', ''))*.01;
+ return function(v){
+ if(v !== last){
+ last = v;
+ return Math.floor(v*ratio);
+ }
+ }
+ }else{
+ a = parseInt(a, 10);
+ if(!isNaN(a)){
+ return function(v){
+ if(v !== last){
+ last = v;
+ return v + a;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ },
+
+
+ adjustWidthAnchor : function(value, comp){
+ return value;
+ },
+
+
+ adjustHeightAnchor : function(value, comp){
+ return value;
+ }
+
+
+});
+Ext.Container.LAYOUTS['anchor'] = Ext.layout.AnchorLayout;
+
+Ext.layout.ColumnLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+ monitorResize:true,
+
+ extraCls: 'x-column',
+
+ scrollOffset : 0,
+
+
+ isValidParent : function(c, target){
+ return c.getEl().dom.parentNode == this.innerCt.dom;
+ },
+
+
+ onLayout : function(ct, target){
+ var cs = ct.items.items, len = cs.length, c, i;
+
+ if(!this.innerCt){
+ target.addClass('x-column-layout-ct');
+
+
+
+ this.innerCt = target.createChild({cls:'x-column-inner'});
+
+ this.renderAll(ct, this.innerCt);
+
+ this.innerCt.createChild({cls:'x-clear'});
+
+ }
+
+ var size = target.getViewSize();
+
+ if(size.width < 1 && size.height < 1){
+ return;
+ }
+
+ var w = size.width - target.getPadding('lr') - this.scrollOffset,
+ h = size.height - target.getPadding('tb'),
+ pw = w;
+
+ this.innerCt.setWidth(w);
+
+
+
+
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ if(!c.columnWidth){
+ pw -= (c.getSize().width + c.getEl().getMargins('lr'));
+ }
+ }
+
+ pw = pw < 0 ? 0 : pw;
+
+ for(i = 0; i < len; i++){
+ c = cs[i];
+ if(c.columnWidth){
+ c.setSize(Math.floor(c.columnWidth*pw) - c.getEl().getMargins('lr'));
+ }
+ }
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['column'] = Ext.layout.ColumnLayout;
+
+Ext.layout.BorderLayout = Ext.extend(Ext.layout.ContainerLayout, {
+ monitorResize:true,
+ rendered : false,
+
+ onLayout : function(ct, target){
+ var collapsed;
+ if(!this.rendered){
+ target.position();
+ target.addClass('x-border-layout-ct');
+ var items = ct.items.items;
+ collapsed = [];
+ for(var i = 0, len = items.length; i < len; i++) {
+ var c = items[i];
+ var pos = c.region;
+ if(c.collapsed){
+ collapsed.push(c);
+ }
+ c.collapsed = false;
+ if(!c.rendered){
+ c.cls = c.cls ? c.cls +' x-border-panel' : 'x-border-panel';
+ c.render(target, i);
+ }
+ this[pos] = pos != 'center' && c.split ?
+ new Ext.layout.BorderLayout.SplitRegion(this, c.initialConfig, pos) :
+ new Ext.layout.BorderLayout.Region(this, c.initialConfig, pos);
+ this[pos].render(target, c);
+ }
+ this.rendered = true;
+ }
+
+ var size = target.getViewSize();
+ if(size.width < 20 || size.height < 20){ if(collapsed){
+ this.restoreCollapsed = collapsed;
+ }
+ return;
+ }else if(this.restoreCollapsed){
+ collapsed = this.restoreCollapsed;
+ delete this.restoreCollapsed;
+ }
+
+ var w = size.width, h = size.height;
+ var centerW = w, centerH = h, centerY = 0, centerX = 0;
+
+ var n = this.north, s = this.south, west = this.west, e = this.east, c = this.center;
+ if(!c){
+ throw 'No center region defined in BorderLayout ' + ct.id;
+ }
+
+ if(n && n.isVisible()){
+ var b = n.getSize();
+ var m = n.getMargins();
+ b.width = w - (m.left+m.right);
+ b.x = m.left;
+ b.y = m.top;
+ centerY = b.height + b.y + m.bottom;
+ centerH -= centerY;
+ n.applyLayout(b);
+ }
+ if(s && s.isVisible()){
+ var b = s.getSize();
+ var m = s.getMargins();
+ b.width = w - (m.left+m.right);
+ b.x = m.left;
+ var totalHeight = (b.height + m.top + m.bottom);
+ b.y = h - totalHeight + m.top;
+ centerH -= totalHeight;
+ s.applyLayout(b);
+ }
+ if(west && west.isVisible()){
+ var b = west.getSize();
+ var m = west.getMargins();
+ b.height = centerH - (m.top+m.bottom);
+ b.x = m.left;
+ b.y = centerY + m.top;
+ var totalWidth = (b.width + m.left + m.right);
+ centerX += totalWidth;
+ centerW -= totalWidth;
+ west.applyLayout(b);
+ }
+ if(e && e.isVisible()){
+ var b = e.getSize();
+ var m = e.getMargins();
+ b.height = centerH - (m.top+m.bottom);
+ var totalWidth = (b.width + m.left + m.right);
+ b.x = w - totalWidth + m.left;
+ b.y = centerY + m.top;
+ centerW -= totalWidth;
+ e.applyLayout(b);
+ }
+
+ var m = c.getMargins();
+ var centerBox = {
+ x: centerX + m.left,
+ y: centerY + m.top,
+ width: centerW - (m.left+m.right),
+ height: centerH - (m.top+m.bottom)
+ };
+ c.applyLayout(centerBox);
+
+ if(collapsed){
+ for(var i = 0, len = collapsed.length; i < len; i++){
+ collapsed[i].collapse(false);
+ }
+ }
+
+ if(Ext.isIE && Ext.isStrict){ target.repaint();
+ }
+ }
+
+
+});
+
+
+Ext.layout.BorderLayout.Region = function(layout, config, pos){
+ Ext.apply(this, config);
+ this.layout = layout;
+ this.position = pos;
+ this.state = {};
+ if(typeof this.margins == 'string'){
+ this.margins = this.layout.parseMargins(this.margins);
+ }
+ this.margins = Ext.applyIf(this.margins || {}, this.defaultMargins);
+ if(this.collapsible){
+ if(typeof this.cmargins == 'string'){
+ this.cmargins = this.layout.parseMargins(this.cmargins);
+ }
+ if(this.collapseMode == 'mini' && !this.cmargins){
+ this.cmargins = {left:0,top:0,right:0,bottom:0};
+ }else{
+ this.cmargins = Ext.applyIf(this.cmargins || {},
+ pos == 'north' || pos == 'south' ? this.defaultNSCMargins : this.defaultEWCMargins);
+ }
+ }
+};
+
+Ext.layout.BorderLayout.Region.prototype = {
+
+
+
+
+
+
+ collapsible : false,
+
+ split:false,
+
+ floatable: true,
+
+ minWidth:50,
+
+ minHeight:50,
+
+ defaultMargins : {left:0,top:0,right:0,bottom:0},
+ defaultNSCMargins : {left:5,top:5,right:5,bottom:5},
+ defaultEWCMargins : {left:5,top:0,right:5,bottom:0},
+
+
+ isCollapsed : false,
+
+
+
+
+
+ render : function(ct, p){
+ this.panel = p;
+ p.el.enableDisplayMode('block');
+ this.targetEl = ct;
+ this.el = p.el;
+
+ var gs = p.getState, ps = this.position;
+ p.getState = function(){
+ return Ext.apply(gs.call(p) || {}, this.state);
+ }.createDelegate(this);
+
+ if(ps != 'center'){
+ p.allowQueuedExpand = false;
+ p.on({
+ beforecollapse: this.beforeCollapse,
+ collapse: this.onCollapse,
+ beforeexpand: this.beforeExpand,
+ expand: this.onExpand,
+ hide: this.onHide,
+ show: this.onShow,
+ scope: this
+ });
+ if(this.collapsible){
+ p.collapseEl = 'el';
+ p.slideAnchor = this.getSlideAnchor();
+ }
+ if(p.tools && p.tools.toggle){
+ p.tools.toggle.addClass('x-tool-collapse-'+ps);
+ p.tools.toggle.addClassOnOver('x-tool-collapse-'+ps+'-over');
+ }
+ }
+ },
+
+ getCollapsedEl : function(){
+ if(!this.collapsedEl){
+ if(!this.toolTemplate){
+ var tt = new Ext.Template(
+ '<div class="x-tool x-tool-{id}"> </div>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.layout.BorderLayout.Region.prototype.toolTemplate = tt;
+ }
+ this.collapsedEl = this.targetEl.createChild({
+ cls: "x-layout-collapsed x-layout-collapsed-"+this.position
+ });
+ this.collapsedEl.enableDisplayMode('block');
+
+ if(this.collapseMode == 'mini'){
+ this.collapsedEl.addClass('x-layout-cmini-'+this.position);
+ this.miniCollapsedEl = this.collapsedEl.createChild({
+ cls: "x-layout-mini x-layout-mini-"+this.position, html: " "
+ });
+ this.miniCollapsedEl.addClassOnOver('x-layout-mini-over');
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on('click', this.onExpandClick, this, {stopEvent:true});
+ }else {
+ var t = this.toolTemplate.append(
+ this.collapsedEl.dom,
+ {id:'expand-'+this.position}, true);
+ t.addClassOnOver('x-tool-expand-'+this.position+'-over');
+ t.on('click', this.onExpandClick, this, {stopEvent:true});
+
+ if(this.floatable !== false){
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on("click", this.collapseClick, this);
+ }
+ }
+ }
+ return this.collapsedEl;
+ },
+
+ onExpandClick : function(e){
+ if(this.isSlid){
+ this.afterSlideIn();
+ this.panel.expand(false);
+ }else{
+ this.panel.expand();
+ }
+ },
+
+ onCollapseClick : function(e){
+ this.panel.collapse();
+ },
+
+ beforeCollapse : function(p, animate){
+ this.lastAnim = animate;
+ if(this.splitEl){
+ this.splitEl.hide();
+ }
+ this.getCollapsedEl().show();
+ this.panel.el.setStyle('z-index', 100);
+ this.isCollapsed = true;
+ this.layout.layout();
+ },
+
+ onCollapse : function(animate){
+ this.panel.el.setStyle('z-index', 1);
+ if(this.lastAnim === false || this.panel.animCollapse === false){
+ this.getCollapsedEl().dom.style.visibility = 'visible';
+ }else{
+ this.getCollapsedEl().slideIn(this.panel.slideAnchor, {duration:.2});
+ }
+ this.state.collapsed = true;
+ this.panel.saveState();
+ },
+
+ beforeExpand : function(animate){
+ var c = this.getCollapsedEl();
+ this.el.show();
+ if(this.position == 'east' || this.position == 'west'){
+ this.panel.setSize(undefined, c.getHeight());
+ }else{
+ this.panel.setSize(c.getWidth(), undefined);
+ }
+ c.hide();
+ c.dom.style.visibility = 'hidden';
+ this.panel.el.setStyle('z-index', 100);
+ },
+
+ onExpand : function(){
+ this.isCollapsed = false;
+ if(this.splitEl){
+ this.splitEl.show();
+ }
+ this.layout.layout();
+ this.panel.el.setStyle('z-index', 1);
+ this.state.collapsed = false;
+ this.panel.saveState();
+ },
+
+ collapseClick : function(e){
+ if(this.isSlid){
+ e.stopPropagation();
+ this.slideIn();
+ }else{
+ e.stopPropagation();
+ this.slideOut();
+ }
+ },
+
+ onHide : function(){
+ if(this.isCollapsed){
+ this.getCollapsedEl().hide();
+ }else if(this.splitEl){
+ this.splitEl.hide();
+ }
+ },
+
+ onShow : function(){
+ if(this.isCollapsed){
+ this.getCollapsedEl().show();
+ }else if(this.splitEl){
+ this.splitEl.show();
+ }
+ },
+
+
+ isVisible : function(){
+ return !this.panel.hidden;
+ },
+
+
+ getMargins : function(){
+ return this.isCollapsed && this.cmargins ? this.cmargins : this.margins;
+ },
+
+
+ getSize : function(){
+ return this.isCollapsed ? this.getCollapsedEl().getSize() : this.panel.getSize();
+ },
+
+
+ setPanel : function(panel){
+ this.panel = panel;
+ },
+
+
+ getMinWidth: function(){
+ return this.minWidth;
+ },
+
+
+ getMinHeight: function(){
+ return this.minHeight;
+ },
+
+ applyLayoutCollapsed : function(box){
+ var ce = this.getCollapsedEl();
+ ce.setLeftTop(box.x, box.y);
+ ce.setSize(box.width, box.height);
+ },
+
+ applyLayout : function(box){
+ if(this.isCollapsed){
+ this.applyLayoutCollapsed(box);
+ }else{
+ this.panel.setPosition(box.x, box.y);
+ this.panel.setSize(box.width, box.height);
+ }
+ },
+
+ beforeSlide: function(){
+ this.panel.beforeEffect();
+ },
+
+ afterSlide : function(){
+ this.panel.afterEffect();
+ },
+
+ initAutoHide : function(){
+ if(this.autoHide !== false){
+ if(!this.autoHideHd){
+ var st = new Ext.util.DelayedTask(this.slideIn, this);
+ this.autoHideHd = {
+ "mouseout": function(e){
+ if(!e.within(this.el, true)){
+ st.delay(500);
+ }
+ },
+ "mouseover" : function(e){
+ st.cancel();
+ },
+ scope : this
+ };
+ }
+ this.el.on(this.autoHideHd);
+ }
+ },
+
+ clearAutoHide : function(){
+ if(this.autoHide !== false){
+ this.el.un("mouseout", this.autoHideHd.mouseout);
+ this.el.un("mouseover", this.autoHideHd.mouseover);
+ }
+ },
+
+ clearMonitor : function(){
+ Ext.getDoc().un("click", this.slideInIf, this);
+ },
+
+ slideOut : function(){
+ if(this.isSlid || this.el.hasActiveFx()){
+ return;
+ }
+ this.isSlid = true;
+ var ts = this.panel.tools;
+ if(ts && ts.toggle){
+ ts.toggle.hide();
+ }
+ this.el.show();
+ if(this.position == 'east' || this.position == 'west'){
+ this.panel.setSize(undefined, this.collapsedEl.getHeight());
+ }else{
+ this.panel.setSize(this.collapsedEl.getWidth(), undefined);
+ }
+ this.restoreLT = [this.el.dom.style.left, this.el.dom.style.top];
+ this.el.alignTo(this.collapsedEl, this.getCollapseAnchor());
+ this.el.setStyle("z-index", 102);
+ if(this.animFloat !== false){
+ this.beforeSlide();
+ this.el.slideIn(this.getSlideAnchor(), {
+ callback: function(){
+ this.afterSlide();
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this);
+ },
+ scope: this,
+ block: true
+ });
+ }else{
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this);
+ }
+ },
+
+ afterSlideIn : function(){
+ this.clearAutoHide();
+ this.isSlid = false;
+ this.clearMonitor();
+ this.el.setStyle("z-index", "");
+ this.el.dom.style.left = this.restoreLT[0];
+ this.el.dom.style.top = this.restoreLT[1];
+
+ var ts = this.panel.tools;
+ if(ts && ts.toggle){
+ ts.toggle.show();
+ }
+ },
+
+ slideIn : function(cb){
+ if(!this.isSlid || this.el.hasActiveFx()){
+ Ext.callback(cb);
+ return;
+ }
+ this.isSlid = false;
+ if(this.animFloat !== false){
+ this.beforeSlide();
+ this.el.slideOut(this.getSlideAnchor(), {
+ callback: function(){
+ this.el.hide();
+ this.afterSlide();
+ this.afterSlideIn();
+ Ext.callback(cb);
+ },
+ scope: this,
+ block: true
+ });
+ }else{
+ this.el.hide();
+ this.afterSlideIn();
+ }
+ },
+
+ slideInIf : function(e){
+ if(!e.within(this.el)){
+ this.slideIn();
+ }
+ },
+
+ anchors : {
+ "west" : "left",
+ "east" : "right",
+ "north" : "top",
+ "south" : "bottom"
+ },
+
+ sanchors : {
+ "west" : "l",
+ "east" : "r",
+ "north" : "t",
+ "south" : "b"
+ },
+
+ canchors : {
+ "west" : "tl-tr",
+ "east" : "tr-tl",
+ "north" : "tl-bl",
+ "south" : "bl-tl"
+ },
+
+ getAnchor : function(){
+ return this.anchors[this.position];
+ },
+
+ getCollapseAnchor : function(){
+ return this.canchors[this.position];
+ },
+
+ getSlideAnchor : function(){
+ return this.sanchors[this.position];
+ },
+
+ getAlignAdj : function(){
+ var cm = this.cmargins;
+ switch(this.position){
+ case "west":
+ return [0, 0];
+ break;
+ case "east":
+ return [0, 0];
+ break;
+ case "north":
+ return [0, 0];
+ break;
+ case "south":
+ return [0, 0];
+ break;
+ }
+ },
+
+ getExpandAdj : function(){
+ var c = this.collapsedEl, cm = this.cmargins;
+ switch(this.position){
+ case "west":
+ return [-(cm.right+c.getWidth()+cm.left), 0];
+ break;
+ case "east":
+ return [cm.right+c.getWidth()+cm.left, 0];
+ break;
+ case "north":
+ return [0, -(cm.top+cm.bottom+c.getHeight())];
+ break;
+ case "south":
+ return [0, cm.top+cm.bottom+c.getHeight()];
+ break;
+ }
+ }
+};
+
+
+Ext.layout.BorderLayout.SplitRegion = function(layout, config, pos){
+ Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this, layout, config, pos);
+ this.applyLayout = this.applyFns[pos];
+};
+
+Ext.extend(Ext.layout.BorderLayout.SplitRegion, Ext.layout.BorderLayout.Region, {
+
+ splitTip : "Drag to resize.",
+
+ collapsibleSplitTip : "Drag to resize. Double click to hide.",
+
+ useSplitTips : false,
+
+ splitSettings : {
+ north : {
+ orientation: Ext.SplitBar.VERTICAL,
+ placement: Ext.SplitBar.TOP,
+ maxFn : 'getVMaxSize',
+ minProp: 'minHeight',
+ maxProp: 'maxHeight'
+ },
+ south : {
+ orientation: Ext.SplitBar.VERTICAL,
+ placement: Ext.SplitBar.BOTTOM,
+ maxFn : 'getVMaxSize',
+ minProp: 'minHeight',
+ maxProp: 'maxHeight'
+ },
+ east : {
+ orientation: Ext.SplitBar.HORIZONTAL,
+ placement: Ext.SplitBar.RIGHT,
+ maxFn : 'getHMaxSize',
+ minProp: 'minWidth',
+ maxProp: 'maxWidth'
+ },
+ west : {
+ orientation: Ext.SplitBar.HORIZONTAL,
+ placement: Ext.SplitBar.LEFT,
+ maxFn : 'getHMaxSize',
+ minProp: 'minWidth',
+ maxProp: 'maxWidth'
+ }
+ },
+
+ applyFns : {
+ west : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ this.panel.setPosition(box.x, box.y);
+ var sw = sd.offsetWidth;
+ s.left = (box.x+box.width-sw)+'px';
+ s.top = (box.y)+'px';
+ s.height = Math.max(0, box.height)+'px';
+ this.panel.setSize(box.width-sw, box.height);
+ },
+ east : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sw = sd.offsetWidth;
+ this.panel.setPosition(box.x+sw, box.y);
+ s.left = (box.x)+'px';
+ s.top = (box.y)+'px';
+ s.height = Math.max(0, box.height)+'px';
+ this.panel.setSize(box.width-sw, box.height);
+ },
+ north : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sh = sd.offsetHeight;
+ this.panel.setPosition(box.x, box.y);
+ s.left = (box.x)+'px';
+ s.top = (box.y+box.height-sh)+'px';
+ s.width = Math.max(0, box.width)+'px';
+ this.panel.setSize(box.width, box.height-sh);
+ },
+ south : function(box){
+ if(this.isCollapsed){
+ return this.applyLayoutCollapsed(box);
+ }
+ var sd = this.splitEl.dom, s = sd.style;
+ var sh = sd.offsetHeight;
+ this.panel.setPosition(box.x, box.y+sh);
+ s.left = (box.x)+'px';
+ s.top = (box.y)+'px';
+ s.width = Math.max(0, box.width)+'px';
+ this.panel.setSize(box.width, box.height-sh);
+ }
+ },
+
+ render : function(ct, p){
+ Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this, ct, p);
+
+ var ps = this.position;
+
+ this.splitEl = ct.createChild({
+ cls: "x-layout-split x-layout-split-"+ps, html: " "
+ });
+
+ if(this.collapseMode == 'mini'){
+ this.miniSplitEl = this.splitEl.createChild({
+ cls: "x-layout-mini x-layout-mini-"+ps, html: " "
+ });
+ this.miniSplitEl.addClassOnOver('x-layout-mini-over');
+ this.miniSplitEl.on('click', this.onCollapseClick, this, {stopEvent:true});
+ }
+
+ var s = this.splitSettings[ps];
+
+ this.split = new Ext.SplitBar(this.splitEl.dom, p.el, s.orientation);
+ this.split.placement = s.placement;
+ this.split.getMaximumSize = this[s.maxFn].createDelegate(this);
+ this.split.minSize = this.minSize || this[s.minProp];
+ this.split.on("beforeapply", this.onSplitMove, this);
+ this.split.useShim = this.useShim === true;
+ this.maxSize = this.maxSize || this[s.maxProp];
+
+ if(p.hidden){
+ this.splitEl.hide();
+ }
+
+ if(this.useSplitTips){
+ this.splitEl.dom.title = this.collapsible ? this.collapsibleSplitTip : this.splitTip;
+ }
+ if(this.collapsible){
+ this.splitEl.on("dblclick", this.onCollapseClick, this);
+ }
+ },
+
+ getSize : function(){
+ if(this.isCollapsed){
+ return this.collapsedEl.getSize();
+ }
+ var s = this.panel.getSize();
+ if(this.position == 'north' || this.position == 'south'){
+ s.height += this.splitEl.dom.offsetHeight;
+ }else{
+ s.width += this.splitEl.dom.offsetWidth;
+ }
+ return s;
+ },
+
+ getHMaxSize : function(){
+ var cmax = this.maxSize || 10000;
+ var center = this.layout.center;
+ return Math.min(cmax, (this.el.getWidth()+center.el.getWidth())-center.getMinWidth());
+ },
+
+ getVMaxSize : function(){
+ var cmax = this.maxSize || 10000;
+ var center = this.layout.center;
+ return Math.min(cmax, (this.el.getHeight()+center.el.getHeight())-center.getMinHeight());
+ },
+
+ onSplitMove : function(split, newSize){
+ var s = this.panel.getSize();
+ this.lastSplitSize = newSize;
+ if(this.position == 'north' || this.position == 'south'){
+ this.panel.setSize(s.width, newSize);
+ this.state.height = newSize;
+ }else{
+ this.panel.setSize(newSize, s.height);
+ this.state.width = newSize;
+ }
+ this.layout.layout();
+ this.panel.saveState();
+ return false;
+ },
+
+
+ getSplitBar : function(){
+ return this.split;
+ }
+});
+
+Ext.Container.LAYOUTS['border'] = Ext.layout.BorderLayout;
+
+Ext.layout.FormLayout = Ext.extend(Ext.layout.AnchorLayout, {
+
+
+
+ labelSeparator : ':',
+
+ getAnchorViewSize : function(ct, target){
+ return ct.body.getStyleSize();
+ },
+
+ setContainer : function(ct){
+ Ext.layout.FormLayout.superclass.setContainer.call(this, ct);
+
+ if(ct.labelAlign){
+ ct.addClass('x-form-label-'+ct.labelAlign);
+ }
+
+ if(ct.hideLabels){
+ this.labelStyle = "display:none";
+ this.elementStyle = "padding-left:0;";
+ this.labelAdjust = 0;
+ }else{
+ this.labelSeparator = ct.labelSeparator || this.labelSeparator;
+ if(typeof ct.labelWidth == 'number'){
+ var pad = (typeof ct.labelPad == 'number' ? ct.labelPad : 5);
+ this.labelAdjust = ct.labelWidth+pad;
+ this.labelStyle = "width:"+ct.labelWidth+"px;";
+ this.elementStyle = "padding-left:"+(ct.labelWidth+pad)+'px';
+ }
+ if(ct.labelAlign == 'top'){
+ this.labelStyle = "width:auto;";
+ this.labelAdjust = 0;
+ this.elementStyle = "padding-left:0;";
+ }
+ }
+
+ if(!this.fieldTpl){
+ var t = new Ext.Template(
+ '<div class="x-form-item {5}" tabIndex="-1">',
+ '<label for="{0}" style="{2}" class="x-form-item-label">{1}{4}</label>',
+ '<div class="x-form-element" id="x-form-el-{0}" style="{3}">',
+ '</div>',
+ '</div><div class="{6}"></div>'
+ );
+ t.disableFormats = true;
+ t.compile();
+ Ext.layout.FormLayout.prototype.fieldTpl = t;
+ }
+ },
+
+ renderItem : function(c, position, target){
+ if(c && !c.rendered && c.isFormField && c.inputType != 'hidden'){
+ var args = [
+ c.id, c.fieldLabel,
+ c.labelStyle||this.labelStyle||'',
+ this.elementStyle||'',
+ typeof c.labelSeparator == 'undefined' ? this.labelSeparator : c.labelSeparator,
+ (c.itemCls||this.container.itemCls||'') + (c.hideLabel ? ' x-hide-label' : ''),
+ c.clearCls || 'x-form-clear-left'
+ ];
+ if(typeof position == 'number'){
+ position = target.dom.childNodes[position] || null;
+ }
+ if(position){
+ this.fieldTpl.insertBefore(position, args);
+ }else{
+ this.fieldTpl.append(target, args);
+ }
+ c.render('x-form-el-'+c.id);
+ }else {
+ Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments);
+ }
+ },
+
+ adjustWidthAnchor : function(value, comp){
+ return value - (comp.hideLabel ? 0 : this.labelAdjust);
+ },
+
+ isValidParent : function(c, target){
+ return true;
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['form'] = Ext.layout.FormLayout;
+
+Ext.layout.Accordion = Ext.extend(Ext.layout.FitLayout, {
+
+ fill : true,
+
+ autoWidth : true,
+
+ titleCollapse : true,
+
+ hideCollapseTool : false,
+
+ collapseFirst : false,
+
+ animate : false,
+
+ activeOnTop : false,
+
+ renderItem : function(c){
+ if(this.animate === false){
+ c.animCollapse = false;
+ }
+ c.collapsible = true;
+ if(this.autoWidth){
+ c.autoWidth = true;
+ }
+ if(this.titleCollapse){
+ c.titleCollapse = true;
+ }
+ if(this.hideCollapseTool){
+ c.hideCollapseTool = true;
+ }
+ if(this.collapseFirst !== undefined){
+ c.collapseFirst = this.collapseFirst;
+ }
+ if(!this.activeItem && !c.collapsed){
+ this.activeItem = c;
+ }else if(this.activeItem){
+ c.collapsed = true;
+ }
+ Ext.layout.Accordion.superclass.renderItem.apply(this, arguments);
+ c.header.addClass('x-accordion-hd');
+ c.on('beforeexpand', this.beforeExpand, this);
+ },
+
+
+ beforeExpand : function(p){
+ var oldActive = this.activeItem;
+ if(oldActive){
+ oldActive.collapse(this.animate);
+ }
+ this.activeItem = p;
+ if(this.activeOnTop){
+ p.el.dom.parentNode.insertBefore(p.el.dom, p.el.dom.parentNode.firstChild);
+ }
+ this.layout();
+ },
+
+
+ setItemSize : function(item, size){
+ if(this.fill && item){
+ var items = this.container.items.items;
+ var hh = 0;
+ for(var i = 0, len = items.length; i < len; i++){
+ var p = items[i];
+ if(p != item){
+ hh += (p.getSize().height - p.bwrap.getHeight());
+ }
+ }
+ size.height -= hh;
+ item.setSize(size);
+ }
+ }
+});
+Ext.Container.LAYOUTS['accordion'] = Ext.layout.Accordion;
+
+Ext.layout.TableLayout = Ext.extend(Ext.layout.ContainerLayout, {
+
+
+
+ monitorResize:false,
+
+
+ setContainer : function(ct){
+ Ext.layout.TableLayout.superclass.setContainer.call(this, ct);
+
+ this.currentRow = 0;
+ this.currentColumn = 0;
+ },
+
+
+ onLayout : function(ct, target){
+ var cs = ct.items.items, len = cs.length, c, i;
+
+ if(!this.table){
+ target.addClass('x-table-layout-ct');
+
+ this.table = target.createChild(
+ {tag:'table', cls:'x-table-layout', cellspacing: 0, cn: {tag: 'tbody'}}, null, true);
+
+ this.renderAll(ct, target);
+ }
+ },
+
+
+ getRow : function(index){
+ var row = this.table.tBodies[0].childNodes[index];
+ if(!row){
+ row = document.createElement('tr');
+ this.table.tBodies[0].appendChild(row);
+ }
+ return row;
+ },
+
+
+ getNextCell : function(c){
+ var td = document.createElement('td'), row;
+ if(!this.columns){
+ row = this.getRow(0);
+ }else {
+ if(this.currentColumn !== 0 && (this.currentColumn % this.columns === 0)){
+ row = this.getRow(++this.currentRow);
+ this.currentColumn = (c.colspan || 1);
+ }else{
+ row = this.getRow(this.currentRow);
+ this.currentColumn += (c.colspan || 1);
+ }
+ }
+ if(c.colspan){
+ td.colSpan = c.colspan;
+ }
+ if(c.rowspan){
+ td.rowSpan = c.rowspan;
+ }
+ td.className = 'x-table-layout-cell';
+ row.appendChild(td);
+ return td;
+ },
+
+
+ renderItem : function(c, position, target){
+ if(c && !c.rendered){
+ c.render(this.getNextCell(c));
+ }
+ },
+
+
+ isValidParent : function(c, target){
+ return true;
+ }
+
+
+});
+
+Ext.Container.LAYOUTS['table'] = Ext.layout.TableLayout;
+
+Ext.layout.AbsoluteLayout = Ext.extend(Ext.layout.AnchorLayout, {
+ extraCls: 'x-abs-layout-item',
+ onLayout : function(ct, target){
+ target.position();
+ Ext.layout.AbsoluteLayout.superclass.onLayout.call(this, ct, target);
+ }
+
+});
+Ext.Container.LAYOUTS['absolute'] = Ext.layout.AbsoluteLayout;
+
+Ext.Viewport = Ext.extend(Ext.Container, {
+ initComponent : function() {
+ Ext.Viewport.superclass.initComponent.call(this);
+ document.getElementsByTagName('html')[0].className += ' x-viewport';
+ this.el = Ext.getBody();
+ this.el.setHeight = Ext.emptyFn;
+ this.el.setWidth = Ext.emptyFn;
+ this.el.setSize = Ext.emptyFn;
+ this.el.dom.scroll = 'no';
+ this.allowDomMove = false;
+ this.autoWidth = true;
+ this.autoHeight = true;
+ Ext.EventManager.onWindowResize(this.fireResize, this);
+ this.renderTo = this.el;
+ },
+
+ fireResize : function(w, h){
+ this.fireEvent('resize', this, w, h, w, h);
+ }
+});
+Ext.reg('viewport', Ext.Viewport);
+
+Ext.Panel = Ext.extend(Ext.Container, {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ baseCls : 'x-panel',
+
+ collapsedCls : 'x-panel-collapsed',
+
+ maskDisabled: true,
+
+ animCollapse: Ext.enableFx,
+
+ headerAsText: true,
+
+ buttonAlign: 'right',
+
+ collapsed : false,
+
+ collapseFirst: true,
+
+ minButtonWidth:75,
+
+ elements : 'body',
+
+ toolTarget : 'header',
+ collapseEl : 'bwrap',
+ slideAnchor : 't',
+
+ deferHeight: true,
+ expandDefaults: {
+ duration:.25
+ },
+ collapseDefaults: {
+ duration:.25
+ },
+
+ initComponent : function(){
+ Ext.Panel.superclass.initComponent.call(this);
+
+ this.addEvents({
+
+ bodyresize : true,
+
+ titlechange: true,
+
+ collapse : true,
+
+ expand:true,
+
+ beforecollapse : true,
+
+ beforeexpand:true,
+
+ beforeclose: true,
+
+ close: true,
+
+ activate: true,
+
+ deactivate: true
+ });
+
+ if(this.tbar){
+ this.elements += ',tbar';
+ if(typeof this.tbar == 'object'){
+ this.topToolbar = this.tbar;
+ }
+ delete this.tbar;
+ }
+ if(this.bbar){
+ this.elements += ',bbar';
+ if(typeof this.bbar == 'object'){
+ this.bottomToolbar = this.bbar;
+ }
+ delete this.bbar;
+ }
+
+ if(this.header === true){
+ this.elements += ',header';
+ delete this.header;
+ }else if(this.title && this.header !== false){
+ this.elements += ',header';
+ }
+
+ if(this.footer === true){
+ this.elements += ',footer';
+ delete this.footer;
+ }
+
+ if(this.buttons){
+ var btns = this.buttons;
+ delete this.buttons;
+ for(var i = 0, len = btns.length; i < len; i++) {
+ this.addButton(btns[i]);
+ }
+ }
+ if(this.autoLoad){
+ this.on('render', this.doAutoLoad, this, {delay:10});
+ }
+ },
+
+ createElement : function(name, pnode){
+ if(this[name]){
+ pnode.appendChild(this[name].dom);
+ return;
+ }
+
+ if(name === 'bwrap' || this.elements.indexOf(name) != -1){
+ if(this[name+'Cfg']){
+ this[name] = Ext.fly(pnode).createChild(this[name+'Cfg']);
+ }else{
+ var el = document.createElement('div');
+ el.className = this[name+'Cls'];
+ this[name] = Ext.get(pnode.appendChild(el));
+ }
+ }
+ },
+
+ onRender : function(ct, position){
+ Ext.Panel.superclass.onRender.call(this, ct, position);
+
+ this.createClasses();
+
+ if(this.el){ this.el.addClass(this.baseCls);
+ this.header = this.el.down('.'+this.headerCls);
+ this.bwrap = this.el.down('.'+this.bwrapCls);
+ var cp = this.bwrap ? this.bwrap : this.el;
+ this.tbar = cp.down('.'+this.tbarCls);
+ this.body = cp.down('.'+this.bodyCls);
+ this.bbar = cp.down('.'+this.bbarCls);
+ this.footer = cp.down('.'+this.footerCls);
+ this.fromMarkup = true;
+ }else{
+ this.el = ct.createChild({
+ id: this.id,
+ cls: this.baseCls
+ }, position);
+ }
+ var el = this.el, d = el.dom;
+
+ if(this.cls){
+ this.el.addClass(this.cls);
+ }
+
+ if(this.buttons){
+ this.elements += ',footer';
+ }
+
+
+ if(this.frame){
+ el.insertHtml('afterBegin', String.format(Ext.Element.boxMarkup, this.baseCls));
+
+ this.createElement('header', d.firstChild.firstChild.firstChild);
+ this.createElement('bwrap', d);
+
+ var bw = this.bwrap.dom;
+ var ml = d.childNodes[1], bl = d.childNodes[2];
+ bw.appendChild(ml);
+ bw.appendChild(bl);
+
+ var mc = bw.firstChild.firstChild.firstChild;
+ this.createElement('tbar', mc);
+ this.createElement('body', mc);
+ this.createElement('bbar', mc);
+ this.createElement('footer', bw.lastChild.firstChild.firstChild);
+
+ if(!this.footer){
+ this.bwrap.dom.lastChild.className += ' x-panel-nofooter';
+ }
+ }else{
+ this.createElement('header', d);
+ this.createElement('bwrap', d);
+
+ var bw = this.bwrap.dom;
+ this.createElement('tbar', bw);
+ this.createElement('body', bw);
+ this.createElement('bbar', bw);
+ this.createElement('footer', bw);
+
+ if(!this.header){
+ this.body.addClass(this.bodyCls + '-noheader');
+ if(this.tbar){
+ this.tbar.addClass(this.tbarCls + '-noheader');
+ }
+ }
+ }
+
+ if(this.border === false){
+ this.el.addClass(this.baseCls + '-noborder');
+ this.body.addClass(this.bodyCls + '-noborder');
+ if(this.header){
+ this.header.addClass(this.headerCls + '-noborder');
+ }
+ if(this.footer){
+ this.footer.addClass(this.footerCls + '-noborder');
+ }
+ if(this.tbar){
+ this.tbar.addClass(this.tbarCls + '-noborder');
+ }
+ if(this.bbar){
+ this.bbar.addClass(this.bbarCls + '-noborder');
+ }
+ }
+
+ if(this.bodyBorder === false){
+ this.body.addClass(this.bodyCls + '-noborder');
+ }
+
+ if(this.bodyStyle){
+ this.body.applyStyles(this.bodyStyle);
+ }
+
+ this.bwrap.enableDisplayMode('block');
+
+ if(this.header){
+ this.header.unselectable();
+
+ if(this.headerAsText){
+ this.header.dom.innerHTML =
+ '<span class="' + this.headerTextCls + '">'+this.header.dom.innerHTML+'</span>';
+
+ if(this.iconCls){
+ this.setIconClass(this.iconCls);
+ }
+ }
+ }
+
+ if(this.floating){
+ this.makeFloating(this.floating);
+ }
+
+ if(this.collapsible){
+ this.tools = this.tools ? this.tools.slice(0) : [];
+ if(!this.hideCollapseTool){
+ this.tools[this.collapseFirst?'unshift':'push']({
+ id: 'toggle',
+ handler : this.toggleCollapse,
+ scope: this
+ });
+ }
+ if(this.titleCollapse && this.header){
+ this.header.on('click', this.toggleCollapse, this);
+ this.header.setStyle('cursor', 'pointer');
+ }
+ }
+ if(this.tools){
+ var ts = this.tools;
+ this.tools = {};
+ this.addTool.apply(this, ts);
+ }else{
+ this.tools = {};
+ }
+
+ if(this.buttons && this.buttons.length > 0){
+ var tb = this.footer.createChild({cls:'x-panel-btns-ct', cn: {
+ cls:"x-panel-btns x-panel-btns-"+this.buttonAlign,
+ html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'
+ }}, null, true);
+ var tr = tb.getElementsByTagName('tr')[0];
+ for(var i = 0, len = this.buttons.length; i < len; i++) {
+ var b = this.buttons[i];
+ var td = document.createElement('td');
+ td.className = 'x-panel-btn-td';
+ b.render(tr.appendChild(td));
+ }
+ }
+
+ if(this.tbar && this.topToolbar){
+ if(this.topToolbar instanceof Array){
+ this.topToolbar = new Ext.Toolbar(this.topToolbar);
+ }
+ this.topToolbar.render(this.tbar);
+ }
+ if(this.bbar && this.bottomToolbar){
+ if(this.bottomToolbar instanceof Array){
+ this.bottomToolbar = new Ext.Toolbar(this.bottomToolbar);
+ }
+ this.bottomToolbar.render(this.bbar);
+ }
+ },
+
+
+ setIconClass : function(cls){
+ var old = this.iconCls;
+ this.iconCls = cls;
+ if(this.rendered){
+ if(this.frame){
+ this.header.addClass('x-panel-icon');
+ this.header.replaceClass(old, this.iconCls);
+ }else{
+ var hd = this.header.dom;
+ var img = hd.firstChild && String(hd.firstChild.tagName).toLowerCase() == 'img' ? hd.firstChild : null;
+ if(img){
+ Ext.fly(img).replaceClass(old, this.iconCls);
+ }else{
+ Ext.DomHelper.insertBefore(hd.firstChild, {
+ tag:'img', src: Ext.BLANK_IMAGE_URL, cls:'x-panel-inline-icon '+this.iconCls
+ });
+ }
+ }
+ }
+ },
+
+ makeFloating : function(cfg){
+ this.floating = true;
+ this.el = new Ext.Layer(
+ typeof cfg == 'object' ? cfg : {
+ shadow: this.shadow !== undefined ? this.shadow : 'sides',
+ constrain:false,
+ shim: this.shim === false ? false : undefined
+ }, this.el
+ );
+ },
+
+
+ getTopToolbar : function(){
+ return this.topToolbar;
+ },
+
+
+ getBottomToolbar : function(){
+ return this.bottomToolbar;
+ },
+
+
+ addButton : function(config, handler, scope){
+ var bc = {
+ handler: handler,
+ scope: scope,
+ minWidth: this.minButtonWidth,
+ hideParent:true
+ };
+ if(typeof config == "string"){
+ bc.text = config;
+ }else{
+ Ext.apply(bc, config);
+ }
+ var btn = new Ext.Button(bc);
+ if(!this.buttons){
+ this.buttons = [];
+ }
+ this.buttons.push(btn);
+ return btn;
+ },
+
+ addTool : function(){
+ if(!this[this.toolTarget]) { return;
+ }
+ if(!this.toolTemplate){
+ var tt = new Ext.Template(
+ '<div class="x-tool x-tool-{id}"> </div>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.Panel.prototype.toolTemplate = tt;
+ }
+ for(var i = 0, a = arguments, len = a.length; i < len; i++) {
+ var tc = a[i], overCls = 'x-tool-'+tc.id+'-over';
+ var t = this.toolTemplate.insertFirst(this[this.toolTarget], tc, true);
+ this.tools[tc.id] = t;
+ t.enableDisplayMode('block');
+ t.on('click', this.createToolHandler(t, tc, overCls, this));
+ if(tc.on){
+ t.on(tc.on);
+ }
+ if(tc.hidden){
+ t.hide();
+ }
+ t.addClassOnOver(overCls);
+ }
+ },
+
+ onShow : function(){
+ if(this.floating){
+ return this.el.show();
+ }
+ Ext.Panel.superclass.onShow.call(this);
+ },
+
+ onHide : function(){
+ if(this.floating){
+ return this.el.hide();
+ }
+ Ext.Panel.superclass.onHide.call(this);
+ },
+
+ createToolHandler : function(t, tc, overCls, panel){
+ return function(e){
+ t.removeClass(overCls);
+ e.stopEvent();
+ if(tc.handler){
+ tc.handler.call(tc.scope || t, e, t, panel);
+ }
+ };
+ },
+
+ afterRender : function(){
+ if(this.fromMarkup && this.height === undefined && !this.autoHeight){
+ this.height = this.el.getHeight();
+ }
+ if(this.floating && !this.hidden && !this.initHidden){
+ this.el.show();
+ }
+ if(this.title){
+ this.setTitle(this.title);
+ }
+ if(this.autoScroll){
+ this.body.dom.style.overflow = 'auto';
+ }
+ if(this.html){
+ this.body.update(typeof this.html == 'object' ?
+ Ext.DomHelper.markup(this.html) :
+ this.html);
+ delete this.html;
+ }
+ if(this.contentEl){
+ var ce = Ext.getDom(this.contentEl);
+ Ext.fly(ce).removeClass(['x-hidden', 'x-hide-display']);
+ this.body.dom.appendChild(ce);
+ }
+ if(this.collapsed){
+ this.collapsed = false;
+ this.collapse(false);
+ }
+ Ext.Panel.superclass.afterRender.call(this); this.initEvents();
+ },
+
+ getKeyMap : function(){
+ if(!this.keyMap){
+ this.keyMap = new Ext.KeyMap(this.el, this.keys);
+ }
+ return this.keyMap;
+ },
+
+ initEvents : function(){
+ if(this.keys){
+ this.getKeyMap();
+ }
+ if(this.draggable){
+ this.initDraggable();
+ }
+ },
+
+ initDraggable : function(){
+ this.dd = new Ext.Panel.DD(this, typeof this.draggable == 'boolean' ? null : this.draggable);
+ },
+
+ beforeEffect : function(){
+ if(this.floating){
+ this.el.beforeAction();
+ }
+ this.el.addClass('x-panel-animated');
+ },
+
+ afterEffect : function(){
+ this.syncShadow();
+ this.el.removeClass('x-panel-animated');
+ },
+
+ createEffect : function(a, cb, scope){
+ var o = {
+ scope:scope,
+ block:true
+ };
+ if(a === true){
+ o.callback = cb;
+ return o;
+ }else if(!a.callback){
+ o.callback = cb;
+ }else { o.callback = function(){
+ cb.call(scope);
+ Ext.callback(a.callback, a.scope);
+ };
+ }
+ return Ext.applyIf(o, a);
+ },
+
+
+ collapse : function(animate){
+ if(this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforecollapse', this, animate) === false){
+ return;
+ }
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
+ this.beforeEffect();
+ this.onCollapse(doAnim, animate);
+ return this;
+ },
+
+ onCollapse : function(doAnim, animArg){
+ if(doAnim){
+ this[this.collapseEl].slideOut(this.slideAnchor,
+ Ext.apply(this.createEffect(animArg||true, this.afterCollapse, this),
+ this.collapseDefaults));
+ }else{
+ this[this.collapseEl].hide();
+ this.afterCollapse();
+ }
+ },
+
+ afterCollapse : function(){
+ this.collapsed = true;
+ this.el.addClass(this.collapsedCls);
+ this.afterEffect();
+ this.fireEvent('collapse', this);
+ },
+
+
+ expand : function(animate){
+ if(!this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforeexpand', this, animate) === false){
+ return;
+ }
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
+ this.el.removeClass(this.collapsedCls);
+ this.beforeEffect();
+ this.onExpand(doAnim, animate);
+ return this;
+ },
+
+ onExpand : function(doAnim, animArg){
+ if(doAnim){
+ this[this.collapseEl].slideIn(this.slideAnchor,
+ Ext.apply(this.createEffect(animArg||true, this.afterExpand, this),
+ this.expandDefaults));
+ }else{
+ this[this.collapseEl].show();
+ this.afterExpand();
+ }
+ },
+
+ afterExpand : function(){
+ this.collapsed = false;
+ this.afterEffect();
+ this.fireEvent('expand', this);
+ },
+
+
+ toggleCollapse : function(animate){
+ this[this.collapsed ? 'expand' : 'collapse'](animate);
+ return this;
+ },
+
+ onDisable : function(){
+ if(this.rendered && this.maskDisabled){
+ this.el.mask();
+ }
+ Ext.Panel.superclass.onDisable.call(this);
+ },
+
+ onEnable : function(){
+ if(this.rendered && this.maskDisabled){
+ this.el.unmask();
+ }
+ Ext.Panel.superclass.onEnable.call(this);
+ },
+
+ onResize : function(w, h){
+ if(w !== undefined || h !== undefined){
+ if(!this.collapsed){
+ if(typeof w == 'number'){
+ this.body.setWidth(
+ this.adjustBodyWidth(w - this.getFrameWidth()));
+ }else if(w == 'auto'){
+ this.body.setWidth(w);
+ }
+
+ if(typeof h == 'number'){
+ this.body.setHeight(
+ this.adjustBodyHeight(h - this.getFrameHeight()));
+ }else if(h == 'auto'){
+ this.body.setHeight(h);
+ }
+ }else{
+ this.queuedBodySize = {width: w, height: h};
+ if(!this.queuedExpand && this.allowQueuedExpand !== false){
+ this.queuedExpand = true;
+ this.on('expand', function(){
+ delete this.queuedExpand;
+ this.onResize(this.queuedBodySize.width, this.queuedBodySize.height);
+ this.doLayout();
+ }, this, {single:true});
+ }
+ }
+ this.fireEvent('bodyresize', this, w, h);
+ }
+ this.syncShadow();
+ },
+
+ adjustBodyHeight : function(h){
+ return h;
+ },
+
+ adjustBodyWidth : function(w){
+ return w;
+ },
+
+ onPosition : function(){
+ this.syncShadow();
+ },
+
+ onDestroy : function(){
+ if(this.tools){
+ for(var k in this.tools){
+ Ext.destroy(this.tools[k]);
+ }
+ }
+ Ext.destroy(
+ this.topToolbar,
+ this.bottomToolbar
+ );
+ Ext.Panel.superclass.onDestroy.call(this);
+ },
+
+
+ getFrameWidth : function(){
+ var w = this.el.getFrameWidth('lr');
+
+ if(this.frame){
+ var l = this.bwrap.dom.firstChild;
+ w += (Ext.fly(l).getFrameWidth('l') + Ext.fly(l.firstChild).getFrameWidth('r'));
+ var mc = this.bwrap.dom.firstChild.firstChild.firstChild;
+ w += Ext.fly(mc).getFrameWidth('lr');
+ }
+ return w;
+ },
+
+
+ getFrameHeight : function(){
+ var h = this.el.getFrameWidth('tb');
+ h += (this.tbar ? this.tbar.getHeight() : 0) +
+ (this.bbar ? this.bbar.getHeight() : 0);
+
+ if(this.frame){
+ var hd = this.el.dom.firstChild;
+ var ft = this.bwrap.dom.lastChild;
+ h += (hd.offsetHeight + ft.offsetHeight);
+ var mc = this.bwrap.dom.firstChild.firstChild.firstChild;
+ h += Ext.fly(mc).getFrameWidth('tb');
+ }else{
+ h += (this.header ? this.header.getHeight() : 0) +
+ (this.footer ? this.footer.getHeight() : 0);
+ }
+ return h;
+ },
+
+
+ getInnerWidth : function(){
+ return this.getSize().width - this.getFrameWidth();
+ },
+
+
+ getInnerHeight : function(){
+ return this.getSize().height - this.getFrameHeight();
+ },
+
+ syncShadow : function(){
+ if(this.floating){
+ this.el.sync(true);
+ }
+ },
+
+ getLayoutTarget : function(){
+ return this.body;
+ },
+
+
+ setTitle : function(title, iconCls){
+ this.title = title;
+ if(this.header && this.headerAsText){
+ this.header.child('span').update(title);
+ }
+ if(iconCls){
+ this.setIconClass(iconCls);
+ }
+ this.fireEvent('titlechange', this, title);
+ return this;
+ },
+
+
+ getUpdater : function(){
+ return this.body.getUpdater();
+ },
+
+
+ load : function(){
+ var um = this.body.getUpdater();
+ um.update.apply(um, arguments);
+ return this;
+ },
+
+ beforeDestroy : function(){
+ Ext.Element.uncache(
+ this.header,
+ this.tbar,
+ this.bbar,
+ this.footer,
+ this.body
+ );
+ },
+
+ createClasses : function(){
+ this.headerCls = this.baseCls + '-header';
+ this.headerTextCls = this.baseCls + '-header-text';
+ this.bwrapCls = this.baseCls + '-bwrap';
+ this.tbarCls = this.baseCls + '-tbar';
+ this.bodyCls = this.baseCls + '-body';
+ this.bbarCls = this.baseCls + '-bbar';
+ this.footerCls = this.baseCls + '-footer';
+ },
+
+ createGhost : function(cls, useShim, appendTo){
+ var el = document.createElement('div');
+ el.className = 'x-panel-ghost ' + (cls ? cls : '');
+ if(this.header){
+ el.appendChild(this.el.dom.firstChild.cloneNode(true));
+ }
+ Ext.fly(el.appendChild(document.createElement('ul'))).setHeight(this.bwrap.getHeight());
+ el.style.width = this.el.dom.offsetWidth + 'px';;
+ if(!appendTo){
+ this.container.dom.appendChild(el);
+ }else{
+ Ext.getDom(appendTo).appendChild(el);
+ }
+ if(useShim !== false && this.el.useShim !== false){
+ var layer = new Ext.Layer({shadow:false, useDisplay:true, constrain:false}, el);
+ layer.show();
+ return layer;
+ }else{
+ return new Ext.Element(el);
+ }
+ },
+
+ doAutoLoad : function(){
+ this.body.load(
+ typeof this.autoLoad == 'object' ?
+ this.autoLoad : {url: this.autoLoad});
+ }
+});
+Ext.reg('panel', Ext.Panel);
+
+
+Ext.Window = Ext.extend(Ext.Panel, {
+
+
+
+
+
+ baseCls : 'x-window',
+
+ resizable:true,
+
+ draggable:true,
+
+ closable : true,
+
+ constrain:false,
+
+ constrainHeader:false,
+
+ plain:false,
+
+ minimizable : false,
+
+ maximizable : false,
+
+ minHeight: 100,
+
+ minWidth: 200,
+
+ expandOnShow: true,
+
+ closeAction: 'close',
+
+ collapsible:false,
+
+ initHidden : true,
+
+ monitorResize : true,
+
+
+ elements: 'header,body',
+
+ frame:true,
+
+ floating:true,
+
+ initComponent : function(){
+ Ext.Window.superclass.initComponent.call(this);
+ this.addEvents({
+
+ resize: true,
+
+ maximize : true,
+
+ minimize: true,
+
+ restore : true
+ });
+ },
+
+ getState : function(){
+ return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox());
+ },
+
+ onRender : function(ct, position){
+ Ext.Window.superclass.onRender.call(this, ct, position);
+
+ if(this.plain){
+ this.el.addClass('x-window-plain');
+ }
+
+ this.focusEl = this.el.createChild({
+ tag: "a", href:"#", cls:"x-dlg-focus",
+ tabIndex:"-1", html: " "});
+ this.focusEl.swallowEvent('click', true);
+
+ this.proxy = this.el.createProxy("x-window-proxy");
+ this.proxy.enableDisplayMode('block');
+
+ if(this.modal){
+ this.mask = this.container.createChild({cls:"ext-el-mask"}, this.el.dom);
+ this.mask.enableDisplayMode("block");
+ this.mask.hide();
+ }
+ },
+
+ initEvents : function(){
+ Ext.Window.superclass.initEvents.call(this);
+ if(this.animateTarget){
+ this.setAnimateTarget(this.animateTarget);
+ }
+
+ if(this.resizable){
+ this.resizer = new Ext.Resizable(this.el, {
+ minWidth: this.minWidth,
+ minHeight:this.minHeight,
+ handles: this.resizeHandles || "all",
+ pinned: true,
+ resizeElement : this.resizerAction
+ });
+ this.resizer.window = this;
+ this.resizer.on("beforeresize", this.beforeResize, this);
+ }
+
+ if(this.draggable){
+ this.header.addClass("x-window-draggable");
+ }
+ this.initTools();
+
+ this.el.on("mousedown", this.toFront, this);
+ this.manager = this.manager || Ext.WindowMgr;
+ this.manager.register(this);
+ this.hidden = true;
+ if(this.maximized){
+ this.maximized = false;
+ this.maximize();
+ }
+ if(this.closable){
+ var km = this.getKeyMap();
+ km.on(27, this.onEsc, this);
+ km.disable();
+ }
+ },
+
+ initDraggable : function(){
+ this.dd = new Ext.Window.DD(this);
+ },
+
+ onEsc : function(){
+ this[this.closeAction]();
+ },
+
+ onDestroy : function(){
+ if(this.manager){
+ this.manager.unregister(this);
+ }
+ Ext.destroy(
+ this.resizer,
+ this.dd,
+ this.proxy
+ );
+
+ Ext.Window.superclass.onDestroy.call(this);
+ },
+
+ initTools : function(){
+ if(this.minimizable){
+ this.addTool({
+ id: 'minimize',
+ handler: this.minimize.createDelegate(this, [])
+ });
+ }
+ if(this.maximizable){
+ this.addTool({
+ id: 'maximize',
+ handler: this.maximize.createDelegate(this, [])
+ });
+ this.addTool({
+ id: 'restore',
+ handler: this.restore.createDelegate(this, []),
+ hidden:true
+ });
+ this.header.on('dblclick', this.toggleMaximize, this);
+ }
+ if(this.closable){
+ this.addTool({
+ id: 'close',
+ handler: this[this.closeAction].createDelegate(this, [])
+ });
+ }
+ },
+
+ resizerAction : function(){
+ var box = this.proxy.getBox();
+ this.proxy.hide();
+ this.window.handleResize(box);
+ return box;
+ },
+
+ beforeResize : function(){
+ this.resizer.minHeight = Math.max(this.minHeight, this.getFrameHeight() + 40); this.resizer.minWidth = Math.max(this.minWidth, this.getFrameWidth() + 40);
+ this.resizeBox = this.el.getBox();
+ },
+
+ updateHandles : function(){
+ if(Ext.isIE && this.resizer){
+ this.resizer.syncHandleHeight();
+ this.el.repaint();
+ }
+ },
+
+ handleResize : function(box){
+ var rz = this.resizeBox;
+ if(rz.x != box.x || rz.y != box.y){
+ this.updateBox(box);
+ }else{
+ this.setSize(box);
+ }
+ this.focus();
+ this.updateHandles();
+ this.saveState();
+ this.fireEvent("resize", this, box.width, box.height);
+ },
+
+
+ focus : function(){
+ this.focusEl.focus.defer(10, this.focusEl);
+ },
+
+
+ setAnimateTarget : function(el){
+ el = Ext.get(el);
+ this.animateTarget = el;
+ },
+
+ beforeShow : function(){
+ delete this.el.lastXY;
+ delete this.el.lastLT;
+ if(this.x === undefined || this.y === undefined){
+ var xy = this.el.getAlignToXY(this.container, 'c-c');
+ var pos = this.el.translatePoints(xy[0], xy[1]);
+ this.x = this.x === undefined? pos.left : this.x;
+ this.y = this.y === undefined? pos.top : this.y;
+ }
+ this.el.setLeftTop(this.x, this.y);
+
+ if(this.expandOnShow){
+ this.expand(false);
+ }
+
+ if(this.modal){
+ Ext.getBody().addClass("x-body-masked");
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.mask.show();
+ }
+ },
+
+
+ show : function(animateTarget, cb, scope){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ }
+ if(this.hidden === false){
+ this.toFront();
+ return;
+ }
+ if(this.fireEvent("beforeshow", this) === false){
+ return;
+ }
+ if(cb){
+ this.on('show', cb, scope, {single:true});
+ }
+ this.hidden = false;
+ if(animateTarget !== undefined){
+ this.setAnimateTarget(animateTarget);
+ }
+ this.beforeShow();
+ if(this.animateTarget){
+ this.animShow();
+ }else{
+ this.afterShow();
+ }
+ },
+
+ afterShow : function(){
+ this.proxy.hide();
+ this.el.setStyle('display', 'block');
+ this.el.show();
+ if(this.maximized){
+ this.fitContainer();
+ }
+
+ if(this.monitorResize || this.modal || this.constrain || this.constrainHeader){
+ Ext.EventManager.onWindowResize(this.onWindowResize, this);
+ }
+ this.doConstrain();
+ if(this.layout){
+ this.doLayout();
+ }
+ if(this.keyMap){
+ this.keyMap.enable();
+ }
+ this.toFront();
+ this.updateHandles();
+ this.fireEvent("show", this);
+ },
+
+ animShow : function(){
+ this.proxy.show();
+ this.proxy.setBox(this.animateTarget.getBox());
+ this.proxy.setOpacity(0);
+ var b = this.getBox(false);
+ b.callback = this.afterShow;
+ b.scope = this;
+ b.duration = .25;
+ b.easing = 'easeNone';
+ b.opacity = .5;
+ b.block = true;
+ this.el.setStyle('display', 'none');
+ this.proxy.shift(b);
+ },
+
+
+ hide : function(animateTarget, cb, scope){
+ if(this.hidden || this.fireEvent("beforehide", this) === false){
+ return;
+ }
+ if(cb){
+ this.on('hide', cb, scope, {single:true});
+ }
+ this.hidden = true;
+ if(animateTarget !== undefined){
+ this.setAnimateTarget(animateTarget);
+ }
+ if(this.animateTarget){
+ this.animHide();
+ }else{
+ this.el.hide();
+ this.afterHide();
+ }
+ },
+
+ afterHide : function(){
+ this.proxy.hide();
+ if(this.monitorResize || this.modal || this.constrain || this.constrainHeader){
+ Ext.EventManager.removeResizeListener(this.onWindowResize, this);
+ }
+ if(this.modal){
+ this.mask.hide();
+ Ext.getBody().removeClass("x-body-masked");
+ }
+ if(this.keyMap){
+ this.keyMap.disable();
+ }
+ this.fireEvent("hide", this);
+ },
+
+ animHide : function(){
+ this.proxy.setOpacity(.5);
+ this.proxy.show();
+ var tb = this.getBox(false);
+ this.proxy.setBox(tb);
+ this.el.hide();
+ var b = this.animateTarget.getBox();
+ b.callback = this.afterHide;
+ b.scope = this;
+ b.duration = .25;
+ b.easing = 'easeNone';
+ b.block = true;
+ b.opacity = 0;
+ this.proxy.shift(b);
+ },
+
+ onWindowResize : function(){
+ if(this.maximized){
+ this.fitContainer();
+ }
+ if(this.modal){
+ this.mask.setSize('100%', '100%');
+ var force = this.mask.dom.offsetHeight;
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ }
+ this.doConstrain();
+ },
+
+ doConstrain : function(){
+ if(this.constrain || this.constrainHeader){
+ var offsets;
+ if(this.constrain){
+ offsets = {
+ right:this.el.shadowOffset,
+ left:this.el.shadowOffset,
+ bottom:this.el.shadowOffset
+ };
+ }else {
+ var s = this.getSize();
+ offsets = {
+ right:-(s.width - 100),
+ bottom:-(s.height - 25)
+ };
+ }
+
+ var xy = this.el.getConstrainToXY(this.container, true, offsets);
+ if(xy){
+ this.setPosition(xy[0], xy[1]);
+ }
+ }
+ },
+
+ ghost : function(cls){
+ var ghost = this.createGhost(cls);
+ var box = this.getBox(true);
+ ghost.setLeftTop(box.x, box.y);
+ ghost.setWidth(box.width);
+ this.el.hide();
+ this.activeGhost = ghost;
+ return ghost;
+ },
+
+ unghost : function(show, matchPosition){
+ if(show !== false){
+ this.el.show();
+ this.focus();
+ }
+ if(matchPosition !== false){
+ this.setPosition(this.activeGhost.getLeft(true), this.activeGhost.getTop(true));
+ }
+ this.activeGhost.hide();
+ this.activeGhost.remove();
+ delete this.activeGhost;
+ },
+
+
+ minimize : function(){
+ this.fireEvent('minimize', this);
+ },
+
+
+ close : function(){
+ if(this.fireEvent("beforeclose", this) !== false){
+ this.hide(null, function(){
+ this.fireEvent('close', this);
+ this.destroy();
+ }, this);
+ }
+ },
+
+
+ maximize : function(){
+ if(!this.maximized){
+ this.expand(false);
+ this.restoreSize = this.getSize();
+ this.restorePos = this.getPosition(true);
+ this.tools.maximize.hide();
+ this.tools.restore.show();
+ this.maximized = true;
+ this.el.disableShadow();
+
+ if(this.dd){
+ this.dd.lock();
+ }
+ if(this.collapsible){
+ this.tools.toggle.hide();
+ }
+ this.el.addClass('x-window-maximized');
+ this.container.addClass('x-window-maximized-ct');
+
+ this.setPosition(0, 0);
+ this.fitContainer();
+ this.fireEvent('maximize', this);
+ }
+ },
+
+
+ restore : function(){
+ if(this.maximized){
+ this.el.removeClass('x-window-maximized');
+ this.tools.restore.hide();
+ this.tools.maximize.show();
+ this.setPosition(this.restorePos[0], this.restorePos[1]);
+ this.setSize(this.restoreSize.width, this.restoreSize.height);
+ delete this.restorePos;
+ delete this.restoreSize;
+ this.maximized = false;
+ this.el.enableShadow(true);
+
+ if(this.dd){
+ this.dd.unlock();
+ }
+ if(this.collapsible){
+ this.tools.toggle.show();
+ }
+ this.container.removeClass('x-window-maximized-ct');
+
+ this.doConstrain();
+ this.fireEvent('restore', this);
+ }
+ },
+
+
+ toggleMaximize : function(){
+ this[this.maximized ? 'restore' : 'maximize']();
+ },
+
+ fitContainer : function(){
+ var vs = this.container.getViewSize();
+ this.setSize(vs.width, vs.height);
+ },
+
+ setZIndex : function(index){
+ if(this.modal){
+ this.mask.setStyle("z-index", index);
+ }
+ this.el.setZIndex(++index);
+ index += 5;
+
+ if(this.resizer){
+ this.resizer.proxy.setStyle("z-index", ++index);
+ }
+
+ this.lastZIndex = index;
+ },
+
+
+ alignTo : function(element, position, offsets){
+ var xy = this.el.getAlignToXY(element, position, offsets);
+ this.setPagePosition(xy[0], xy[1]);
+ return this;
+ },
+
+
+ anchorTo : function(el, alignment, offsets, monitorScroll, _pname){
+ var action = function(){
+ this.alignTo(el, alignment, offsets);
+ };
+ Ext.EventManager.onWindowResize(action, this);
+ var tm = typeof monitorScroll;
+ if(tm != 'undefined'){
+ Ext.EventManager.on(window, 'scroll', action, this,
+ {buffer: tm == 'number' ? monitorScroll : 50});
+ }
+ action.call(this);
+ this[_pname] = action;
+ return this;
+ },
+
+
+ toFront : function(){
+ if(this.manager.bringToFront(this)){
+ this.focus();
+ }
+ return this;
+ },
+
+
+ setActive : function(active){
+ if(active){
+ if(!this.maximized){
+ this.el.enableShadow(true);
+ }
+ this.fireEvent('activate', this);
+ }else{
+ this.el.disableShadow();
+ this.fireEvent('deactivate', this);
+ }
+ },
+
+
+ toBack : function(){
+ this.manager.sendToBack(this);
+ return this;
+ },
+
+
+ center : function(){
+ var xy = this.el.getAlignToXY(this.container, 'c-c');
+ this.setPagePosition(xy[0], xy[1]);
+ return this;
+ }
+});
+Ext.reg('window', Ext.Window);
+
+Ext.Window.DD = function(win){
+ this.win = win;
+ Ext.Window.DD.superclass.constructor.call(this, win.el.id, 'WindowDD-'+win.id);
+ this.setHandleElId(win.header.id);
+ this.scroll = false;
+};
+
+Ext.extend(Ext.Window.DD, Ext.dd.DD, {
+ moveOnly:true,
+ headerOffsets:[100, 25],
+ startDrag : function(){
+ var w = this.win;
+ this.proxy = w.ghost();
+ if(w.constrain !== false){
+ var so = w.el.shadowOffset;
+ this.constrainTo(w.container, {right: so, left: so, bottom: so});
+ }else if(w.constrainHeader !== false){
+ var s = this.proxy.getSize();
+ this.constrainTo(w.container, {right: -(s.width-this.headerOffsets[0]), bottom: -(s.height-this.headerOffsets[1])});
+ }
+ },
+ b4Drag : Ext.emptyFn,
+
+ onDrag : function(e){
+ this.alignElWithMouse(this.proxy, e.getPageX(), e.getPageY());
+ },
+
+ endDrag : function(e){
+ this.win.unghost();
+ this.win.saveState();
+ }
+});
+
+Ext.WindowGroup = function(){
+ var list = {};
+ var accessList = [];
+ var front = null;
+
+ var sortWindows = function(d1, d2){
+ return (!d1._lastAccess || d1._lastAccess < d2._lastAccess) ? -1 : 1;
+ };
+
+ var orderWindows = function(){
+ accessList.sort(sortWindows);
+ var seed = Ext.WindowMgr.zseed;
+ for(var i = 0, len = accessList.length; i < len; i++){
+ var win = accessList[i];
+ if(win && !win.hidden){
+ win.setZIndex(seed + (i*10));
+ }
+ }
+ activateLast();
+ };
+
+ var setActiveWin = function(win){
+ if(win != front){
+ if(front){
+ front.setActive(false);
+ }
+ front = win;
+ if(win){
+ win.setActive(true);
+ }
+ }
+ };
+
+ var activateLast = function(){
+ for(var i = accessList.length-1; i >=0; --i) {
+ if(!accessList[i].hidden){
+ setActiveWin(accessList[i]);
+ return;
+ }
+ }
+ setActiveWin(null);
+ };
+
+ return {
+
+ zseed : 9000,
+
+ register : function(win){
+ list[win.id] = win;
+ accessList.push(win);
+ win.on('hide', activateLast);
+ },
+
+ unregister : function(win){
+ delete list[win.id];
+ win.un('hide', activateLast);
+ accessList.remove(win);
+ },
+
+
+ get : function(id){
+ return typeof id == "object" ? id : list[id];
+ },
+
+
+ bringToFront : function(win){
+ win = this.get(win);
+ if(win != front){
+ win._lastAccess = new Date().getTime();
+ orderWindows();
+ return true;
+ }
+ return false;
+ },
+
+
+ sendToBack : function(win){
+ win = this.get(win);
+ win._lastAccess = -(new Date().getTime());
+ orderWindows();
+ return win;
+ },
+
+
+ hideAll : function(){
+ for(var id in list){
+ if(list[id] && typeof list[id] != "function" && list[id].isVisible()){
+ list[id].hide();
+ }
+ }
+ },
+
+
+ getActive : function(){
+ return front;
+ },
+
+
+ getBy : function(fn, scope){
+ var r = [];
+ for(var i = accessList.length-1; i >=0; --i) {
+ var win = accessList[i];
+ if(fn.call(scope||win, win) !== false){
+ r.push(win);
+ }
+ }
+ return r;
+ },
+
+
+ each : function(fn, scope){
+ for(var id in list){
+ if(list[id] && typeof list[id] != "function"){
+ if(fn.call(scope || list[id], list[id]) === false){
+ return;
+ }
+ }
+ }
+ }
+ };
+};
+
+
+
+Ext.WindowMgr = new Ext.WindowGroup();
+Ext.dd.PanelProxy = function(panel, config){
+ this.panel = panel;
+ this.id = this.panel.id +'-ddproxy';
+ Ext.apply(this, config);
+};
+
+Ext.dd.PanelProxy.prototype = {
+ insertProxy : true,
+ setStatus : Ext.emptyFn,
+ reset : Ext.emptyFn,
+ update : Ext.emptyFn,
+ stop : Ext.emptyFn,
+ sync: Ext.emptyFn,
+
+ getEl : function(){
+ return this.ghost;
+ },
+
+ getGhost : function(){
+ return this.ghost;
+ },
+
+ getProxy : function(){
+ return this.proxy;
+ },
+
+ hide : function(){
+ if(this.ghost){
+ if(this.proxy){
+ this.proxy.remove();
+ delete this.proxy;
+ }
+ this.panel.el.dom.style.display = '';
+ this.ghost.remove();
+ delete this.ghost;
+ }
+ },
+
+ show : function(){
+ if(!this.ghost){
+ this.ghost = this.panel.createGhost(undefined, undefined, Ext.getBody());
+ this.ghost.setXY(this.panel.el.getXY())
+ if(this.insertProxy){
+ this.proxy = this.panel.el.insertSibling({cls:'x-panel-dd-spacer'});
+ this.proxy.setSize(this.panel.getSize());
+ }
+ this.panel.el.dom.style.display = 'none';
+ }
+ },
+
+ repair : function(xy, callback, scope){
+ this.hide();
+ if(typeof callback == "function"){
+ callback.call(scope || this);
+ }
+ },
+
+ moveProxy : function(parentNode, before){
+ if(this.proxy){
+ parentNode.insertBefore(this.proxy.dom, before);
+ }
+ }
+};
+
+Ext.Panel.DD = function(panel, cfg){
+ this.panel = panel;
+ this.dragData = {panel: panel};
+ this.proxy = new Ext.dd.PanelProxy(panel, cfg);
+ Ext.Panel.DD.superclass.constructor.call(this, panel.el, cfg);
+ this.setHandleElId(panel.header.id);
+ panel.header.setStyle('cursor', 'move');
+ this.scroll = false;
+};
+
+Ext.extend(Ext.Panel.DD, Ext.dd.DragSource, {
+ showFrame: Ext.emptyFn,
+ startDrag: Ext.emptyFn,
+ b4StartDrag: function(x, y) {
+ this.proxy.show();
+ },
+ b4MouseDown: function(e) {
+ var x = e.getPageX();
+ var y = e.getPageY();
+ this.autoOffset(x, y);
+ },
+ onInitDrag : function(x, y){
+ this.onStartDrag(x, y);
+ return true;
+ },
+ createFrame : Ext.emptyFn,
+ getDragEl : function(e){
+ return this.proxy.ghost.dom;
+ },
+ endDrag : function(e){
+ this.proxy.hide();
+ this.panel.saveState();
+ },
+
+ autoOffset : function(x, y) {
+ x -= this.startPageX;
+ y -= this.startPageY;
+ this.setDelta(x, y);
+ }
+});
+
+Ext.state.Provider = function(){
+
+ this.addEvents({
+ "statechange": true
+ });
+ this.state = {};
+ Ext.state.Provider.superclass.constructor.call(this);
+};
+Ext.extend(Ext.state.Provider, Ext.util.Observable, {
+
+ get : function(name, defaultValue){
+ return typeof this.state[name] == "undefined" ?
+ defaultValue : this.state[name];
+ },
+
+
+ clear : function(name){
+ delete this.state[name];
+ this.fireEvent("statechange", this, name, null);
+ },
+
+
+ set : function(name, value){
+ this.state[name] = value;
+
+ this.fireEvent("statechange", this, name, value);
+ },
+
+
+ decodeValue : function(cookie){
+ var re = /^(a|n|d|b|s|o)\:(.*)$/;
+ var matches = re.exec(unescape(cookie));
+ if(!matches || !matches[1]) return;
+ var type = matches[1];
+ var v = matches[2];
+ switch(type){
+ case "n":
+ return parseFloat(v);
+ case "d":
+ return new Date(Date.parse(v));
+ case "b":
+ return (v == "1");
+ case "a":
+ var all = [];
+ var values = v.split("^");
+ for(var i = 0, len = values.length; i < len; i++){
+ all.push(this.decodeValue(values[i]));
+ }
+ return all;
+ case "o":
+ var all = {};
+ var values = v.split("^");
+ for(var i = 0, len = values.length; i < len; i++){
+ var kv = values[i].split("=");
+ all[kv[0]] = this.decodeValue(kv[1]);
+ }
+ return all;
+ default:
+ return v;
+ }
+ },
+
+
+ encodeValue : function(v){
+ var enc;
+ if(typeof v == "number"){
+ enc = "n:" + v;
+ }else if(typeof v == "boolean"){
+ enc = "b:" + (v ? "1" : "0");
+ }else if(v instanceof Date){
+ enc = "d:" + v.toGMTString();
+ }else if(v instanceof Array){
+ var flat = "";
+ for(var i = 0, len = v.length; i < len; i++){
+ flat += this.encodeValue(v[i]);
+ if(i != len-1) flat += "^";
+ }
+ enc = "a:" + flat;
+ }else if(typeof v == "object"){
+ var flat = "";
+ for(var key in v){
+ if(typeof v[key] != "function"){
+ flat += key + "=" + this.encodeValue(v[key]) + "^";
+ }
+ }
+ enc = "o:" + flat.substring(0, flat.length-1);
+ }else{
+ enc = "s:" + v;
+ }
+ return escape(enc);
+ }
+});
+
+
+Ext.state.Manager = function(){
+ var provider = new Ext.state.Provider();
+
+ return {
+
+ setProvider : function(stateProvider){
+ provider = stateProvider;
+ },
+
+
+ get : function(key, defaultValue){
+ return provider.get(key, defaultValue);
+ },
+
+
+ set : function(key, value){
+ provider.set(key, value);
+ },
+
+
+ clear : function(key){
+ provider.clear(key);
+ },
+
+
+ getProvider : function(){
+ return provider;
+ }
+ };
+}();
+
+
+Ext.state.CookieProvider = function(config){
+ Ext.state.CookieProvider.superclass.constructor.call(this);
+ this.path = "/";
+ this.expires = new Date(new Date().getTime()+(1000*60*60*24*7));
+ this.domain = null;
+ this.secure = false;
+ Ext.apply(this, config);
+ this.state = this.readCookies();
+};
+
+Ext.extend(Ext.state.CookieProvider, Ext.state.Provider, {
+
+ set : function(name, value){
+ if(typeof value == "undefined" || value === null){
+ this.clear(name);
+ return;
+ }
+ this.setCookie(name, value);
+ Ext.state.CookieProvider.superclass.set.call(this, name, value);
+ },
+
+
+ clear : function(name){
+ this.clearCookie(name);
+ Ext.state.CookieProvider.superclass.clear.call(this, name);
+ },
+
+
+ readCookies : function(){
+ var cookies = {};
+ var c = document.cookie + ";";
+ var re = /\s?(.*?)=(.*?);/g;
+ var matches;
+ while((matches = re.exec(c)) != null){
+ var name = matches[1];
+ var value = matches[2];
+ if(name && name.substring(0,3) == "ys-"){
+ cookies[name.substr(3)] = this.decodeValue(value);
+ }
+ }
+ return cookies;
+ },
+
+
+ setCookie : function(name, value){
+ document.cookie = "ys-"+ name + "=" + this.encodeValue(value) +
+ ((this.expires == null) ? "" : ("; expires=" + this.expires.toGMTString())) +
+ ((this.path == null) ? "" : ("; path=" + this.path)) +
+ ((this.domain == null) ? "" : ("; domain=" + this.domain)) +
+ ((this.secure == true) ? "; secure" : "");
+ },
+
+
+ clearCookie : function(name){
+ document.cookie = "ys-" + name + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" +
+ ((this.path == null) ? "" : ("; path=" + this.path)) +
+ ((this.domain == null) ? "" : ("; domain=" + this.domain)) +
+ ((this.secure == true) ? "; secure" : "");
+ }
+});
+
+Ext.DataView = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+
+
+
+
+ selectedClass : "x-view-selected",
+
+ emptyText : "",
+
+
+ last: false,
+
+
+ initComponent : function(){
+ Ext.DataView.superclass.initComponent.call(this);
+ if(typeof this.tpl == "string"){
+ this.tpl = new Ext.XTemplate(this.tpl);
+ }
+
+ this.addEvents({
+
+ "beforeclick" : true,
+
+ "click" : true,
+
+ "containerclick" : true,
+
+ "dblclick" : true,
+
+ "contextmenu" : true,
+
+ "selectionchange" : true,
+
+
+ "beforeselect" : true
+ });
+
+ this.all = new Ext.CompositeElementLite();
+ this.selected = new Ext.CompositeElementLite();
+ },
+
+
+ onRender : function(){
+ if(!this.el){
+ this.el = document.createElement('div');
+ }
+ Ext.DataView.superclass.onRender.apply(this, arguments);
+ },
+
+
+ afterRender : function(){
+ Ext.DataView.superclass.afterRender.call(this);
+
+ this.el.on({
+ "click": this.onClick,
+ "dblclick": this.onDblClick,
+ "contextmenu": this.onContextMenu,
+ scope:this
+ });
+
+ if(this.overClass){
+ this.el.on({
+ "mouseover": this.onMouseOver,
+ "mouseout": this.onMouseOut,
+ scope:this
+ });
+ }
+
+ if(this.store){
+ this.setStore(this.store, true);
+ }
+ },
+
+
+ refresh : function(){
+ this.clearSelections();
+ this.el.update("");
+ var html = [];
+ var records = this.store.getRange();
+ if(records.length < 1){
+ this.el.update(this.emptyText);
+ return;
+ }
+ this.tpl.overwrite(this.el, this.collectData(records, 0));
+ this.all.fill(Ext.query(this.itemSelector, this.el.dom));
+ this.updateIndexes(0);
+ },
+
+
+ prepareData : function(data){
+ return data;
+ },
+
+
+ collectData : function(records, startIndex){
+ var r = [];
+ for(var i = 0, len = records.length; i < len; i++){
+ r[r.length] = this.prepareData(records[i].data, startIndex+i, records[i]);
+ }
+ return r;
+ },
+
+
+ bufferRender : function(records){
+ var div = document.createElement('div');
+ this.tpl.overwrite(div, this.collectData(records));
+ return Ext.query(this.itemSelector, div);
+ },
+
+
+ onUpdate : function(ds, record){
+ var index = this.store.indexOf(record);
+ var sel = this.isSelected(index);
+ var original = this.all.elements[index];
+ var node = this.bufferRender([record], index)[0];
+
+ this.all.replaceElement(index, node, true);
+ if(sel){
+ this.selected.replaceElement(original, node);
+ this.all.item(index).addClass(this.selectedClass);
+ }
+ this.updateIndexes(index, index);
+ },
+
+
+ onAdd : function(ds, records, index){
+ if(this.all.getCount() == 0){
+ this.refresh();
+ return;
+ }
+ var nodes = this.bufferRender(records, index), n;
+ if(index < this.all.getCount()){
+ n = this.all.item(index).insertSibling(nodes, 'before', true);
+ this.all.elements.splice(index, 0, n);
+ }else{
+ n = this.all.last().insertSibling(nodes, 'after', true);
+ this.all.elements.push(n);
+ }
+ this.updateIndexes(index);
+ },
+
+
+ onRemove : function(ds, record, index){
+ this.deselect(index);
+ this.all.removeElement(index, true);
+ this.updateIndexes(index);
+ },
+
+
+ refreshNode : function(index){
+ this.onUpdate(this.store, this.store.getAt(index));
+ },
+
+
+ updateIndexes : function(startIndex, endIndex){
+ var ns = this.all.elements;
+ startIndex = startIndex || 0;
+ endIndex = (endIndex || endIndex === 0) || (ns.length - 1);
+ for(var i = startIndex; i <= endIndex; i++){
+ ns[i].viewIndex = i;
+ }
+ },
+
+
+ setStore : function(store, initial){
+ if(!initial && this.store){
+ this.store.un("beforeload", this.onBeforeLoad, this);
+ this.store.un("datachanged", this.refresh, this);
+ this.store.un("add", this.onAdd, this);
+ this.store.un("remove", this.onRemove, this);
+ this.store.un("update", this.onUpdate, this);
+ this.store.un("clear", this.refresh, this);
+ }
+ if(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.on("beforeload", this.onBeforeLoad, this);
+ store.on("datachanged", this.refresh, this);
+ store.on("add", this.onAdd, this);
+ store.on("remove", this.onRemove, this);
+ store.on("update", this.onUpdate, this);
+ store.on("clear", this.refresh, this);
+ }
+ this.store = store;
+ if(store){
+ this.refresh();
+ }
+ },
+
+
+ findItemFromChild : function(node){
+ return Ext.fly(node).findParent(this.itemSelector, this.el);
+ },
+
+
+ onClick : function(e){
+ var item = e.getTarget(this.itemSelector, this.el);
+ if(item){
+ var index = this.indexOf(item);
+ if(this.onItemClick(item, index, e) !== false){
+ this.fireEvent("click", this, index, item, e);
+ }
+ }else{
+ if(this.fireEvent("containerclick", this, e) !== false){
+ this.clearSelections();
+ }
+ }
+ },
+
+
+ onContextMenu : function(e){
+ var item = e.getTarget(this.itemSelector, this.el);
+ if(item){
+ this.fireEvent("contextmenu", this, this.indexOf(item), item, e);
+ }
+ },
+
+
+ onDblClick : function(e){
+ var item = e.getTarget(this.itemSelector, this.el);
+ if(item){
+ this.fireEvent("dblclick", this, this.indexOf(item), item, e);
+ }
+ },
+
+
+ onMouseOver : function(e){
+ var item = e.getTarget(this.itemSelector, this.el);
+ if(item && item !== this.lastItem){
+ this.lastItem = item;
+ Ext.fly(item).addClass(this.overClass);
+ }
+ },
+
+
+ onMouseOut : function(e){
+ if(this.lastItem){
+ if(!e.within(this.lastItem, true)){
+ Ext.fly(this.lastItem).removeClass(this.overClass);
+ delete this.lastItem;
+ }
+ }
+ },
+
+
+ onItemClick : function(item, index, e){
+ if(this.fireEvent("beforeclick", this, index, item, e) === false){
+ return false;
+ }
+ if(this.multiSelect){
+ this.doMultiSelection(item, index, e);
+ e.preventDefault();
+ }else if(this.singleSelect){
+ this.doSingleSelection(item, index, e);
+ e.preventDefault();
+ }
+ return true;
+ },
+
+
+ doSingleSelection : function(item, index, e){
+ if(e.ctrlKey && this.isSelected(index)){
+ this.deselect(index);
+ }else{
+ this.select(index, false);
+ }
+ },
+
+
+ doMultiSelection : function(item, index, e){
+ if(e.shiftKey && this.last !== false){
+ var last = this.last;
+ this.selectRange(last, index, e.ctrlKey);
+ this.last = last;
+ }else{
+ if((e.ctrlKey||this.simpleSelect) && this.isSelected(index)){
+ this.deselect(index);
+ }else{
+ this.select(index, e.ctrlKey || e.shiftKey || this.simpleSelect);
+ }
+ }
+ },
+
+
+ getSelectionCount : function(){
+ return this.selected.getCount()
+ },
+
+
+ getSelectedNodes : function(){
+ return this.selected.elements;
+ },
+
+
+ getSelectedIndexes : function(){
+ var indexes = [], s = this.selected.elements;
+ for(var i = 0, len = s.length; i < len; i++){
+ indexes.push(s[i].viewIndex);
+ }
+ return indexes;
+ },
+
+
+ getSelectedRecords : function(){
+ var r = [], s = this.selected.elements;
+ for(var i = 0, len = s.length; i < len; i++){
+ r[r.length] = this.store.getAt(s[i].viewIndex);
+ }
+ return r;
+ },
+
+
+ getRecords : function(nodes){
+ var r = [], s = nodes;
+ for(var i = 0, len = s.length; i < len; i++){
+ r[r.length] = this.store.getAt(s[i].viewIndex);
+ }
+ return r;
+ },
+
+
+ getRecord : function(node){
+ return this.store.getAt(node.viewIndex);
+ },
+
+
+ clearSelections : function(suppressEvent, skipUpdate){
+ if(this.multiSelect || this.singleSelect){
+ if(!skipUpdate){
+ this.selected.removeClass(this.selectedClass);
+ }
+ this.selected.clear();
+ this.last = false;
+ if(!suppressEvent){
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ }
+ },
+
+
+ isSelected : function(node){
+ return this.selected.contains(this.getNode(node));
+ },
+
+
+ deselect : function(node){
+ if(this.isSelected(node)){
+ var node = this.getNode(node);
+ this.selected.removeElement(node);
+ if(this.last == node.viewIndex){
+ this.last = false;
+ }
+ Ext.fly(node).removeClass(this.selectedClass);
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ },
+
+
+ select : function(nodeInfo, keepExisting, suppressEvent){
+ if(nodeInfo instanceof Array){
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ for(var i = 0, len = nodeInfo.length; i < len; i++){
+ this.select(nodeInfo[i], true, true);
+ }
+ } else{
+ var node = this.getNode(nodeInfo);
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ if(node && !this.isSelected(node)){
+ if(this.fireEvent("beforeselect", this, node, this.selected.elements) !== false){
+ Ext.fly(node).addClass(this.selectedClass);
+ this.selected.add(node);
+ this.last = node.viewIndex;
+ if(!suppressEvent){
+ this.fireEvent("selectionchange", this, this.selected.elements);
+ }
+ }
+ }
+ }
+ },
+
+
+ selectRange : function(start, end, keepExisting){
+ if(!keepExisting){
+ this.clearSelections(true);
+ }
+ this.select(this.getNodes(start, end), true);
+ },
+
+
+ getNode : function(nodeInfo){
+ if(typeof nodeInfo == "string"){
+ return document.getElementById(nodeInfo);
+ }else if(typeof nodeInfo == "number"){
+ return this.all.elements[nodeInfo];
+ }
+ return nodeInfo;
+ },
+
+
+ getNodes : function(start, end){
+ var ns = this.all.elements;
+ start = start || 0;
+ end = typeof end == "undefined" ? ns.length - 1 : end;
+ var nodes = [], i;
+ if(start <= end){
+ for(i = start; i <= end; i++){
+ nodes.push(ns[i]);
+ }
+ } else{
+ for(i = start; i >= end; i--){
+ nodes.push(ns[i]);
+ }
+ }
+ return nodes;
+ },
+
+
+ indexOf : function(node){
+ node = this.getNode(node);
+ if(typeof node.viewIndex == "number"){
+ return node.viewIndex;
+ }
+ return this.all.indexOf(node);
+ },
+
+
+ onBeforeLoad : function(){
+ if(this.loadingText){
+ this.clearSelections(false, true);
+ this.el.update('<div class="loading-indicator">'+this.loadingText+'</div>');
+ this.all.clear();
+ }
+ }
+});
+
+Ext.reg('dataview', Ext.DataView);
+
+Ext.ColorPalette = function(config){
+ Ext.ColorPalette.superclass.constructor.call(this, config);
+ this.addEvents({
+
+ select: true
+ });
+
+ if(this.handler){
+ this.on("select", this.handler, this.scope, true);
+ }
+};
+Ext.extend(Ext.ColorPalette, Ext.Component, {
+
+ itemCls : "x-color-palette",
+
+ value : null,
+ clickEvent:'click',
+ ctype: "Ext.ColorPalette",
+
+
+ allowReselect : false,
+
+
+ colors : [
+ "000000", "993300", "333300", "003300", "003366", "000080", "333399", "333333",
+ "800000", "FF6600", "808000", "008000", "008080", "0000FF", "666699", "808080",
+ "FF0000", "FF9900", "99CC00", "339966", "33CCCC", "3366FF", "800080", "969696",
+ "FF00FF", "FFCC00", "FFFF00", "00FF00", "00FFFF", "00CCFF", "993366", "C0C0C0",
+ "FF99CC", "FFCC99", "FFFF99", "CCFFCC", "CCFFFF", "99CCFF", "CC99FF", "FFFFFF"
+ ],
+
+ onRender : function(container, position){
+ var t = new Ext.XTemplate(
+ '<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" unselectable="on"> </span></em></a></tpl>'
+ );
+ var el = document.createElement("div");
+ el.className = this.itemCls;
+ t.overwrite(el, this.colors);
+ container.dom.insertBefore(el, position);
+ this.el = Ext.get(el);
+ this.el.on(this.clickEvent, this.handleClick, this, {delegate: "a"});
+ if(this.clickEvent != 'click'){
+ this.el.on('click', Ext.emptyFn, this, {delegate: "a", preventDefault:true});
+ }
+ },
+
+ afterRender : function(){
+ Ext.ColorPalette.superclass.afterRender.call(this);
+ if(this.value){
+ var s = this.value;
+ this.value = null;
+ this.select(s);
+ }
+ },
+
+ handleClick : function(e, t){
+ e.preventDefault();
+ if(!this.disabled){
+ var c = t.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];
+ this.select(c.toUpperCase());
+ }
+ },
+
+
+ select : function(color){
+ color = color.replace("#", "");
+ if(color != this.value || this.allowReselect){
+ var el = this.el;
+ if(this.value){
+ el.child("a.color-"+this.value).removeClass("x-color-palette-sel");
+ }
+ el.child("a.color-"+color).addClass("x-color-palette-sel");
+ this.value = color;
+ this.fireEvent("select", this, color);
+ }
+ }
+});
+Ext.reg('colorpalette', Ext.ColorPalette);
+
+Ext.DatePicker = Ext.extend(Ext.Component, {
+
+ todayText : "Today",
+
+ okText : " OK ",
+
+ cancelText : "Cancel",
+
+ todayTip : "{0} (Spacebar)",
+
+ minDate : null,
+
+ maxDate : null,
+
+ minText : "This date is before the minimum date",
+
+ maxText : "This date is after the maximum date",
+
+ format : "m/d/y",
+
+ disabledDays : null,
+
+ disabledDaysText : "",
+
+ disabledDatesRE : null,
+
+ disabledDatesText : "",
+
+ constrainToViewport : true,
+
+ monthNames : Date.monthNames,
+
+ dayNames : Date.dayNames,
+
+ nextText: 'Next Month (Control+Right)',
+
+ prevText: 'Previous Month (Control+Left)',
+
+ monthYearText: 'Choose a month (Control+Up/Down to move years)',
+
+ startDay : 0,
+
+ initComponent : function(){
+ Ext.DatePicker.superclass.initComponent.call(this);
+
+ this.value = this.value ?
+ this.value.clearTime() : new Date().clearTime();
+
+ this.addEvents({
+
+ select: true
+ });
+
+ if(this.handler){
+ this.on("select", this.handler, this.scope || this);
+ }
+
+ this.initDisabledDays();
+ },
+
+
+ initDisabledDays : function(){
+ if(!this.disabledDatesRE && this.disabledDates){
+ var dd = this.disabledDates;
+ var re = "(?:";
+ for(var i = 0; i < dd.length; i++){
+ re += dd[i];
+ if(i != dd.length-1) re += "|";
+ }
+ this.disabledDatesRE = new RegExp(re + ")");
+ }
+ },
+
+
+ setValue : function(value){
+ var old = this.value;
+ this.value = value.clearTime(true);
+ if(this.el){
+ this.update(this.value);
+ }
+ },
+
+
+ getValue : function(){
+ return this.value;
+ },
+
+
+ focus : function(){
+ if(this.el){
+ this.update(this.activeDate);
+ }
+ },
+
+
+ onRender : function(container, position){
+ var m = [
+ '<table cellspacing="0">',
+ '<tr><td class="x-date-left"><a href="#" title="', this.prevText ,'"> </a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="', this.nextText ,'"> </a></td></tr>',
+ '<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'];
+ var dn = this.dayNames;
+ for(var i = 0; i < 7; i++){
+ var d = this.startDay+i;
+ if(d > 6){
+ d = d-7;
+ }
+ m.push("<th><span>", dn[d].substr(0,1), "</span></th>");
+ }
+ m[m.length] = "</tr></thead><tbody><tr>";
+ for(var i = 0; i < 42; i++) {
+ if(i % 7 == 0 && i != 0){
+ m[m.length] = "</tr><tr>";
+ }
+ m[m.length] = '<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>';
+ }
+ m[m.length] = '</tr></tbody></table></td></tr><tr><td colspan="3" class="x-date-bottom" align="center"></td></tr></table><div class="x-date-mp"></div>';
+
+ var el = document.createElement("div");
+ el.className = "x-date-picker";
+ el.innerHTML = m.join("");
+
+ container.dom.insertBefore(el, position);
+
+ this.el = Ext.get(el);
+ this.eventEl = Ext.get(el.firstChild);
+
+ new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"), {
+ handler: this.showPrevMonth,
+ scope: this,
+ preventDefault:true,
+ stopDefault:true
+ });
+
+ new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"), {
+ handler: this.showNextMonth,
+ scope: this,
+ preventDefault:true,
+ stopDefault:true
+ });
+
+ this.eventEl.on("mousewheel", this.handleMouseWheel, this);
+
+ this.monthPicker = this.el.down('div.x-date-mp');
+ this.monthPicker.enableDisplayMode('block');
+
+ var kn = new Ext.KeyNav(this.eventEl, {
+ "left" : function(e){
+ e.ctrlKey ?
+ this.showPrevMonth() :
+ this.update(this.activeDate.add("d", -1));
+ },
+
+ "right" : function(e){
+ e.ctrlKey ?
+ this.showNextMonth() :
+ this.update(this.activeDate.add("d", 1));
+ },
+
+ "up" : function(e){
+ e.ctrlKey ?
+ this.showNextYear() :
+ this.update(this.activeDate.add("d", -7));
+ },
+
+ "down" : function(e){
+ e.ctrlKey ?
+ this.showPrevYear() :
+ this.update(this.activeDate.add("d", 7));
+ },
+
+ "pageUp" : function(e){
+ this.showNextMonth();
+ },
+
+ "pageDown" : function(e){
+ this.showPrevMonth();
+ },
+
+ "enter" : function(e){
+ e.stopPropagation();
+ return true;
+ },
+
+ scope : this
+ });
+
+ this.eventEl.on("click", this.handleDateClick, this, {delegate: "a.x-date-date"});
+
+ this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this);
+
+ this.el.unselectable();
+
+ this.cells = this.el.select("table.x-date-inner tbody td");
+ this.textNodes = this.el.query("table.x-date-inner tbody span");
+
+ this.mbtn = new Ext.Button({
+ text: " ",
+ tooltip: this.monthYearText,
+ renderTo: this.el.child("td.x-date-middle", true)
+ });
+
+ this.mbtn.on('click', this.showMonthPicker, this);
+ this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");
+
+
+ var today = (new Date()).dateFormat(this.format);
+ var todayBtn = new Ext.Button({
+ renderTo: this.el.child("td.x-date-bottom", true),
+ text: String.format(this.todayText, today),
+ tooltip: String.format(this.todayTip, today),
+ handler: this.selectToday,
+ scope: this
+ });
+
+ if(Ext.isIE){
+ this.el.repaint();
+ }
+ this.update(this.value);
+ },
+
+ createMonthPicker : function(){
+ if(!this.monthPicker.dom.firstChild){
+ var buf = ['<table border="0" cellspacing="0">'];
+ for(var i = 0; i < 6; i++){
+ buf.push(
+ '<tr><td class="x-date-mp-month"><a href="#">', this.monthNames[i].substr(0, 3), '</a></td>',
+ '<td class="x-date-mp-month x-date-mp-sep"><a href="#">', this.monthNames[i+6].substr(0, 3), '</a></td>',
+ i == 0 ?
+ '<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>' :
+ '<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>'
+ );
+ }
+ buf.push(
+ '<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',
+ this.okText,
+ '</button><button type="button" class="x-date-mp-cancel">',
+ this.cancelText,
+ '</button></td></tr>',
+ '</table>'
+ );
+ this.monthPicker.update(buf.join(''));
+ this.monthPicker.on('click', this.onMonthClick, this);
+ this.monthPicker.on('dblclick', this.onMonthDblClick, this);
+
+ this.mpMonths = this.monthPicker.select('td.x-date-mp-month');
+ this.mpYears = this.monthPicker.select('td.x-date-mp-year');
+
+ this.mpMonths.each(function(m, a, i){
+ i += 1;
+ if((i%2) == 0){
+ m.dom.xmonth = 5 + Math.round(i * .5);
+ }else{
+ m.dom.xmonth = Math.round((i-1) * .5);
+ }
+ });
+ }
+ },
+
+ showMonthPicker : function(){
+ this.createMonthPicker();
+ var size = this.el.getSize();
+ this.monthPicker.setSize(size);
+ this.monthPicker.child('table').setSize(size);
+
+ this.mpSelMonth = (this.activeDate || this.value).getMonth();
+ this.updateMPMonth(this.mpSelMonth);
+ this.mpSelYear = (this.activeDate || this.value).getFullYear();
+ this.updateMPYear(this.mpSelYear);
+
+ this.monthPicker.slideIn('t', {duration:.2});
+ },
+
+ updateMPYear : function(y){
+ this.mpyear = y;
+ var ys = this.mpYears.elements;
+ for(var i = 1; i <= 10; i++){
+ var td = ys[i-1], y2;
+ if((i%2) == 0){
+ y2 = y + Math.round(i * .5);
+ td.firstChild.innerHTML = y2;
+ td.xyear = y2;
+ }else{
+ y2 = y - (5-Math.round(i * .5));
+ td.firstChild.innerHTML = y2;
+ td.xyear = y2;
+ }
+ this.mpYears.item(i-1)[y2 == this.mpSelYear ? 'addClass' : 'removeClass']('x-date-mp-sel');
+ }
+ },
+
+ updateMPMonth : function(sm){
+ this.mpMonths.each(function(m, a, i){
+ m[m.dom.xmonth == sm ? 'addClass' : 'removeClass']('x-date-mp-sel');
+ });
+ },
+
+ selectMPMonth: function(m){
+
+ },
+
+ onMonthClick : function(e, t){
+ e.stopEvent();
+ var el = new Ext.Element(t), pn;
+ if(el.is('button.x-date-mp-cancel')){
+ this.hideMonthPicker();
+ }
+ else if(el.is('button.x-date-mp-ok')){
+ this.update(new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate || this.value).getDate()));
+ this.hideMonthPicker();
+ }
+ else if(pn = el.up('td.x-date-mp-month', 2)){
+ this.mpMonths.removeClass('x-date-mp-sel');
+ pn.addClass('x-date-mp-sel');
+ this.mpSelMonth = pn.dom.xmonth;
+ }
+ else if(pn = el.up('td.x-date-mp-year', 2)){
+ this.mpYears.removeClass('x-date-mp-sel');
+ pn.addClass('x-date-mp-sel');
+ this.mpSelYear = pn.dom.xyear;
+ }
+ else if(el.is('a.x-date-mp-prev')){
+ this.updateMPYear(this.mpyear-10);
+ }
+ else if(el.is('a.x-date-mp-next')){
+ this.updateMPYear(this.mpyear+10);
+ }
+ },
+
+ onMonthDblClick : function(e, t){
+ e.stopEvent();
+ var el = new Ext.Element(t), pn;
+ if(pn = el.up('td.x-date-mp-month', 2)){
+ this.update(new Date(this.mpSelYear, pn.dom.xmonth, (this.activeDate || this.value).getDate()));
+ this.hideMonthPicker();
+ }
+ else if(pn = el.up('td.x-date-mp-year', 2)){
+ this.update(new Date(pn.dom.xyear, this.mpSelMonth, (this.activeDate || this.value).getDate()));
+ this.hideMonthPicker();
+ }
+ },
+
+ hideMonthPicker : function(disableAnim){
+ if(this.monthPicker){
+ if(disableAnim === true){
+ this.monthPicker.hide();
+ }else{
+ this.monthPicker.slideOut('t', {duration:.2});
+ }
+ }
+ },
+
+
+ showPrevMonth : function(e){
+ this.update(this.activeDate.add("mo", -1));
+ },
+
+
+ showNextMonth : function(e){
+ this.update(this.activeDate.add("mo", 1));
+ },
+
+
+ showPrevYear : function(){
+ this.update(this.activeDate.add("y", -1));
+ },
+
+
+ showNextYear : function(){
+ this.update(this.activeDate.add("y", 1));
+ },
+
+
+ handleMouseWheel : function(e){
+ var delta = e.getWheelDelta();
+ if(delta > 0){
+ this.showPrevMonth();
+ e.stopEvent();
+ } else if(delta < 0){
+ this.showNextMonth();
+ e.stopEvent();
+ }
+ },
+
+
+ handleDateClick : function(e, t){
+ e.stopEvent();
+ if(t.dateValue && !Ext.fly(t.parentNode).hasClass("x-date-disabled")){
+ this.setValue(new Date(t.dateValue));
+ this.fireEvent("select", this, this.value);
+ }
+ },
+
+
+ selectToday : function(){
+ this.setValue(new Date().clearTime());
+ this.fireEvent("select", this, this.value);
+ },
+
+
+ update : function(date){
+ var vd = this.activeDate;
+ this.activeDate = date;
+ if(vd && this.el){
+ var t = date.getTime();
+ if(vd.getMonth() == date.getMonth() && vd.getFullYear() == date.getFullYear()){
+ this.cells.removeClass("x-date-selected");
+ this.cells.each(function(c){
+ if(c.dom.firstChild.dateValue == t){
+ c.addClass("x-date-selected");
+ setTimeout(function(){
+ try{c.dom.firstChild.focus();}catch(e){}
+ }, 50);
+ return false;
+ }
+ });
+ return;
+ }
+ }
+ var days = date.getDaysInMonth();
+ var firstOfMonth = date.getFirstDateOfMonth();
+ var startingPos = firstOfMonth.getDay()-this.startDay;
+
+ if(startingPos <= this.startDay){
+ startingPos += 7;
+ }
+
+ var pm = date.add("mo", -1);
+ var prevStart = pm.getDaysInMonth()-startingPos;
+
+ var cells = this.cells.elements;
+ var textEls = this.textNodes;
+ days += startingPos;
+
+
+ var day = 86400000;
+ var d = (new Date(pm.getFullYear(), pm.getMonth(), prevStart)).clearTime();
+ var today = new Date().clearTime().getTime();
+ var sel = date.clearTime().getTime();
+ var min = this.minDate ? this.minDate.clearTime() : Number.NEGATIVE_INFINITY;
+ var max = this.maxDate ? this.maxDate.clearTime() : Number.POSITIVE_INFINITY;
+ var ddMatch = this.disabledDatesRE;
+ var ddText = this.disabledDatesText;
+ var ddays = this.disabledDays ? this.disabledDays.join("") : false;
+ var ddaysText = this.disabledDaysText;
+ var format = this.format;
+
+ var setCellClass = function(cal, cell){
+ cell.title = "";
+ var t = d.getTime();
+ cell.firstChild.dateValue = t;
+ if(t == today){
+ cell.className += " x-date-today";
+ cell.title = cal.todayText;
+ }
+ if(t == sel){
+ cell.className += " x-date-selected";
+ setTimeout(function(){
+ try{cell.firstChild.focus();}catch(e){}
+ }, 50);
+ }
+
+ if(t < min) {
+ cell.className = " x-date-disabled";
+ cell.title = cal.minText;
+ return;
+ }
+ if(t > max) {
+ cell.className = " x-date-disabled";
+ cell.title = cal.maxText;
+ return;
+ }
+ if(ddays){
+ if(ddays.indexOf(d.getDay()) != -1){
+ cell.title = ddaysText;
+ cell.className = " x-date-disabled";
+ }
+ }
+ if(ddMatch && format){
+ var fvalue = d.dateFormat(format);
+ if(ddMatch.test(fvalue)){
+ cell.title = ddText.replace("%0", fvalue);
+ cell.className = " x-date-disabled";
+ }
+ }
+ };
+
+ var i = 0;
+ for(; i < startingPos; i++) {
+ textEls[i].innerHTML = (++prevStart);
+ d.setDate(d.getDate()+1);
+ cells[i].className = "x-date-prevday";
+ setCellClass(this, cells[i]);
+ }
+ for(; i < days; i++){
+ intDay = i - startingPos + 1;
+ textEls[i].innerHTML = (intDay);
+ d.setDate(d.getDate()+1);
+ cells[i].className = "x-date-active";
+ setCellClass(this, cells[i]);
+ }
+ var extraDays = 0;
+ for(; i < 42; i++) {
+ textEls[i].innerHTML = (++extraDays);
+ d.setDate(d.getDate()+1);
+ cells[i].className = "x-date-nextday";
+ setCellClass(this, cells[i]);
+ }
+
+ this.mbtn.setText(this.monthNames[date.getMonth()] + " " + date.getFullYear());
+
+ if(!this.internalRender){
+ var main = this.el.dom.firstChild;
+ var w = main.offsetWidth;
+ this.el.setWidth(w + this.el.getBorderWidth("lr"));
+ Ext.fly(main).setWidth(w);
+ this.internalRender = true;
+
+
+
+ if(Ext.isOpera && !this.secondPass){
+ main.rows[0].cells[1].style.width = (w - (main.rows[0].cells[0].offsetWidth+main.rows[0].cells[2].offsetWidth)) + "px";
+ this.secondPass = true;
+ this.update.defer(10, this, [date]);
+ }
+ }
+ }
+});
+Ext.reg('datepicker', Ext.DatePicker);
+
+Ext.TabPanel = Ext.extend(Ext.Panel, {
+
+ monitorResize : true,
+
+ deferredRender : true,
+
+ tabWidth: 120,
+
+ minTabWidth: 30,
+
+ resizeTabs:false,
+
+ enableTabScroll: false,
+
+ scrollIncrement : 0,
+
+ scrollRepeatInterval : 400,
+
+ scrollDuration : .35,
+
+ animScroll : true,
+
+ tabPosition: 'top',
+
+ baseCls: 'x-tab-panel',
+
+ autoTabs : false,
+
+ autoTabSelector:'div.x-tab',
+ itemCls : 'x-tab-item',
+
+ activeTab : null,
+
+ tabMargin : 2,
+
+ plain: false,
+
+ elements: 'body',
+ headerAsText: false,
+ frame: false,
+ hideBorders:true,
+
+ initComponent : function(){
+ this.frame = false;
+ Ext.TabPanel.superclass.initComponent.call(this);
+ this.addEvents({
+
+ beforetabchange: true,
+
+ tabchange : true,
+
+ contextmenu: true
+ });
+ this.setLayout(new Ext.layout.CardLayout({
+ deferredRender: this.deferredRender
+ }));
+ if(this.tabPosition == 'top'){
+ this.elements += ',header';
+ this.stripTarget = 'header';
+ }else {
+ this.elements += ',footer';
+ this.stripTarget = 'footer';
+ }
+ if(!this.stack){
+ this.stack = Ext.TabPanel.AccessStack();
+ }
+ this.initItems();
+ },
+
+ render : function(){
+ Ext.TabPanel.superclass.render.apply(this, arguments);
+ if(this.activeTab !== undefined){
+ var item = this.activeTab;
+ delete this.activeTab;
+ this.setActiveTab(item);
+ }
+ },
+
+ onRender : function(ct, position){
+ Ext.TabPanel.superclass.onRender.call(this, ct, position);
+
+ if(this.plain){
+ var pos = this.tabPosition == 'top' ? 'header' : 'footer';
+ this[pos].addClass('x-tab-panel-'+pos+'-plain');
+ }
+
+ var st = this[this.stripTarget];
+
+ this.stripWrap = st.createChild({cls:'x-tab-strip-wrap', cn:{
+ tag:'ul', cls:'x-tab-strip x-tab-strip-'+this.tabPosition}});
+ this.stripSpacer = st.createChild({cls:'x-tab-strip-spacer'});
+ this.strip = new Ext.Element(this.stripWrap.dom.firstChild);
+
+ this.edge = this.strip.createChild({tag:'li', cls:'x-tab-edge'});
+ this.strip.createChild({cls:'x-clear'});
+
+ this.body.addClass('x-tab-panel-body-'+this.tabPosition);
+
+ if(!this.itemTpl){
+ var tt = new Ext.Template(
+ '<li class="{cls}" id="{id}"><a class="x-tab-strip-close" onclick="return false;"></a>',
+ '<a class="x-tab-right" href="#" onclick="return false;"><em class="x-tab-left">',
+ '<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',
+ '</em></a></li>'
+ );
+ tt.disableFormats = true;
+ tt.compile();
+ Ext.TabPanel.prototype.itemTpl = tt;
+ }
+
+ this.items.each(this.initTab, this);
+ },
+
+ afterRender : function(){
+ Ext.TabPanel.superclass.afterRender.call(this);
+ if(this.autoTabs){
+ this.readTabs(false);
+ }
+ },
+
+ initEvents : function(){
+ Ext.TabPanel.superclass.initEvents.call(this);
+ this.on('add', this.onAdd, this);
+ this.on('remove', this.onRemove, this);
+
+ this.strip.on('mousedown', this.onStripMouseDown, this);
+ this.strip.on('click', this.onStripClick, this);
+ this.strip.on('contextmenu', this.onStripContextMenu, this);
+ },
+
+ findTargets : function(e){
+ var item = null;
+ var itemEl = e.getTarget('li', this.strip);
+ if(itemEl){
+ item = this.getComponent(itemEl.id.split('__')[1]);
+ if(item.disabled){
+ return {
+ close : null,
+ item : null,
+ el : null
+ };
+ }
+ }
+ return {
+ close : e.getTarget('.x-tab-strip-close', this.strip),
+ item : item,
+ el : itemEl
+ };
+ },
+
+ onStripMouseDown : function(e){
+ e.preventDefault();
+ if(e.button != 0){
+ return;
+ }
+ var t = this.findTargets(e);
+ if(t.close){
+ this.remove(t.item);
+ return;
+ }
+ if(t.item){
+ this.setActiveTab(t.item);
+ }
+ },
+
+ onStripClick : function(e){
+ var t = this.findTargets(e);
+ if(!t.close && t.item & t.item != this.activeTab){
+ this.setActiveTab(t.item);
+ }
+ },
+
+ onStripContextMenu : function(e){
+ e.preventDefault();
+ var t = this.findTargets(e);
+ if(t.item){
+ this.fireEvent('contextmenu', this, t.item, e);
+ }
+ },
+
+
+ readTabs : function(removeExisting){
+ if(removeExisting === true){
+ this.items.each(function(item){
+ this.remove(item);
+ }, this);
+ }
+ var tabs = this.el.query(this.autoTabSelector);
+ for(var i = 0, len = tabs.length; i < len; i++){
+ var tab = tabs[i];
+ var title = tab.getAttribute('title');
+ tab.removeAttribute('title');
+ this.add({
+ title: title,
+ el: tab
+ });
+ }
+ },
+
+ initTab : function(item, index){
+ var before = this.strip.dom.childNodes[index];
+ var cls = item.closable ? 'x-tab-strip-closable' : '';
+ if(item.disabled){
+ cls += ' x-item-disabled';
+ }
+ if(item.iconCls){
+ cls += ' x-tab-with-icon';
+ }
+ var p = {
+ id: this.id + '__' + item.id,
+ text: item.title,
+ cls: cls,
+ iconCls: item.iconCls || ''
+ };
+ var el = before ?
+ this.itemTpl.insertBefore(before, p) :
+ this.itemTpl.append(this.strip, p);
+
+ Ext.fly(el).addClassOnOver('x-tab-strip-over');
+
+ if(item.tabTip){
+ Ext.fly(el).child('span.x-tab-strip-text', true).qtip = item.tabTip;
+ }
+ item.on('disable', this.onItemDisabled, this);
+ item.on('enable', this.onItemEnabled, this);
+ item.on('titlechange', this.onItemTitleChanged, this);
+ item.on('beforeshow', this.onBeforeShowItem, this);
+ },
+
+ onAdd : function(tp, item, index){
+ this.initTab(item, index);
+ this.delegateUpdates();
+ },
+
+ onBeforeAdd : function(item){
+ var existing = item.events ? (this.items.containsKey(item.id) ? item : null) : this.items.get(item);
+ if(existing){
+ this.setActiveTab(item);
+ return false;
+ }
+ Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments);
+ var es = item.elements;
+ item.elements = es ? es.replace(',header', '') : es;
+ item.border = (item.border === true);
+ },
+
+ onRemove : function(tp, item){
+ Ext.removeNode(this.getTabEl(item));
+ this.stack.remove(item);
+ if(item == this.activeTab){
+ var next = this.stack.next();
+ if(next){
+ this.setActiveTab(next);
+ }else{
+ this.setActiveTab(0);
+ }
+ }
+ this.delegateUpdates();
+ },
+
+ onBeforeShowItem : function(item){
+ if(item != this.activeTab){
+ this.setActiveTab(item);
+ return false;
+ }
+ },
+
+ onItemDisabled : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).addClass('x-item-disabled');
+ }
+ this.stack.remove(item);
+ },
+
+ onItemEnabled : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).removeClass('x-item-disabled');
+ }
+ },
+
+ onItemTitleChanged : function(item){
+ var el = this.getTabEl(item);
+ if(el){
+ Ext.fly(el).child('span.x-tab-strip-text', true).innerHTML = item.title;
+ }
+ },
+
+
+ getTabEl : function(item){
+ return document.getElementById(this.id+'__'+item.id);
+ },
+
+ onResize : function(){
+ Ext.TabPanel.superclass.onResize.apply(this, arguments);
+ this.delegateUpdates();
+ },
+
+
+ beginUpdate : function(){
+ this.suspendUpdates = true;
+ },
+
+
+ endUpdate : function(){
+ this.suspendUpdates = false;
+ this.delegateUpdates();
+ },
+
+
+ hideTabStripItem : function(item){
+ item = this.getComponent(item);
+ var el = this.getTabEl(item);
+ if(el){
+ el.style.display = 'none';
+ this.delegateUpdates();
+ }
+ },
+
+
+ unhideTabStripItem : function(item){
+ item = this.getComponent(item);
+ var el = this.getTabEl(item);
+ if(el){
+ el.style.display = '';
+ this.delegateUpdates();
+ }
+ },
+
+ delegateUpdates : function(){
+ if(this.suspendUpdates){
+ return;
+ }
+ if(this.resizeTabs && this.rendered){
+ this.autoSizeTabs();
+ }
+ if(this.enableTabScroll && this.rendered){
+ this.autoScrollTabs();
+ }
+ },
+
+ autoSizeTabs : function(){
+ var count = this.items.length;
+ var ow = this.header.dom.offsetWidth;
+ var aw = this.header.dom.clientWidth;
+
+ if(!this.resizeTabs || count < 1 || !aw){ return;
+ }
+
+ var each = Math.max(Math.min(Math.floor((aw-4) / count) - this.tabMargin, this.tabWidth), this.minTabWidth); this.lastTabWidth = each;
+ var lis = this.stripWrap.dom.getElementsByTagName('li');
+ for(var i = 0, len = lis.length-1; i < len; i++) { var li = lis[i];
+ var inner = li.childNodes[1].firstChild.firstChild;
+ var tw = li.offsetWidth;
+ var iw = inner.offsetWidth;
+ inner.style.width = (each - (tw-iw)) + 'px';
+ }
+ },
+
+ adjustBodyWidth : function(w){
+ if(this.header){
+ this.header.setWidth(w);
+ }
+ if(this.footer){
+ this.footer.setWidth(w);
+ }
+ return w;
+ },
+
+
+ setActiveTab : function(item){
+ item = this.getComponent(item);
+ if(!item || this.fireEvent('beforetabchange', this, item, this.activeTab) === false){
+ return;
+ }
+ if(!this.rendered){
+ this.activeTab = item;
+ return;
+ }
+ if(this.activeTab != item){
+ if(this.activeTab){
+ var oldEl = this.getTabEl(this.activeTab);
+ if(oldEl){
+ Ext.fly(oldEl).removeClass('x-tab-strip-active');
+ }
+ this.activeTab.fireEvent('deactivate', this.activeTab);
+ }
+ var el = this.getTabEl(item);
+ Ext.fly(el).addClass('x-tab-strip-active');
+ this.activeTab = item;
+ this.stack.add(item);
+
+ this.layout.setActiveItem(item);
+
+ if(this.scrolling){
+ this.scrollToTab(item, this.animScroll);
+ }
+
+ item.fireEvent('activate', item);
+ this.fireEvent('tabchange', this, item);
+ }
+ },
+
+
+ getActiveTab : function(){
+ return this.activeTab || null;
+ },
+
+
+ getItem : function(item){
+ return this.getComponent(item);
+ },
+
+ autoScrollTabs : function(){
+ var count = this.items.length;
+ var ow = this.header.dom.offsetWidth;
+ var tw = this.header.dom.clientWidth;
+
+ var wrap = this.stripWrap;
+ var cw = wrap.dom.offsetWidth;
+ var pos = this.getScrollPos();
+ var l = this.edge.getOffsetsTo(this.stripWrap)[0] + pos;
+
+ if(!this.enableTabScroll || count < 1 || cw < 20){ return;
+ }
+ if(l <= tw){
+ wrap.dom.scrollLeft = 0;
+ wrap.setWidth(tw);
+ if(this.scrolling){
+ this.scrolling = false;
+ this.header.removeClass('x-tab-scrolling');
+ this.scrollLeft.hide();
+ this.scrollRight.hide();
+ }
+ }else{
+ if(!this.scrolling){
+ this.header.addClass('x-tab-scrolling');
+ }
+ tw -= wrap.getMargins('lr');
+ wrap.setWidth(tw > 20 ? tw : 20);
+ if(!this.scrolling){
+ if(!this.scrollLeft){
+ this.createScrollers();
+ }else{
+ this.scrollLeft.show();
+ this.scrollRight.show();
+ }
+ }
+ this.scrolling = true;
+ if(pos > (l-tw)){ wrap.dom.scrollLeft = l-tw;
+ }else{ this.scrollToTab(this.activeTab, false);
+ }
+ this.updateScrollButtons();
+ }
+ },
+
+ createScrollers : function(){
+ var h = this.stripWrap.dom.offsetHeight;
+
+ var sl = this.header.insertFirst({
+ cls:'x-tab-scroller-left'
+ });
+ sl.setHeight(h);
+ sl.addClassOnOver('x-tab-scroller-left-over');
+ this.leftRepeater = new Ext.util.ClickRepeater(sl, {
+ interval : this.scrollRepeatInterval,
+ handler: this.onScrollLeft,
+ scope: this
+ });
+ this.scrollLeft = sl;
+
+ var sr = this.header.insertFirst({
+ cls:'x-tab-scroller-right'
+ });
+ sr.setHeight(h);
+ sr.addClassOnOver('x-tab-scroller-right-over');
+ this.rightRepeater = new Ext.util.ClickRepeater(sr, {
+ interval : this.scrollRepeatInterval,
+ handler: this.onScrollRight,
+ scope: this
+ });
+ this.scrollRight = sr;
+ },
+
+ getScrollWidth : function(){
+ return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos();
+ },
+
+ getScrollPos : function(){
+ return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0;
+ },
+
+ getScrollArea : function(){
+ return parseInt(this.stripWrap.dom.clientWidth, 10) || 0;
+ },
+
+ getScrollAnim : function(){
+ return {duration:this.scrollDuration, callback: this.updateScrollButtons, scope: this};
+ },
+
+ getScrollIncrement : function(){
+ return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth+2 : 100);
+ },
+
+
+
+ scrollToTab : function(item, animate){
+ if(!item){ return; }
+ var el = this.getTabEl(item);
+ var pos = this.getScrollPos(), area = this.getScrollArea();
+ var left = Ext.fly(el).getOffsetsTo(this.stripWrap)[0] + pos;
+ var right = left + el.offsetWidth;
+ if(left < pos){
+ this.scrollTo(left, animate);
+ }else if(right > (pos + area)){
+ this.scrollTo(right - area, animate);
+ }
+ },
+
+ scrollTo : function(pos, animate){
+ this.stripWrap.scrollTo('left', pos, animate ? this.getScrollAnim() : false);
+ if(!animate){
+ this.updateScrollButtons();
+ }
+ },
+
+ onScrollRight : function(){
+ var sw = this.getScrollWidth()-this.getScrollArea();
+ var pos = this.getScrollPos();
+ var s = Math.min(sw, pos + this.getScrollIncrement());
+ if(s != pos){
+ this.scrollTo(s, this.animScroll);
+ }
+ },
+
+ onScrollLeft : function(){
+ var pos = this.getScrollPos();
+ var s = Math.max(0, pos - this.getScrollIncrement());
+ if(s != pos){
+ this.scrollTo(s, this.animScroll);
+ }
+ },
+
+ updateScrollButtons : function(){
+ var pos = this.getScrollPos();
+ this.scrollLeft[pos == 0 ? 'addClass' : 'removeClass']('x-tab-scroller-left-disabled');
+ this.scrollRight[pos >= (this.getScrollWidth()-this.getScrollArea()) ? 'addClass' : 'removeClass']('x-tab-scroller-right-disabled');
+ }
+});
+Ext.reg('tabpanel', Ext.TabPanel);
+
+
+Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab;
+
+Ext.TabPanel.AccessStack = function(){
+ var items = [];
+ return {
+ add : function(item){
+ items.push(item);
+ if(items.length > 10){
+ items.shift();
+ }
+ },
+
+ remove : function(item){
+ var s = [];
+ for(var i = 0, len = items.length; i < len; i++) {
+ if(items[i] != item){
+ s.push(items[i]);
+ }
+ }
+ items = s;
+ },
+
+ next : function(){
+ return items.pop();
+ }
+ };
+};
+
+
+
+Ext.Button = Ext.extend(Ext.Component, {
+
+ hidden : false,
+
+ disabled : false,
+
+ pressed : false,
+
+
+
+
+ enableToggle: false,
+
+
+ menuAlign : "tl-bl?",
+
+
+
+ type : 'button',
+
+
+ menuClassTarget: 'tr',
+
+
+ clickEvent : 'click',
+
+
+ handleMouseEvents : true,
+
+
+ tooltipType : 'qtip',
+
+
+
+
+ initComponent : function(){
+ Ext.Button.superclass.initComponent.call(this);
+
+ this.addEvents({
+
+ "click" : true,
+
+ "toggle" : true,
+
+ 'mouseover' : true,
+
+ 'mouseout': true,
+
+ 'menushow' : true,
+
+ 'menuhide': true,
+
+ 'menutriggerover': true,
+
+ 'menutriggerout': true
+ });
+ if(this.menu){
+ this.menu = Ext.menu.MenuMgr.get(this.menu);
+ }
+ if(typeof this.toggleGroup === 'string'){
+ this.enableToggle = true;
+ }
+ },
+
+
+ onRender : function(ct, position){
+ if(!this.template){
+ if(!Ext.Button.buttonTemplate){
+
+ Ext.Button.buttonTemplate = new Ext.Template(
+ '<table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap"><tbody><tr>',
+ '<td class="x-btn-left"><i> </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="{1}">{0}</button></em></td><td class="x-btn-right"><i> </i></td>',
+ "</tr></tbody></table>");
+ }
+ this.template = Ext.Button.buttonTemplate;
+ }
+ var btn, targs = [this.text || ' ', this.type];
+
+ if(position){
+ btn = this.template.insertBefore(position, targs, true);
+ }else{
+ btn = this.template.append(ct, targs, true);
+ }
+ var btnEl = btn.child("button:first");
+ btnEl.on('focus', this.onFocus, this);
+ btnEl.on('blur', this.onBlur, this);
+
+ this.initButtonEl(btn, btnEl);
+
+ if(this.menu){
+ this.el.child(this.menuClassTarget).addClass("x-btn-with-menu");
+ }
+ Ext.ButtonToggleMgr.register(this);
+ },
+
+ initButtonEl : function(btn, btnEl){
+
+ this.el = btn;
+ btn.addClass("x-btn");
+
+ if(this.icon){
+ btnEl.setStyle('background-image', 'url(' +this.icon +')');
+ }
+ if(this.iconCls){
+ btnEl.addClass(this.iconCls);
+ if(!this.cls){
+ btn.addClass(this.text ? 'x-btn-text-icon' : 'x-btn-icon');
+ }
+ }
+ if(this.tabIndex !== undefined){
+ btnEl.dom.tabIndex = this.tabIndex;
+ }
+ if(this.tooltip){
+ if(typeof this.tooltip == 'object'){
+ Ext.QuickTips.register(Ext.apply({
+ target: btnEl.id
+ }, this.tooltip));
+ } else {
+ btnEl.dom[this.tooltipType] = this.tooltip;
+ }
+ }
+
+ if(this.pressed){
+ this.el.addClass("x-btn-pressed");
+ }
+
+ if(this.handleMouseEvents){
+ btn.on("mouseover", this.onMouseOver, this);
+ btn.on("mouseout", this.onMouseOut, this);
+ btn.on("mousedown", this.onMouseDown, this);
+ }
+
+ if(this.menu){
+ this.menu.on("show", this.onMenuShow, this);
+ this.menu.on("hide", this.onMenuHide, this);
+ }
+
+ if(this.id){
+ this.el.dom.id = this.el.id = this.id;
+ }
+
+ if(this.repeat){
+ var repeater = new Ext.util.ClickRepeater(btn,
+ typeof this.repeat == "object" ? this.repeat : {}
+ );
+ repeater.on("click", this.onClick, this);
+ }
+
+ btn.on(this.clickEvent, this.onClick, this);
+ },
+
+ afterRender : function(){
+ Ext.Button.superclass.afterRender.call(this);
+ if(Ext.isIE6){
+ this.autoWidth.defer(1, this);
+ }else{
+ this.autoWidth();
+ }
+ },
+
+ setIconClass : function(cls){
+ if(this.el){
+ this.el.child('button').replaceClass(this.iconCls, cls);
+ }
+ this.iconCls = cls;
+ },
+
+ onDestroy : function(){
+ if(this.rendered){
+ Ext.ButtonToggleMgr.unregister(this);
+ }
+ },
+
+
+ autoWidth : function(){
+ if(this.el){
+ this.el.setWidth("auto");
+ if(Ext.isIE7 && Ext.isStrict){
+ var ib = this.el.child('button');
+ if(ib && ib.getWidth() > 20){
+ ib.clip();
+ ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr'));
+ }
+ }
+ if(this.minWidth){
+ if(this.el.getWidth() < this.minWidth){
+ this.el.setWidth(this.minWidth);
+ }
+ }
+ }
+ },
+
+
+ setHandler : function(handler, scope){
+ this.handler = handler;
+ this.scope = scope;
+ },
+
+
+ setText : function(text){
+ this.text = text;
+ if(this.el){
+ this.el.child("td.x-btn-center button.x-btn-text").update(text);
+ }
+ this.autoWidth();
+ },
+
+
+ getText : function(){
+ return this.text;
+ },
+
+
+ toggle : function(state){
+ state = state === undefined ? !this.pressed : state;
+ if(state != this.pressed){
+ if(state){
+ this.el.addClass("x-btn-pressed");
+ this.pressed = true;
+ this.fireEvent("toggle", this, true);
+ }else{
+ this.el.removeClass("x-btn-pressed");
+ this.pressed = false;
+ this.fireEvent("toggle", this, false);
+ }
+ if(this.toggleHandler){
+ this.toggleHandler.call(this.scope || this, this, state);
+ }
+ }
+ },
+
+
+ focus : function(){
+ this.el.child('button:first').focus();
+ },
+
+ onDisable : function(){
+ if(this.el){
+ if(!Ext.isIE6){
+ this.el.addClass("x-item-disabled");
+ }
+ this.el.dom.disabled = true;
+ }
+ this.disabled = true;
+ },
+
+ onEnable : function(){
+ if(this.el){
+ if(!Ext.isIE6){
+ this.el.removeClass("x-item-disabled");
+ }
+ this.el.dom.disabled = false;
+ }
+ this.disabled = false;
+ },
+
+
+ showMenu : function(){
+ if(this.menu){
+ this.menu.show(this.el, this.menuAlign);
+ }
+ return this;
+ },
+
+
+ hideMenu : function(){
+ if(this.menu){
+ this.menu.hide();
+ }
+ return this;
+ },
+
+
+ hasVisibleMenu : function(){
+ return this.menu && this.menu.isVisible();
+ },
+
+
+ onClick : function(e){
+ if(e){
+ e.preventDefault();
+ }
+ if(e.button != 0){
+ return;
+ }
+ if(!this.disabled){
+ if(this.enableToggle && (this.allowDepress !== false || !this.pressed)){
+ this.toggle();
+ }
+ if(this.menu && !this.menu.isVisible() && !this.ignoreNextClick){
+ this.showMenu();
+ }
+ this.fireEvent("click", this, e);
+ if(this.handler){
+ this.el.removeClass("x-btn-over");
+ this.handler.call(this.scope || this, this, e);
+ }
+ }
+ },
+
+ isMenuTriggerOver : function(e, internal){
+ return this.menu && !internal;
+ },
+
+ isMenuTriggerOut : function(e, internal){
+ return this.menu && !internal;
+ },
+
+
+ onMouseOver : function(e){
+ if(!this.disabled){
+ var internal = e.within(this.el, true);
+ if(!internal){
+ this.el.addClass("x-btn-over");
+ this.fireEvent('mouseover', this, e);
+ }
+ if(this.isMenuTriggerOver(e, internal)){
+ this.fireEvent('menutriggerover', this, this.menu, e);
+ }
+ }
+ },
+
+
+ onMouseOut : function(e){
+ var internal = e.within(this.el, true);
+ if(!internal){
+ this.el.removeClass("x-btn-over");
+ this.fireEvent('mouseout', this, e);
+ }
+ if(this.isMenuTriggerOut(e), internal){
+ this.fireEvent('menutriggerout', this, this.menu, e);
+ }
+ },
+
+ onFocus : function(e){
+ if(!this.disabled){
+ this.el.addClass("x-btn-focus");
+ }
+ },
+
+ onBlur : function(e){
+ this.el.removeClass("x-btn-focus");
+ },
+
+ getClickEl : function(e, isUp){
+ return this.el;
+ },
+
+
+ onMouseDown : function(e){
+ if(!this.disabled && e.button == 0){
+ this.getClickEl(e).addClass("x-btn-click");
+ Ext.getDoc().on('mouseup', this.onMouseUp, this);
+ }
+ },
+
+ onMouseUp : function(e){
+ if(e.button == 0){
+ this.getClickEl(e, true).removeClass("x-btn-click");
+ Ext.getDoc().un('mouseup', this.onMouseUp, this);
+ }
+ },
+
+ onMenuShow : function(e){
+ this.ignoreNextClick = 0;
+ this.el.addClass("x-btn-menu-active");
+ this.fireEvent('menushow', this, this.menu);
+ },
+
+ onMenuHide : function(e){
+ this.el.removeClass("x-btn-menu-active");
+ this.ignoreNextClick = this.restoreClick.defer(250, this);
+ this.fireEvent('menuhide', this, this.menu);
+ },
+
+ restoreClick : function(){
+ this.ignoreNextClick = 0;
+ }
+});
+Ext.reg('button', Ext.Button);
+
+
+Ext.ButtonToggleMgr = function(){
+ var groups = {};
+
+ function toggleGroup(btn, state){
+ if(state){
+ var g = groups[btn.toggleGroup];
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i] != btn){
+ g[i].toggle(false);
+ }
+ }
+ }
+ }
+
+ return {
+ register : function(btn){
+ if(!btn.toggleGroup){
+ return;
+ }
+ var g = groups[btn.toggleGroup];
+ if(!g){
+ g = groups[btn.toggleGroup] = [];
+ }
+ g.push(btn);
+ btn.on("toggle", toggleGroup);
+ },
+
+ unregister : function(btn){
+ if(!btn.toggleGroup){
+ return;
+ }
+ var g = groups[btn.toggleGroup];
+ if(g){
+ g.remove(btn);
+ btn.un("toggle", toggleGroup);
+ }
+ }
+ };
+}();
+
+Ext.SplitButton = Ext.extend(Ext.Button, {
+
+ initComponent : function(){
+ Ext.SplitButton.superclass.initComponent.call(this);
+
+ this.addEvents({"arrowclick":true});
+ },
+
+ onRender : function(ct, position){
+
+ var tpl = new Ext.Template(
+ '<table cellspacing="0" class="x-btn-menu-wrap x-btn"><tr><td>',
+ '<table cellspacing="0" class="x-btn-wrap x-btn-menu-text-wrap"><tbody>',
+ '<tr><td class="x-btn-left"><i> </i></td><td class="x-btn-center"><button class="x-btn-text" type="{1}">{0}</button></td></tr>',
+ "</tbody></table></td><td>",
+ '<table cellspacing="0" class="x-btn-wrap x-btn-menu-arrow-wrap"><tbody>',
+ '<tr><td class="x-btn-center"><button class="x-btn-menu-arrow-el" type="button"> </button></td><td class="x-btn-right"><i> </i></td></tr>',
+ "</tbody></table></td></tr></table>"
+ );
+ var btn, targs = [this.text || ' ', this.type];
+ if(position){
+ btn = tpl.insertBefore(position, targs, true);
+ }else{
+ btn = tpl.append(ct, targs, true);
+ }
+ var btnEl = btn.child("button:first");
+
+ this.initButtonEl(btn, btnEl);
+ this.arrowBtnTable = btn.child("table:last");
+ if(this.arrowTooltip){
+ btn.child("button:last").dom[this.tooltipType] = this.arrowTooltip;
+ }
+ },
+
+
+ autoWidth : function(){
+ if(this.el){
+ var tbl = this.el.child("table:first");
+ var tbl2 = this.el.child("table:last");
+ this.el.setWidth("auto");
+ tbl.setWidth("auto");
+ if(Ext.isIE7 && Ext.isStrict){
+ var ib = this.el.child('button:first');
+ if(ib && ib.getWidth() > 20){
+ ib.clip();
+ ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr'));
+ }
+ }
+ if(this.minWidth){
+ if((tbl.getWidth()+tbl2.getWidth()) < this.minWidth){
+ tbl.setWidth(this.minWidth-tbl2.getWidth());
+ }
+ }
+ this.el.setWidth(tbl.getWidth()+tbl2.getWidth());
+ }
+ },
+
+
+ setArrowHandler : function(handler, scope){
+ this.arrowHandler = handler;
+ this.scope = scope;
+ },
+
+
+ onClick : function(e){
+ e.preventDefault();
+ if(!this.disabled){
+ if(e.getTarget(".x-btn-menu-arrow-wrap")){
+ if(this.menu && !this.menu.isVisible() && !this.ignoreNextClick){
+ this.showMenu();
+ }
+ this.fireEvent("arrowclick", this, e);
+ if(this.arrowHandler){
+ this.arrowHandler.call(this.scope || this, this, e);
+ }
+ }else{
+ if(this.enableToggle){
+ this.toggle();
+ }
+ this.fireEvent("click", this, e);
+ if(this.handler){
+ this.handler.call(this.scope || this, this, e);
+ }
+ }
+ }
+ },
+
+ getClickEl : function(e, isUp){
+ if(!isUp){
+ return (this.lastClickEl = e.getTarget("table", 10, true));
+ }
+ return this.lastClickEl;
+ },
+
+ onDisable : function(){
+ if(this.el){
+ if(!Ext.isIE6){
+ this.el.addClass("x-item-disabled");
+ }
+ this.el.select('button').set('disabled', true);
+ }
+ this.disabled = true;
+ },
+
+ onEnable : function(){
+ if(this.el){
+ if(!Ext.isIE6){
+ this.el.removeClass("x-item-disabled");
+ }
+ this.el.select('button').set('disabled', false);
+ }
+ this.disabled = false;
+ },
+
+ isMenuTriggerOver : function(e){
+ return this.menu && e.within(this.arrowBtnTable) && !e.within(this.arrowBtnTable, true);
+ },
+
+ isMenuTriggerOut : function(e, internal){
+ return this.menu && !e.within(this.arrowBtnTable, true);
+ },
+
+ onDestroy : function(){
+ Ext.destroy(this.arrowBtnTable);
+ Ext.SplitButton.superclass.onDestroy.call(this);
+ }
+});
+
+
+Ext.MenuButton = Ext.SplitButton;
+
+
+Ext.reg('splitbutton', Ext.SplitButton);
+
+Ext.CycleButton = Ext.extend(Ext.SplitButton, {
+
+
+
+
+
+
+ getItemText : function(item){
+ if(item && this.showText === true){
+ var text = '';
+ if(this.prependText){
+ text += this.prependText;
+ }
+ text += item.text;
+ return text;
+ }
+ return undefined;
+ },
+
+
+ setActiveItem : function(item, suppressEvent){
+ if(item){
+ if(!this.rendered){
+ this.text = this.getItemText(item);
+ this.iconCls = item.iconCls;
+ }else{
+ var t = this.getItemText(item);
+ if(t){
+ this.setText(t);
+ }
+ this.setIconClass(item.iconCls);
+ }
+ this.activeItem = item;
+ if(!suppressEvent){
+ this.fireEvent('change', this, item);
+ }
+ }
+ },
+
+
+ getActiveItem : function(){
+ return this.activeItem;
+ },
+
+
+ initComponent : function(){
+ this.addEvents({
+
+ "change": true
+ });
+
+ if(this.changeHandler){
+ this.on('change', this.changeHandler, this.scope||this);
+ delete this.changeHandler;
+ }
+
+ this.itemCount = this.items.length;
+
+ this.menu = {cls:'x-cycle-menu', items:[]};
+ var checked;
+ for(var i = 0, len = this.itemCount; i < len; i++){
+ var item = this.items[i];
+ item.group = item.group || this.id;
+ item.itemIndex = i;
+ item.checkHandler = this.checkHandler;
+ item.scope = this;
+ item.checked = item.checked || false;
+ this.menu.items.push(item);
+ if(item.checked){
+ checked = item;
+ }
+ }
+ this.setActiveItem(checked, true);
+ Ext.CycleButton.superclass.initComponent.call(this);
+
+ this.on('click', this.toggleSelected, this);
+ },
+
+
+ checkHandler : function(item, pressed){
+ if(pressed){
+ this.setActiveItem(item);
+ }
+ },
+
+
+ toggleSelected : function(){
+ this.menu.render();
+
+ var next = this.activeItem ? this.activeItem.itemIndex+1 : 0;
+ if(next > this.itemCount-1){
+ next = 0;
+ }
+ this.menu.items.itemAt(next).setChecked(true);
+ }
+});
+Ext.reg('cycle', Ext.CycleButton);
+
+ Ext.Toolbar = function(config){
+ if(config instanceof Array){
+ config = {buttons:config};
+ }
+ Ext.Toolbar.superclass.constructor.call(this, config);
+};
+
+(function(){
+
+var T = Ext.Toolbar;
+
+Ext.extend(T, Ext.BoxComponent, {
+
+ trackMenus : true,
+
+
+ initComponent : function(){
+ T.superclass.initComponent.call(this);
+
+ if(this.items){
+ this.buttons = this.items;
+ }
+ this.items = new Ext.util.MixedCollection(false, function(o){
+ return o.itemId || o.id || Ext.id();
+ });
+ },
+
+ autoCreate: {
+ cls:'x-toolbar x-small-editor',
+ html:'<table cellspacing="0"><tr></tr></table>'
+ },
+
+
+ onRender : function(ct, position){
+ this.el = ct.createChild(this.autoCreate, position);
+ this.tr = this.el.child("tr", true);
+ },
+
+
+ afterRender : function(){
+ T.superclass.afterRender.call(this);
+ if(this.buttons){
+ this.add.apply(this, this.buttons);
+ delete this.buttons;
+ }
+ },
+
+
+ add : function(){
+ var a = arguments, l = a.length;
+ for(var i = 0; i < l; i++){
+ var el = a[i];
+ if(el.isFormField){
+ this.addField(el);
+ }else if(el.render){
+ this.addItem(el);
+ }else if(typeof el == "string"){
+ if(el == "separator" || el == "-"){
+ this.addSeparator();
+ }else if(el == " "){
+ this.addSpacer();
+ }else if(el == "->"){
+ this.addFill();
+ }else{
+ this.addText(el);
+ }
+ }else if(el.tagName){
+ this.addElement(el);
+ }else if(typeof el == "object"){
+ if(el.xtype){
+ this.addField(Ext.ComponentMgr.create(el, 'button'));
+ }else{
+ this.addButton(el);
+ }
+ }
+ }
+ },
+
+
+ addSeparator : function(){
+ return this.addItem(new T.Separator());
+ },
+
+
+ addSpacer : function(){
+ return this.addItem(new T.Spacer());
+ },
+
+
+ addFill : function(){
+ return this.addItem(new T.Fill());
+ },
+
+
+ addElement : function(el){
+ return this.addItem(new T.Item(el));
+ },
+
+
+ addItem : function(item){
+ var td = this.nextBlock();
+ this.initMenuTracking(item);
+ item.render(td);
+ this.items.add(item);
+ return item;
+ },
+
+
+ addButton : function(config){
+ if(config instanceof Array){
+ var buttons = [];
+ for(var i = 0, len = config.length; i < len; i++) {
+ buttons.push(this.addButton(config[i]));
+ }
+ return buttons;
+ }
+ var b = config;
+ if(!(config instanceof T.Button)){
+ b = config.split ?
+ new T.SplitButton(config) :
+ new T.Button(config);
+ }
+ var td = this.nextBlock();
+ this.initMenuTracking(b);
+ b.render(td);
+ this.items.add(b);
+ return b;
+ },
+
+
+ initMenuTracking : function(item){
+ if(this.trackMenus && item.menu){
+ item.on({
+ 'menutriggerover' : this.onButtonTriggerOver,
+ 'menushow' : this.onButtonMenuShow,
+ 'menuhide' : this.onButtonMenuHide,
+ scope: this
+ })
+ }
+ },
+
+
+ addText : function(text){
+ return this.addItem(new T.TextItem(text));
+ },
+
+
+ insertButton : function(index, item){
+ if(item instanceof Array){
+ var buttons = [];
+ for(var i = 0, len = item.length; i < len; i++) {
+ buttons.push(this.insertButton(index + i, item[i]));
+ }
+ return buttons;
+ }
+ if (!(item instanceof T.Button)){
+ item = new T.Button(item);
+ }
+ var td = document.createElement("td");
+ this.tr.insertBefore(td, this.tr.childNodes[index]);
+ this.initMenuTracking(item);
+ item.render(td);
+ this.items.insert(index, item);
+ return item;
+ },
+
+
+ addDom : function(config, returnEl){
+ var td = this.nextBlock();
+ Ext.DomHelper.overwrite(td, config);
+ var ti = new T.Item(td.firstChild);
+ ti.render(td);
+ this.items.add(ti);
+ return ti;
+ },
+
+
+ addField : function(field){
+ var td = this.nextBlock();
+ field.render(td);
+ var ti = new T.Item(td.firstChild);
+ ti.render(td);
+ this.items.add(ti);
+ return ti;
+ },
+
+
+ nextBlock : function(){
+ var td = document.createElement("td");
+ this.tr.appendChild(td);
+ return td;
+ },
+
+
+ onDestroy : function(){
+ Ext.Toolbar.superclass.onDestroy.call(this);
+ if(this.rendered){
+ if(this.items){
+ Ext.destroy.apply(Ext, this.items.items);
+ }
+ Ext.Element.uncache(this.tr);
+ }
+ },
+
+
+ onDisable : function(){
+ this.items.each(function(item){
+ if(item.disable){
+ item.disable();
+ }
+ });
+ },
+
+
+ onEnable : function(){
+ this.items.each(function(item){
+ if(item.enable){
+ item.enable();
+ }
+ });
+ },
+
+
+ onButtonTriggerOver : function(btn){
+ if(this.activeMenuBtn && this.activeMenuBtn != btn){
+ this.activeMenuBtn.hideMenu();
+ btn.showMenu();
+ this.activeMenuBtn = btn;
+ }
+ },
+
+
+ onButtonMenuShow : function(btn){
+ this.activeMenuBtn = btn;
+ },
+
+
+ onButtonMenuHide : function(btn){
+ delete this.activeMenuBtn;
+ }
+});
+Ext.reg('toolbar', Ext.Toolbar);
+
+
+T.Item = function(el){
+ this.el = Ext.getDom(el);
+ this.id = Ext.id(this.el);
+ this.hidden = false;
+};
+
+T.Item.prototype = {
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ render : function(td){
+ this.td = td;
+ td.appendChild(this.el);
+ },
+
+
+ destroy : function(){
+ if(this.td && this.td.parentNode){
+ this.td.parentNode.removeChild(this.td);
+ }
+ },
+
+
+ show: function(){
+ this.hidden = false;
+ this.td.style.display = "";
+ },
+
+
+ hide: function(){
+ this.hidden = true;
+ this.td.style.display = "none";
+ },
+
+
+ setVisible: function(visible){
+ if(visible) {
+ this.show();
+ }else{
+ this.hide();
+ }
+ },
+
+
+ focus : function(){
+ Ext.fly(this.el).focus();
+ },
+
+
+ disable : function(){
+ Ext.fly(this.td).addClass("x-item-disabled");
+ this.disabled = true;
+ this.el.disabled = true;
+ },
+
+
+ enable : function(){
+ Ext.fly(this.td).removeClass("x-item-disabled");
+ this.disabled = false;
+ this.el.disabled = false;
+ }
+};
+Ext.reg('tbitem', T.Item);
+
+
+
+T.Separator = function(){
+ var s = document.createElement("span");
+ s.className = "ytb-sep";
+ T.Separator.superclass.constructor.call(this, s);
+};
+Ext.extend(T.Separator, T.Item, {
+ enable:Ext.emptyFn,
+ disable:Ext.emptyFn,
+ focus:Ext.emptyFn
+});
+Ext.reg('tbseparator', T.Separator);
+
+
+T.Spacer = function(){
+ var s = document.createElement("div");
+ s.className = "ytb-spacer";
+ T.Spacer.superclass.constructor.call(this, s);
+};
+Ext.extend(T.Spacer, T.Item, {
+ enable:Ext.emptyFn,
+ disable:Ext.emptyFn,
+ focus:Ext.emptyFn
+});
+
+Ext.reg('tbspacer', T.Spacer);
+
+
+T.Fill = Ext.extend(T.Spacer, {
+
+ render : function(td){
+ td.style.width = '100%';
+ T.Fill.superclass.render.call(this, td);
+ }
+});
+Ext.reg('tbfill', T.Fill);
+
+
+T.TextItem = function(text){
+ var s = document.createElement("span");
+ s.className = "ytb-text";
+ s.innerHTML = text;
+ T.TextItem.superclass.constructor.call(this, s);
+};
+Ext.extend(T.TextItem, T.Item, {
+ enable:Ext.emptyFn,
+ disable:Ext.emptyFn,
+ focus:Ext.emptyFn
+});
+Ext.reg('tbtext', T.TextItem);
+
+
+
+T.Button = Ext.extend(Ext.Button, {
+ hideParent : true,
+
+ onDestroy : function(){
+ T.Button.superclass.onDestroy.call(this);
+ if(this.container){
+ this.container.remove();
+ }
+ }
+});
+Ext.reg('tbbutton', T.Button);
+
+
+T.SplitButton = Ext.extend(Ext.SplitButton, {
+ hideParent : true,
+
+ onDestroy : function(){
+ T.SplitButton.superclass.onDestroy.call(this);
+ if(this.container){
+ this.container.remove();
+ }
+ }
+});
+
+Ext.reg('tbsplit', T.SplitButton);
+
+T.MenuButton = T.SplitButton;
+
+})();
+
+
+Ext.PagingToolbar = Ext.extend(Ext.Toolbar, {
+
+
+ pageSize: 20,
+
+ displayMsg : 'Displaying {0} - {1} of {2}',
+
+ emptyMsg : 'No data to display',
+
+ beforePageText : "Page",
+
+ afterPageText : "of {0}",
+
+ firstText : "First Page",
+
+ prevText : "Previous Page",
+
+ nextText : "Next Page",
+
+ lastText : "Last Page",
+
+ refreshText : "Refresh",
+
+
+ paramNames : {start: 'start', limit: 'limit'},
+
+ initComponent : function(){
+ Ext.PagingToolbar.superclass.initComponent.call(this);
+ this.cursor = 0;
+ this.bind(this.store);
+ },
+
+ onRender : function(ct, position){
+ Ext.PagingToolbar.superclass.onRender.call(this, ct, position);
+ this.first = this.addButton({
+ tooltip: this.firstText,
+ iconCls: "x-tbar-page-first",
+ disabled: true,
+ handler: this.onClick.createDelegate(this, ["first"])
+ });
+ this.prev = this.addButton({
+ tooltip: this.prevText,
+ iconCls: "x-tbar-page-prev",
+ disabled: true,
+ handler: this.onClick.createDelegate(this, ["prev"])
+ });
+ this.addSeparator();
+ this.add(this.beforePageText);
+ this.field = Ext.get(this.addDom({
+ tag: "input",
+ type: "text",
+ size: "3",
+ value: "1",
+ cls: "x-tbar-page-number"
+ }).el);
+ this.field.on("keydown", this.onPagingKeydown, this);
+ this.field.on("focus", function(){this.dom.select();});
+ this.afterTextEl = this.addText(String.format(this.afterPageText, 1));
+ this.field.setHeight(18);
+ this.addSeparator();
+ this.next = this.addButton({
+ tooltip: this.nextText,
+ iconCls: "x-tbar-page-next",
+ disabled: true,
+ handler: this.onClick.createDelegate(this, ["next"])
+ });
+ this.last = this.addButton({
+ tooltip: this.lastText,
+ iconCls: "x-tbar-page-last",
+ disabled: true,
+ handler: this.onClick.createDelegate(this, ["last"])
+ });
+ this.addSeparator();
+ this.loading = this.addButton({
+ tooltip: this.refreshText,
+ iconCls: "x-tbar-loading",
+ handler: this.onClick.createDelegate(this, ["refresh"])
+ });
+
+ if(this.displayInfo){
+ this.displayEl = Ext.fly(this.el.dom).createChild({cls:'x-paging-info'});
+ }
+ if(this.dsLoaded){
+ this.onLoad.apply(this, this.dsLoaded);
+ }
+ },
+
+ updateInfo : function(){
+ if(this.displayEl){
+ var count = this.store.getCount();
+ var msg = count == 0 ?
+ this.emptyMsg :
+ String.format(
+ this.displayMsg,
+ this.cursor+1, this.cursor+count, this.store.getTotalCount()
+ );
+ this.displayEl.update(msg);
+ }
+ },
+
+ onLoad : function(store, r, o){
+ if(!this.rendered){
+ this.dsLoaded = [store, r, o];
+ return;
+ }
+ this.cursor = o.params ? o.params[this.paramNames.start] : 0;
+ var d = this.getPageData(), ap = d.activePage, ps = d.pages;
+
+ this.afterTextEl.el.innerHTML = String.format(this.afterPageText, d.pages);
+ this.field.dom.value = ap;
+ this.first.setDisabled(ap == 1);
+ this.prev.setDisabled(ap == 1);
+ this.next.setDisabled(ap == ps);
+ this.last.setDisabled(ap == ps);
+ this.loading.enable();
+ this.updateInfo();
+ },
+
+ getPageData : function(){
+ var total = this.store.getTotalCount();
+ return {
+ total : total,
+ activePage : Math.ceil((this.cursor+this.pageSize)/this.pageSize),
+ pages : total < this.pageSize ? 1 : Math.ceil(total/this.pageSize)
+ };
+ },
+
+ onLoadError : function(){
+ if(!this.rendered){
+ return;
+ }
+ this.loading.enable();
+ },
+
+ readPage : function(d){
+ var v = this.field.dom.value, pageNum;
+ if (!v || isNaN(pageNum = parseInt(v, 10))) {
+ this.field.dom.value = d.activePage;
+ return false;
+ }
+ return pageNum;
+ },
+
+ onPagingKeydown : function(e){
+ var k = e.getKey(), d = this.getPageData(), pageNum;
+ if (k == e.RETURN) {
+ e.stopEvent();
+ if(pageNum = this.readPage(d)){
+ pageNum = Math.min(Math.max(1, pageNum), d.pages) - 1;
+ this.doLoad(pageNum * this.pageSize);
+ }
+ }else if (k == e.HOME || k == e.END){
+ e.stopEvent();
+ pageNum = k == e.HOME ? 1 : d.pages;
+ this.field.dom.value = pageNum;
+ }else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
+ e.stopEvent();
+ if(pageNum = this.readPage(d)){
+ var increment = e.shiftKey ? 10 : 1;
+ if(k == e.DOWN || k == e.PAGEDOWN){
+ increment *= -1;
+ }
+ pageNum += increment;
+ if(pageNum >= 1 & pageNum <= d.pages){
+ this.field.dom.value = pageNum;
+ }
+ }
+ }
+ },
+
+ beforeLoad : function(){
+ if(this.rendered && this.loading){
+ this.loading.disable();
+ }
+ },
+
+ doLoad : function(start){
+ var o = {}, pn = this.paramNames;
+ o[pn.start] = start;
+ o[pn.limit] = this.pageSize;
+ this.store.load({params:o});
+ },
+
+ onClick : function(which){
+ var store = this.store;
+ switch(which){
+ case "first":
+ this.doLoad(0);
+ break;
+ case "prev":
+ this.doLoad(Math.max(0, this.cursor-this.pageSize));
+ break;
+ case "next":
+ this.doLoad(this.cursor+this.pageSize);
+ break;
+ case "last":
+ var total = store.getTotalCount();
+ var extra = total % this.pageSize;
+ var lastStart = extra ? (total - extra) : total-this.pageSize;
+ this.doLoad(lastStart);
+ break;
+ case "refresh":
+ this.doLoad(this.cursor);
+ break;
+ }
+ },
+
+
+ unbind : function(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.un("beforeload", this.beforeLoad, this);
+ store.un("load", this.onLoad, this);
+ store.un("loadexception", this.onLoadError, this);
+ this.store = undefined;
+ },
+
+
+ bind : function(store){
+ store = Ext.StoreMgr.lookup(store);
+ store.on("beforeload", this.beforeLoad, this);
+ store.on("load", this.onLoad, this);
+ store.on("loadexception", this.onLoadError, this);
+ this.store = store;
+ }
+});
+Ext.reg('paging', Ext.PagingToolbar);
+
+Ext.Resizable = function(el, config){
+ this.el = Ext.get(el);
+
+ if(config && config.wrap){
+ config.resizeChild = this.el;
+ this.el = this.el.wrap(typeof config.wrap == "object" ? config.wrap : {cls:"xresizable-wrap"});
+ this.el.id = this.el.dom.id = config.resizeChild.id + "-rzwrap";
+ this.el.setStyle("overflow", "hidden");
+ this.el.setPositioning(config.resizeChild.getPositioning());
+ config.resizeChild.clearPositioning();
+ if(!config.width || !config.height){
+ var csize = config.resizeChild.getSize();
+ this.el.setSize(csize.width, csize.height);
+ }
+ if(config.pinned && !config.adjustments){
+ config.adjustments = "auto";
+ }
+ }
+
+ this.proxy = this.el.createProxy({tag: "div", cls: "x-resizable-proxy", id: this.el.id + "-rzproxy"});
+ this.proxy.unselectable();
+ this.proxy.enableDisplayMode('block');
+
+ Ext.apply(this, config);
+
+ if(this.pinned){
+ this.disableTrackOver = true;
+ this.el.addClass("x-resizable-pinned");
+ }
+ var position = this.el.getStyle("position");
+ if(position != "absolute" && position != "fixed"){
+ this.el.setStyle("position", "relative");
+ }
+ if(!this.handles){ this.handles = 's,e,se';
+ if(this.multiDirectional){
+ this.handles += ',n,w';
+ }
+ }
+ if(this.handles == "all"){
+ this.handles = "n s e w ne nw se sw";
+ }
+ var hs = this.handles.split(/\s*?[,;]\s*?| /);
+ var ps = Ext.Resizable.positions;
+ for(var i = 0, len = hs.length; i < len; i++){
+ if(hs[i] && ps[hs[i]]){
+ var pos = ps[hs[i]];
+ this[pos] = new Ext.Resizable.Handle(this, pos, this.disableTrackOver, this.transparent);
+ }
+ }
+ this.corner = this.southeast;
+
+ if(this.handles.indexOf("n") != -1 || this.handles.indexOf("w") != -1){
+ this.updateBox = true;
+ }
+
+ this.activeHandle = null;
+
+ if(this.resizeChild){
+ if(typeof this.resizeChild == "boolean"){
+ this.resizeChild = Ext.get(this.el.dom.firstChild, true);
+ }else{
+ this.resizeChild = Ext.get(this.resizeChild, true);
+ }
+ }
+
+ if(this.adjustments == "auto"){
+ var rc = this.resizeChild;
+ var hw = this.west, he = this.east, hn = this.north, hs = this.south;
+ if(rc && (hw || hn)){
+ rc.position("relative");
+ rc.setLeft(hw ? hw.el.getWidth() : 0);
+ rc.setTop(hn ? hn.el.getHeight() : 0);
+ }
+ this.adjustments = [
+ (he ? -he.el.getWidth() : 0) + (hw ? -hw.el.getWidth() : 0),
+ (hn ? -hn.el.getHeight() : 0) + (hs ? -hs.el.getHeight() : 0) -1
+ ];
+ }
+
+ if(this.draggable){
+ this.dd = this.dynamic ?
+ this.el.initDD(null) : this.el.initDDProxy(null, {dragElId: this.proxy.id});
+ this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id : this.el.id);
+ }
+
+ this.addEvents({
+
+ "beforeresize" : true,
+
+ "resize" : true
+ });
+
+ if(this.width !== null && this.height !== null){
+ this.resizeTo(this.width, this.height);
+ }else{
+ this.updateChildSize();
+ }
+ if(Ext.isIE){
+ this.el.dom.style.zoom = 1;
+ }
+ Ext.Resizable.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.Resizable, Ext.util.Observable, {
+ resizeChild : false,
+ adjustments : [0, 0],
+ minWidth : 5,
+ minHeight : 5,
+ maxWidth : 10000,
+ maxHeight : 10000,
+ enabled : true,
+ animate : false,
+ duration : .35,
+ dynamic : false,
+ handles : false,
+ multiDirectional : false,
+ disableTrackOver : false,
+ easing : 'easeOutStrong',
+ widthIncrement : 0,
+ heightIncrement : 0,
+ pinned : false,
+ width : null,
+ height : null,
+ preserveRatio : false,
+ transparent: false,
+ minX: 0,
+ minY: 0,
+ draggable: false,
+
+
+
+
+
+
+ resizeTo : function(width, height){
+ this.el.setSize(width, height);
+ this.updateChildSize();
+ this.fireEvent("resize", this, width, height, null);
+ },
+
+ startSizing : function(e, handle){
+ this.fireEvent("beforeresize", this, e);
+ if(this.enabled){
+ if(!this.overlay){
+ this.overlay = this.el.createProxy({tag: "div", cls: "x-resizable-overlay", html: " "}, Ext.getBody());
+ this.overlay.unselectable();
+ this.overlay.enableDisplayMode("block");
+ this.overlay.on("mousemove", this.onMouseMove, this);
+ this.overlay.on("mouseup", this.onMouseUp, this);
+ }
+ this.overlay.setStyle("cursor", handle.el.getStyle("cursor"));
+
+ this.resizing = true;
+ this.startBox = this.el.getBox();
+ this.startPoint = e.getXY();
+ this.offsets = [(this.startBox.x + this.startBox.width) - this.startPoint[0],
+ (this.startBox.y + this.startBox.height) - this.startPoint[1]];
+
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+
+ if(this.constrainTo) {
+ var ct = Ext.get(this.constrainTo);
+ this.resizeRegion = ct.getRegion().adjust(
+ ct.getFrameWidth('t'),
+ ct.getFrameWidth('l'),
+ -ct.getFrameWidth('b'),
+ -ct.getFrameWidth('r')
+ );
+ }
+
+ this.proxy.setStyle('visibility', 'hidden'); this.proxy.show();
+ this.proxy.setBox(this.startBox);
+ if(!this.dynamic){
+ this.proxy.setStyle('visibility', 'visible');
+ }
+ }
+ },
+
+ onMouseDown : function(handle, e){
+ if(this.enabled){
+ e.stopEvent();
+ this.activeHandle = handle;
+ this.startSizing(e, handle);
+ }
+ },
+
+ onMouseUp : function(e){
+ var size = this.resizeElement();
+ this.resizing = false;
+ this.handleOut();
+ this.overlay.hide();
+ this.proxy.hide();
+ this.fireEvent("resize", this, size.width, size.height, e);
+ },
+
+ updateChildSize : function(){
+ if(this.resizeChild){
+ var el = this.el;
+ var child = this.resizeChild;
+ var adj = this.adjustments;
+ if(el.dom.offsetWidth){
+ var b = el.getSize(true);
+ child.setSize(b.width+adj[0], b.height+adj[1]);
+ }
+ if(Ext.isIE){
+ setTimeout(function(){
+ if(el.dom.offsetWidth){
+ var b = el.getSize(true);
+ child.setSize(b.width+adj[0], b.height+adj[1]);
+ }
+ }, 10);
+ }
+ }
+ },
+
+ snap : function(value, inc, min){
+ if(!inc || !value) return value;
+ var newValue = value;
+ var m = value % inc;
+ if(m > 0){
+ if(m > (inc/2)){
+ newValue = value + (inc-m);
+ }else{
+ newValue = value - m;
+ }
+ }
+ return Math.max(min, newValue);
+ },
+
+ resizeElement : function(){
+ var box = this.proxy.getBox();
+ if(this.updateBox){
+ this.el.setBox(box, false, this.animate, this.duration, null, this.easing);
+ }else{
+ this.el.setSize(box.width, box.height, this.animate, this.duration, null, this.easing);
+ }
+ this.updateChildSize();
+ if(!this.dynamic){
+ this.proxy.hide();
+ }
+ return box;
+ },
+
+ constrain : function(v, diff, m, mx){
+ if(v - diff < m){
+ diff = v - m;
+ }else if(v - diff > mx){
+ diff = mx - v;
+ }
+ return diff;
+ },
+
+ onMouseMove : function(e){
+ if(this.enabled){
+ try{
+ if(this.resizeRegion && !this.resizeRegion.contains(e.getPoint())) {
+ return;
+ }
+
+ var curSize = this.curSize || this.startBox;
+ var x = this.startBox.x, y = this.startBox.y;
+ var ox = x, oy = y;
+ var w = curSize.width, h = curSize.height;
+ var ow = w, oh = h;
+ var mw = this.minWidth, mh = this.minHeight;
+ var mxw = this.maxWidth, mxh = this.maxHeight;
+ var wi = this.widthIncrement;
+ var hi = this.heightIncrement;
+
+ var eventXY = e.getXY();
+ var diffX = -(this.startPoint[0] - Math.max(this.minX, eventXY[0]));
+ var diffY = -(this.startPoint[1] - Math.max(this.minY, eventXY[1]));
+
+ var pos = this.activeHandle.position;
+
+ switch(pos){
+ case "east":
+ w += diffX;
+ w = Math.min(Math.max(mw, w), mxw);
+ break;
+ case "south":
+ h += diffY;
+ h = Math.min(Math.max(mh, h), mxh);
+ break;
+ case "southeast":
+ w += diffX;
+ h += diffY;
+ w = Math.min(Math.max(mw, w), mxw);
+ h = Math.min(Math.max(mh, h), mxh);
+ break;
+ case "north":
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ break;
+ case "west":
+ diffX = this.constrain(w, diffX, mw, mxw);
+ x += diffX;
+ w -= diffX;
+ break;
+ case "northeast":
+ w += diffX;
+ w = Math.min(Math.max(mw, w), mxw);
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ break;
+ case "northwest":
+ diffX = this.constrain(w, diffX, mw, mxw);
+ diffY = this.constrain(h, diffY, mh, mxh);
+ y += diffY;
+ h -= diffY;
+ x += diffX;
+ w -= diffX;
+ break;
+ case "southwest":
+ diffX = this.constrain(w, diffX, mw, mxw);
+ h += diffY;
+ h = Math.min(Math.max(mh, h), mxh);
+ x += diffX;
+ w -= diffX;
+ break;
+ }
+
+ var sw = this.snap(w, wi, mw);
+ var sh = this.snap(h, hi, mh);
+ if(sw != w || sh != h){
+ switch(pos){
+ case "northeast":
+ y -= sh - h;
+ break;
+ case "north":
+ y -= sh - h;
+ break;
+ case "southwest":
+ x -= sw - w;
+ break;
+ case "west":
+ x -= sw - w;
+ break;
+ case "northwest":
+ x -= sw - w;
+ y -= sh - h;
+ break;
+ }
+ w = sw;
+ h = sh;
+ }
+
+ if(this.preserveRatio){
+ switch(pos){
+ case "southeast":
+ case "east":
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ w = ow * (h/oh);
+ break;
+ case "south":
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ break;
+ case "northeast":
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ break;
+ case "north":
+ var tw = w;
+ w = ow * (h/oh);
+ w = Math.min(Math.max(mw, w), mxw);
+ h = oh * (w/ow);
+ x += (tw - w) / 2;
+ break;
+ case "southwest":
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ var tw = w;
+ w = ow * (h/oh);
+ x += tw - w;
+ break;
+ case "west":
+ var th = h;
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ y += (th - h) / 2;
+ var tw = w;
+ w = ow * (h/oh);
+ x += tw - w;
+ break;
+ case "northwest":
+ var tw = w;
+ var th = h;
+ h = oh * (w/ow);
+ h = Math.min(Math.max(mh, h), mxh);
+ w = ow * (h/oh);
+ y += th - h;
+ x += tw - w;
+ break;
+
+ }
+ }
+ this.proxy.setBounds(x, y, w, h);
+ if(this.dynamic){
+ this.resizeElement();
+ }
+ }catch(e){}
+ }
+ },
+
+ handleOver : function(){
+ if(this.enabled){
+ this.el.addClass("x-resizable-over");
+ }
+ },
+
+ handleOut : function(){
+ if(!this.resizing){
+ this.el.removeClass("x-resizable-over");
+ }
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getResizeChild : function(){
+ return this.resizeChild;
+ },
+
+
+ destroy : function(removeEl){
+ this.proxy.remove();
+ if(this.overlay){
+ this.overlay.removeAllListeners();
+ this.overlay.remove();
+ }
+ var ps = Ext.Resizable.positions;
+ for(var k in ps){
+ if(typeof ps[k] != "function" && this[ps[k]]){
+ var h = this[ps[k]];
+ h.el.removeAllListeners();
+ h.el.remove();
+ }
+ }
+ if(removeEl){
+ this.el.update("");
+ this.el.remove();
+ }
+ },
+
+ syncHandleHeight : function(){
+ var h = this.el.getHeight(true);
+ if(this.west){
+ this.west.el.setHeight(h);
+ }
+ if(this.east){
+ this.east.el.setHeight(h);
+ }
+ }
+});
+
+Ext.Resizable.positions = {
+ n: "north", s: "south", e: "east", w: "west", se: "southeast", sw: "southwest", nw: "northwest", ne: "northeast"
+};
+
+Ext.Resizable.Handle = function(rz, pos, disableTrackOver, transparent){
+ if(!this.tpl){
+ var tpl = Ext.DomHelper.createTemplate(
+ {tag: "div", cls: "x-resizable-handle x-resizable-handle-{0}"}
+ );
+ tpl.compile();
+ Ext.Resizable.Handle.prototype.tpl = tpl;
+ }
+ this.position = pos;
+ this.rz = rz;
+ this.el = this.tpl.append(rz.el.dom, [this.position], true);
+ this.el.unselectable();
+ if(transparent){
+ this.el.setOpacity(0);
+ }
+ this.el.on("mousedown", this.onMouseDown, this);
+ if(!disableTrackOver){
+ this.el.on("mouseover", this.onMouseOver, this);
+ this.el.on("mouseout", this.onMouseOut, this);
+ }
+};
+
+Ext.Resizable.Handle.prototype = {
+ afterResize : function(rz){
+ },
+ onMouseDown : function(e){
+ this.rz.onMouseDown(this, e);
+ },
+ onMouseOver : function(e){
+ this.rz.handleOver(this, e);
+ },
+ onMouseOut : function(e){
+ this.rz.handleOut(this, e);
+ }
+};
+
+
+
+
+Ext.Editor = function(field, config){
+ this.field = field;
+ Ext.Editor.superclass.constructor.call(this, config);
+};
+
+Ext.extend(Ext.Editor, Ext.Component, {
+
+
+
+
+
+ value : "",
+
+ alignment: "c-c?",
+
+ shadow : "frame",
+
+ constrain : false,
+
+ swallowKeys : true,
+
+ completeOnEnter : false,
+
+ cancelOnEsc : false,
+
+ updateEl : false,
+
+ initComponent : function(){
+ Ext.Editor.superclass.initComponent.call(this);
+
+ this.addEvents({
+
+ "beforestartedit" : true,
+
+ "startedit" : true,
+
+ "beforecomplete" : true,
+
+ "complete" : true,
+
+ "specialkey" : true
+ });
+ },
+
+ onRender : function(ct, position){
+ this.el = new Ext.Layer({
+ shadow: this.shadow,
+ cls: "x-editor",
+ parentEl : ct,
+ shim : this.shim,
+ shadowOffset:4,
+ id: this.id,
+ constrain: this.constrain
+ });
+ this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden");
+ if(this.field.msgTarget != 'title'){
+ this.field.msgTarget = 'qtip';
+ }
+ this.field.render(this.el);
+ if(Ext.isGecko){
+ this.field.el.dom.setAttribute('autocomplete', 'off');
+ }
+ this.field.on("specialkey", this.onSpecialKey, this);
+ if(this.swallowKeys){
+ this.field.el.swallowEvent(['keydown','keypress']);
+ }
+ this.field.show();
+ this.field.on("blur", this.onBlur, this);
+ if(this.field.grow){
+ this.field.on("autosize", this.el.sync, this.el, {delay:1});
+ }
+ },
+
+ onSpecialKey : function(field, e){
+ if(this.completeOnEnter && e.getKey() == e.ENTER){
+ e.stopEvent();
+ this.completeEdit();
+ }else if(this.cancelOnEsc && e.getKey() == e.ESC){
+ this.cancelEdit();
+ }else{
+ this.fireEvent('specialkey', field, e);
+ }
+ },
+
+
+ startEdit : function(el, value){
+ if(this.editing){
+ this.completeEdit();
+ }
+ this.boundEl = Ext.get(el);
+ var v = value !== undefined ? value : this.boundEl.dom.innerHTML;
+ if(!this.rendered){
+ this.render(this.parentEl || document.body);
+ }
+ if(this.fireEvent("beforestartedit", this, this.boundEl, v) === false){
+ return;
+ }
+ this.startValue = v;
+ this.field.setValue(v);
+ if(this.autoSize){
+ var sz = this.boundEl.getSize();
+ switch(this.autoSize){
+ case "width":
+ this.setSize(sz.width, "");
+ break;
+ case "height":
+ this.setSize("", sz.height);
+ break;
+ default:
+ this.setSize(sz.width, sz.height);
+ }
+ }
+ this.el.alignTo(this.boundEl, this.alignment);
+ this.editing = true;
+ this.show();
+ },
+
+
+ setSize : function(w, h){
+ this.field.setSize(w, h);
+ if(this.el){
+ this.el.sync();
+ }
+ },
+
+
+ realign : function(){
+ this.el.alignTo(this.boundEl, this.alignment);
+ },
+
+
+ completeEdit : function(remainVisible){
+ if(!this.editing){
+ return;
+ }
+ var v = this.getValue();
+ if(this.revertInvalid !== false && !this.field.isValid()){
+ v = this.startValue;
+ this.cancelEdit(true);
+ }
+ if(String(v) === String(this.startValue) && this.ignoreNoChange){
+ this.editing = false;
+ this.hide();
+ return;
+ }
+ if(this.fireEvent("beforecomplete", this, v, this.startValue) !== false){
+ this.editing = false;
+ if(this.updateEl && this.boundEl){
+ this.boundEl.update(v);
+ }
+ if(remainVisible !== true){
+ this.hide();
+ }
+ this.fireEvent("complete", this, v, this.startValue);
+ }
+ },
+
+ onShow : function(){
+ this.el.show();
+ if(this.hideEl !== false){
+ this.boundEl.hide();
+ }
+ this.field.show();
+ if(Ext.isIE && !this.fixIEFocus){ this.fixIEFocus = true;
+ this.deferredFocus.defer(50, this);
+ }else{
+ this.field.focus();
+ }
+ this.fireEvent("startedit", this.boundEl, this.startValue);
+ },
+
+ deferredFocus : function(){
+ if(this.editing){
+ this.field.focus();
+ }
+ },
+
+
+ cancelEdit : function(remainVisible){
+ if(this.editing){
+ this.setValue(this.startValue);
+ if(remainVisible !== true){
+ this.hide();
+ }
+ }
+ },
+
+ onBlur : function(){
+ if(this.allowBlur !== true && this.editing){
+ this.completeEdit();
+ }
+ },
+
+ onHide : function(){
+ if(this.editing){
+ this.completeEdit();
+ return;
+ }
+ this.field.blur();
+ if(this.field.collapse){
+ this.field.collapse();
+ }
+ this.el.hide();
+ if(this.hideEl !== false){
+ this.boundEl.show();
+ }
+ },
+
+
+ setValue : function(v){
+ this.field.setValue(v);
+ },
+
+
+ getValue : function(){
+ return this.field.getValue();
+ },
+
+ beforeDestroy : function(){
+ this.field.destroy();
+ this.field = null;
+ }
+});
+Ext.reg('editor', Ext.Editor);
+
+Ext.MessageBox = function(){
+ var dlg, opt, mask, waitTimer;
+ var bodyEl, msgEl, textboxEl, textareaEl, progressBar, pp, iconEl, spacerEl;
+ var buttons, activeTextEl, bwidth, iconCls = '';
+
+
+ var handleButton = function(button){
+ dlg.hide();
+ Ext.callback(opt.fn, opt.scope||window, [button, activeTextEl.dom.value], 1);
+ };
+
+
+ var handleHide = function(){
+ if(opt && opt.cls){
+ dlg.el.removeClass(opt.cls);
+ }
+ progressBar.reset();
+ };
+
+
+ var handleEsc = function(d, k, e){
+ if(opt && opt.closable !== false){
+ dlg.hide();
+ }
+ if(e){
+ e.stopEvent();
+ }
+ };
+
+
+ var updateButtons = function(b){
+ var width = 0;
+ if(!b){
+ buttons["ok"].hide();
+ buttons["cancel"].hide();
+ buttons["yes"].hide();
+ buttons["no"].hide();
+ return width;
+ }
+ dlg.footer.dom.style.display = '';
+ for(var k in buttons){
+ if(typeof buttons[k] != "function"){
+ if(b[k]){
+ buttons[k].show();
+ buttons[k].setText(typeof b[k] == "string" ? b[k] : Ext.MessageBox.buttonText[k]);
+ width += buttons[k].el.getWidth()+15;
+ }else{
+ buttons[k].hide();
+ }
+ }
+ }
+ return width;
+ };
+
+ return {
+
+ getDialog : function(titleText){
+ if(!dlg){
+ dlg = new Ext.Window({
+ autoCreate : true,
+ title:titleText,
+ resizable:false,
+ constrain:true,
+ constrainHeader:true,
+ minimizable : false,
+ maximizable : false,
+ stateful: false,
+ modal: true,
+ shim:true,
+ buttonAlign:"center",
+ width:400,
+ height:100,
+ minHeight: 80,
+ plain:true,
+ footer:true,
+ closable:true,
+ close : function(){
+ if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){
+ handleButton("no");
+ }else{
+ handleButton("cancel");
+ }
+ }
+ });
+ buttons = {};
+ var bt = this.buttonText;
+
+ buttons["ok"] = dlg.addButton(bt["ok"], handleButton.createCallback("ok"));
+ buttons["yes"] = dlg.addButton(bt["yes"], handleButton.createCallback("yes"));
+ buttons["no"] = dlg.addButton(bt["no"], handleButton.createCallback("no"));
+ buttons["cancel"] = dlg.addButton(bt["cancel"], handleButton.createCallback("cancel"));
+ buttons["ok"].hideMode = buttons["yes"].hideMode = buttons["no"].hideMode = buttons["cancel"].hideMode = 'offsets';
+ dlg.render(document.body);
+ dlg.getEl().addClass('x-window-dlg');
+ mask = dlg.mask;
+ bodyEl = dlg.body.createChild({
+ html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div>'
+ });
+ iconEl = Ext.get(bodyEl.dom.firstChild);
+ var contentEl = bodyEl.dom.childNodes[1];
+ msgEl = Ext.get(contentEl.firstChild);
+ textboxEl = Ext.get(contentEl.childNodes[2]);
+ textboxEl.enableDisplayMode();
+ textboxEl.addKeyListener([10,13], function(){
+ if(dlg.isVisible() && opt && opt.buttons){
+ if(opt.buttons.ok){
+ handleButton("ok");
+ }else if(opt.buttons.yes){
+ handleButton("yes");
+ }
+ }
+ });
+ textareaEl = Ext.get(contentEl.childNodes[3]);
+ textareaEl.enableDisplayMode();
+ progressBar = new Ext.ProgressBar({
+ renderTo:bodyEl
+ });
+ bodyEl.createChild({cls:'x-clear'});
+ }
+ return dlg;
+ },
+
+
+ updateText : function(text){
+ if(!dlg.isVisible() && !opt.width){
+ dlg.setSize(this.maxWidth, 100);
+ }
+ msgEl.update(text || ' ');
+
+ var iw = iconCls != '' ? (iconEl.getWidth() + iconEl.getMargins('lr')) : 0;
+ var mw = msgEl.getWidth() + msgEl.getMargins('lr');
+ var fw = dlg.getFrameWidth('lr');
+ var bw = dlg.body.getFrameWidth('lr');
+ if (Ext.isIE && iw > 0){
+
+
+ iw += 3;
+ }
+ var w = Math.max(Math.min(opt.width || iw+mw+fw+bw, this.maxWidth),
+ Math.max(opt.minWidth || this.minWidth, bwidth || 0));
+
+ if(opt.prompt === true){
+ activeTextEl.setWidth(w-iw-fw-bw);
+ }
+ if(opt.progress === true || opt.wait === true){
+ progressBar.setSize(w-iw-fw-bw);
+ }
+ dlg.setSize(w, 'auto').center();
+ return this;
+ },
+
+
+ updateProgress : function(value, progressText, msg){
+ progressBar.updateProgress(value, progressText);
+ if(msg){
+ this.updateText(msg);
+ }
+ return this;
+ },
+
+
+ isVisible : function(){
+ return dlg && dlg.isVisible();
+ },
+
+
+ hide : function(){
+ if(this.isVisible()){
+ dlg.hide();
+ handleHide();
+ }
+ return this;
+ },
+
+
+ show : function(options){
+ if(this.isVisible()){
+ this.hide();
+ }
+ opt = options;
+ var d = this.getDialog(opt.title || " ");
+
+ d.setTitle(opt.title || " ");
+ var allowClose = (opt.closable !== false && opt.progress !== true && opt.wait !== true);
+ d.tools.close.setDisplayed(allowClose);
+ activeTextEl = textboxEl;
+ opt.prompt = opt.prompt || (opt.multiline ? true : false);
+ if(opt.prompt){
+ if(opt.multiline){
+ textboxEl.hide();
+ textareaEl.show();
+ textareaEl.setHeight(typeof opt.multiline == "number" ?
+ opt.multiline : this.defaultTextHeight);
+ activeTextEl = textareaEl;
+ }else{
+ textboxEl.show();
+ textareaEl.hide();
+ }
+ }else{
+ textboxEl.hide();
+ textareaEl.hide();
+ }
+ activeTextEl.dom.value = opt.value || "";
+ if(opt.prompt){
+ d.focusEl = activeTextEl;
+ }else{
+ var bs = opt.buttons;
+ var db = null;
+ if(bs && bs.ok){
+ db = buttons["ok"];
+ }else if(bs && bs.yes){
+ db = buttons["yes"];
+ }
+ if (db){
+ d.focusEl = db;
+ }
+ }
+ this.setIcon(opt.icon);
+ bwidth = updateButtons(opt.buttons);
+ progressBar.setVisible(opt.progress === true || opt.wait === true);
+ this.updateProgress(0, opt.progressText);
+ this.updateText(opt.msg);
+ if(opt.cls){
+ d.el.addClass(opt.cls);
+ }
+ d.proxyDrag = opt.proxyDrag === true;
+ d.modal = opt.modal !== false;
+ d.mask = opt.modal !== false ? mask : false;
+ if(!d.isVisible()){
+
+ document.body.appendChild(dlg.el.dom);
+ d.setAnimateTarget(opt.animEl);
+ d.show(opt.animEl);
+ }
+
+
+ d.on('show', function(){
+ if(allowClose === true){
+ d.keyMap.enable();
+ }else{
+ d.keyMap.disable();
+ }
+ });
+
+ if(opt.wait === true){
+ progressBar.wait(opt.waitConfig);
+ }
+ return this;
+ },
+
+
+ setIcon : function(icon){
+ if(icon && icon != ''){
+ iconEl.removeClass('x-hidden');
+ iconEl.replaceClass(iconCls, icon);
+ iconCls = icon;
+ }else{
+ iconEl.replaceClass(iconCls, 'x-hidden');
+ iconCls = '';
+ }
+ return this;
+ },
+
+
+ progress : function(title, msg, progressText){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: false,
+ progress:true,
+ closable:false,
+ minWidth: this.minProgressWidth,
+ progressText: progressText
+ });
+ return this;
+ },
+
+
+ wait : function(msg, title, config){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: false,
+ closable:false,
+ wait:true,
+ modal:true,
+ minWidth: this.minProgressWidth,
+ waitConfig: config
+ });
+ return this;
+ },
+
+
+ alert : function(title, msg, fn, scope){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.OK,
+ fn: fn,
+ scope : scope
+ });
+ return this;
+ },
+
+
+ confirm : function(title, msg, fn, scope){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.YESNO,
+ fn: fn,
+ scope : scope,
+ icon: this.QUESTION
+ });
+ return this;
+ },
+
+
+ prompt : function(title, msg, fn, scope, multiline){
+ this.show({
+ title : title,
+ msg : msg,
+ buttons: this.OKCANCEL,
+ fn: fn,
+ minWidth:250,
+ scope : scope,
+ prompt:true,
+ multiline: multiline
+ });
+ return this;
+ },
+
+
+ OK : {ok:true},
+
+ YESNO : {yes:true, no:true},
+
+ OKCANCEL : {ok:true, cancel:true},
+
+ YESNOCANCEL : {yes:true, no:true, cancel:true},
+
+ INFO : 'ext-mb-info',
+
+ WARNING : 'ext-mb-warning',
+
+ QUESTION : 'ext-mb-question',
+
+ ERROR : 'ext-mb-error',
+
+
+ defaultTextHeight : 75,
+
+ maxWidth : 600,
+
+ minWidth : 100,
+
+ minProgressWidth : 250,
+
+ buttonText : {
+ ok : "OK",
+ cancel : "Cancel",
+ yes : "Yes",
+ no : "No"
+ }
+ };
+}();
+
+
+Ext.Msg = Ext.MessageBox;
+
+Ext.Tip = Ext.extend(Ext.Panel, {
+
+ minWidth : 40,
+
+ maxWidth : 300,
+
+ shadow : "sides",
+
+ defaultAlign : "tl-bl?",
+ autoRender: true,
+ quickShowInterval : 250,
+
+
+ frame:true,
+ hidden:true,
+ baseCls: 'x-tip',
+ floating:{shadow:true,shim:true,useDisplay:true,constrain:false},
+ autoHeight:true,
+
+
+ initComponent : function(){
+ Ext.Tip.superclass.initComponent.call(this);
+ if(this.closable && !this.title){
+ this.elements += ',header';
+ }
+ },
+
+
+ afterRender : function(){
+ Ext.Tip.superclass.afterRender.call(this);
+ if(this.closable){
+ this.addTool({
+ id: 'close',
+ handler: this.hide,
+ scope: this
+ });
+ }
+ },
+
+
+ showAt : function(xy){
+ Ext.Tip.superclass.show.call(this);
+ if(this.measureWidth !== false){
+ var bw = this.body.getTextWidth();
+ if(this.title){
+ bw = Math.max(bw, this.header.child('span').getTextWidth(this.title));
+ }
+ bw += this.getFrameWidth() + (this.closable ? 20 : 0);
+ this.setWidth(bw.constrain(this.minWidth, this.maxWidth));
+ }
+ if(this.constrainPosition){
+ xy = this.el.adjustForConstraints(xy);
+ }
+ this.setPagePosition(xy[0], xy[1]);
+ },
+
+
+ showBy : function(el, pos){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ }
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign));
+ }
+});
+
+Ext.ToolTip = Ext.extend(Ext.Tip, {
+
+
+
+ showDelay: 500,
+
+ hideDelay: 200,
+
+ dismissDelay: 5000,
+
+ mouseOffset: [15,15],
+
+ trackMouse : false,
+ constrainPosition: true,
+
+
+ initComponent: function(){
+ Ext.ToolTip.superclass.initComponent.call(this);
+ this.lastActive = new Date();
+ this.initTarget();
+ },
+
+
+ initTarget : function(){
+ if(this.target){
+ this.target = Ext.get(this.target);
+ this.target.on('mouseover', this.onTargetOver, this);
+ this.target.on('mouseout', this.onTargetOut, this);
+ this.target.on('mousemove', this.onMouseMove, this);
+ }
+ },
+
+
+ onMouseMove : function(e){
+ this.targetXY = e.getXY();
+ if(!this.hidden && this.trackMouse){
+ this.setPagePosition(this.getTargetXY());
+ }
+ },
+
+
+ getTargetXY : function(){
+ return [this.targetXY[0]+this.mouseOffset[0], this.targetXY[1]+this.mouseOffset[1]];
+ },
+
+
+ onTargetOver : function(e){
+ if(this.disabled || e.within(this.target.dom, true)){
+ return;
+ }
+ this.clearTimer('hide');
+ this.targetXY = e.getXY();
+ this.delayShow();
+ },
+
+
+ delayShow : function(){
+ if(this.hidden && !this.showTimer){
+ if(this.lastActive.getElapsed() < this.quickShowInterval){
+ this.show();
+ }else{
+ this.showTimer = this.show.defer(this.showDelay, this);
+ }
+ }else if(!this.hidden){
+ this.show();
+ }
+ },
+
+
+ onTargetOut : function(e){
+ if(this.disabled || e.within(this.target.dom, true)){
+ return;
+ }
+ this.clearTimer('show');
+ if(this.autoHide !== false){
+ this.delayHide();
+ }
+ },
+
+
+ delayHide : function(){
+ if(!this.hidden && !this.hideTimer){
+ this.hideTimer = this.hide.defer(this.hideDelay, this);
+ }
+ },
+
+
+ hide: function(){
+ this.clearTimer('dismiss');
+ this.lastActive = new Date();
+ Ext.ToolTip.superclass.hide.call(this);
+ },
+
+
+ show : function(){
+ this.showAt(this.getTargetXY());
+ },
+
+
+ showAt : function(xy){
+ this.lastActive = new Date();
+ this.clearTimers();
+ Ext.ToolTip.superclass.showAt.call(this, xy);
+ if(this.dismissDelay && this.autoHide !== false){
+ this.dismissTimer = this.hide.defer(this.dismissDelay, this);
+ }
+ },
+
+
+ clearTimer : function(name){
+ name = name + 'Timer';
+ clearTimeout(this[name]);
+ delete this[name];
+ },
+
+
+ clearTimers : function(){
+ this.clearTimer('show');
+ this.clearTimer('dismiss');
+ this.clearTimer('hide');
+ },
+
+
+ onShow : function(){
+ Ext.ToolTip.superclass.onShow.call(this);
+ Ext.getDoc().on('mousedown', this.onDocMouseDown, this);
+ },
+
+
+ onHide : function(){
+ Ext.ToolTip.superclass.onHide.call(this);
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
+ },
+
+
+ onDocMouseDown : function(e){
+ if(this.autoHide !== false && !e.within(this.el.dom)){
+ this.disable();
+ this.enable.defer(100, this);
+ }
+ },
+
+
+ onDisable : function(){
+ this.clearTimers();
+ this.hide();
+ },
+
+
+ adjustPosition : function(x, y){
+
+ var ay = this.targetXY[1], h = this.getSize().height;
+ if(this.constrainPosition && y <= ay && (y+h) >= ay){
+ y = ay-h-5;
+ }
+ return {x : x, y: y};
+ },
+
+
+ onDestroy : function(){
+ Ext.ToolTip.superclass.onDestroy.call(this);
+ if(this.target){
+ this.target.un('mouseover', this.onTargetOver, this);
+ this.target.un('mouseout', this.onTargetOut, this);
+ this.target.un('mousemove', this.onMouseMove, this);
+ }
+ }
+});
+
+Ext.QuickTip = Ext.extend(Ext.ToolTip, {
+
+
+ interceptTitles : false,
+
+
+ tagConfig : {
+ namespace : "ext",
+ attribute : "qtip",
+ width : "qwidth",
+ target : "target",
+ title : "qtitle",
+ hide : "hide",
+ cls : "qclass",
+ align : "qalign"
+ },
+
+
+ initComponent : function(){
+ this.target = this.target || Ext.getDoc();
+ this.targets = this.targets || {};
+ Ext.QuickTip.superclass.initComponent.call(this);
+ },
+
+
+ register : function(config){
+ var cs = config instanceof Array ? config : arguments;
+ for(var i = 0, len = cs.length; i < len; i++){
+ var c = cs[i];
+ var target = c.target;
+ if(target){
+ if(target instanceof Array){
+ for(var j = 0, jlen = target.length; j < jlen; j++){
+ this.targets[Ext.id(target[j])] = c;
+ }
+ } else{
+ this.targets[Ext.id(target)] = c;
+ }
+ }
+ }
+ },
+
+
+ unregister : function(el){
+ delete this.targets[Ext.id(el)];
+ },
+
+
+ onTargetOver : function(e){
+ if(this.disabled){
+ return;
+ }
+ this.targetXY = e.getXY();
+ var t = e.getTarget();
+ if(!t || t.nodeType !== 1 || t == document || t == document.body){
+ return;
+ }
+ if(this.activeTarget && t == this.activeTarget.el){
+ this.clearTimer('hide');
+ this.show();
+ return;
+ }
+ if(t && this.targets[t.id]){
+ this.activeTarget = this.targets[t.id];
+ this.activeTarget.el = t;
+ this.delayShow();
+ return;
+ }
+ var ttp, et = Ext.fly(t), cfg = this.tagConfig;
+ var ns = cfg.namespace;
+ if(this.interceptTitles && t.title){
+ ttp = t.title;
+ t.qtip = ttp;
+ t.removeAttribute("title");
+ e.preventDefault();
+ } else{
+ ttp = t.qtip || et.getAttributeNS(ns, cfg.attribute);
+ }
+ if(ttp){
+ var autoHide = et.getAttributeNS(ns, cfg.hide);
+ this.activeTarget = {
+ el: t,
+ text: ttp,
+ width: et.getAttributeNS(ns, cfg.width),
+ autoHide: autoHide != "user" && autoHide !== 'false',
+ title: et.getAttributeNS(ns, cfg.title),
+ cls: et.getAttributeNS(ns, cfg.cls),
+ align: et.getAttributeNS(ns, cfg.align)
+ };
+ this.delayShow();
+ }
+ },
+
+
+ onTargetOut : function(e){
+ this.clearTimer('show');
+ if(this.autoHide !== false){
+ this.delayHide();
+ }
+ },
+
+
+ showAt : function(xy){
+ var t = this.activeTarget;
+ if(t){
+ if(!this.rendered){
+ this.render(Ext.getBody());
+ }
+ if(t.width){
+ this.setWidth(t.width);
+ this.measureWidth = false;
+ } else{
+ this.measureWidth = true;
+ }
+ this.setTitle(t.title || '');
+ this.body.update(t.text);
+ this.autoHide = t.autoHide;
+ this.autoDismiss = Ext.value(t.autoDismiss, true, false);
+ this.dismissDelay = t.dismissDelay || this.dismissDelay;
+ this.autoDismiss = Ext.value(t.autoDismiss, true, false);
+ if(t.cls){
+ if(this.lastCls){
+ this.el.removeClass(this.lastCls);
+ }
+ this.el.addClass(t.cls);
+ this.lastCls = t.cls;
+ }
+ if(t.align){
+ xy = this.el.getAlignToXY(t.el, t.align);
+ this.constrainPosition = false;
+ } else{
+ this.constrainPosition = true;
+ }
+ }
+ Ext.QuickTip.superclass.showAt.call(this, xy);
+ },
+
+
+ hide: function(){
+ delete this.activeTarget;
+ Ext.QuickTip.superclass.hide.call(this);
+ }
+});
+
+Ext.QuickTips = function(){
+ var tip, locks = [];
+ return {
+
+ init : function(){
+ if(!tip){
+ tip = new Ext.QuickTip({elements:'header,body'});
+ }
+ },
+
+
+ enable : function(){
+ if(tip){
+ locks.pop();
+ if(locks.length < 1){
+ tip.enable();
+ }
+ }
+ },
+
+
+ disable : function(){
+ if(tip){
+ tip.disable();
+ }
+ locks.push(1);
+ },
+
+
+ isEnabled : function(){
+ return tip && !tip.disabled;
+ },
+
+ getQuickTip : function(){
+ return tip;
+ },
+
+ register : function(){
+ tip.register.apply(tip, arguments);
+ },
+
+ unregister : function(){
+ tip.unregister.apply(tip, arguments);
+ },
+
+ tips :function(){
+ tip.register.apply(tip, arguments);
+ }
+ }
+}();
+
+Ext.tree.TreePanel = Ext.extend(Ext.Panel, {
+ rootVisible : true,
+ animate: Ext.enableFx,
+ lines : true,
+ enableDD : false,
+ hlDrop : Ext.enableFx,
+ pathSeparator: "/",
+
+ initComponent : function(){
+ Ext.tree.TreePanel.superclass.initComponent.call(this);
+
+ if(!this.eventModel){
+ this.eventModel = new Ext.tree.TreeEventModel(this);
+ }
+
+ this.nodeHash = {};
+
+
+ if(this.root){
+ this.setRootNode(this.root);
+ }
+
+ this.addEvents({
+
+
+ "append" : true,
+
+ "remove" : true,
+
+ "move" : true,
+
+ "insert" : true,
+
+ "beforeappend" : true,
+
+ "beforeremove" : true,
+
+ "beforemove" : true,
+
+ "beforeinsert" : true,
+
+
+ "beforeload" : true,
+
+ "load" : true,
+
+ "textchange" : true,
+
+ "beforeexpandnode" : true,
+
+ "beforecollapsenode" : true,
+
+ "expandnode" : true,
+
+ "disabledchange" : true,
+
+ "collapsenode" : true,
+
+ "beforeclick":true,
+
+ "click":true,
+
+ "checkchange":true,
+
+ "dblclick":true,
+
+ "contextmenu":true,
+
+ "beforechildrenrendered":true,
+
+ "startdrag" : true,
+
+ "enddrag" : true,
+
+ "dragdrop" : true,
+
+ "beforenodedrop" : true,
+
+ "nodedrop" : true,
+
+ "nodedragover" : true
+ });
+ if(this.singleExpand){
+ this.on("beforeexpandnode", this.restrictExpand, this);
+ }
+ },
+
+
+ proxyNodeEvent : function(ename, a1, a2, a3, a4, a5, a6){
+ if(ename == 'collapse' || ename == 'expand' || ename == 'beforecollapse' || ename == 'beforeexpand'){
+ ename = ename+'node';
+ }
+
+ return this.fireEvent(ename, a1, a2, a3, a4, a5, a6);
+ },
+
+
+
+ getRootNode : function(){
+ return this.root;
+ },
+
+
+ setRootNode : function(node){
+ this.root = node;
+ node.ownerTree = this;
+ node.isRoot = true;
+ this.registerNode(node);
+ if(!this.rootVisible){
+ node.ui = new Ext.tree.RootTreeNodeUI(node);
+ }
+ return node;
+ },
+
+
+ getNodeById : function(id){
+ return this.nodeHash[id];
+ },
+
+
+ registerNode : function(node){
+ this.nodeHash[node.id] = node;
+ },
+
+
+ unregisterNode : function(node){
+ delete this.nodeHash[node.id];
+ },
+
+
+ toString : function(){
+ return "[Tree"+(this.id?" "+this.id:"")+"]";
+ },
+
+
+ restrictExpand : function(node){
+ var p = node.parentNode;
+ if(p){
+ if(p.expandedChild && p.expandedChild.parentNode == p){
+ p.expandedChild.collapse();
+ }
+ p.expandedChild = node;
+ }
+ },
+
+
+ getChecked : function(a, startNode){
+ startNode = startNode || this.root;
+ var r = [];
+ var f = function(){
+ if(this.attributes.checked){
+ r.push(!a ? this : (a == 'id' ? this.id : this.attributes[a]));
+ }
+ }
+ startNode.cascade(f);
+ return r;
+ },
+
+
+ getEl : function(){
+ return this.el;
+ },
+
+
+ getLoader : function(){
+ return this.loader;
+ },
+
+
+ expandAll : function(){
+ this.root.expand(true);
+ },
+
+
+ collapseAll : function(){
+ this.root.collapse(true);
+ },
+
+
+ getSelectionModel : function(){
+ if(!this.selModel){
+ this.selModel = new Ext.tree.DefaultSelectionModel();
+ }
+ return this.selModel;
+ },
+
+
+ expandPath : function(path, attr, callback){
+ attr = attr || "id";
+ var keys = path.split(this.pathSeparator);
+ var curNode = this.root;
+ if(curNode.attributes[attr] != keys[1]){
+ if(callback){
+ callback(false, null);
+ }
+ return;
+ }
+ var index = 1;
+ var f = function(){
+ if(++index == keys.length){
+ if(callback){
+ callback(true, curNode);
+ }
+ return;
+ }
+ var c = curNode.findChild(attr, keys[index]);
+ if(!c){
+ if(callback){
+ callback(false, curNode);
+ }
+ return;
+ }
+ curNode = c;
+ c.expand(false, false, f);
+ };
+ curNode.expand(false, false, f);
+ },
+
+
+ selectPath : function(path, attr, callback){
+ attr = attr || "id";
+ var keys = path.split(this.pathSeparator);
+ var v = keys.pop();
+ if(keys.length > 0){
+ var f = function(success, node){
+ if(success && node){
+ var n = node.findChild(attr, v);
+ if(n){
+ n.select();
+ if(callback){
+ callback(true, n);
+ }
+ }else if(callback){
+ callback(false, n);
+ }
+ }else{
+ if(callback){
+ callback(false, n);
+ }
+ }
+ };
+ this.expandPath(keys.join(this.pathSeparator), attr, f);
+ }else{
+ this.root.select();
+ if(callback){
+ callback(true, this.root);
+ }
+ }
+ },
+
+
+ getTreeEl : function(){
+ return this.body;
+ },
+
+
+ onRender : function(ct, position){
+ Ext.tree.TreePanel.superclass.onRender.call(this, ct, position);
+ this.el.addClass('x-tree');
+ this.innerCt = this.body.createChild({tag:"ul",
+ cls:"x-tree-root-ct " +
+ (this.lines ? "x-tree-lines" : "x-tree-no-lines")});
+ },
+
+
+ initEvents : function(){
+ Ext.tree.TreePanel.superclass.initEvents.call(this);
+
+ if(this.containerScroll){
+ Ext.dd.ScrollManager.register(this.body);
+ }
+ if((this.enableDD || this.enableDrop) && !this.dropZone){
+
+ this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig || {
+ ddGroup: this.ddGroup || "TreeDD", appendOnly: this.ddAppendOnly === true
+ });
+ }
+ if((this.enableDD || this.enableDrag) && !this.dragZone){
+
+ this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig || {
+ ddGroup: this.ddGroup || "TreeDD",
+ scroll: this.ddScroll
+ });
+ }
+ this.getSelectionModel().init(this);
+ },
+
+
+ afterRender : function(){
+ Ext.tree.TreePanel.superclass.afterRender.call(this);
+ this.root.render();
+ if(!this.rootVisible){
+ this.root.renderChildren();
+ }
+ },
+
+ onDestroy : function(){
+ if(this.rendered){
+ this.body.removeAllListeners();
+ Ext.dd.ScrollManager.unregister(this.body);
+ if(this.dropZone){
+ this.dropZone.unreg();
+ }
+ if(this.dragZone){
+ this.dragZone.unreg();
+ }
+ }
+ this.root.destroy();
+ this.nodeHash = null;
+ Ext.tree.TreePanel.superclass.onDestroy.call(this);
+ }
+});
+Ext.reg('treepanel', Ext.tree.TreePanel);
+Ext.tree.TreeEventModel = function(tree){
+ this.tree = tree;
+ this.tree.on('render', this.initEvents, this);
+}
+
+Ext.tree.TreeEventModel.prototype = {
+ initEvents : function(){
+ var el = this.tree.getTreeEl();
+ el.on('click', this.delegateClick, this);
+ el.on('dblclick', this.delegateDblClick, this);
+ el.on('contextmenu', this.delegateContextMenu, this);
+ },
+
+ getNode : function(e){
+ var t;
+ if(t = e.getTarget('.x-tree-node-el', 10)){
+ var id = Ext.fly(t, '_treeEvents').getAttributeNS('ext', 'tree-node-id');
+ if(id){
+ return this.tree.getNodeById(id);
+ }
+ }
+ return null;
+ },
+
+ getNodeTarget : function(e){
+ var t = e.getTarget('.x-tree-node-icon', 1);
+ if(!t){
+ t = e.getTarget('a.x-tree-node-anchor', 4);
+ }
+ return t;
+ },
+
+ delegateClick : function(e, t){
+ if(!this.beforeEvent(e)){
+ return;
+ }
+
+ if(e.getTarget('input[type=checkbox]', 1)){
+ this.onCheckboxClick(e, this.getNode(e));
+ }
+ else if(e.getTarget('.x-tree-ec-icon', 1)){
+ this.onIconClick(e, this.getNode(e));
+ }
+ else if(this.getNodeTarget(e)){
+ this.onNodeClick(e, this.getNode(e));
+ }
+ },
+
+ delegateDblClick : function(e, t){
+ if(this.beforeEvent(e) && this.getNodeTarget(e)){
+ this.onNodeDblClick(e, this.getNode(e));
+ }
+ },
+
+ delegateContextMenu : function(e, t){
+ if(this.beforeEvent(e) && this.getNodeTarget(e)){
+ this.onNodeContextMenu(e, this.getNode(e));
+ }
+ },
+
+ onNodeClick : function(e, node){
+ node.ui.onClick(e);
+ },
+
+ onIconClick : function(e, node){
+ node.ui.ecClick(e);
+ },
+
+ onCheckboxClick : function(e, node){
+ node.ui.onCheckChange(e);
+ },
+
+ onNodeDblClick : function(e, node){
+ node.ui.onDblClick(e);
+ },
+
+ onNodeContextMenu : function(e, node){
+ node.ui.onContextMenu(e);
+ },
+
+ beforeEvent : function(e){
+ if(this.disabled){
+ e.stopEvent();
+ return false;
+ }
+ return true;
+ },
+
+ disable: function(){
+ this.disabled = true;
+ },
+
+ enable: function(){
+ this.disabled = false;
+ }
+};
+
+Ext.tree.DefaultSelectionModel = function(){
+ this.selNode = null;
+
+ this.addEvents({
+
+ "selectionchange" : true,
+
+
+ "beforeselect" : true
+ });
+};
+
+Ext.extend(Ext.tree.DefaultSelectionModel, Ext.util.Observable, {
+ init : function(tree){
+ this.tree = tree;
+ tree.getTreeEl().on("keydown", this.onKeyDown, this);
+ tree.on("click", this.onNodeClick, this);
+ },
+
+ onNodeClick : function(node, e){
+ this.select(node);
+ },
+
+
+ select : function(node){
+ var last = this.selNode;
+ if(last != node && this.fireEvent('beforeselect', this, node, last) !== false){
+ if(last){
+ last.ui.onSelectedChange(false);
+ }
+ this.selNode = node;
+ node.ui.onSelectedChange(true);
+ this.fireEvent("selectionchange", this, node, last);
+ }
+ return node;
+ },
+
+
+ unselect : function(node){
+ if(this.selNode == node){
+ this.clearSelections();
+ }
+ },
+
+
+ clearSelections : function(){
+ var n = this.selNode;
+ if(n){
+ n.ui.onSelectedChange(false);
+ this.selNode = null;
+ this.fireEvent("selectionchange", this, null);
+ }
+ return n;
+ },
+
+
+ getSelectedNode : function(){
+ return this.selNode;
+ },
+
+
+ isSelected : function(node){
+ return this.selNode == node;
+ },
+
+
+ selectPrevious : function(){
+ var s = this.selNode || this.lastSelNode;
+ if(!s){
+ return null;
+ }
+ var ps = s.previousSibling;
+ if(ps){
+ if(!ps.isExpanded() || ps.childNodes.length < 1){
+ return this.select(ps);
+ } else{
+ var lc = ps.lastChild;
+ while(lc && lc.isExpanded() && lc.childNodes.length > 0){
+ lc = lc.lastChild;
+ }
+ return this.select(lc);
+ }
+ } else if(s.parentNode && (this.tree.rootVisible || !s.parentNode.isRoot)){
+ return this.select(s.parentNode);
+ }
+ return null;
+ },
+
+
+ selectNext : function(){
+ var s = this.selNode || this.lastSelNode;
+ if(!s){
+ return null;
+ }
+ if(s.firstChild && s.isExpanded()){
+ return this.select(s.firstChild);
+ }else if(s.nextSibling){
+ return this.select(s.nextSibling);
+ }else if(s.parentNode){
+ var newS = null;
+ s.parentNode.bubble(function(){
+ if(this.nextSibling){
+ newS = this.getOwnerTree().selModel.select(this.nextSibling);
+ return false;
+ }
+ });
+ return newS;
+ }
+ return null;
+ },
+
+ onKeyDown : function(e){
+ var s = this.selNode || this.lastSelNode;
+
+ var sm = this;
+ if(!s){
+ return;
+ }
+ var k = e.getKey();
+ switch(k){
+ case e.DOWN:
+ e.stopEvent();
+ this.selectNext();
+ break;
+ case e.UP:
+ e.stopEvent();
+ this.selectPrevious();
+ break;
+ case e.RIGHT:
+ e.preventDefault();
+ if(s.hasChildNodes()){
+ if(!s.isExpanded()){
+ s.expand();
+ }else if(s.firstChild){
+ this.select(s.firstChild, e);
+ }
+ }
+ break;
+ case e.LEFT:
+ e.preventDefault();
+ if(s.hasChildNodes() && s.isExpanded()){
+ s.collapse();
+ }else if(s.parentNode && (this.tree.rootVisible || s.parentNode != this.tree.getRootNode())){
+ this.select(s.parentNode, e);
+ }
+ break;
+ };
+ }
+});
+
+
+Ext.tree.MultiSelectionModel = function(){
+ this.selNodes = [];
+ this.selMap = {};
+ this.addEvents({
+
+ "selectionchange" : true
+ });
+};
+
+Ext.extend(Ext.tree.MultiSelectionModel, Ext.util.Observable, {
+ init : function(tree){
+ this.tree = tree;
+ tree.getTreeEl().on("keydown", this.onKeyDown, this);
+ tree.on("click", this.onNodeClick, this);
+ },
+
+ onNodeClick : function(node, e){
+ this.select(node, e, e.ctrlKey);
+ },
+
+
+ select : function(node, e, keepExisting){
+ if(keepExisting !== true){
+ this.clearSelections(true);
+ }
+ if(this.isSelected(node)){
+ this.lastSelNode = node;
+ return node;
+ }
+ this.selNodes.push(node);
+ this.selMap[node.id] = node;
+ this.lastSelNode = node;
+ node.ui.onSelectedChange(true);
+ this.fireEvent("selectionchange", this, this.selNodes);
+ return node;
+ },
+
+
+ unselect : function(node){
+ if(this.selMap[node.id]){
+ node.ui.onSelectedChange(false);
+ var sn = this.selNodes;
+ var index = -1;
+ if(sn.indexOf){
+ index = sn.indexOf(node);
+ }else{
+ for(var i = 0, len = sn.length; i < len; i++){
+ if(sn[i] == node){
+ index = i;
+ break;
+ }
+ }
+ }
+ if(index != -1){
+ this.selNodes.splice(index, 1);
+ }
+ delete this.selMap[node.id];
+ this.fireEvent("selectionchange", this, this.selNodes);
+ }
+ },
+
+
+ clearSelections : function(suppressEvent){
+ var sn = this.selNodes;
+ if(sn.length > 0){
+ for(var i = 0, len = sn.length; i < len; i++){
+ sn[i].ui.onSelectedChange(false);
+ }
+ this.selNodes = [];
+ this.selMap = {};
+ if(suppressEvent !== true){
+ this.fireEvent("selectionchange", this, this.selNodes);
+ }
+ }
+ },
+
+
+ isSelected : function(node){
+ return this.selMap[node.id] ? true : false;
+ },
+
+
+ getSelectedNodes : function(){
+ return this.selNodes;
+ },
+
+ onKeyDown : Ext.tree.DefaultSelectionModel.prototype.onKeyDown,
+
+ selectNext : Ext.tree.DefaultSelectionModel.prototype.selectNext,
+
+ selectPrevious : Ext.tree.DefaultSelectionModel.prototype.selectPrevious
+});
+
+Ext.tree.TreeNode = function(attributes){
+ attributes = attributes || {};
+ if(typeof attributes == "string"){
+ attributes = {text: attributes};
+ }
+ this.childrenRendered = false;
+ this.rendered = false;
+ Ext.tree.TreeNode.superclass.constructor.call(this, attributes);
+ this.expanded = attributes.expanded === true;
+ this.isTarget = attributes.isTarget !== false;
+ this.draggable = attributes.draggable !== false && attributes.allowDrag !== false;
+ this.allowChildren = attributes.allowChildren !== false && attributes.allowDrop !== false;
+
+
+ this.text = attributes.text;
+
+ this.disabled = attributes.disabled === true;
+
+ this.addEvents({
+
+ "textchange" : true,
+
+ "beforeexpand" : true,
+
+ "beforecollapse" : true,
+
+ "expand" : true,
+
+ "disabledchange" : true,
+
+ "collapse" : true,
+
+ "beforeclick":true,
+
+ "click":true,
+
+ "checkchange":true,
+
+ "dblclick":true,
+
+ "contextmenu":true,
+
+ "beforechildrenrendered":true
+ });
+
+ var uiClass = this.attributes.uiProvider || Ext.tree.TreeNodeUI;
+
+
+ this.ui = new uiClass(this);
+};
+Ext.extend(Ext.tree.TreeNode, Ext.data.Node, {
+ preventHScroll: true,
+
+ isExpanded : function(){
+ return this.expanded;
+ },
+
+
+ getUI : function(){
+ return this.ui;
+ },
+
+
+ setFirstChild : function(node){
+ var of = this.firstChild;
+ Ext.tree.TreeNode.superclass.setFirstChild.call(this, node);
+ if(this.childrenRendered && of && node != of){
+ of.renderIndent(true, true);
+ }
+ if(this.rendered){
+ this.renderIndent(true, true);
+ }
+ },
+
+
+ setLastChild : function(node){
+ var ol = this.lastChild;
+ Ext.tree.TreeNode.superclass.setLastChild.call(this, node);
+ if(this.childrenRendered && ol && node != ol){
+ ol.renderIndent(true, true);
+ }
+ if(this.rendered){
+ this.renderIndent(true, true);
+ }
+ },
+
+
+
+ appendChild : function(){
+ var node = Ext.tree.TreeNode.superclass.appendChild.apply(this, arguments);
+ if(node && this.childrenRendered){
+ node.render();
+ }
+ this.ui.updateExpandIcon();
+ return node;
+ },
+
+
+ removeChild : function(node){
+ this.ownerTree.getSelectionModel().unselect(node);
+ Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments);
+
+ if(this.childrenRendered){
+ node.ui.remove();
+ }
+ if(this.childNodes.length < 1){
+ this.collapse(false, false);
+ }else{
+ this.ui.updateExpandIcon();
+ }
+ if(!this.firstChild && !this.isHiddenRoot()) {
+ this.childrenRendered = false;
+ }
+ return node;
+ },
+
+
+ insertBefore : function(node, refNode){
+ var newNode = Ext.tree.TreeNode.superclass.insertBefore.apply(this, arguments);
+ if(newNode && refNode && this.childrenRendered){
+ node.render();
+ }
+ this.ui.updateExpandIcon();
+ return newNode;
+ },
+
+
+ setText : function(text){
+ var oldText = this.text;
+ this.text = text;
+ this.attributes.text = text;
+ if(this.rendered){
+ this.ui.onTextChange(this, text, oldText);
+ }
+ this.fireEvent("textchange", this, text, oldText);
+ },
+
+
+ select : function(){
+ this.getOwnerTree().getSelectionModel().select(this);
+ },
+
+
+ unselect : function(){
+ this.getOwnerTree().getSelectionModel().unselect(this);
+ },
+
+
+ isSelected : function(){
+ return this.getOwnerTree().getSelectionModel().isSelected(this);
+ },
+
+
+ expand : function(deep, anim, callback){
+ if(!this.expanded){
+ if(this.fireEvent("beforeexpand", this, deep, anim) === false){
+ return;
+ }
+ if(!this.childrenRendered){
+ this.renderChildren();
+ }
+ this.expanded = true;
+ if(!this.isHiddenRoot() && (this.getOwnerTree().animate && anim !== false) || anim){
+ this.ui.animExpand(function(){
+ this.fireEvent("expand", this);
+ if(typeof callback == "function"){
+ callback(this);
+ }
+ if(deep === true){
+ this.expandChildNodes(true);
+ }
+ }.createDelegate(this));
+ return;
+ }else{
+ this.ui.expand();
+ this.fireEvent("expand", this);
+ if(typeof callback == "function"){
+ callback(this);
+ }
+ }
+ }else{
+ if(typeof callback == "function"){
+ callback(this);
+ }
+ }
+ if(deep === true){
+ this.expandChildNodes(true);
+ }
+ },
+
+ isHiddenRoot : function(){
+ return this.isRoot && !this.getOwnerTree().rootVisible;
+ },
+
+
+ collapse : function(deep, anim){
+ if(this.expanded && !this.isHiddenRoot()){
+ if(this.fireEvent("beforecollapse", this, deep, anim) === false){
+ return;
+ }
+ this.expanded = false;
+ if((this.getOwnerTree().animate && anim !== false) || anim){
+ this.ui.animCollapse(function(){
+ this.fireEvent("collapse", this);
+ if(deep === true){
+ this.collapseChildNodes(true);
+ }
+ }.createDelegate(this));
+ return;
+ }else{
+ this.ui.collapse();
+ this.fireEvent("collapse", this);
+ }
+ }
+ if(deep === true){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].collapse(true, false);
+ }
+ }
+ },
+
+
+ delayedExpand : function(delay){
+ if(!this.expandProcId){
+ this.expandProcId = this.expand.defer(delay, this);
+ }
+ },
+
+
+ cancelExpand : function(){
+ if(this.expandProcId){
+ clearTimeout(this.expandProcId);
+ }
+ this.expandProcId = false;
+ },
+
+
+ toggle : function(){
+ if(this.expanded){
+ this.collapse();
+ }else{
+ this.expand();
+ }
+ },
+
+
+ ensureVisible : function(callback){
+ var tree = this.getOwnerTree();
+ tree.expandPath(this.parentNode.getPath(), false, function(){
+ tree.getTreeEl().scrollChildIntoView(this.ui.anchor);
+ Ext.callback(callback);
+ }.createDelegate(this));
+ },
+
+
+ expandChildNodes : function(deep){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].expand(deep);
+ }
+ },
+
+
+ collapseChildNodes : function(deep){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++) {
+ cs[i].collapse(deep);
+ }
+ },
+
+
+ disable : function(){
+ this.disabled = true;
+ this.unselect();
+ if(this.rendered && this.ui.onDisableChange){
+ this.ui.onDisableChange(this, true);
+ }
+ this.fireEvent("disabledchange", this, true);
+ },
+
+
+ enable : function(){
+ this.disabled = false;
+ if(this.rendered && this.ui.onDisableChange){
+ this.ui.onDisableChange(this, false);
+ }
+ this.fireEvent("disabledchange", this, false);
+ },
+
+
+ renderChildren : function(suppressEvent){
+ if(suppressEvent !== false){
+ this.fireEvent("beforechildrenrendered", this);
+ }
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].render(true);
+ }
+ this.childrenRendered = true;
+ },
+
+
+ sort : function(fn, scope){
+ Ext.tree.TreeNode.superclass.sort.apply(this, arguments);
+ if(this.childrenRendered){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].render(true);
+ }
+ }
+ },
+
+
+ render : function(bulkRender){
+ this.ui.render(bulkRender);
+ if(!this.rendered){
+
+ this.getOwnerTree().registerNode(this);
+ this.rendered = true;
+ if(this.expanded){
+ this.expanded = false;
+ this.expand(false, false);
+ }
+ }
+ },
+
+
+ renderIndent : function(deep, refresh){
+ if(refresh){
+ this.ui.childIndent = null;
+ }
+ this.ui.renderIndent();
+ if(deep === true && this.childrenRendered){
+ var cs = this.childNodes;
+ for(var i = 0, len = cs.length; i < len; i++){
+ cs[i].renderIndent(true, refresh);
+ }
+ }
+ },
+
+ beginUpdate : function(){
+ this.childrenRendered = false;
+ },
+
+ endUpdate : function(){
+ if(this.expanded){
+ this.renderChildren();
+ }
+ },
+
+ destroy : function(){
+ for(var i = 0,l = this.childNodes.length; i < l; i++){
+ this.childNodes[i].destroy();
+ }
+ this.childNodes = null;
+ if(this.ui.destroy){
+ this.ui.destroy();
+ }
+ }
+});
+
+ Ext.tree.AsyncTreeNode = function(config){
+ this.loaded = false;
+ this.loading = false;
+ Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments);
+
+ this.addEvents({'beforeload':true, 'load': true});
+
+
+};
+Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, {
+ expand : function(deep, anim, callback){
+ if(this.loading){
+ var timer;
+ var f = function(){
+ if(!this.loading){
+ clearInterval(timer);
+ this.expand(deep, anim, callback);
+ }
+ }.createDelegate(this);
+ timer = setInterval(f, 200);
+ return;
+ }
+ if(!this.loaded){
+ if(this.fireEvent("beforeload", this) === false){
+ return;
+ }
+ this.loading = true;
+ this.ui.beforeLoad(this);
+ var loader = this.loader || this.attributes.loader || this.getOwnerTree().getLoader();
+ if(loader){
+ loader.load(this, this.loadComplete.createDelegate(this, [deep, anim, callback]));
+ return;
+ }
+ }
+ Ext.tree.AsyncTreeNode.superclass.expand.call(this, deep, anim, callback);
+ },
+
+
+ isLoading : function(){
+ return this.loading;
+ },
+
+ loadComplete : function(deep, anim, callback){
+ this.loading = false;
+ this.loaded = true;
+ this.ui.afterLoad(this);
+ this.fireEvent("load", this);
+ this.expand(deep, anim, callback);
+ },
+
+
+ isLoaded : function(){
+ return this.loaded;
+ },
+
+ hasChildNodes : function(){
+ if(!this.isLeaf() && !this.loaded){
+ return true;
+ }else{
+ return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this);
+ }
+ },
+
+
+ reload : function(callback){
+ this.collapse(false, false);
+ while(this.firstChild){
+ this.removeChild(this.firstChild);
+ }
+ this.childrenRendered = false;
+ this.loaded = false;
+ if(this.isHiddenRoot()){
+ this.expanded = false;
+ }
+ this.expand(false, false, callback);
+ }
+});
+
+Ext.tree.TreeNodeUI = function(node){
+ this.node = node;
+ this.rendered = false;
+ this.animating = false;
+ this.wasLeaf = true;
+ this.ecc = 'x-tree-ec-icon x-tree-elbow';
+ this.emptyIcon = Ext.BLANK_IMAGE_URL;
+};
+
+Ext.tree.TreeNodeUI.prototype = {
+
+ removeChild : function(node){
+ if(this.rendered){
+ this.ctNode.removeChild(node.ui.getEl());
+ }
+ },
+
+
+ beforeLoad : function(){
+ this.addClass("x-tree-node-loading");
+ },
+
+
+ afterLoad : function(){
+ this.removeClass("x-tree-node-loading");
+ },
+
+
+ onTextChange : function(node, text, oldText){
+ if(this.rendered){
+ this.textNode.innerHTML = text;
+ }
+ },
+
+
+ onDisableChange : function(node, state){
+ this.disabled = state;
+ if(state){
+ this.addClass("x-tree-node-disabled");
+ }else{
+ this.removeClass("x-tree-node-disabled");
+ }
+ },
+
+
+ onSelectedChange : function(state){
+ if(state){
+ this.focus();
+ this.addClass("x-tree-selected");
+ }else{
+
+ this.removeClass("x-tree-selected");
+ }
+ },
+
+
+ onMove : function(tree, node, oldParent, newParent, index, refNode){
+ this.childIndent = null;
+ if(this.rendered){
+ var targetNode = newParent.ui.getContainer();
+ if(!targetNode){
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap);
+ return;
+ }
+ var insertBefore = refNode ? refNode.ui.getEl() : null;
+ if(insertBefore){
+ targetNode.insertBefore(this.wrap, insertBefore);
+ }else{
+ targetNode.appendChild(this.wrap);
+ }
+ this.node.renderIndent(true);
+ }
+ },
+
+
+ addClass : function(cls){
+ if(this.elNode){
+ Ext.fly(this.elNode).addClass(cls);
+ }
+ },
+
+
+ removeClass : function(cls){
+ if(this.elNode){
+ Ext.fly(this.elNode).removeClass(cls);
+ }
+ },
+
+
+ remove : function(){
+ if(this.rendered){
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap);
+ }
+ },
+
+
+ fireEvent : function(){
+ return this.node.fireEvent.apply(this.node, arguments);
+ },
+
+
+ initEvents : function(){
+ this.node.on("move", this.onMove, this);
+
+ if(this.node.disabled){
+ this.addClass("x-tree-node-disabled");
+ }
+ if(this.node.hidden){
+ this.hide();
+ }
+ var ot = this.node.getOwnerTree();
+ var dd = ot.enableDD || ot.enableDrag || ot.enableDrop;
+ if(dd && (!this.node.isRoot || ot.rootVisible)){
+ Ext.dd.Registry.register(this.elNode, {
+ node: this.node,
+ handles: this.getDDHandles(),
+ isHandle: false
+ });
+ }
+ },
+
+
+ getDDHandles : function(){
+ return [this.iconNode, this.textNode];
+ },
+
+
+ hide : function(){
+ this.node.hidden = true;
+ if(this.wrap){
+ this.wrap.style.display = "none";
+ }
+ },
+
+
+ show : function(){
+ this.node.hidden = false;
+ if(this.wrap){
+ this.wrap.style.display = "";
+ }
+ },
+
+
+ onContextMenu : function(e){
+ if (this.node.hasListener("contextmenu") || this.node.getOwnerTree().hasListener("contextmenu")) {
+ e.preventDefault();
+ this.focus();
+ this.fireEvent("contextmenu", this.node, e);
+ }
+ },
+
+
+ onClick : function(e){
+ if(this.dropping){
+ e.stopEvent();
+ return;
+ }
+ if(this.fireEvent("beforeclick", this.node, e) !== false){
+ if(!this.disabled && this.node.attributes.href){
+ this.fireEvent("click", this.node, e);
+ return;
+ }
+ e.preventDefault();
+ if(this.disabled){
+ return;
+ }
+
+ if(this.node.attributes.singleClickExpand && !this.animating && this.node.hasChildNodes()){
+ this.node.toggle();
+ }
+
+ this.fireEvent("click", this.node, e);
+ }else{
+ e.stopEvent();
+ }
+ },
+
+
+ onDblClick : function(e){
+ e.preventDefault();
+ if(this.disabled){
+ return;
+ }
+ if(this.checkbox){
+ this.toggleCheck();
+ }
+ if(!this.animating && this.node.hasChildNodes()){
+ this.node.toggle();
+ }
+ this.fireEvent("dblclick", this.node, e);
+ },
+
+
+ onCheckChange : function(){
+ var checked = this.checkbox.checked;
+ this.node.attributes.checked = checked;
+ this.fireEvent('checkchange', this.node, checked);
+ },
+
+
+ ecClick : function(e){
+ if(!this.animating && (this.node.hasChildNodes() || this.node.attributes.expandable)){
+ this.node.toggle();
+ }
+ },
+
+
+ startDrop : function(){
+ this.dropping = true;
+ },
+
+
+ endDrop : function(){
+ setTimeout(function(){
+ this.dropping = false;
+ }.createDelegate(this), 50);
+ },
+
+
+ expand : function(){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "";
+ },
+
+
+ focus : function(){
+ if(!this.node.preventHScroll){
+ try{this.anchor.focus();
+ }catch(e){}
+ }else if(!Ext.isIE){
+ try{
+ var noscroll = this.node.getOwnerTree().getTreeEl().dom;
+ var l = noscroll.scrollLeft;
+ this.anchor.focus();
+ noscroll.scrollLeft = l;
+ }catch(e){}
+ }
+ },
+
+
+ toggleCheck : function(value){
+ var cb = this.checkbox;
+ if(cb){
+ cb.checked = (value === undefined ? !cb.checked : value);
+ }
+ },
+
+
+ blur : function(){
+ try{
+ this.anchor.blur();
+ }catch(e){}
+ },
+
+
+ animExpand : function(callback){
+ var ct = Ext.get(this.ctNode);
+ ct.stopFx();
+ if(!this.node.hasChildNodes()){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "";
+ Ext.callback(callback);
+ return;
+ }
+ this.animating = true;
+ this.updateExpandIcon();
+
+ ct.slideIn('t', {
+ callback : function(){
+ this.animating = false;
+ Ext.callback(callback);
+ },
+ scope: this,
+ duration: this.node.ownerTree.duration || .25
+ });
+ },
+
+
+ highlight : function(){
+ var tree = this.node.getOwnerTree();
+ Ext.fly(this.wrap).highlight(
+ tree.hlColor || "C3DAF9",
+ {endColor: tree.hlBaseColor}
+ );
+ },
+
+
+ collapse : function(){
+ this.updateExpandIcon();
+ this.ctNode.style.display = "none";
+ },
+
+
+ animCollapse : function(callback){
+ var ct = Ext.get(this.ctNode);
+ ct.enableDisplayMode('block');
+ ct.stopFx();
+
+ this.animating = true;
+ this.updateExpandIcon();
+
+ ct.slideOut('t', {
+ callback : function(){
+ this.animating = false;
+ Ext.callback(callback);
+ },
+ scope: this,
+ duration: this.node.ownerTree.duration || .25
+ });
+ },
+
+
+ getContainer : function(){
+ return this.ctNode;
+ },
+
+
+ getEl : function(){
+ return this.wrap;
+ },
+
+
+ appendDDGhost : function(ghostNode){
+ ghostNode.appendChild(this.elNode.cloneNode(true));
+ },
+
+
+ getDDRepairXY : function(){
+ return Ext.lib.Dom.getXY(this.iconNode);
+ },
+
+
+ onRender : function(){
+ this.render();
+ },
+
+
+ render : function(bulkRender){
+ var n = this.node, a = n.attributes;
+ var targetNode = n.parentNode ?
+ n.parentNode.ui.getContainer() : n.ownerTree.innerCt.dom;
+
+ if(!this.rendered){
+ this.rendered = true;
+
+ this.renderElements(n, a, targetNode, bulkRender);
+
+ if(a.qtip){
+ if(this.textNode.setAttributeNS){
+ this.textNode.setAttributeNS("ext", "qtip", a.qtip);
+ if(a.qtipTitle){
+ this.textNode.setAttributeNS("ext", "qtitle", a.qtipTitle);
+ }
+ }else{
+ this.textNode.setAttribute("ext:qtip", a.qtip);
+ if(a.qtipTitle){
+ this.textNode.setAttribute("ext:qtitle", a.qtipTitle);
+ }
+ }
+ }else if(a.qtipCfg){
+ a.qtipCfg.target = Ext.id(this.textNode);
+ Ext.QuickTips.register(a.qtipCfg);
+ }
+ this.initEvents();
+ if(!this.node.expanded){
+ this.updateExpandIcon(true);
+ }
+ }else{
+ if(bulkRender === true) {
+ targetNode.appendChild(this.wrap);
+ }
+ }
+ },
+
+
+ renderElements : function(n, a, targetNode, bulkRender){
+
+ this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
+
+ var cb = typeof a.checked == 'boolean';
+
+ var href = a.href ? a.href : Ext.isGecko ? "" : "#";
+ var buf = ['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf ', a.cls,'">',
+ '<span class="x-tree-node-indent">',this.indentMarkup,"</span>",
+ '<img src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow" />',
+ '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls ? " "+a.iconCls : ""),'" unselectable="on" />',
+ cb ? ('<input class="x-tree-node-cb" type="checkbox" ' + (a.checked ? 'checked="checked" />' : '/>')) : '',
+ '<a hidefocus="on" class="x-tree-node-anchor" href="',href,'" tabIndex="1" ',
+ a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '><span unselectable="on">',n.text,"</span></a></div>",
+ '<ul class="x-tree-node-ct" style="display:none;"></ul>',
+ "</li>"].join('');
+
+ if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
+ this.wrap = Ext.DomHelper.insertHtml("beforeBegin",
+ n.nextSibling.ui.getEl(), buf);
+ }else{
+ this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf);
+ }
+
+ this.elNode = this.wrap.childNodes[0];
+ this.ctNode = this.wrap.childNodes[1];
+ var cs = this.elNode.childNodes;
+ this.indentNode = cs[0];
+ this.ecNode = cs[1];
+ this.iconNode = cs[2];
+ var index = 3;
+ if(cb){
+ this.checkbox = cs[3];
+ index++;
+ }
+ this.anchor = cs[index];
+ this.textNode = cs[index].firstChild;
+ },
+
+
+ getAnchor : function(){
+ return this.anchor;
+ },
+
+
+ getTextEl : function(){
+ return this.textNode;
+ },
+
+
+ getIconEl : function(){
+ return this.iconNode;
+ },
+
+
+ isChecked : function(){
+ return this.checkbox ? this.checkbox.checked : false;
+ },
+
+
+ updateExpandIcon : function(){
+ if(this.rendered){
+ var n = this.node, c1, c2;
+ var cls = n.isLast() ? "x-tree-elbow-end" : "x-tree-elbow";
+ var hasChild = n.hasChildNodes();
+ if(hasChild || n.attributes.expandable){
+ if(n.expanded){
+ cls += "-minus";
+ c1 = "x-tree-node-collapsed";
+ c2 = "x-tree-node-expanded";
+ }else{
+ cls += "-plus";
+ c1 = "x-tree-node-expanded";
+ c2 = "x-tree-node-collapsed";
+ }
+ if(this.wasLeaf){
+ this.removeClass("x-tree-node-leaf");
+ this.wasLeaf = false;
+ }
+ if(this.c1 != c1 || this.c2 != c2){
+ Ext.fly(this.elNode).replaceClass(c1, c2);
+ this.c1 = c1; this.c2 = c2;
+ }
+ }else{
+ if(!this.wasLeaf){
+ Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-leaf");
+ delete this.c1;
+ delete this.c2;
+ this.wasLeaf = true;
+ }
+ }
+ var ecc = "x-tree-ec-icon "+cls;
+ if(this.ecc != ecc){
+ this.ecNode.className = ecc;
+ this.ecc = ecc;
+ }
+ }
+ },
+
+
+ getChildIndent : function(){
+ if(!this.childIndent){
+ var buf = [];
+ var p = this.node;
+ while(p){
+ if(!p.isRoot || (p.isRoot && p.ownerTree.rootVisible)){
+ if(!p.isLast()) {
+ buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-elbow-line" />');
+ } else {
+ buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-icon" />');
+ }
+ }
+ p = p.parentNode;
+ }
+ this.childIndent = buf.join("");
+ }
+ return this.childIndent;
+ },
+
+
+ renderIndent : function(){
+ if(this.rendered){
+ var indent = "";
+ var p = this.node.parentNode;
+ if(p){
+ indent = p.ui.getChildIndent();
+ }
+ if(this.indentMarkup != indent){
+ this.indentNode.innerHTML = indent;
+ this.indentMarkup = indent;
+ }
+ this.updateExpandIcon();
+ }
+ },
+
+ destroy : function(){
+ if(this.elNode){
+ Ext.dd.Registry.unregister(this.elNode.id);
+ }
+ }
+};
+
+
+Ext.tree.RootTreeNodeUI = function(){
+ Ext.tree.RootTreeNodeUI.superclass.constructor.apply(this, arguments);
+};
+Ext.extend(Ext.tree.RootTreeNodeUI, Ext.tree.TreeNodeUI, {
+
+ render : function(){
+ if(!this.rendered){
+ var targetNode = this.node.ownerTree.innerCt.dom;
+ this.node.expanded = true;
+ targetNode.innerHTML = '<div class="x-tree-root-node"></div>';
+ this.wrap = this.ctNode = targetNode.firstChild;
+ }
+ },
+ collapse : function(){
+ },
+ expand : function(){
+ }
+});
+
+Ext.tree.TreeLoader = function(config){
+ this.baseParams = {};
+ this.requestMethod = "POST";
+ Ext.apply(this, config);
+
+ this.addEvents({
+
+ "beforeload" : true,
+
+ "load" : true,
+
+ "loadexception" : true
+ });
+
+ Ext.tree.TreeLoader.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, {
+
+
+
+
+
+
+ uiProviders : {},
+
+
+ clearOnLoad : true,
+
+
+ load : function(node, callback){
+ if(this.clearOnLoad){
+ while(node.firstChild){
+ node.removeChild(node.firstChild);
+ }
+ }
+ if(this.doPreload(node)){
+ if(typeof callback == "function"){
+ callback();
+ }
+ }else if(this.dataUrl||this.url){
+ this.requestData(node, callback);
+ }
+ },
+
+ doPreload : function(node){
+ if(node.attributes.children){
+ if(node.childNodes.length < 1){
+ var cs = node.attributes.children;
+ node.beginUpdate();
+ for(var i = 0, len = cs.length; i < len; i++){
+ var cn = node.appendChild(this.createNode(cs[i]));
+ if(this.preloadChildren){
+ this.doPreload(cn);
+ }
+ }
+ node.endUpdate();
+ }
+ return true;
+ }else {
+ return false;
+ }
+ },
+
+ getParams: function(node){
+ var buf = [], bp = this.baseParams;
+ for(var key in bp){
+ if(typeof bp[key] != "function"){
+ buf.push(encodeURIComponent(key), "=", encodeURIComponent(bp[key]), "&");
+ }
+ }
+ buf.push("node=", encodeURIComponent(node.id));
+ return buf.join("");
+ },
+
+ requestData : function(node, callback){
+ if(this.fireEvent("beforeload", this, node, callback) !== false){
+ this.transId = Ext.Ajax.request({
+ method:this.requestMethod,
+ url: this.dataUrl||this.url,
+ success: this.handleResponse,
+ failure: this.handleFailure,
+ scope: this,
+ argument: {callback: callback, node: node},
+ params: this.getParams(node)
+ });
+ }else{
+
+
+ if(typeof callback == "function"){
+ callback();
+ }
+ }
+ },
+
+ isLoading : function(){
+ return this.transId ? true : false;
+ },
+
+ abort : function(){
+ if(this.isLoading()){
+ Ext.Ajax.abort(this.transId);
+ }
+ },
+
+
+ createNode : function(attr){
+
+ if(this.baseAttrs){
+ Ext.applyIf(attr, this.baseAttrs);
+ }
+ if(this.applyLoader !== false){
+ attr.loader = this;
+ }
+ if(typeof attr.uiProvider == 'string'){
+ attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
+ }
+ return(attr.leaf ?
+ new Ext.tree.TreeNode(attr) :
+ new Ext.tree.AsyncTreeNode(attr));
+ },
+
+ processResponse : function(response, node, callback){
+ var json = response.responseText;
+ try {
+ var o = eval("("+json+")");
+ node.beginUpdate();
+ for(var i = 0, len = o.length; i < len; i++){
+ var n = this.createNode(o[i]);
+ if(n){
+ node.appendChild(n);
+ }
+ }
+ node.endUpdate();
+ if(typeof callback == "function"){
+ callback(this, node);
+ }
+ }catch(e){
+ this.handleFailure(response);
+ }
+ },
+
+ handleResponse : function(response){
+ this.transId = false;
+ var a = response.argument;
+ this.processResponse(response, a.node, a.callback);
+ this.fireEvent("load", this, a.node, response);
+ },
+
+ handleFailure : function(response){
+ this.transId = false;
+ var a = response.argument;
+ this.fireEvent("loadexception", this, a.node, response);
+ if(typeof a.callback == "function"){
+ a.callback(this, a.node);
+ }
+ }
+});
+
+Ext.tree.TreeFilter = function(tree, config){
+ this.tree = tree;
+ this.filtered = {};
+ Ext.apply(this, config);
+};
+
+Ext.tree.TreeFilter.prototype = {
+ clearBlank:false,
+ reverse:false,
+ autoClear:false,
+ remove:false,
+
+
+ filter : function(value, attr, startNode){
+ attr = attr || "text";
+ var f;
+ if(typeof value == "string"){
+ var vlen = value.length;
+
+ if(vlen == 0 && this.clearBlank){
+ this.clear();
+ return;
+ }
+ value = value.toLowerCase();
+ f = function(n){
+ return n.attributes[attr].substr(0, vlen).toLowerCase() == value;
+ };
+ }else if(value.exec){
+ f = function(n){
+ return value.test(n.attributes[attr]);
+ };
+ }else{
+ throw 'Illegal filter type, must be string or regex';
+ }
+ this.filterBy(f, null, startNode);
+ },
+
+
+ filterBy : function(fn, scope, startNode){
+ startNode = startNode || this.tree.root;
+ if(this.autoClear){
+ this.clear();
+ }
+ var af = this.filtered, rv = this.reverse;
+ var f = function(n){
+ if(n == startNode){
+ return true;
+ }
+ if(af[n.id]){
+ return false;
+ }
+ var m = fn.call(scope || n, n);
+ if(!m || rv){
+ af[n.id] = n;
+ n.ui.hide();
+ return false;
+ }
+ return true;
+ };
+ startNode.cascade(f);
+ if(this.remove){
+ for(var id in af){
+ if(typeof id != "function"){
+ var n = af[id];
+ if(n && n.parentNode){
+ n.parentNode.removeChild(n);
+ }
+ }
+ }
+ }
+ },
+
+
+ clear : function(){
+ var t = this.tree;
+ var af = this.filtered;
+ for(var id in af){
+ if(typeof id != "function"){
+ var n = af[id];
+ if(n){
+ n.ui.show();
+ }
+ }
+ }
+ this.filtered = {};
+ }
+};
+
+
+Ext.tree.TreeSorter = function(tree, config){
+ Ext.apply(this, config);
+ tree.on("beforechildrenrendered", this.doSort, this);
+ tree.on("append", this.updateSort, this);
+ tree.on("insert", this.updateSort, this);
+
+ var dsc = this.dir && this.dir.toLowerCase() == "desc";
+ var p = this.property || "text";
+ var sortType = this.sortType;
+ var fs = this.folderSort;
+ var cs = this.caseSensitive === true;
+ var leafAttr = this.leafAttr || 'leaf';
+
+ this.sortFn = function(n1, n2){
+ if(fs){
+ if(n1.attributes[leafAttr] && !n2.attributes[leafAttr]){
+ return 1;
+ }
+ if(!n1.attributes[leafAttr] && n2.attributes[leafAttr]){
+ return -1;
+ }
+ }
+ var v1 = sortType ? sortType(n1) : (cs ? n1.attributes[p] : n1.attributes[p].toUpperCase());
+ var v2 = sortType ? sortType(n2) : (cs ? n2.attributes[p] : n2.attributes[p].toUpperCase());
+ if(v1 < v2){
+ return dsc ? +1 : -1;
+ }else if(v1 > v2){
+ return dsc ? -1 : +1;
+ }else{
+ return 0;
+ }
+ };
+};
+
+Ext.tree.TreeSorter.prototype = {
+ doSort : function(node){
+ node.sort(this.sortFn);
+ },
+
+ compareNodes : function(n1, n2){
+
+ return (n1.text.toUpperCase() > n2.text.toUpperCase() ? 1 : -1);
+ },
+
+ updateSort : function(tree, node){
+ if(node.childrenRendered){
+ this.doSort.defer(1, this, [node]);
+ }
+ }
+};
+
+if(Ext.dd.DropZone){
+
+Ext.tree.TreeDropZone = function(tree, config){
+
+ this.allowParentInsert = false;
+
+ this.allowContainerDrop = false;
+
+ this.appendOnly = false;
+ Ext.tree.TreeDropZone.superclass.constructor.call(this, tree.innerCt, config);
+
+ this.tree = tree;
+
+ this.dragOverData = {};
+
+ this.lastInsertClass = "x-tree-no-status";
+};
+
+Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, {
+
+ ddGroup : "TreeDD",
+
+
+ expandDelay : 1000,
+
+
+ expandNode : function(node){
+ if(node.hasChildNodes() && !node.isExpanded()){
+ node.expand(false, null, this.triggerCacheRefresh.createDelegate(this));
+ }
+ },
+
+
+ queueExpand : function(node){
+ this.expandProcId = this.expandNode.defer(this.expandDelay, this, [node]);
+ },
+
+
+ cancelExpand : function(){
+ if(this.expandProcId){
+ clearTimeout(this.expandProcId);
+ this.expandProcId = false;
+ }
+ },
+
+
+ isValidDropPoint : function(n, pt, dd, e, data){
+ if(!n || !data){ return false; }
+ var targetNode = n.node;
+ var dropNode = data.node;
+
+ if(!(targetNode && targetNode.isTarget && pt)){
+ return false;
+ }
+ if(pt == "append" && targetNode.allowChildren === false){
+ return false;
+ }
+ if((pt == "above" || pt == "below") && (targetNode.parentNode && targetNode.parentNode.allowChildren === false)){
+ return false;
+ }
+ if(dropNode && (targetNode == dropNode || dropNode.contains(targetNode))){
+ return false;
+ }
+
+ var overEvent = this.dragOverData;
+ overEvent.tree = this.tree;
+ overEvent.target = targetNode;
+ overEvent.data = data;
+ overEvent.point = pt;
+ overEvent.source = dd;
+ overEvent.rawEvent = e;
+ overEvent.dropNode = dropNode;
+ overEvent.cancel = false;
+ var result = this.tree.fireEvent("nodedragover", overEvent);
+ return overEvent.cancel === false && result !== false;
+ },
+
+
+ getDropPoint : function(e, n, dd){
+ var tn = n.node;
+ if(tn.isRoot){
+ return tn.allowChildren !== false ? "append" : false;
+ }
+ var dragEl = n.ddel;
+ var t = Ext.lib.Dom.getY(dragEl), b = t + dragEl.offsetHeight;
+ var y = Ext.lib.Event.getPageY(e);
+ var noAppend = tn.allowChildren === false || tn.isLeaf();
+ if(this.appendOnly || tn.parentNode.allowChildren === false){
+ return noAppend ? false : "append";
+ }
+ var noBelow = false;
+ if(!this.allowParentInsert){
+ noBelow = tn.hasChildNodes() && tn.isExpanded();
+ }
+ var q = (b - t) / (noAppend ? 2 : 3);
+ if(y >= t && y < (t + q)){
+ return "above";
+ }else if(!noBelow && (noAppend || y >= b-q && y <= b)){
+ return "below";
+ }else{
+ return "append";
+ }
+ },
+
+
+ onNodeEnter : function(n, dd, e, data){
+ this.cancelExpand();
+ },
+
+
+ onNodeOver : function(n, dd, e, data){
+ var pt = this.getDropPoint(e, n, dd);
+ var node = n.node;
+
+
+ if(!this.expandProcId && pt == "append" && node.hasChildNodes() && !n.node.isExpanded()){
+ this.queueExpand(node);
+ }else if(pt != "append"){
+ this.cancelExpand();
+ }
+
+
+ var returnCls = this.dropNotAllowed;
+ if(this.isValidDropPoint(n, pt, dd, e, data)){
+ if(pt){
+ var el = n.ddel;
+ var cls;
+ if(pt == "above"){
+ returnCls = n.node.isFirst() ? "x-tree-drop-ok-above" : "x-tree-drop-ok-between";
+ cls = "x-tree-drag-insert-above";
+ }else if(pt == "below"){
+ returnCls = n.node.isLast() ? "x-tree-drop-ok-below" : "x-tree-drop-ok-between";
+ cls = "x-tree-drag-insert-below";
+ }else{
+ returnCls = "x-tree-drop-ok-append";
+ cls = "x-tree-drag-append";
+ }
+ if(this.lastInsertClass != cls){
+ Ext.fly(el).replaceClass(this.lastInsertClass, cls);
+ this.lastInsertClass = cls;
+ }
+ }
+ }
+ return returnCls;
+ },
+
+
+ onNodeOut : function(n, dd, e, data){
+ this.cancelExpand();
+ this.removeDropIndicators(n);
+ },
+
+
+ onNodeDrop : function(n, dd, e, data){
+ var point = this.getDropPoint(e, n, dd);
+ var targetNode = n.node;
+ targetNode.ui.startDrop();
+ if(!this.isValidDropPoint(n, point, dd, e, data)){
+ targetNode.ui.endDrop();
+ return false;
+ }
+
+ var dropNode = data.node || (dd.getTreeNode ? dd.getTreeNode(data, targetNode, point, e) : null);
+ var dropEvent = {
+ tree : this.tree,
+ target: targetNode,
+ data: data,
+ point: point,
+ source: dd,
+ rawEvent: e,
+ dropNode: dropNode,
+ cancel: !dropNode
+ };
+ var retval = this.tree.fireEvent("beforenodedrop", dropEvent);
+ if(retval === false || dropEvent.cancel === true || !dropEvent.dropNode){
+ targetNode.ui.endDrop();
+ return false;
+ }
+
+ targetNode = dropEvent.target;
+ if(point == "append" && !targetNode.isExpanded()){
+ targetNode.expand(false, null, function(){
+ this.completeDrop(dropEvent);
+ }.createDelegate(this));
+ }else{
+ this.completeDrop(dropEvent);
+ }
+ return true;
+ },
+
+
+ completeDrop : function(de){
+ var ns = de.dropNode, p = de.point, t = de.target;
+ if(!(ns instanceof Array)){
+ ns = [ns];
+ }
+ var n;
+ for(var i = 0, len = ns.length; i < len; i++){
+ n = ns[i];
+ if(p == "above"){
+ t.parentNode.insertBefore(n, t);
+ }else if(p == "below"){
+ t.parentNode.insertBefore(n, t.nextSibling);
+ }else{
+ t.appendChild(n);
+ }
+ }
+ n.ui.focus();
+ if(this.tree.hlDrop){
+ n.ui.highlight();
+ }
+ t.ui.endDrop();
+ this.tree.fireEvent("nodedrop", de);
+ },
+
+
+ afterNodeMoved : function(dd, data, e, targetNode, dropNode){
+ if(this.tree.hlDrop){
+ dropNode.ui.focus();
+ dropNode.ui.highlight();
+ }
+ this.tree.fireEvent("nodedrop", this.tree, targetNode, data, dd, e);
+ },
+
+
+ getTree : function(){
+ return this.tree;
+ },
+
+
+ removeDropIndicators : function(n){
+ if(n && n.ddel){
+ var el = n.ddel;
+ Ext.fly(el).removeClass([
+ "x-tree-drag-insert-above",
+ "x-tree-drag-insert-below",
+ "x-tree-drag-append"]);
+ this.lastInsertClass = "_noclass";
+ }
+ },
+
+
+ beforeDragDrop : function(target, e, id){
+ this.cancelExpand();
+ return true;
+ },
+
+
+ afterRepair : function(data){
+ if(data && Ext.enableFx){
+ data.node.ui.highlight();
+ }
+ this.hideProxy();
+ }
+});
+
+}
+
+if(Ext.dd.DragZone){
+Ext.tree.TreeDragZone = function(tree, config){
+ Ext.tree.TreeDragZone.superclass.constructor.call(this, tree.getTreeEl(), config);
+
+ this.tree = tree;
+};
+
+Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, {
+
+ ddGroup : "TreeDD",
+
+
+ onBeforeDrag : function(data, e){
+ var n = data.node;
+ return n && n.draggable && !n.disabled;
+ },
+
+
+ onInitDrag : function(e){
+ var data = this.dragData;
+ this.tree.getSelectionModel().select(data.node);
+ this.proxy.update("");
+ data.node.ui.appendDDGhost(this.proxy.ghost.dom);
+ this.tree.fireEvent("startdrag", this.tree, data.node, e);
+ },
+
+
+ getRepairXY : function(e, data){
+ return data.node.ui.getDDRepairXY();
+ },
+
+
+ onEndDrag : function(data, e){
+ this.tree.fireEvent("enddrag", this.tree, data.node, e);
+ },
+
+
+ onValidDrop : function(dd, e, id){
+ this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, dd, e);
+ this.hideProxy();
+ },
+
+
+ beforeInvalidDrop : function(e, id){
+
+ var sm = this.tree.getSelectionModel();
+ sm.clearSelections();
+ sm.select(this.dragData.node);
+ }
+});
+}
+
+Ext.tree.TreeEditor = function(tree, config){
+ config = config || {};
+ var field = config.events ? config : new Ext.form.TextField(config);
+ Ext.tree.TreeEditor.superclass.constructor.call(this, field);
+
+ this.tree = tree;
+
+ if(!tree.rendered){
+ tree.on('render', this.initEditor, this);
+ }else{
+ this.initEditor(tree);
+ }
+};
+
+Ext.extend(Ext.tree.TreeEditor, Ext.Editor, {
+
+ alignment: "l-l",
+ autoSize: false,
+
+ hideEl : false,
+
+ cls: "x-small-editor x-tree-editor",
+
+ shim:false,
+ shadow:"frame",
+
+ maxWidth: 250,
+
+ editDelay : 350,
+
+ initEditor : function(tree){
+ tree.on('beforeclick', this.beforeNodeClick, this);
+ tree.getTreeEl().on('mousedown', this.hide, this);
+ this.on('complete', this.updateNode, this);
+ this.on('beforestartedit', this.fitToTree, this);
+ this.on('startedit', this.bindScroll, this, {delay:10});
+ this.on('specialkey', this.onSpecialKey, this);
+ },
+
+ fitToTree : function(ed, el){
+ var td = this.tree.getTreeEl().dom, nd = el.dom;
+ if(td.scrollLeft > nd.offsetLeft){ td.scrollLeft = nd.offsetLeft;
+ }
+ var w = Math.min(
+ this.maxWidth,
+ (td.clientWidth > 20 ? td.clientWidth : td.offsetWidth) - Math.max(0, nd.offsetLeft-td.scrollLeft) - 5);
+ this.setSize(w, '');
+ },
+
+ triggerEdit : function(node){
+ this.completeEdit();
+ this.editNode = node;
+ this.startEdit(node.ui.textNode, node.text);
+ },
+
+ bindScroll : function(){
+ this.tree.getTreeEl().on('scroll', this.cancelEdit, this);
+ },
+
+ beforeNodeClick : function(node, e){
+ var sinceLast = (this.lastClick ? this.lastClick.getElapsed() : 0);
+ this.lastClick = new Date();
+ if(sinceLast > this.editDelay && this.tree.getSelectionModel().isSelected(node)){
+ e.stopEvent();
+ this.triggerEdit(node);
+ return false;
+ }
+ },
+
+ updateNode : function(ed, value){
+ this.tree.getTreeEl().un('scroll', this.cancelEdit, this);
+ this.editNode.setText(value);
+ },
+
+ onHide : function(){
+ Ext.tree.TreeEditor.superclass.onHide.call(this);
+ if(this.editNode){
+ this.editNode.ui.focus();
+ }
+ },
+
+ onSpecialKey : function(field, e){
+ var k = e.getKey();
+ if(k == e.ESC){
+ e.stopEvent();
+ this.cancelEdit();
+ }else if(k == e.ENTER && !e.hasModifier()){
+ e.stopEvent();
+ this.completeEdit();
+ }
+ }
+});
+
+Ext.menu.Menu = function(config){
+ if(config instanceof Array){
+ config = {items:config};
+ }
+ Ext.apply(this, config);
+ this.id = this.id || Ext.id();
+ this.addEvents({
+
+ beforeshow : true,
+
+ beforehide : true,
+
+ show : true,
+
+ hide : true,
+
+ click : true,
+
+ mouseover : true,
+
+ mouseout : true,
+
+ itemclick: true
+ });
+ Ext.menu.MenuMgr.register(this);
+ var mis = this.items;
+ this.items = new Ext.util.MixedCollection();
+ if(mis){
+ this.add.apply(this, mis);
+ }
+};
+
+Ext.extend(Ext.menu.Menu, Ext.util.Observable, {
+
+
+
+ minWidth : 120,
+
+ shadow : "sides",
+
+ subMenuAlign : "tl-tr?",
+
+ defaultAlign : "tl-bl?",
+
+ allowOtherMenus : false,
+
+ hidden:true,
+
+ render : function(){
+ if(this.el){
+ return;
+ }
+ var el = this.el = new Ext.Layer({
+ cls: "x-menu",
+ shadow:this.shadow,
+ constrain: false,
+ parentEl: this.parentEl || document.body,
+ zindex:15000
+ });
+
+ this.keyNav = new Ext.menu.MenuNav(this);
+
+ if(this.plain){
+ el.addClass("x-menu-plain");
+ }
+ if(this.cls){
+ el.addClass(this.cls);
+ }
+ this.focusEl = el.createChild({
+ tag: "a", cls: "x-menu-focus", href: "#", onclick: "return false;", tabIndex:"-1"
+ });
+ var ul = el.createChild({tag: "ul", cls: "x-menu-list"});
+ ul.on("click", this.onClick, this);
+ ul.on("mouseover", this.onMouseOver, this);
+ ul.on("mouseout", this.onMouseOut, this);
+ this.items.each(function(item){
+ var li = document.createElement("li");
+ li.className = "x-menu-list-item";
+ ul.dom.appendChild(li);
+ item.render(li, this);
+ }, this);
+ this.ul = ul;
+ this.autoWidth();
+ },
+
+ autoWidth : function(){
+ var el = this.el, ul = this.ul;
+ if(!el){
+ return;
+ }
+ var w = this.width;
+ if(w){
+ el.setWidth(w);
+ }else if(Ext.isIE){
+ el.setWidth(this.minWidth);
+ var t = el.dom.offsetWidth; el.setWidth(ul.getWidth()+el.getFrameWidth("lr"));
+ }
+ },
+
+ delayAutoWidth : function(){
+ if(this.rendered){
+ if(!this.awTask){
+ this.awTask = new Ext.util.DelayedTask(this.autoWidth, this);
+ }
+ this.awTask.delay(20);
+ }
+ },
+
+ findTargetItem : function(e){
+ var t = e.getTarget(".x-menu-list-item", this.ul, true);
+ if(t && t.menuItemId){
+ return this.items.get(t.menuItemId);
+ }
+ },
+
+ onClick : function(e){
+ var t;
+ if(t = this.findTargetItem(e)){
+ t.onClick(e);
+ this.fireEvent("click", this, t, e);
+ }
+ },
+
+ setActiveItem : function(item, autoExpand){
+ if(item != this.activeItem){
+ if(this.activeItem){
+ this.activeItem.deactivate();
+ }
+ this.activeItem = item;
+ item.activate(autoExpand);
+ }else if(autoExpand){
+ item.expandMenu();
+ }
+ },
+
+ tryActivate : function(start, step){
+ var items = this.items;
+ for(var i = start, len = items.length; i >= 0 && i < len; i+= step){
+ var item = items.get(i);
+ if(!item.disabled && item.canActivate){
+ this.setActiveItem(item, false);
+ return item;
+ }
+ }
+ return false;
+ },
+
+ onMouseOver : function(e){
+ var t;
+ if(t = this.findTargetItem(e)){
+ if(t.canActivate && !t.disabled){
+ this.setActiveItem(t, true);
+ }
+ }
+ this.fireEvent("mouseover", this, e, t);
+ },
+
+ onMouseOut : function(e){
+ var t;
+ if(t = this.findTargetItem(e)){
+ if(t == this.activeItem && t.shouldDeactivate(e)){
+ this.activeItem.deactivate();
+ delete this.activeItem;
+ }
+ }
+ this.fireEvent("mouseout", this, e, t);
+ },
+
+
+ isVisible : function(){
+ return this.el && !this.hidden;
+ },
+
+
+ show : function(el, pos, parentMenu){
+ this.parentMenu = parentMenu;
+ if(!this.el){
+ this.render();
+ }
+ this.fireEvent("beforeshow", this);
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign), parentMenu, false);
+ },
+
+
+ showAt : function(xy, parentMenu, _e){
+ this.parentMenu = parentMenu;
+ if(!this.el){
+ this.render();
+ }
+ if(_e !== false){
+ this.fireEvent("beforeshow", this);
+ xy = this.el.adjustForConstraints(xy);
+ }
+ this.el.setXY(xy);
+ this.el.show();
+ this.hidden = false;
+ this.focus();
+ this.fireEvent("show", this);
+ },
+
+
+
+ focus : function(){
+ if(!this.hidden){
+ this.doFocus.defer(50, this);
+ }
+ },
+
+ doFocus : function(){
+ if(!this.hidden){
+ this.focusEl.focus();
+ }
+ },
+
+
+ hide : function(deep){
+ if(this.el && this.isVisible()){
+ this.fireEvent("beforehide", this);
+ if(this.activeItem){
+ this.activeItem.deactivate();
+ this.activeItem = null;
+ }
+ this.el.hide();
+ this.hidden = true;
+ this.fireEvent("hide", this);
+ }
+ if(deep === true && this.parentMenu){
+ this.parentMenu.hide(true);
+ }
+ },
+
+
+ add : function(){
+ var a = arguments, l = a.length, item;
+ for(var i = 0; i < l; i++){
+ var el = a[i];
+ if(el.render){ item = this.addItem(el);
+ }else if(typeof el == "string"){ if(el == "separator" || el == "-"){
+ item = this.addSeparator();
+ }else{
+ item = this.addText(el);
+ }
+ }else if(el.tagName || el.el){ item = this.addElement(el);
+ }else if(typeof el == "object"){ Ext.applyIf(el, this.defaults);
+ item = this.addMenuItem(el);
+ }
+ }
+ return item;
+ },
+
+
+ getEl : function(){
+ if(!this.el){
+ this.render();
+ }
+ return this.el;
+ },
+
+
+ addSeparator : function(){
+ return this.addItem(new Ext.menu.Separator());
+ },
+
+
+ addElement : function(el){
+ return this.addItem(new Ext.menu.BaseItem(el));
+ },
+
+
+ addItem : function(item){
+ this.items.add(item);
+ if(this.ul){
+ var li = document.createElement("li");
+ li.className = "x-menu-list-item";
+ this.ul.dom.appendChild(li);
+ item.render(li, this);
+ this.delayAutoWidth();
+ }
+ return item;
+ },
+
+
+ addMenuItem : function(config){
+ if(!(config instanceof Ext.menu.Item)){
+ if(typeof config.checked == "boolean"){ config = new Ext.menu.CheckItem(config);
+ }else{
+ config = new Ext.menu.Item(config);
+ }
+ }
+ return this.addItem(config);
+ },
+
+
+ addText : function(text){
+ return this.addItem(new Ext.menu.TextItem(text));
+ },
+
+
+ insert : function(index, item){
+ this.items.insert(index, item);
+ if(this.ul){
+ var li = document.createElement("li");
+ li.className = "x-menu-list-item";
+ this.ul.dom.insertBefore(li, this.ul.dom.childNodes[index]);
+ item.render(li, this);
+ this.delayAutoWidth();
+ }
+ return item;
+ },
+
+
+ remove : function(item){
+ this.items.removeKey(item.id);
+ item.destroy();
+ },
+
+
+ removeAll : function(){
+ var f;
+ while(f = this.items.first()){
+ this.remove(f);
+ }
+ }
+});
+
+Ext.menu.MenuNav = function(menu){
+ Ext.menu.MenuNav.superclass.constructor.call(this, menu.el);
+ this.scope = this.menu = menu;
+};
+
+Ext.extend(Ext.menu.MenuNav, Ext.KeyNav, {
+ doRelay : function(e, h){
+ var k = e.getKey();
+ if(!this.menu.activeItem && e.isNavKeyPress() && k != e.SPACE && k != e.RETURN){
+ this.menu.tryActivate(0, 1);
+ return false;
+ }
+ return h.call(this.scope || this, e, this.menu);
+ },
+
+ up : function(e, m){
+ if(!m.tryActivate(m.items.indexOf(m.activeItem)-1, -1)){
+ m.tryActivate(m.items.length-1, -1);
+ }
+ },
+
+ down : function(e, m){
+ if(!m.tryActivate(m.items.indexOf(m.activeItem)+1, 1)){
+ m.tryActivate(0, 1);
+ }
+ },
+
+ right : function(e, m){
+ if(m.activeItem){
+ m.activeItem.expandMenu(true);
+ }
+ },
+
+ left : function(e, m){
+ m.hide();
+ if(m.parentMenu && m.parentMenu.activeItem){
+ m.parentMenu.activeItem.activate();
+ }
+ },
+
+ enter : function(e, m){
+ if(m.activeItem){
+ e.stopPropagation();
+ m.activeItem.onClick(e);
+ m.fireEvent("click", this, m.activeItem);
+ return true;
+ }
+ }
+});
+
+Ext.menu.MenuMgr = function(){
+ var menus, active, groups = {}, attached = false, lastShow = new Date();
+
+ function init(){
+ menus = {};
+ active = new Ext.util.MixedCollection();
+ Ext.getDoc().addKeyListener(27, function(){
+ if(active.length > 0){
+ hideAll();
+ }
+ });
+ }
+
+ function hideAll(){
+ if(active && active.length > 0){
+ var c = active.clone();
+ c.each(function(m){
+ m.hide();
+ });
+ }
+ }
+
+ function onHide(m){
+ active.remove(m);
+ if(active.length < 1){
+ Ext.getDoc().un("mousedown", onMouseDown);
+ attached = false;
+ }
+ }
+
+ function onShow(m){
+ var last = active.last();
+ lastShow = new Date();
+ active.add(m);
+ if(!attached){
+ Ext.getDoc().on("mousedown", onMouseDown);
+ attached = true;
+ }
+ if(m.parentMenu){
+ m.getEl().setZIndex(parseInt(m.parentMenu.getEl().getStyle("z-index"), 10) + 3);
+ m.parentMenu.activeChild = m;
+ }else if(last && last.isVisible()){
+ m.getEl().setZIndex(parseInt(last.getEl().getStyle("z-index"), 10) + 3);
+ }
+ }
+
+ function onBeforeHide(m){
+ if(m.activeChild){
+ m.activeChild.hide();
+ }
+ if(m.autoHideTimer){
+ clearTimeout(m.autoHideTimer);
+ delete m.autoHideTimer;
+ }
+ }
+
+ function onBeforeShow(m){
+ var pm = m.parentMenu;
+ if(!pm && !m.allowOtherMenus){
+ hideAll();
+ }else if(pm && pm.activeChild){
+ pm.activeChild.hide();
+ }
+ }
+
+ function onMouseDown(e){
+ if(lastShow.getElapsed() > 50 && active.length > 0 && !e.getTarget(".x-menu")){
+ hideAll();
+ }
+ }
+
+ function onBeforeCheck(mi, state){
+ if(state){
+ var g = groups[mi.group];
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i] != mi){
+ g[i].setChecked(false);
+ }
+ }
+ }
+ }
+
+ return {
+
+
+ hideAll : function(){
+ hideAll();
+ },
+
+ register : function(menu){
+ if(!menus){
+ init();
+ }
+ menus[menu.id] = menu;
+ menu.on("beforehide", onBeforeHide);
+ menu.on("hide", onHide);
+ menu.on("beforeshow", onBeforeShow);
+ menu.on("show", onShow);
+ var g = menu.group;
+ if(g && menu.events["checkchange"]){
+ if(!groups[g]){
+ groups[g] = [];
+ }
+ groups[g].push(menu);
+ menu.on("checkchange", onCheck);
+ }
+ },
+
+
+ get : function(menu){
+ if(typeof menu == "string"){ return menus[menu];
+ }else if(menu.events){ return menu;
+ }else if(typeof menu.length == 'number'){ return new Ext.menu.Menu({items:menu});
+ }else{ return new Ext.menu.Menu(menu);
+ }
+ },
+
+ unregister : function(menu){
+ delete menus[menu.id];
+ menu.un("beforehide", onBeforeHide);
+ menu.un("hide", onHide);
+ menu.un("beforeshow", onBeforeShow);
+ menu.un("show", onShow);
+ var g = menu.group;
+ if(g && menu.events["checkchange"]){
+ groups[g].remove(menu);
+ menu.un("checkchange", onCheck);
+ }
+ },
+
+ registerCheckable : function(menuItem){
+ var g = menuItem.group;
+ if(g){
+ if(!groups[g]){
+ groups[g] = [];
+ }
+ groups[g].push(menuItem);
+ menuItem.on("beforecheckchange", onBeforeCheck);
+ }
+ },
+
+ unregisterCheckable : function(menuItem){
+ var g = menuItem.group;
+ if(g){
+ groups[g].remove(menuItem);
+ menuItem.un("beforecheckchange", onBeforeCheck);
+ }
+ },
+
+ getCheckedItem : function(groupId){
+ var g = groups[groupId];
+ if(g){
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i].checked){
+ return g[i];
+ }
+ }
+ }
+ return null;
+ },
+
+ setCheckedItem : function(groupId, itemId){
+ var g = groups[groupId];
+ if(g){
+ for(var i = 0, l = g.length; i < l; i++){
+ if(g[i].id == itemId){
+ g[i].setChecked(true);
+ }
+ }
+ }
+ return null;
+ }
+ };
+}();
+
+
+Ext.menu.BaseItem = function(config){
+ Ext.menu.BaseItem.superclass.constructor.call(this, config);
+
+ this.addEvents({
+
+ click: true,
+
+ activate : true,
+
+ deactivate : true
+ });
+
+ if(this.handler){
+ this.on("click", this.handler, this.scope);
+ }
+};
+
+Ext.extend(Ext.menu.BaseItem, Ext.Component, {
+
+
+ canActivate : false,
+
+ activeClass : "x-menu-item-active",
+
+ hideOnClick : true,
+
+ hideDelay : 100,
+
+ ctype: "Ext.menu.BaseItem",
+
+ actionMode : "container",
+
+ render : function(container, parentMenu){
+ this.parentMenu = parentMenu;
+ Ext.menu.BaseItem.superclass.render.call(this, container);
+ this.container.menuItemId = this.id;
+ },
+
+ onRender : function(container, position){
+ this.el = Ext.get(this.el);
+ container.dom.appendChild(this.el.dom);
+ },
+
+
+ setHandler : function(handler, scope){
+ if(this.handler){
+ this.un("click", this.handler, this.scope);
+ }
+ this.on("click", this.handler = handler, this.scope = scope);
+ },
+
+ onClick : function(e){
+ if(!this.disabled && this.fireEvent("click", this, e) !== false
+ && this.parentMenu.fireEvent("itemclick", this, e) !== false){
+ this.handleClick(e);
+ }else{
+ e.stopEvent();
+ }
+ },
+
+ activate : function(){
+ if(this.disabled){
+ return false;
+ }
+ var li = this.container;
+ li.addClass(this.activeClass);
+ this.region = li.getRegion().adjust(2, 2, -2, -2);
+ this.fireEvent("activate", this);
+ return true;
+ },
+
+ deactivate : function(){
+ this.container.removeClass(this.activeClass);
+ this.fireEvent("deactivate", this);
+ },
+
+ shouldDeactivate : function(e){
+ return !this.region || !this.region.contains(e.getPoint());
+ },
+
+ handleClick : function(e){
+ if(this.hideOnClick){
+ this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true]);
+ }
+ },
+
+ expandMenu : function(autoActivate){
+ },
+
+ hideMenu : function(){
+ }
+});
+
+Ext.menu.TextItem = function(text){
+ this.text = text;
+ Ext.menu.TextItem.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.menu.TextItem, Ext.menu.BaseItem, {
+
+
+ hideOnClick : false,
+
+ itemCls : "x-menu-text",
+
+ onRender : function(){
+ var s = document.createElement("span");
+ s.className = this.itemCls;
+ s.innerHTML = this.text;
+ this.el = s;
+ Ext.menu.TextItem.superclass.onRender.apply(this, arguments);
+ }
+});
+
+Ext.menu.Separator = function(config){
+ Ext.menu.Separator.superclass.constructor.call(this, config);
+};
+
+Ext.extend(Ext.menu.Separator, Ext.menu.BaseItem, {
+
+ itemCls : "x-menu-sep",
+
+ hideOnClick : false,
+
+ onRender : function(li){
+ var s = document.createElement("span");
+ s.className = this.itemCls;
+ s.innerHTML = " ";
+ this.el = s;
+ li.addClass("x-menu-sep-li");
+ Ext.menu.Separator.superclass.onRender.apply(this, arguments);
+ }
+});
+
+Ext.menu.Item = function(config){
+ Ext.menu.Item.superclass.constructor.call(this, config);
+ if(this.menu){
+ this.menu = Ext.menu.MenuMgr.get(this.menu);
+ }
+};
+Ext.extend(Ext.menu.Item, Ext.menu.BaseItem, {
+
+
+
+
+
+
+ itemCls : "x-menu-item",
+
+ canActivate : true,
+
+ showDelay: 200,
+ hideDelay: 200,
+
+ ctype: "Ext.menu.Item",
+
+ onRender : function(container, position){
+ var el = document.createElement("a");
+ el.hideFocus = true;
+ el.unselectable = "on";
+ el.href = this.href || "#";
+ if(this.hrefTarget){
+ el.target = this.hrefTarget;
+ }
+ el.className = this.itemCls + (this.menu ? " x-menu-item-arrow" : "") + (this.cls ? " " + this.cls : "");
+ el.innerHTML = String.format(
+ '<img src="{0}" class="x-menu-item-icon {2}" />{1}',
+ this.icon || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || '');
+ this.el = el;
+ Ext.menu.Item.superclass.onRender.call(this, container, position);
+ },
+
+
+ setText : function(text){
+ this.text = text;
+ if(this.rendered){
+ this.el.update(String.format(
+ '<img src="{0}" class="x-menu-item-icon {2}">{1}',
+ this.icon || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || ''));
+ this.parentMenu.autoWidth();
+ }
+ },
+
+
+ setIconClass : function(cls){
+ var oldCls = this.iconCls;
+ this.iconCls = cls;
+ if(this.rendered){
+ this.el.child('img.x-menu-item-icon').replaceClass(oldCls, this.iconCls);
+ }
+ },
+
+ handleClick : function(e){
+ if(!this.href){ e.stopEvent();
+ }
+ Ext.menu.Item.superclass.handleClick.apply(this, arguments);
+ },
+
+ activate : function(autoExpand){
+ if(Ext.menu.Item.superclass.activate.apply(this, arguments)){
+ this.focus();
+ if(autoExpand){
+ this.expandMenu();
+ }
+ }
+ return true;
+ },
+
+ shouldDeactivate : function(e){
+ if(Ext.menu.Item.superclass.shouldDeactivate.call(this, e)){
+ if(this.menu && this.menu.isVisible()){
+ return !this.menu.getEl().getRegion().contains(e.getPoint());
+ }
+ return true;
+ }
+ return false;
+ },
+
+ deactivate : function(){
+ Ext.menu.Item.superclass.deactivate.apply(this, arguments);
+ this.hideMenu();
+ },
+
+ expandMenu : function(autoActivate){
+ if(!this.disabled && this.menu){
+ clearTimeout(this.hideTimer);
+ delete this.hideTimer;
+ if(!this.menu.isVisible() && !this.showTimer){
+ this.showTimer = this.deferExpand.defer(this.showDelay, this, [autoActivate]);
+ }else if (this.menu.isVisible() && autoActivate){
+ this.menu.tryActivate(0, 1);
+ }
+ }
+ },
+
+ deferExpand : function(autoActivate){
+ delete this.showTimer;
+ this.menu.show(this.container, this.parentMenu.subMenuAlign || "tl-tr?", this.parentMenu);
+ if(autoActivate){
+ this.menu.tryActivate(0, 1);
+ }
+ },
+
+ hideMenu : function(){
+ clearTimeout(this.showTimer);
+ delete this.showTimer;
+ if(!this.hideTimer && this.menu && this.menu.isVisible()){
+ this.hideTimer = this.deferHide.defer(this.hideDelay, this);
+ }
+ },
+
+ deferHide : function(){
+ delete this.hideTimer;
+ this.menu.hide();
+ }
+});
+
+Ext.menu.CheckItem = function(config){
+ Ext.menu.CheckItem.superclass.constructor.call(this, config);
+ this.addEvents({
+
+ "beforecheckchange" : true,
+
+ "checkchange" : true
+ });
+
+ if(this.checkHandler){
+ this.on('checkchange', this.checkHandler, this.scope);
+ }
+ Ext.menu.MenuMgr.registerCheckable(this);
+};
+Ext.extend(Ext.menu.CheckItem, Ext.menu.Item, {
+
+
+ itemCls : "x-menu-item x-menu-check-item",
+
+ groupClass : "x-menu-group-item",
+
+
+ checked: false,
+
+ ctype: "Ext.menu.CheckItem",
+
+ onRender : function(c){
+ Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
+ if(this.group){
+ this.el.addClass(this.groupClass);
+ }
+ if(this.checked){
+ this.checked = false;
+ this.setChecked(true, true);
+ }
+ },
+
+ destroy : function(){
+ Ext.menu.MenuMgr.unregisterCheckable(this);
+ Ext.menu.CheckItem.superclass.destroy.apply(this, arguments);
+ },
+
+
+ setChecked : function(state, suppressEvent){
+ if(this.checked != state && this.fireEvent("beforecheckchange", this, state) !== false){
+ if(this.container){
+ this.container[state ? "addClass" : "removeClass"]("x-menu-item-checked");
+ }
+ this.checked = state;
+ if(suppressEvent !== true){
+ this.fireEvent("checkchange", this, state);
+ }
+ }
+ },
+
+ handleClick : function(e){
+ if(!this.disabled && !(this.checked && this.group)){ this.setChecked(!this.checked);
+ }
+ Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments);
+ }
+});
+
+Ext.menu.Adapter = function(component, config){
+ Ext.menu.Adapter.superclass.constructor.call(this, config);
+ this.component = component;
+};
+Ext.extend(Ext.menu.Adapter, Ext.menu.BaseItem, {
+ canActivate : true,
+
+ onRender : function(container, position){
+ this.component.render(container);
+ this.el = this.component.getEl();
+ },
+
+ activate : function(){
+ if(this.disabled){
+ return false;
+ }
+ this.component.focus();
+ this.fireEvent("activate", this);
+ return true;
+ },
+
+ deactivate : function(){
+ this.fireEvent("deactivate", this);
+ },
+
+ disable : function(){
+ this.component.disable();
+ Ext.menu.Adapter.superclass.disable.call(this);
+ },
+
+ enable : function(){
+ this.component.enable();
+ Ext.menu.Adapter.superclass.enable.call(this);
+ }
+});
+
+Ext.menu.DateItem = function(config){
+ Ext.menu.DateItem.superclass.constructor.call(this, new Ext.DatePicker(config), config);
+
+ this.picker = this.component;
+ this.addEvents({select: true});
+
+ this.picker.on("render", function(picker){
+ picker.getEl().swallowEvent("click");
+ picker.container.addClass("x-menu-date-item");
+ });
+
+ this.picker.on("select", this.onSelect, this);
+};
+
+Ext.extend(Ext.menu.DateItem, Ext.menu.Adapter, {
+ onSelect : function(picker, date){
+ this.fireEvent("select", this, date, picker);
+ Ext.menu.DateItem.superclass.handleClick.call(this);
+ }
+});
+
+Ext.menu.ColorItem = function(config){
+ Ext.menu.ColorItem.superclass.constructor.call(this, new Ext.ColorPalette(config), config);
+
+ this.palette = this.component;
+ this.relayEvents(this.palette, ["select"]);
+ if(this.selectHandler){
+ this.on('select', this.selectHandler, this.scope);
+ }
+};
+Ext.extend(Ext.menu.ColorItem, Ext.menu.Adapter);
+
+Ext.menu.DateMenu = function(config){
+ Ext.menu.DateMenu.superclass.constructor.call(this, config);
+ this.plain = true;
+ var di = new Ext.menu.DateItem(config);
+ this.add(di);
+
+ this.picker = di.picker;
+
+ this.relayEvents(di, ["select"]);
+
+ this.on('beforeshow', function(){
+ if(this.picker){
+ this.picker.hideMonthPicker(true);
+ }
+ }, this);
+};
+Ext.extend(Ext.menu.DateMenu, Ext.menu.Menu, {
+ cls:'x-date-menu'
+});
+
+Ext.menu.ColorMenu = function(config){
+ Ext.menu.ColorMenu.superclass.constructor.call(this, config);
+ this.plain = true;
+ var ci = new Ext.menu.ColorItem(config);
+ this.add(ci);
+
+ this.palette = ci.palette;
+
+ this.relayEvents(ci, ["select"]);
+};
+Ext.extend(Ext.menu.ColorMenu, Ext.menu.Menu);
+
+Ext.form.Field = Ext.extend(Ext.BoxComponent, {
+
+
+
+
+
+
+
+
+ invalidClass : "x-form-invalid",
+
+ invalidText : "The value in this field is invalid",
+
+ focusClass : "x-form-focus",
+
+ validationEvent : "keyup",
+
+ validateOnBlur : true,
+
+ validationDelay : 250,
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "20", autocomplete: "off"},
+
+ fieldClass : "x-form-field",
+
+ msgTarget : 'qtip',
+
+ msgFx : 'normal',
+
+
+ readOnly : false,
+
+
+ disabled : false,
+
+
+
+
+
+ isFormField : true,
+
+ hasFocus : false,
+
+
+
+
+
+
+ initComponent : function(){
+ Ext.form.Field.superclass.initComponent.call(this);
+ this.addEvents({
+
+ focus : true,
+
+ blur : true,
+
+ specialkey : true,
+
+ change : true,
+
+ invalid : true,
+
+ valid : true
+ });
+ },
+
+
+ getName: function(){
+ return this.rendered && this.el.dom.name ? this.el.dom.name : (this.hiddenName || '');
+ },
+
+ onRender : function(ct, position){
+ Ext.form.Field.superclass.onRender.call(this, ct, position);
+ if(!this.el){
+ var cfg = this.getAutoCreate();
+ if(!cfg.name){
+ cfg.name = this.name || this.id;
+ }
+ if(this.inputType){
+ cfg.type = this.inputType;
+ }
+ this.el = ct.createChild(cfg, position);
+ }
+ var type = this.el.dom.type;
+ if(type){
+ if(type == 'password'){
+ type = 'text';
+ }
+ this.el.addClass('x-form-'+type);
+ }
+ if(this.readOnly){
+ this.el.dom.readOnly = true;
+ }
+ if(this.tabIndex !== undefined){
+ this.el.dom.setAttribute('tabIndex', this.tabIndex);
+ }
+
+ this.el.addClass([this.fieldClass, this.cls]);
+ this.initValue();
+ },
+
+ initValue : function(){
+ if(this.value !== undefined){
+ this.setValue(this.value);
+ }else if(this.el.dom.value.length > 0){
+ this.setValue(this.el.dom.value);
+ }
+ },
+
+
+ isDirty : function() {
+ if(this.disabled) {
+ return false;
+ }
+ return String(this.getValue()) !== String(this.originalValue);
+ },
+
+ afterRender : function(){
+ Ext.form.Field.superclass.afterRender.call(this);
+ this.initEvents();
+ },
+
+ fireKey : function(e){
+ if(e.isSpecialKey()){
+ this.fireEvent("specialkey", this, e);
+ }
+ },
+
+
+ reset : function(){
+ this.setValue(this.originalValue);
+ this.clearInvalid();
+ },
+
+ initEvents : function(){
+ this.el.on(Ext.isIE ? "keydown" : "keypress", this.fireKey, this);
+ this.el.on("focus", this.onFocus, this);
+ this.el.on("blur", this.onBlur, this);
+
+ this.originalValue = this.getValue();
+ },
+
+ onFocus : function(){
+ if(!Ext.isOpera && this.focusClass){ this.el.addClass(this.focusClass);
+ }
+ if(!this.hasFocus){
+ this.hasFocus = true;
+ this.startValue = this.getValue();
+ this.fireEvent("focus", this);
+ }
+ },
+
+ beforeBlur : Ext.emptyFn,
+
+ onBlur : function(){
+ this.beforeBlur();
+ if(!Ext.isOpera && this.focusClass){ this.el.removeClass(this.focusClass);
+ }
+ this.hasFocus = false;
+ if(this.validationEvent !== false && this.validateOnBlur && this.validationEvent != "blur"){
+ this.validate();
+ }
+ var v = this.getValue();
+ if(String(v) !== String(this.startValue)){
+ this.fireEvent('change', this, v, this.startValue);
+ }
+ this.fireEvent("blur", this);
+ },
+
+
+ isValid : function(preventMark){
+ if(this.disabled){
+ return true;
+ }
+ var restore = this.preventMark;
+ this.preventMark = preventMark === true;
+ var v = this.validateValue(this.processValue(this.getRawValue()));
+ this.preventMark = restore;
+ return v;
+ },
+
+
+ validate : function(){
+ if(this.disabled || this.validateValue(this.processValue(this.getRawValue()))){
+ this.clearInvalid();
+ return true;
+ }
+ return false;
+ },
+
+ processValue : function(value){
+ return value;
+ },
+
+ validateValue : function(value){
+ return true;
+ },
+
+
+ markInvalid : function(msg){
+ if(!this.rendered || this.preventMark){ return;
+ }
+ this.el.addClass(this.invalidClass);
+ msg = msg || this.invalidText;
+ switch(this.msgTarget){
+ case 'qtip':
+ this.el.dom.qtip = msg;
+ this.el.dom.qclass = 'x-form-invalid-tip';
+ if(Ext.QuickTips){ Ext.QuickTips.enable();
+ }
+ break;
+ case 'title':
+ this.el.dom.title = msg;
+ break;
+ case 'under':
+ if(!this.errorEl){
+ var elp = this.el.findParent('.x-form-element', 5, true);
+ this.errorEl = elp.createChild({cls:'x-form-invalid-msg'});
+ this.errorEl.setWidth(elp.getWidth(true)-20);
+ }
+ this.errorEl.update(msg);
+ Ext.form.Field.msgFx[this.msgFx].show(this.errorEl, this);
+ break;
+ case 'side':
+ if(!this.errorIcon){
+ var elp = this.el.findParent('.x-form-element', 5, true);
+ this.errorIcon = elp.createChild({cls:'x-form-invalid-icon'});
+ }
+ this.alignErrorIcon();
+ this.errorIcon.dom.qtip = msg;
+ this.errorIcon.dom.qclass = 'x-form-invalid-tip';
+ this.errorIcon.show();
+ this.on('resize', this.alignErrorIcon, this);
+ break;
+ default:
+ var t = Ext.getDom(this.msgTarget);
+ t.innerHTML = msg;
+ t.style.display = this.msgDisplay;
+ break;
+ }
+ this.fireEvent('invalid', this, msg);
+ },
+
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.el, 'tl-tr', [2, 0]);
+ },
+
+
+ clearInvalid : function(){
+ if(!this.rendered || this.preventMark){ return;
+ }
+ this.el.removeClass(this.invalidClass);
+ switch(this.msgTarget){
+ case 'qtip':
+ this.el.dom.qtip = '';
+ break;
+ case 'title':
+ this.el.dom.title = '';
+ break;
+ case 'under':
+ if(this.errorEl){
+ Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl, this);
+ }
+ break;
+ case 'side':
+ if(this.errorIcon){
+ this.errorIcon.dom.qtip = '';
+ this.errorIcon.hide();
+ this.un('resize', this.alignErrorIcon, this);
+ }
+ break;
+ default:
+ var t = Ext.getDom(this.msgTarget);
+ t.innerHTML = '';
+ t.style.display = 'none';
+ break;
+ }
+ this.fireEvent('valid', this);
+ },
+
+
+ getRawValue : function(){
+ var v = this.rendered ? this.el.getValue() : Ext.value(this.value, '');
+ if(v === this.emptyText){
+ v = '';
+ }
+ return v;
+ },
+
+
+ getValue : function(){
+ if(!this.rendered) {
+ return this.value;
+ }
+ var v = this.el.getValue();
+ if(v === this.emptyText || v === undefined){
+ v = '';
+ }
+ return v;
+ },
+
+
+ setRawValue : function(v){
+ return this.el.dom.value = (v === null || v === undefined ? '' : v);
+ },
+
+
+ setValue : function(v){
+ this.value = v;
+ if(this.rendered){
+ this.el.dom.value = (v === null || v === undefined ? '' : v);
+ this.validate();
+ }
+ },
+
+ adjustSize : function(w, h){
+ var s = Ext.form.Field.superclass.adjustSize.call(this, w, h);
+ s.width = this.adjustWidth(this.el.dom.tagName, s.width);
+ return s;
+ },
+
+ adjustWidth : function(tag, w){
+ tag = tag.toLowerCase();
+ if(typeof w == 'number' && !Ext.isSafari){
+ if(Ext.isIE && (tag == 'input' || tag == 'textarea')){
+ if(tag == 'input' && !Ext.isStrict){
+ return w - 3;
+ }
+ if(tag == 'input' && Ext.isStrict){
+ return w - (Ext.isIE6 ? 4 : 1);
+ }
+ if(tag = 'textarea' && Ext.isStrict){
+ return w-2;
+ }
+ }else if(Ext.isOpera && Ext.isStrict){
+ if(tag == 'input'){
+ return w + 2;
+ }
+ if(tag = 'textarea'){
+ return w-2;
+ }
+ }
+ }
+ return w;
+ }
+});
+
+
+Ext.form.Field.msgFx = {
+ normal : {
+ show: function(msgEl, f){
+ msgEl.setDisplayed('block');
+ },
+
+ hide : function(msgEl, f){
+ msgEl.setDisplayed(false).update('');
+ }
+ },
+
+ slide : {
+ show: function(msgEl, f){
+ msgEl.slideIn('t', {stopFx:true});
+ },
+
+ hide : function(msgEl, f){
+ msgEl.slideOut('t', {stopFx:true,useDisplay:true});
+ }
+ },
+
+ slideRight : {
+ show: function(msgEl, f){
+ msgEl.fixDisplay();
+ msgEl.alignTo(f.el, 'tl-tr');
+ msgEl.slideIn('l', {stopFx:true});
+ },
+
+ hide : function(msgEl, f){
+ msgEl.slideOut('l', {stopFx:true,useDisplay:true});
+ }
+ }
+};
+Ext.reg('field', Ext.form.Field);
+
+
+Ext.form.TextField = Ext.extend(Ext.form.Field, {
+
+
+ grow : false,
+
+ growMin : 30,
+
+ growMax : 800,
+
+ vtype : null,
+
+ maskRe : null,
+
+ disableKeyFilter : false,
+
+ allowBlank : true,
+
+ minLength : 0,
+
+ maxLength : Number.MAX_VALUE,
+
+ minLengthText : "The minimum length for this field is {0}",
+
+ maxLengthText : "The maximum length for this field is {0}",
+
+ selectOnFocus : false,
+
+ blankText : "This field is required",
+
+ validator : null,
+
+ regex : null,
+
+ regexText : "",
+
+ emptyText : null,
+
+ emptyClass : 'x-form-empty-field',
+
+ initComponent : function(){
+ Ext.form.TextField.superclass.initComponent.call(this);
+ this.addEvents({
+
+ autosize : true
+ });
+ },
+
+ initEvents : function(){
+ Ext.form.TextField.superclass.initEvents.call(this);
+ if(this.validationEvent == 'keyup'){
+ this.validationTask = new Ext.util.DelayedTask(this.validate, this);
+ this.el.on('keyup', this.filterValidation, this);
+ }
+ else if(this.validationEvent !== false){
+ this.el.on(this.validationEvent, this.validate, this, {buffer: this.validationDelay});
+ }
+ if(this.selectOnFocus || this.emptyText){
+ this.on("focus", this.preFocus, this);
+ if(this.emptyText){
+ this.on('blur', this.postBlur, this);
+ this.applyEmptyText();
+ }
+ }
+ if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype+'Mask']))){
+ this.el.on("keypress", this.filterKeys, this);
+ }
+ if(this.grow){
+ this.el.on("keyup", this.onKeyUp, this, {buffer:50});
+ this.el.on("click", this.autoSize, this);
+ }
+ },
+
+ processValue : function(value){
+ if(this.stripCharsRe){
+ var newValue = value.replace(this.stripCharsRe, '');
+ if(newValue !== value){
+ this.setRawValue(newValue);
+ return newValue;
+ }
+ }
+ return value;
+ },
+
+ filterValidation : function(e){
+ if(!e.isNavKeyPress()){
+ this.validationTask.delay(this.validationDelay);
+ }
+ },
+
+ onKeyUp : function(e){
+ if(!e.isNavKeyPress()){
+ this.autoSize();
+ }
+ },
+
+
+ reset : function(){
+ Ext.form.TextField.superclass.reset.call(this);
+ this.applyEmptyText();
+ },
+
+ applyEmptyText : function(){
+ if(this.rendered && this.emptyText && this.getRawValue().length < 1){
+ this.setRawValue(this.emptyText);
+ this.el.addClass(this.emptyClass);
+ }
+ },
+
+ preFocus : function(){
+ if(this.emptyText){
+ if(this.el.dom.value == this.emptyText){
+ this.setRawValue('');
+ }
+ this.el.removeClass(this.emptyClass);
+ }
+ if(this.selectOnFocus){
+ this.el.dom.select();
+ }
+ },
+
+ postBlur : function(){
+ this.applyEmptyText();
+ },
+
+ filterKeys : function(e){
+ var k = e.getKey();
+ if(!Ext.isIE && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){
+ return;
+ }
+ var c = e.getCharCode(), cc = String.fromCharCode(c);
+ if(Ext.isIE && (e.isSpecialKey() || !cc)){
+ return;
+ }
+ if(!this.maskRe.test(cc)){
+ e.stopEvent();
+ }
+ },
+
+ setValue : function(v){
+ if(this.emptyText && this.el && v !== undefined && v !== null && v !== ''){
+ this.el.removeClass(this.emptyClass);
+ }
+ Ext.form.TextField.superclass.setValue.apply(this, arguments);
+ this.applyEmptyText();
+ this.autoSize();
+ },
+
+
+ validateValue : function(value){
+ if(value.length < 1 || value === this.emptyText){ if(this.allowBlank){
+ this.clearInvalid();
+ return true;
+ }else{
+ this.markInvalid(this.blankText);
+ return false;
+ }
+ }
+ if(value.length < this.minLength){
+ this.markInvalid(String.format(this.minLengthText, this.minLength));
+ return false;
+ }
+ if(value.length > this.maxLength){
+ this.markInvalid(String.format(this.maxLengthText, this.maxLength));
+ return false;
+ }
+ if(this.vtype){
+ var vt = Ext.form.VTypes;
+ if(!vt[this.vtype](value, this)){
+ this.markInvalid(this.vtypeText || vt[this.vtype +'Text']);
+ return false;
+ }
+ }
+ if(typeof this.validator == "function"){
+ var msg = this.validator(value);
+ if(msg !== true){
+ this.markInvalid(msg);
+ return false;
+ }
+ }
+ if(this.regex && !this.regex.test(value)){
+ this.markInvalid(this.regexText);
+ return false;
+ }
+ return true;
+ },
+
+
+ selectText : function(start, end){
+ var v = this.getRawValue();
+ if(v.length > 0){
+ start = start === undefined ? 0 : start;
+ end = end === undefined ? v.length : end;
+ var d = this.el.dom;
+ if(d.setSelectionRange){
+ d.setSelectionRange(start, end);
+ }else if(d.createTextRange){
+ var range = d.createTextRange();
+ range.moveStart("character", start);
+ range.moveEnd("character", v.length-end);
+ range.select();
+ }
+ }
+ },
+
+
+ autoSize : function(){
+ if(!this.grow || !this.rendered){
+ return;
+ }
+ if(!this.metrics){
+ this.metrics = Ext.util.TextMetrics.createInstance(this.el);
+ }
+ var el = this.el;
+ var v = el.dom.value;
+ var d = document.createElement('div');
+ d.appendChild(document.createTextNode(v));
+ v = d.innerHTML;
+ d = null;
+ v += " ";
+ var w = Math.min(this.growMax, Math.max(this.metrics.getWidth(v) + 10, this.growMin));
+ this.el.setWidth(w);
+ this.fireEvent("autosize", this, w);
+ }
+});
+Ext.reg('textfield', Ext.form.TextField);
+
+Ext.form.TriggerField = Ext.extend(Ext.form.TextField, {
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "16", autocomplete: "off"},
+
+ hideTrigger:false,
+
+
+ autoSize: Ext.emptyFn,
+ monitorTab : true,
+ deferHeight : true,
+ mimicing : false,
+
+ onResize : function(w, h){
+ Ext.form.TriggerField.superclass.onResize.call(this, w, h);
+ if(typeof w == 'number'){
+ this.el.setWidth(this.adjustWidth('input', w - this.trigger.getWidth()));
+ }
+ this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());
+ },
+
+ adjustSize : Ext.BoxComponent.prototype.adjustSize,
+
+ getResizeEl : function(){
+ return this.wrap;
+ },
+
+ getPositionEl : function(){
+ return this.wrap;
+ },
+
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ },
+
+ onRender : function(ct, position){
+ Ext.form.TriggerField.superclass.onRender.call(this, ct, position);
+ this.wrap = this.el.wrap({cls: "x-form-field-wrap"});
+ this.trigger = this.wrap.createChild(this.triggerConfig ||
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.triggerClass});
+ if(this.hideTrigger){
+ this.trigger.setDisplayed(false);
+ }
+ this.initTrigger();
+ if(!this.width){
+ this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());
+ }
+ },
+
+ initTrigger : function(){
+ this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true});
+ this.trigger.addClassOnOver('x-form-trigger-over');
+ this.trigger.addClassOnClick('x-form-trigger-click');
+ },
+
+ onDestroy : function(){
+ if(this.trigger){
+ this.trigger.removeAllListeners();
+ this.trigger.remove();
+ }
+ if(this.wrap){
+ this.wrap.remove();
+ }
+ Ext.form.TriggerField.superclass.onDestroy.call(this);
+ },
+
+ onFocus : function(){
+ Ext.form.TriggerField.superclass.onFocus.call(this);
+ if(!this.mimicing){
+ this.wrap.addClass('x-trigger-wrap-focus');
+ this.mimicing = true;
+ Ext.get(Ext.isIE ? document.body : document).on("mousedown", this.mimicBlur, this, {delay: 10});
+ if(this.monitorTab){
+ this.el.on("keydown", this.checkTab, this);
+ }
+ }
+ },
+
+ checkTab : function(e){
+ if(e.getKey() == e.TAB){
+ this.triggerBlur();
+ }
+ },
+
+ onBlur : function(){
+ },
+
+ mimicBlur : function(e){
+ if(!this.wrap.contains(e.target) && this.validateBlur(e)){
+ this.triggerBlur();
+ }
+ },
+
+ triggerBlur : function(){
+ this.mimicing = false;
+ Ext.get(Ext.isIE ? document.body : document).un("mousedown", this.mimicBlur);
+ if(this.monitorTab){
+ this.el.un("keydown", this.checkTab, this);
+ }
+ this.beforeBlur();
+ this.wrap.removeClass('x-trigger-wrap-focus');
+ Ext.form.TriggerField.superclass.onBlur.call(this);
+ },
+
+ beforeBlur : Ext.emptyFn,
+
+ validateBlur : function(e){
+ return true;
+ },
+
+ onDisable : function(){
+ Ext.form.TriggerField.superclass.onDisable.call(this);
+ if(this.wrap){
+ this.wrap.addClass('x-item-disabled');
+ }
+ },
+
+ onEnable : function(){
+ Ext.form.TriggerField.superclass.onEnable.call(this);
+ if(this.wrap){
+ this.wrap.removeClass('x-item-disabled');
+ }
+ },
+
+
+ onShow : function(){
+ if(this.wrap){
+ this.wrap.dom.style.display = '';
+ this.wrap.dom.style.visibility = 'visible';
+ }
+ },
+
+ onHide : function(){
+ this.wrap.dom.style.display = 'none';
+ },
+
+
+ onTriggerClick : Ext.emptyFn
+
+
+
+
+});
+
+Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, {
+ initComponent : function(){
+ Ext.form.TwinTriggerField.superclass.initComponent.call(this);
+
+ this.triggerConfig = {
+ tag:'span', cls:'x-form-twin-triggers', cn:[
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger1Class},
+ {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger2Class}
+ ]};
+ },
+
+ getTrigger : function(index){
+ return this.triggers[index];
+ },
+
+ initTrigger : function(){
+ var ts = this.trigger.select('.x-form-trigger', true);
+ this.wrap.setStyle('overflow', 'hidden');
+ var triggerField = this;
+ ts.each(function(t, all, index){
+ t.hide = function(){
+ var w = triggerField.wrap.getWidth();
+ this.dom.style.display = 'none';
+ triggerField.el.setWidth(w-triggerField.trigger.getWidth());
+ };
+ t.show = function(){
+ var w = triggerField.wrap.getWidth();
+ this.dom.style.display = '';
+ triggerField.el.setWidth(w-triggerField.trigger.getWidth());
+ };
+ var triggerIndex = 'Trigger'+(index+1);
+
+ if(this['hide'+triggerIndex]){
+ t.dom.style.display = 'none';
+ }
+ t.on("click", this['on'+triggerIndex+'Click'], this, {preventDefault:true});
+ t.addClassOnOver('x-form-trigger-over');
+ t.addClassOnClick('x-form-trigger-click');
+ }, this);
+ this.triggers = ts.elements;
+ },
+
+ onTrigger1Click : Ext.emptyFn,
+ onTrigger2Click : Ext.emptyFn
+});
+Ext.reg('trigger', Ext.form.TriggerField);
+
+Ext.form.TextArea = Ext.extend(Ext.form.TextField, {
+
+ growMin : 60,
+
+ growMax: 1000,
+ growAppend : ' \n ',
+ growPad : 0,
+
+ enterIsSpecial : false,
+
+
+ preventScrollbars: false,
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ this.defaultAutoCreate = {
+ tag: "textarea",
+ style:"width:100px;height:60px;",
+ autocomplete: "off"
+ };
+ }
+ Ext.form.TextArea.superclass.onRender.call(this, ct, position);
+ if(this.grow){
+ this.textSizeEl = Ext.DomHelper.append(document.body, {
+ tag: "pre", cls: "x-form-grow-sizer"
+ });
+ if(this.preventScrollbars){
+ this.el.setStyle("overflow", "hidden");
+ }
+ this.el.setHeight(this.growMin);
+ }
+ },
+
+ onDestroy : function(){
+ if(this.textSizeEl){
+ Ext.removeNode(this.textSizeEl);
+ }
+ Ext.form.TextArea.superclass.onDestroy.call(this);
+ },
+
+ fireKey : function(e){
+ if(e.isSpecialKey() && (this.enterIsSpecial || (e.getKey() != e.ENTER || e.hasModifier()))){
+ this.fireEvent("specialkey", this, e);
+ }
+ },
+
+ onKeyUp : function(e){
+ if(!e.isNavKeyPress() || e.getKey() == e.ENTER){
+ this.autoSize();
+ }
+ },
+
+
+ autoSize : function(){
+ if(!this.grow || !this.textSizeEl){
+ return;
+ }
+ var el = this.el;
+ var v = el.dom.value;
+ var ts = this.textSizeEl;
+ ts.innerHTML = '';
+ ts.appendChild(document.createTextNode(v));
+ v = ts.innerHTML;
+
+ Ext.fly(ts).setWidth(this.el.getWidth());
+ if(v.length < 1){
+ v = "  ";
+ }else{
+ if(Ext.isIE){
+ v = v.replace(/\n/g, '<p> </p>');
+ }
+ v += this.growAppend;
+ }
+ ts.innerHTML = v;
+ var h = Math.min(this.growMax, Math.max(ts.offsetHeight, this.growMin)+this.growPad);
+ if(h != this.lastHeight){
+ this.lastHeight = h;
+ this.el.setHeight(h);
+ this.fireEvent("autosize", this, h);
+ }
+ }
+});
+Ext.reg('textarea', Ext.form.TextArea);
+
+Ext.form.NumberField = Ext.extend(Ext.form.TextField, {
+
+ fieldClass: "x-form-field x-form-num-field",
+
+ allowDecimals : true,
+
+ decimalSeparator : ".",
+
+ decimalPrecision : 2,
+
+ allowNegative : true,
+
+ minValue : Number.NEGATIVE_INFINITY,
+
+ maxValue : Number.MAX_VALUE,
+
+ minText : "The minimum value for this field is {0}",
+
+ maxText : "The maximum value for this field is {0}",
+
+ nanText : "{0} is not a valid number",
+
+ baseChars : "0123456789",
+
+ initEvents : function(){
+ Ext.form.NumberField.superclass.initEvents.call(this);
+ var allowed = this.baseChars+'';
+ if(this.allowDecimals){
+ allowed += this.decimalSeparator;
+ }
+ if(this.allowNegative){
+ allowed += "-";
+ }
+ this.stripCharsRe = new RegExp('[^'+allowed+']', 'gi');
+ var keyPress = function(e){
+ var k = e.getKey();
+ if(!Ext.isIE && (e.isSpecialKey() || k == e.BACKSPACE || k == e.DELETE)){
+ return;
+ }
+ var c = e.getCharCode();
+ if(allowed.indexOf(String.fromCharCode(c)) === -1){
+ e.stopEvent();
+ }
+ };
+ this.el.on("keypress", keyPress, this);
+ },
+
+ validateValue : function(value){
+ if(!Ext.form.NumberField.superclass.validateValue.call(this, value)){
+ return false;
+ }
+ if(value.length < 1){ return true;
+ }
+ value = String(value).replace(this.decimalSeparator, ".");
+ if(isNaN(value)){
+ this.markInvalid(String.format(this.nanText, value));
+ return false;
+ }
+ var num = this.parseValue(value);
+ if(num < this.minValue){
+ this.markInvalid(String.format(this.minText, this.minValue));
+ return false;
+ }
+ if(num > this.maxValue){
+ this.markInvalid(String.format(this.maxText, this.maxValue));
+ return false;
+ }
+ return true;
+ },
+
+ getValue : function(){
+ return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)));
+ },
+
+ setValue : function(v){
+ Ext.form.NumberField.superclass.setValue.call(this, String(v).replace(".", this.decimalSeparator));
+ },
+
+ parseValue : function(value){
+ value = parseFloat(String(value).replace(this.decimalSeparator, "."));
+ return isNaN(value) ? '' : value;
+ },
+
+ fixPrecision : function(value){
+ var nan = isNaN(value);
+ if(!this.allowDecimals || this.decimalPrecision == -1 || nan || !value){
+ return nan ? '' : value;
+ }
+ return parseFloat(parseFloat(value).toFixed(this.decimalPrecision));
+ },
+
+ beforeBlur : function(){
+ var v = this.parseValue(this.getRawValue());
+ if(v){
+ this.setValue(this.fixPrecision(v));
+ }
+ }
+});
+Ext.reg('numberfield', Ext.form.NumberField);
+
+Ext.form.DateField = Ext.extend(Ext.form.TriggerField, {
+
+ format : "m/d/y",
+
+ altFormats : "m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d",
+
+ disabledDays : null,
+
+ disabledDaysText : "Disabled",
+
+ disabledDates : null,
+
+ disabledDatesText : "Disabled",
+
+ minValue : null,
+
+ maxValue : null,
+
+ minText : "The date in this field must be equal to or after {0}",
+
+ maxText : "The date in this field must be equal to or before {0}",
+
+ invalidText : "{0} is not a valid date - it must be in the format {1}",
+
+ triggerClass : 'x-form-date-trigger',
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "10", autocomplete: "off"},
+
+ initComponent : function(){
+ Ext.form.DateField.superclass.initComponent.call(this);
+ if(typeof this.minValue == "string"){
+ this.minValue = this.parseDate(this.minValue);
+ }
+ if(typeof this.maxValue == "string"){
+ this.maxValue = this.parseDate(this.maxValue);
+ }
+ this.ddMatch = null;
+ if(this.disabledDates){
+ var dd = this.disabledDates;
+ var re = "(?:";
+ for(var i = 0; i < dd.length; i++){
+ re += dd[i];
+ if(i != dd.length-1) re += "|";
+ }
+ this.ddMatch = new RegExp(re + ")");
+ }
+ },
+
+ validateValue : function(value){
+ value = this.formatDate(value);
+ if(!Ext.form.DateField.superclass.validateValue.call(this, value)){
+ return false;
+ }
+ if(value.length < 1){ return true;
+ }
+ var svalue = value;
+ value = this.parseDate(value);
+ if(!value){
+ this.markInvalid(String.format(this.invalidText, svalue, this.format));
+ return false;
+ }
+ var time = value.getTime();
+ if(this.minValue && time < this.minValue.getTime()){
+ this.markInvalid(String.format(this.minText, this.formatDate(this.minValue)));
+ return false;
+ }
+ if(this.maxValue && time > this.maxValue.getTime()){
+ this.markInvalid(String.format(this.maxText, this.formatDate(this.maxValue)));
+ return false;
+ }
+ if(this.disabledDays){
+ var day = value.getDay();
+ for(var i = 0; i < this.disabledDays.length; i++) {
+ if(day === this.disabledDays[i]){
+ this.markInvalid(this.disabledDaysText);
+ return false;
+ }
+ }
+ }
+ var fvalue = this.formatDate(value);
+ if(this.ddMatch && this.ddMatch.test(fvalue)){
+ this.markInvalid(String.format(this.disabledDatesText, fvalue));
+ return false;
+ }
+ return true;
+ },
+
+ validateBlur : function(){
+ return !this.menu || !this.menu.isVisible();
+ },
+
+
+ getValue : function(){
+ return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || "";
+ },
+
+
+ setValue : function(date){
+ Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(date)));
+ },
+
+ parseDate : function(value){
+ if(!value || value instanceof Date){
+ return value;
+ }
+ var v = Date.parseDate(value, this.format);
+ if(!v && this.altFormats){
+ if(!this.altFormatsArray){
+ this.altFormatsArray = this.altFormats.split("|");
+ }
+ for(var i = 0, len = this.altFormatsArray.length; i < len && !v; i++){
+ v = Date.parseDate(value, this.altFormatsArray[i]);
+ }
+ }
+ return v;
+ },
+
+ formatDate : function(date){
+ return (!date || !(date instanceof Date)) ?
+ date : date.dateFormat(this.format);
+ },
+
+ menuListeners : {
+ select: function(m, d){
+ this.setValue(d);
+ },
+ show : function(){ this.onFocus();
+ },
+ hide : function(){
+ this.focus.defer(10, this);
+ var ml = this.menuListeners;
+ this.menu.un("select", ml.select, this);
+ this.menu.un("show", ml.show, this);
+ this.menu.un("hide", ml.hide, this);
+ }
+ },
+
+ onTriggerClick : function(){
+ if(this.disabled){
+ return;
+ }
+ if(this.menu == null){
+ this.menu = new Ext.menu.DateMenu();
+ }
+ Ext.apply(this.menu.picker, {
+ minDate : this.minValue,
+ maxDate : this.maxValue,
+ disabledDatesRE : this.ddMatch,
+ disabledDatesText : this.disabledDatesText,
+ disabledDays : this.disabledDays,
+ disabledDaysText : this.disabledDaysText,
+ format : this.format,
+ minText : String.format(this.minText, this.formatDate(this.minValue)),
+ maxText : String.format(this.maxText, this.formatDate(this.maxValue))
+ });
+ this.menu.on(Ext.apply({}, this.menuListeners, {
+ scope:this
+ }));
+ this.menu.picker.setValue(this.getValue() || new Date());
+ this.menu.show(this.el, "tl-bl?");
+ },
+
+ beforeBlur : function(){
+ var v = this.parseDate(this.getRawValue());
+ if(v){
+ this.setValue(v);
+ }
+ }
+
+
+
+
+
+});
+Ext.reg('datefield', Ext.form.DateField);
+
+Ext.form.ComboBox = Ext.extend(Ext.form.TriggerField, {
+
+
+
+
+
+
+ defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"},
+
+
+
+
+
+ listClass: '',
+
+ selectedClass: 'x-combo-selected',
+
+ triggerClass : 'x-form-arrow-trigger',
+
+ shadow:'sides',
+
+ listAlign: 'tl-bl?',
+
+ maxHeight: 300,
+
+ triggerAction: 'query',
+
+ minChars : 4,
+
+ typeAhead: false,
+
+ queryDelay: 500,
+
+ pageSize: 0,
+
+ selectOnFocus:false,
+
+ queryParam: 'query',
+
+ loadingText: 'Loading...',
+
+ resizable: false,
+
+ handleHeight : 8,
+
+ editable: true,
+
+ allQuery: '',
+
+ mode: 'remote',
+
+ minListWidth : 70,
+
+ forceSelection:false,
+
+ typeAheadDelay : 250,
+
+
+
+ lazyInit : true,
+
+ initComponent : function(){
+ Ext.form.ComboBox.superclass.initComponent.call(this);
+ this.addEvents({
+
+ 'expand' : true,
+
+ 'collapse' : true,
+
+ 'beforeselect' : true,
+
+ 'select' : true,
+
+ 'beforequery': true
+ });
+ if(this.transform){
+ this.allowDomMove = false;
+ var s = Ext.getDom(this.transform);
+ if(!this.hiddenName){
+ this.hiddenName = s.name;
+ }
+ if(!this.store){
+ this.mode = 'local';
+ var d = [], opts = s.options;
+ for(var i = 0, len = opts.length;i < len; i++){
+ var o = opts[i];
+ var value = (Ext.isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text;
+ if(o.selected) {
+ this.value = value;
+ }
+ d.push([value, o.text]);
+ }
+ this.store = new Ext.data.SimpleStore({
+ 'id': 0,
+ fields: ['value', 'text'],
+ data : d
+ });
+ this.valueField = 'value';
+ this.displayField = 'text';
+ }
+ s.name = Ext.id(); if(!this.lazyRender){
+ this.target = true;
+ this.el = Ext.DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate);
+ Ext.removeNode(s); this.render(this.el.parentNode);
+ }else{
+ Ext.removeNode(s); }
+
+ }
+ this.selectedIndex = -1;
+ if(this.mode == 'local'){
+ if(this.initialConfig.queryDelay === undefined){
+ this.queryDelay = 10;
+ }
+ if(this.initialConfig.minChars === undefined){
+ this.minChars = 0;
+ }
+ }
+ },
+
+ onRender : function(ct, position){
+ Ext.form.ComboBox.superclass.onRender.call(this, ct, position);
+ if(this.hiddenName){
+ this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName, id: (this.hiddenId||this.hiddenName)},
+ 'before', true);
+ this.hiddenField.value =
+ this.hiddenValue !== undefined ? this.hiddenValue :
+ this.value !== undefined ? this.value : '';
+
+ this.el.dom.removeAttribute('name');
+ }
+ if(Ext.isGecko){
+ this.el.dom.setAttribute('autocomplete', 'off');
+ }
+
+ if(!this.lazyInit){
+ this.initList();
+ }else{
+ this.on('focus', this.initList, this, {single: true});
+ }
+
+ if(!this.editable){
+ this.editable = true;
+ this.setEditable(false);
+ }
+ },
+
+ initList : function(){
+ if(!this.list){
+ var cls = 'x-combo-list';
+
+ this.list = new Ext.Layer({
+ shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false
+ });
+
+ var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
+ this.list.setWidth(lw);
+ this.list.swallowEvent('mousewheel');
+ this.assetHeight = 0;
+
+ if(this.title){
+ this.header = this.list.createChild({cls:cls+'-hd', html: this.title});
+ this.assetHeight += this.header.getHeight();
+ }
+
+ this.innerList = this.list.createChild({cls:cls+'-inner'});
+ this.innerList.on('mouseover', this.onViewOver, this);
+ this.innerList.on('mousemove', this.onViewMove, this);
+ this.innerList.setWidth(lw - this.list.getFrameWidth('lr'))
+
+ if(this.pageSize){
+ this.footer = this.list.createChild({cls:cls+'-ft'});
+ this.pageTb = new Ext.PagingToolbar({
+ store:this.store,
+ pageSize: this.pageSize,
+ renderTo:this.footer
+ });
+ this.assetHeight += this.footer.getHeight();
+ }
+
+ if(!this.tpl){
+ this.tpl = '<tpl for="."><div class="'+cls+'-item">{' + this.displayField + '}</div></tpl>';
+ }
+
+
+ this.view = new Ext.DataView({
+ applyTo: this.innerList,
+ tpl: this.tpl,
+ singleSelect: true,
+ selectedClass: this.selectedClass,
+ itemSelector: this.itemSelector || '.' + cls + '-item'
+ });
+
+ this.view.on('click', this.onViewClick, this);
+
+ this.bindStore(this.store, true);
+
+ if(this.resizable){
+ this.resizer = new Ext.Resizable(this.list, {
+ pinned:true, handles:'se'
+ });
+ this.resizer.on('resize', function(r, w, h){
+ this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;
+ this.listWidth = w;
+ this.innerList.setWidth(w - this.list.getFrameWidth('lr'));
+ this.restrictHeight();
+ }, this);
+ this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px');
+ }
+ }
+ },
+
+
+ bindStore : function(store, initial){
+ if(this.store && !initial){
+ this.store.un('beforeload', this.onBeforeLoad, this);
+ this.store.un('load', this.onLoad, this);
+ this.store.un('loadexception', this.collapse, this);
+ if(!store){
+ this.store = null;
+ if(this.view){
+ this.view.setStore(null);
+ }
+ }
+ }
+ if(store){
+ this.store = Ext.StoreMgr.lookup(store);
+
+ this.store.on('beforeload', this.onBeforeLoad, this);
+ this.store.on('load', this.onLoad, this);
+ this.store.on('loadexception', this.collapse, this);
+
+ if(this.view){
+ this.view.setStore(store);
+ }
+ }
+ },
+
+ initEvents : function(){
+ Ext.form.ComboBox.superclass.initEvents.call(this);
+
+ this.keyNav = new Ext.KeyNav(this.el, {
+ "up" : function(e){
+ this.inKeyMode = true;
+ this.selectPrev();
+ },
+
+ "down" : function(e){
+ if(!this.isExpanded()){
+ this.onTriggerClick();
+ }else{
+ this.inKeyMode = true;
+ this.selectNext();
+ }
+ },
+
+ "enter" : function(e){
+ this.onViewClick();
+ },
+
+ "esc" : function(e){
+ this.collapse();
+ },
+
+ "tab" : function(e){
+ this.onViewClick(false);
+ return true;
+ },
+
+ scope : this,
+
+ doRelay : function(foo, bar, hname){
+ if(hname == 'down' || this.scope.isExpanded()){
+ return Ext.KeyNav.prototype.doRelay.apply(this, arguments);
+ }
+ return true;
+ },
+
+ forceKeyDown : true
+ });
+ this.queryDelay = Math.max(this.queryDelay || 10,
+ this.mode == 'local' ? 10 : 250);
+ this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
+ if(this.typeAhead){
+ this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this);
+ }
+ if(this.editable !== false){
+ this.el.on("keyup", this.onKeyUp, this);
+ }
+ if(this.forceSelection){
+ this.on('blur', this.doForce, this);
+ }
+ },
+
+ onDestroy : function(){
+ if(this.view){
+ this.view.el.removeAllListeners();
+ this.view.el.remove();
+ this.view.purgeListeners();
+ }
+ if(this.list){
+ this.list.destroy();
+ }
+ this.bindStore(null);
+ Ext.form.ComboBox.superclass.onDestroy.call(this);
+ },
+
+ fireKey : function(e){
+ if(e.isNavKeyPress() && !this.list.isVisible()){
+ this.fireEvent("specialkey", this, e);
+ }
+ },
+
+ onResize: function(w, h){
+ Ext.form.ComboBox.superclass.onResize.apply(this, arguments);
+ if(this.list && this.listWidth === undefined){
+ var lw = Math.max(w, this.minListWidth);
+ this.list.setWidth(lw);
+ this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
+ }
+ },
+
+ onDisable: function(){
+ Ext.form.ComboBox.superclass.onDisable.apply(this, arguments);
+ if(this.hiddenField){
+ this.hiddenField.disabled = this.disabled;
+ }
+ },
+
+
+ setEditable : function(value){
+ if(value == this.editable){
+ return;
+ }
+ this.editable = value;
+ if(!value){
+ this.el.dom.setAttribute('readOnly', true);
+ this.el.on('mousedown', this.onTriggerClick, this);
+ this.el.addClass('x-combo-noedit');
+ }else{
+ this.el.dom.setAttribute('readOnly', false);
+ this.el.un('mousedown', this.onTriggerClick, this);
+ this.el.removeClass('x-combo-noedit');
+ }
+ },
+
+ onBeforeLoad : function(){
+ if(!this.hasFocus){
+ return;
+ }
+ this.innerList.update(this.loadingText ?
+ '<div class="loading-indicator">'+this.loadingText+'</div>' : '');
+ this.restrictHeight();
+ this.selectedIndex = -1;
+ },
+
+ onLoad : function(){
+ if(!this.hasFocus){
+ return;
+ }
+ if(this.store.getCount() > 0){
+ this.expand();
+ this.restrictHeight();
+ if(this.lastQuery == this.allQuery){
+ if(this.editable){
+ this.el.dom.select();
+ }
+ if(!this.selectByValue(this.value, true)){
+ this.select(0, true);
+ }
+ }else{
+ this.selectNext();
+ if(this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE){
+ this.taTask.delay(this.typeAheadDelay);
+ }
+ }
+ }else{
+ this.onEmptyResults();
+ }
+ },
+
+ onTypeAhead : function(){
+ if(this.store.getCount() > 0){
+ var r = this.store.getAt(0);
+ var newValue = r.data[this.displayField];
+ var len = newValue.length;
+ var selStart = this.getRawValue().length;
+ if(selStart != len){
+ this.setRawValue(newValue);
+ this.selectText(selStart, newValue.length);
+ }
+ }
+ },
+
+ onSelect : function(record, index){
+ if(this.fireEvent('beforeselect', this, record, index) !== false){
+ this.setValue(record.data[this.valueField || this.displayField]);
+ this.collapse();
+ this.fireEvent('select', this, record, index);
+ }
+ },
+
+
+ getValue : function(){
+ if(this.valueField){
+ return typeof this.value != 'undefined' ? this.value : '';
+ }else{
+ return Ext.form.ComboBox.superclass.getValue.call(this);
+ }
+ },
+
+
+ clearValue : function(){
+ if(this.hiddenField){
+ this.hiddenField.value = '';
+ }
+ this.setRawValue('');
+ this.lastSelectionText = '';
+ this.applyEmptyText();
+ },
+
+
+ setValue : function(v){
+ var text = v;
+ if(this.valueField){
+ var r = this.findRecord(this.valueField, v);
+ if(r){
+ text = r.data[this.displayField];
+ }else if(this.valueNotFoundText !== undefined){
+ text = this.valueNotFoundText;
+ }
+ }
+ this.lastSelectionText = text;
+ if(this.hiddenField){
+ this.hiddenField.value = v;
+ }
+ Ext.form.ComboBox.superclass.setValue.call(this, text);
+ this.value = v;
+ },
+
+ findRecord : function(prop, value){
+ var record;
+ if(this.store.getCount() > 0){
+ this.store.each(function(r){
+ if(r.data[prop] == value){
+ record = r;
+ return false;
+ }
+ });
+ }
+ return record;
+ },
+
+ onViewMove : function(e, t){
+ this.inKeyMode = false;
+ },
+
+ onViewOver : function(e, t){
+ if(this.inKeyMode){ return;
+ }
+ var item = this.view.findItemFromChild(t);
+ if(item){
+ var index = this.view.indexOf(item);
+ this.select(index, false);
+ }
+ },
+
+ onViewClick : function(doFocus){
+ var index = this.view.getSelectedIndexes()[0];
+ var r = this.store.getAt(index);
+ if(r){
+ this.onSelect(r, index);
+ }
+ if(doFocus !== false){
+ this.el.focus();
+ }
+ },
+
+ restrictHeight : function(){
+ this.innerList.dom.style.height = '';
+ var inner = this.innerList.dom;
+ var fw = this.list.getFrameWidth('tb');
+ var h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight);
+ this.innerList.setHeight(h < this.maxHeight ? 'auto' : this.maxHeight);
+ this.list.beginUpdate();
+ this.list.setHeight(this.innerList.getHeight()+fw+(this.resizable?this.handleHeight:0)+this.assetHeight);
+ this.list.alignTo(this.el, this.listAlign);
+ this.list.endUpdate();
+ },
+
+ onEmptyResults : function(){
+ this.collapse();
+ },
+
+
+ isExpanded : function(){
+ return this.list && this.list.isVisible();
+ },
+
+
+ selectByValue : function(v, scrollIntoView){
+ if(v !== undefined && v !== null){
+ var r = this.findRecord(this.valueField || this.displayField, v);
+ if(r){
+ this.select(this.store.indexOf(r), scrollIntoView);
+ return true;
+ }
+ }
+ return false;
+ },
+
+
+ select : function(index, scrollIntoView){
+ this.selectedIndex = index;
+ this.view.select(index);
+ if(scrollIntoView !== false){
+ var el = this.view.getNode(index);
+ if(el){
+ this.innerList.scrollChildIntoView(el, false);
+ }
+ }
+ },
+
+ selectNext : function(){
+ var ct = this.store.getCount();
+ if(ct > 0){
+ if(this.selectedIndex == -1){
+ this.select(0);
+ }else if(this.selectedIndex < ct-1){
+ this.select(this.selectedIndex+1);
+ }
+ }
+ },
+
+ selectPrev : function(){
+ var ct = this.store.getCount();
+ if(ct > 0){
+ if(this.selectedIndex == -1){
+ this.select(0);
+ }else if(this.selectedIndex != 0){
+ this.select(this.selectedIndex-1);
+ }
+ }
+ },
+
+ onKeyUp : function(e){
+ if(this.editable !== false && !e.isSpecialKey()){
+ this.lastKey = e.getKey();
+ this.dqTask.delay(this.queryDelay);
+ }
+ },
+
+ validateBlur : function(){
+ return !this.list || !this.list.isVisible();
+ },
+
+ initQuery : function(){
+ this.doQuery(this.getRawValue());
+ },
+
+ doForce : function(){
+ if(this.el.dom.value.length > 0){
+ this.el.dom.value =
+ this.lastSelectionText === undefined ? '' : this.lastSelectionText;
+ this.applyEmptyText();
+ }
+ },
+
+
+ doQuery : function(q, forceAll){
+ if(q === undefined || q === null){
+ q = '';
+ }
+ var qe = {
+ query: q,
+ forceAll: forceAll,
+ combo: this,
+ cancel:false
+ };
+ if(this.fireEvent('beforequery', qe)===false || qe.cancel){
+ return false;
+ }
+ q = qe.query;
+ forceAll = qe.forceAll;
+ if(forceAll === true || (q.length >= this.minChars)){
+ if(this.lastQuery !== q){
+ this.lastQuery = q;
+ if(this.mode == 'local'){
+ this.selectedIndex = -1;
+ if(forceAll){
+ this.store.clearFilter();
+ }else{
+ this.store.filter(this.displayField, q);
+ }
+ this.onLoad();
+ }else{
+ this.store.baseParams[this.queryParam] = q;
+ this.store.load({
+ params: this.getParams(q)
+ });
+ this.expand();
+ }
+ }else{
+ this.selectedIndex = -1;
+ this.onLoad();
+ }
+ }
+ },
+
+ getParams : function(q){
+ var p = {};
+ if(this.pageSize){
+ p.start = 0;
+ p.limit = this.pageSize;
+ }
+ return p;
+ },
+
+
+ collapse : function(){
+ if(!this.isExpanded()){
+ return;
+ }
+ this.list.hide();
+ Ext.getDoc().un('mousewheel', this.collapseIf, this);
+ Ext.getDoc().un('mousedown', this.collapseIf, this);
+ this.fireEvent('collapse', this);
+ },
+
+ collapseIf : function(e){
+ if(!e.within(this.wrap) && !e.within(this.list)){
+ this.collapse();
+ }
+ },
+
+
+ expand : function(){
+ if(this.isExpanded() || !this.hasFocus){
+ return;
+ }
+ this.list.alignTo(this.wrap, this.listAlign);
+ this.list.show();
+ Ext.getDoc().on('mousewheel', this.collapseIf, this);
+ Ext.getDoc().on('mousedown', this.collapseIf, this);
+ this.fireEvent('expand', this);
+ },
+
+ onTriggerClick : function(){
+ if(this.disabled){
+ return;
+ }
+ if(this.isExpanded()){
+ this.collapse();
+ this.el.focus();
+ }else {
+ this.onFocus({});
+ if(this.triggerAction == 'all') {
+ this.doQuery(this.allQuery, true);
+ } else {
+ this.doQuery(this.getRawValue());
+ }
+ this.el.focus();
+ }
+ }
+
+
+
+
+
+
+});
+Ext.reg('combo', Ext.form.ComboBox);
+
+Ext.form.Checkbox = Ext.extend(Ext.form.Field, {
+
+ focusClass : undefined,
+
+ fieldClass: "x-form-field",
+
+ checked: false,
+
+ defaultAutoCreate : { tag: "input", type: 'checkbox', autocomplete: "off"},
+
+
+
+
+ initComponent : function(){
+ Ext.form.Checkbox.superclass.initComponent.call(this);
+ this.addEvents({
+
+ check : true
+ });
+ },
+
+ onResize : function(){
+ Ext.form.Checkbox.superclass.onResize.apply(this, arguments);
+ if(!this.boxLabel){
+ this.el.alignTo(this.wrap, 'c-c');
+ }
+ },
+
+ initEvents : function(){
+ Ext.form.Checkbox.superclass.initEvents.call(this);
+ this.el.on("click", this.onClick, this);
+ this.el.on("change", this.onClick, this);
+ },
+
+
+ getResizeEl : function(){
+ return this.wrap;
+ },
+
+ getPositionEl : function(){
+ return this.wrap;
+ },
+
+ onRender : function(ct, position){
+ Ext.form.Checkbox.superclass.onRender.call(this, ct, position);
+ if(this.inputValue !== undefined){
+ this.el.dom.value = this.inputValue;
+ }
+ this.wrap = this.el.wrap({cls: "x-form-check-wrap"});
+ if(this.boxLabel){
+ this.wrap.createChild({tag: 'label', htmlFor: this.el.id, cls: 'x-form-cb-label', html: this.boxLabel});
+ }
+ if(this.checked){
+ this.setValue(true);
+ }else{
+ this.checked = this.el.dom.checked;
+ }
+ },
+
+ initValue : Ext.emptyFn,
+
+
+ getValue : function(){
+ if(this.rendered){
+ return this.el.dom.checked;
+ }
+ return false;
+ },
+
+ onClick : function(){
+ if(this.el.dom.checked != this.checked){
+ this.setValue(this.el.dom.checked);
+ }
+ },
+
+
+ setValue : function(v){
+ this.checked = (v === true || v === 'true' || v == '1' || String(v).toLowerCase() == 'on');
+ if(this.el && this.el.dom){
+ this.el.dom.checked = this.checked;
+ this.el.dom.defaultChecked = this.checked;
+ }
+ this.fireEvent("check", this, this.checked);
+ }
+});
+Ext.reg('checkbox', Ext.form.Checkbox);
+
+Ext.form.Radio = Ext.extend(Ext.form.Checkbox, {
+ inputType: 'radio',
+
+
+ getGroupValue : function(){
+ return this.el.up('form').child('input[name='+this.el.dom.name+']:checked', true).value;
+ }
+});
+Ext.reg('radio', Ext.form.Radio);
+
+Ext.form.Hidden = Ext.extend(Ext.form.Field, {
+
+ inputType : 'hidden',
+
+
+ onRender : function(){
+ Ext.form.Hidden.superclass.onRender.apply(this, arguments);
+ },
+
+
+ initEvents : function(){
+ this.originalValue = this.getValue();
+ },
+
+
+ setSize : Ext.emptyFn,
+ setWidth : Ext.emptyFn,
+ setHeight : Ext.emptyFn,
+ setPosition : Ext.emptyFn,
+ setPagePosition : Ext.emptyFn,
+ markInvalid : Ext.emptyFn,
+ clearInvalid : Ext.emptyFn
+});
+Ext.reg('hidden', Ext.form.Hidden);
+
+Ext.form.BasicForm = function(el, config){
+ Ext.apply(this, config);
+
+ this.items = new Ext.util.MixedCollection(false, function(o){
+ return o.id || (o.id = Ext.id());
+ });
+ this.addEvents({
+
+ beforeaction: true,
+
+ actionfailed : true,
+
+ actioncomplete : true
+ });
+
+ if(el){
+ this.initEl(el);
+ }
+ Ext.form.BasicForm.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.form.BasicForm, Ext.util.Observable, {
+
+
+
+
+
+
+
+ timeout: 30,
+
+ activeAction : null,
+
+
+ trackResetOnLoad : false,
+
+
+
+ initEl : function(el){
+ this.el = Ext.get(el);
+ this.id = this.el.id || Ext.id();
+ this.el.on('submit', this.onSubmit, this);
+ this.el.addClass('x-form');
+ },
+
+
+ getEl: function(){
+ return this.el;
+ },
+
+ onSubmit : function(e){
+ e.stopEvent();
+ },
+
+
+ isValid : function(){
+ var valid = true;
+ this.items.each(function(f){
+ if(!f.validate()){
+ valid = false;
+ }
+ });
+ return valid;
+ },
+
+
+ isDirty : function(){
+ var dirty = false;
+ this.items.each(function(f){
+ if(f.isDirty()){
+ dirty = true;
+ return false;
+ }
+ });
+ return dirty;
+ },
+
+
+ doAction : function(action, options){
+ if(typeof action == 'string'){
+ action = new Ext.form.Action.ACTION_TYPES[action](this, options);
+ }
+ if(this.fireEvent('beforeaction', this, action) !== false){
+ this.beforeAction(action);
+ action.run.defer(100, action);
+ }
+ return this;
+ },
+
+
+ submit : function(options){
+ this.doAction('submit', options);
+ return this;
+ },
+
+
+ load : function(options){
+ this.doAction('load', options);
+ return this;
+ },
+
+
+ updateRecord : function(record){
+ record.beginEdit();
+ var fs = record.fields;
+ fs.each(function(f){
+ var field = this.findField(f.name);
+ if(field){
+ record.set(f.name, field.getValue());
+ }
+ }, this);
+ record.endEdit();
+ return this;
+ },
+
+
+ loadRecord : function(record){
+ this.setValues(record.data);
+ return this;
+ },
+
+ beforeAction : function(action){
+ var o = action.options;
+ if(o.waitMsg){
+ if(this.waitMsgTarget === true){
+ this.el.mask(o.waitMsg, 'x-mask-loading');
+ }else if(this.waitMsgTarget){
+ this.waitMsgTarget = Ext.get(this.waitMsgTarget);
+ this.waitMsgTarget.mask(o.waitMsg, 'x-mask-loading');
+ }else{
+ Ext.MessageBox.wait(o.waitMsg, o.waitTitle || this.waitTitle || 'Please Wait...');
+ }
+ }
+ },
+
+ afterAction : function(action, success){
+ this.activeAction = null;
+ var o = action.options;
+ if(o.waitMsg){
+ if(this.waitMsgTarget === true){
+ this.el.unmask();
+ }else if(this.waitMsgTarget){
+ this.waitMsgTarget.unmask();
+ }else{
+ Ext.MessageBox.updateProgress(1);
+ Ext.MessageBox.hide();
+ }
+ }
+ if(success){
+ if(o.reset){
+ this.reset();
+ }
+ Ext.callback(o.success, o.scope, [this, action]);
+ this.fireEvent('actioncomplete', this, action);
+ }else{
+ Ext.callback(o.failure, o.scope, [this, action]);
+ this.fireEvent('actionfailed', this, action);
+ }
+ },
+
+
+ findField : function(id){
+ var field = this.items.get(id);
+ if(!field){
+ this.items.each(function(f){
+ if(f.isFormField && (f.dataIndex == id || f.id == id || f.getName() == id)){
+ field = f;
+ return false;
+ }
+ });
+ }
+ return field || null;
+ },
+
+
+
+ markInvalid : function(errors){
+ if(errors instanceof Array){
+ for(var i = 0, len = errors.length; i < len; i++){
+ var fieldError = errors[i];
+ var f = this.findField(fieldError.id);
+ if(f){
+ f.markInvalid(fieldError.msg);
+ }
+ }
+ }else{
+ var field, id;
+ for(id in errors){
+ if(typeof errors[id] != 'function' && (field = this.findField(id))){
+ field.markInvalid(errors[id]);
+ }
+ }
+ }
+ return this;
+ },
+
+
+ setValues : function(values){
+ if(values instanceof Array){ for(var i = 0, len = values.length; i < len; i++){
+ var v = values[i];
+ var f = this.findField(v.id);
+ if(f){
+ f.setValue(v.value);
+ if(this.trackResetOnLoad){
+ f.originalValue = f.getValue();
+ }
+ }
+ }
+ }else{ var field, id;
+ for(id in values){
+ if(typeof values[id] != 'function' && (field = this.findField(id))){
+ field.setValue(values[id]);
+ if(this.trackResetOnLoad){
+ field.originalValue = field.getValue();
+ }
+ }
+ }
+ }
+ return this;
+ },
+
+
+ getValues : function(asString){
+ var fs = Ext.lib.Ajax.serializeForm(this.el.dom);
+ if(asString === true){
+ return fs;
+ }
+ return Ext.urlDecode(fs);
+ },
+
+
+ clearInvalid : function(){
+ this.items.each(function(f){
+ f.clearInvalid();
+ });
+ return this;
+ },
+
+
+ reset : function(){
+ this.items.each(function(f){
+ f.reset();
+ });
+ return this;
+ },
+
+
+ add : function(){
+ this.items.addAll(Array.prototype.slice.call(arguments, 0));
+ return this;
+ },
+
+
+
+ remove : function(field){
+ this.items.remove(field);
+ return this;
+ },
+
+
+ render : function(){
+ this.items.each(function(f){
+ if(f.isFormField && !f.rendered && document.getElementById(f.id)){ f.applyToMarkup(f.id);
+ }
+ });
+ return this;
+ },
+
+
+ applyToFields : function(o){
+ this.items.each(function(f){
+ Ext.apply(f, o);
+ });
+ return this;
+ },
+
+
+ applyIfToFields : function(o){
+ this.items.each(function(f){
+ Ext.applyIf(f, o);
+ });
+ return this;
+ }
+});
+
+Ext.BasicForm = Ext.form.BasicForm;
+
+
+Ext.FormPanel = Ext.extend(Ext.Panel, {
+
+
+
+ buttonAlign:'center',
+
+
+ minButtonWidth:75,
+
+
+ labelAlign:'left',
+
+
+ monitorValid : false,
+
+
+ monitorPoll : 200,
+
+ layout: 'form',
+
+ initComponent :function(){
+ this.form = this.createForm();
+
+ Ext.FormPanel.superclass.initComponent.call(this);
+
+ this.addEvents({
+
+ clientvalidation: true
+ });
+
+ this.relayEvents(this.form, ['beforeaction', 'actionfailed', 'actioncomplete']);
+ },
+
+ createForm: function(){
+ delete this.initialConfig.listeners;
+ return new Ext.form.BasicForm(null, this.initialConfig);
+ },
+
+ initFields : function(){
+ var f = this.form;
+ var formPanel = this;
+ var fn = function(c){
+ if(c.doLayout && c != formPanel){
+ Ext.applyIf(c, {
+ labelAlign: c.ownerCt.labelAlign,
+ labelWidth: c.ownerCt.labelWidth,
+ itemCls: c.ownerCt.itemCls
+ });
+ if(c.items){
+ c.items.each(fn);
+ }
+ }else if(c.isFormField){
+ f.add(c);
+ }
+ }
+ this.items.each(fn);
+ },
+
+ getLayoutTarget : function(){
+ return this.form.el;
+ },
+
+ getForm : function(){
+ return this.form;
+ },
+
+ onRender : function(ct, position){
+ this.initFields();
+
+ Ext.FormPanel.superclass.onRender.call(this, ct, position);
+ var o = {
+ tag: 'form',
+ method : this.method || 'POST',
+ id : this.formId || Ext.id()
+ };
+ if(this.fileUpload) {
+ o.enctype = 'multipart/form-data';
+ }
+ this.form.initEl(this.body.createChild(o));
+ },
+
+ initEvents : function(){
+ Ext.FormPanel.superclass.initEvents.call(this);
+
+ if(this.monitorValid){ this.startMonitoring();
+ }
+ },
+
+
+ startMonitoring : function(){
+ if(!this.bound){
+ this.bound = true;
+ Ext.TaskMgr.start({
+ run : this.bindHandler,
+ interval : this.monitorPoll || 200,
+ scope: this
+ });
+ }
+ },
+
+
+ stopMonitoring : function(){
+ this.bound = false;
+ },
+
+ load : function(){
+ this.form.load.apply(this.form, arguments);
+ },
+
+ onDisable : function(){
+ Ext.FormPanel.superclass.onDisable.call(this);
+ if(this.form){
+ this.form.items.each(function(){
+ this.disable();
+ });
+ }
+ },
+
+ onEnable : function(){
+ Ext.FormPanel.superclass.onEnable.call(this);
+ if(this.form){
+ this.form.items.each(function(){
+ this.enable();
+ });
+ }
+ },
+
+ bindHandler : function(){
+ if(!this.bound){
+ return false; }
+ var valid = true;
+ this.form.items.each(function(f){
+ if(!f.isValid(true)){
+ valid = false;
+ return false;
+ }
+ });
+ if(this.buttons){
+ for(var i = 0, len = this.buttons.length; i < len; i++){
+ var btn = this.buttons[i];
+ if(btn.formBind === true && btn.disabled === valid){
+ btn.setDisabled(!valid);
+ }
+ }
+ }
+ this.fireEvent('clientvalidation', this, valid);
+ }
+});
+Ext.reg('form', Ext.FormPanel);
+
+Ext.form.FormPanel = Ext.FormPanel;
+
+
+
+Ext.form.FieldSet = Ext.extend(Ext.Panel, {
+
+
+
+
+
+ baseCls:'x-fieldset',
+
+ layout: 'form',
+
+
+ onRender : function(ct, position){
+ if(!this.el){
+ this.el = document.createElement('fieldset');
+ this.el.appendChild(document.createElement('legend')).className = 'x-fieldset-header';
+ }
+
+ Ext.form.FieldSet.superclass.onRender.call(this, ct, position);
+
+ if(this.checkboxToggle){
+ var o = typeof this.checkboxToggle == 'object' ?
+ this.checkboxToggle :
+ {tag: 'input', type: 'checkbox', name: this.checkboxName || this.id+'-checkbox'};
+ this.checkbox = this.header.insertFirst(o);
+ this.checkbox.dom.checked = !this.collapsed;
+ this.checkbox.on('click', this.onCheckClick, this);
+ }
+ },
+
+
+ onCollapse : function(doAnim, animArg){
+ if(this.checkbox){
+ this.checkbox.dom.checked = false;
+ }
+ this.afterCollapse();
+
+ },
+
+
+ onExpand : function(doAnim, animArg){
+ if(this.checkbox){
+ this.checkbox.dom.checked = true;
+ }
+ this.afterExpand();
+ },
+
+
+ onCheckClick : function(){
+ this[this.checkbox.dom.checked ? 'expand' : 'collapse']();
+ }
+});
+Ext.reg('fieldset', Ext.form.FieldSet);
+
+
+
+
+Ext.form.HtmlEditor = Ext.extend(Ext.form.Field, {
+
+ enableFormat : true,
+
+ enableFontSize : true,
+
+ enableColors : true,
+
+ enableAlignments : true,
+
+ enableLists : true,
+
+ enableSourceEdit : true,
+
+ enableLinks : true,
+
+ enableFont : true,
+
+ createLinkText : 'Please enter the URL for the link:',
+
+ defaultLinkValue : 'http:/'+'/',
+
+ fontFamilies : [
+ 'Arial',
+ 'Courier New',
+ 'Tahoma',
+ 'Times New Roman',
+ 'Verdana'
+ ],
+ defaultFont: 'tahoma',
+
+
+ validationEvent : false,
+ deferHeight: true,
+ initialized : false,
+ activated : false,
+ sourceEditMode : false,
+ onFocus : Ext.emptyFn,
+ iframePad:3,
+ hideMode:'offsets',
+ defaultAutoCreate : {
+ tag: "textarea",
+ style:"width:500px;height:300px;",
+ autocomplete: "off"
+ },
+
+
+ initComponent : function(){
+ this.addEvents({
+
+ initialize: true,
+
+ activate: true,
+
+ beforesync: true,
+
+ beforepush: true,
+
+ sync: true,
+
+ push: true,
+
+ editmodechange: true
+ })
+ },
+
+ createFontOptions : function(){
+ var buf = [], fs = this.fontFamilies, ff, lc;
+ for(var i = 0, len = fs.length; i< len; i++){
+ ff = fs[i];
+ lc = ff.toLowerCase();
+ buf.push(
+ '<option value="',lc,'" style="font-family:',ff,';"',
+ (this.defaultFont == lc ? ' selected="true">' : '>'),
+ ff,
+ '</option>'
+ );
+ }
+ return buf.join('');
+ },
+
+ createToolbar : function(editor){
+
+ function btn(id, toggle, handler){
+ return {
+ itemId : id,
+ cls : 'x-btn-icon x-edit-'+id,
+ enableToggle:toggle !== false,
+ scope: editor,
+ handler:handler||editor.relayBtnCmd,
+ clickEvent:'mousedown',
+ tooltip: editor.buttonTips[id] || undefined,
+ tabIndex:-1
+ };
+ }
+
+
+ var tb = new Ext.Toolbar({
+ renderTo:this.wrap.dom.firstChild
+ });
+
+
+ tb.el.on('click', function(e){
+ e.preventDefault();
+ });
+
+ if(this.enableFont && !Ext.isSafari){
+ this.fontSelect = tb.el.createChild({
+ tag:'select',
+ cls:'x-font-select',
+ html: this.createFontOptions()
+ });
+ this.fontSelect.on('change', function(){
+ var font = this.fontSelect.dom.value;
+ this.relayCmd('fontname', font);
+ this.deferFocus();
+ }, this);
+ tb.add(
+ this.fontSelect.dom,
+ '-'
+ );
+ };
+
+ if(this.enableFormat){
+ tb.add(
+ btn('bold'),
+ btn('italic'),
+ btn('underline')
+ );
+ };
+
+ if(this.enableFontSize){
+ tb.add(
+ '-',
+ btn('increasefontsize', false, this.adjustFont),
+ btn('decreasefontsize', false, this.adjustFont)
+ );
+ };
+
+ if(this.enableColors){
+ tb.add(
+ '-', {
+ itemId:'forecolor',
+ cls:'x-btn-icon x-edit-forecolor',
+ clickEvent:'mousedown',
+ tooltip: editor.buttonTips['forecolor'] || undefined,
+ tabIndex:-1,
+ menu : new Ext.menu.ColorMenu({
+ allowReselect: true,
+ focus: Ext.emptyFn,
+ value:'000000',
+ plain:true,
+ selectHandler: function(cp, color){
+ this.execCmd('forecolor', Ext.isSafari || Ext.isIE ? '#'+color : color);
+ this.deferFocus();
+ },
+ scope: this,
+ clickEvent:'mousedown'
+ })
+ }, {
+ itemId:'backcolor',
+ cls:'x-btn-icon x-edit-backcolor',
+ clickEvent:'mousedown',
+ tooltip: editor.buttonTips['backcolor'] || undefined,
+ tabIndex:-1,
+ menu : new Ext.menu.ColorMenu({
+ focus: Ext.emptyFn,
+ value:'FFFFFF',
+ plain:true,
+ allowReselect: true,
+ selectHandler: function(cp, color){
+ if(Ext.isGecko){
+ this.execCmd('useCSS', false);
+ this.execCmd('hilitecolor', color);
+ this.execCmd('useCSS', true);
+ this.deferFocus();
+ }else{
+ this.execCmd(Ext.isOpera ? 'hilitecolor' : 'backcolor', Ext.isSafari || Ext.isIE ? '#'+color : color);
+ this.deferFocus();
+ }
+ },
+ scope:this,
+ clickEvent:'mousedown'
+ })
+ }
+ );
+ };
+
+ if(this.enableAlignments){
+ tb.add(
+ '-',
+ btn('justifyleft'),
+ btn('justifycenter'),
+ btn('justifyright')
+ );
+ };
+
+ if(!Ext.isSafari){
+ if(this.enableLinks){
+ tb.add(
+ '-',
+ btn('createlink', false, this.createLink)
+ );
+ };
+
+ if(this.enableLists){
+ tb.add(
+ '-',
+ btn('insertorderedlist'),
+ btn('insertunorderedlist')
+ );
+ }
+ if(this.enableSourceEdit){
+ tb.add(
+ '-',
+ btn('sourceedit', true, function(btn){
+ this.toggleSourceEdit(btn.pressed);
+ })
+ );
+ }
+ }
+
+ this.tb = tb;
+ },
+
+
+ getDocMarkup : function(){
+ return '<html><head><style type="text/css">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>';
+ },
+
+ getEditorBody : function(){
+ return this.doc.body || this.doc.documentElement;
+ },
+
+
+ onRender : function(ct, position){
+ Ext.form.HtmlEditor.superclass.onRender.call(this, ct, position);
+ this.el.dom.style.border = '0 none';
+ this.el.dom.setAttribute('tabIndex', -1);
+ this.el.addClass('x-hidden');
+ if(Ext.isIE){
+ this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+ }
+ this.wrap = this.el.wrap({
+ cls:'x-html-editor-wrap', cn:{cls:'x-html-editor-tb'}
+ });
+
+ this.createToolbar(this);
+
+ this.tb.items.each(function(item){
+ if(item.itemId != 'sourceedit'){
+ item.disable();
+ }
+ });
+
+ var iframe = document.createElement('iframe');
+ iframe.name = Ext.id();
+ iframe.frameBorder = 'no';
+
+ iframe.src=(Ext.SSL_SECURE_URL || "javascript:false");
+
+ this.wrap.dom.appendChild(iframe);
+
+ this.iframe = iframe;
+
+ if(Ext.isIE){
+ this.doc = iframe.contentWindow.document;
+ this.win = iframe.contentWindow;
+ } else {
+ this.doc = (iframe.contentDocument || window.frames[iframe.name].document);
+ this.win = window.frames[iframe.name];
+ }
+ this.doc.designMode = 'on';
+ this.doc.open();
+ this.doc.write(this.getDocMarkup())
+ this.doc.close();
+
+ var task = {
+ run : function(){
+ if(this.doc.body || this.doc.readyState == 'complete'){
+ this.doc.designMode="on";
+ Ext.TaskMgr.stop(task);
+ this.initEditor.defer(10, this);
+ }
+ },
+ interval : 10,
+ duration:10000,
+ scope: this
+ };
+ Ext.TaskMgr.start(task);
+
+ if(!this.width){
+ this.setSize(this.el.getSize());
+ }
+ },
+
+
+ onResize : function(w, h){
+ Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments);
+ if(this.el && this.iframe){
+ if(typeof w == 'number'){
+ var aw = w - this.wrap.getFrameWidth('lr');
+ this.el.setWidth(this.adjustWidth('textarea', aw));
+ this.iframe.style.width = aw + 'px';
+ }
+ if(typeof h == 'number'){
+ var ah = h - this.wrap.getFrameWidth('tb') - this.tb.el.getHeight();
+ this.el.setHeight(this.adjustWidth('textarea', ah));
+ this.iframe.style.height = ah + 'px';
+ if(this.doc){
+ this.getEditorBody().style.height = (ah - (this.iframePad*2)) + 'px';
+ }
+ }
+ }
+ },
+
+
+ toggleSourceEdit : function(sourceEditMode){
+ if(sourceEditMode === undefined){
+ sourceEditMode = !this.sourceEditMode;
+ }
+ this.sourceEditMode = sourceEditMode === true;
+ var btn = this.tb.items.get('sourceedit');
+ if(btn.pressed !== this.sourceEditMode){
+ btn.toggle(this.sourceEditMode);
+ return;
+ }
+ if(this.sourceEditMode){
+ this.tb.items.each(function(item){
+ if(item.itemId != 'sourceedit'){
+ item.disable();
+ }
+ });
+ this.syncValue();
+ this.iframe.className = 'x-hidden';
+ this.el.removeClass('x-hidden');
+ this.el.dom.removeAttribute('tabIndex');
+ this.el.focus();
+ }else{
+ if(this.initialized){
+ this.tb.items.each(function(item){
+ item.enable();
+ });
+ }
+ this.pushValue();
+ this.iframe.className = '';
+ this.el.addClass('x-hidden');
+ this.el.dom.setAttribute('tabIndex', -1);
+ this.deferFocus();
+ }
+ var lastSize = this.lastSize;
+ if(lastSize){
+ delete this.lastSize;
+ this.setSize(lastSize);
+ }
+ this.fireEvent('editmodechange', this, this.sourceEditMode);
+ },
+
+
+ createLink : function(){
+ var url = prompt(this.createLinkText, this.defaultLinkValue);
+ if(url && url != 'http:/'+'/'){
+ this.relayCmd('createlink', url);
+ }
+ },
+
+
+ adjustSize : Ext.BoxComponent.prototype.adjustSize,
+
+
+ getResizeEl : function(){
+ return this.wrap;
+ },
+
+
+ getPositionEl : function(){
+ return this.wrap;
+ },
+
+
+ initEvents : function(){
+ this.originalValue = this.getValue();
+ },
+
+
+ markInvalid : Ext.emptyFn,
+
+ clearInvalid : Ext.emptyFn,
+
+ setValue : function(v){
+ Ext.form.HtmlEditor.superclass.setValue.call(this, v);
+ this.pushValue();
+ },
+
+
+ cleanHtml : function(html){
+ html = String(html);
+ if(html.length > 5){
+ if(Ext.isSafari){
+ html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
+ }
+ }
+ if(html == ' '){
+ html = '';
+ }
+ return html;
+ },
+
+
+ syncValue : function(){
+ if(this.initialized){
+ var bd = this.getEditorBody();
+ var html = bd.innerHTML;
+ if(Ext.isSafari){
+ var bs = bd.getAttribute('style');
+ var m = bs.match(/text-align:(.*?);/i);
+ if(m && m[1]){
+ html = '<div style="'+m[0]+'">' + html + '</div>';
+ }
+ }
+ html = this.cleanHtml(html);
+ if(this.fireEvent('beforesync', this, html) !== false){
+ this.el.dom.value = html;
+ this.fireEvent('sync', this, html);
+ }
+ }
+ },
+
+
+ pushValue : function(){
+ if(this.initialized){
+ var v = this.el.dom.value;
+ if(!this.activated && v.length < 1){
+ v = ' ';
+ }
+ if(this.fireEvent('beforepush', this, v) !== false){
+ this.getEditorBody().innerHTML = v;
+ this.fireEvent('push', this, v);
+ }
+ }
+ },
+
+
+ deferFocus : function(){
+ this.focus.defer(10, this);
+ },
+
+
+ focus : function(){
+ if(this.win && !this.sourceEditMode){
+ this.win.focus();
+ }else{
+ this.el.focus();
+ }
+ },
+
+
+ initEditor : function(){
+ var dbody = this.getEditorBody();
+ var ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat');
+ ss['background-attachment'] = 'fixed';
+ dbody.bgProperties = 'fixed';
+ Ext.DomHelper.applyStyles(dbody, ss);
+ Ext.EventManager.on(this.doc, {
+ 'mousedown': this.onEditorEvent,
+ 'dblclick': this.onEditorEvent,
+ 'click': this.onEditorEvent,
+ 'keyup': this.onEditorEvent,
+ buffer:100,
+ scope: this
+ });
+ if(Ext.isGecko){
+ Ext.EventManager.on(this.doc, 'keypress', this.applyCommand, this);
+ }
+ if(Ext.isIE || Ext.isSafari || Ext.isOpera){
+ Ext.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
+ }
+ this.initialized = true;
+
+ this.fireEvent('initialize', this);
+ this.pushValue();
+ },
+
+
+ onDestroy : function(){
+ if(this.rendered){
+ this.tb.items.each(function(item){
+ if(item.menu){
+ item.menu.removeAll();
+ if(item.menu.el){
+ item.menu.el.destroy();
+ }
+ }
+ item.destroy();
+ });
+ this.wrap.dom.innerHTML = '';
+ this.wrap.remove();
+ }
+ },
+
+
+ onFirstFocus : function(){
+ this.activated = true;
+ this.tb.items.each(function(item){
+ item.enable();
+ });
+ if(Ext.isGecko){
+ this.win.focus();
+ var s = this.win.getSelection();
+ if(!s.focusNode || s.focusNode.nodeType != 3){
+ var r = s.getRangeAt(0);
+ r.selectNodeContents(this.getEditorBody());
+ r.collapse(true);
+ this.deferFocus();
+ }
+ try{
+ this.execCmd('useCSS', true);
+ this.execCmd('styleWithCSS', false);
+ }catch(e){}
+ }
+ this.fireEvent('activate', this);
+ },
+
+
+ adjustFont: function(btn){
+ var adjust = btn.itemId == 'increasefontsize' ? 1 : -1;
+ if(Ext.isSafari){
+ adjust *= 2;
+ }
+ var v = parseInt(this.doc.queryCommandValue('FontSize')|| 3, 10);
+ v = Math.max(1, v+adjust);
+ this.execCmd('FontSize', v + (Ext.isSafari ? 'px' : 0));
+ },
+
+ onEditorEvent : function(e){
+ this.updateToolbar();
+ },
+
+
+
+ updateToolbar: function(){
+
+ if(!this.activated){
+ this.onFirstFocus();
+ return;
+ }
+
+ var btns = this.tb.items.map, doc = this.doc;
+
+ if(this.enableFont && !Ext.isSafari){
+ var name = (this.doc.queryCommandValue('FontName')||this.defaultFont).toLowerCase();
+ if(name != this.fontSelect.dom.value){
+ this.fontSelect.dom.value = name;
+ }
+ }
+ if(this.enableFormat){
+ btns.bold.toggle(doc.queryCommandState('bold'));
+ btns.italic.toggle(doc.queryCommandState('italic'));
+ btns.underline.toggle(doc.queryCommandState('underline'));
+ }
+ if(this.enableAlignments){
+ btns.justifyleft.toggle(doc.queryCommandState('justifyleft'));
+ btns.justifycenter.toggle(doc.queryCommandState('justifycenter'));
+ btns.justifyright.toggle(doc.queryCommandState('justifyright'));
+ }
+ if(!Ext.isSafari && this.enableLists){
+ btns.insertorderedlist.toggle(doc.queryCommandState('insertorderedlist'));
+ btns.insertunorderedlist.toggle(doc.queryCommandState('insertunorderedlist'));
+ }
+
+ Ext.menu.MenuMgr.hideAll();
+
+ this.syncValue();
+ },
+
+
+ relayBtnCmd : function(btn){
+ this.relayCmd(btn.itemId);
+ },
+
+
+ relayCmd : function(cmd, value){
+ this.win.focus();
+ this.execCmd(cmd, value);
+ this.updateToolbar();
+ this.deferFocus();
+ },
+
+
+ execCmd : function(cmd, value){
+ this.doc.execCommand(cmd, false, value === undefined ? null : value);
+ this.syncValue();
+ },
+
+
+ applyCommand : function(e){
+ if(e.ctrlKey){
+ var c = e.getCharCode(), cmd;
+ if(c > 0){
+ c = String.fromCharCode(c);
+ switch(c){
+ case 'b':
+ cmd = 'bold';
+ break;
+ case 'i':
+ cmd = 'italic';
+ break;
+ case 'u':
+ cmd = 'underline';
+ break;
+ }
+ if(cmd){
+ this.win.focus();
+ this.execCmd(cmd);
+ this.deferFocus();
+ e.preventDefault();
+ }
+ }
+ }
+ },
+
+
+ insertAtCursor : function(text){
+ if(!this.activated){
+ return;
+ }
+ if(Ext.isIE){
+ this.win.focus();
+ var r = this.doc.selection.createRange();
+ if(r){
+ r.collapse(true);
+ r.pasteHTML(text);
+ this.syncValue();
+ this.deferFocus();
+ }
+ }else if(Ext.isGecko || Ext.isOpera){
+ this.win.focus();
+ this.execCmd('InsertHTML', text);
+ this.deferFocus();
+ }else if(Ext.isSafari){
+ this.execCmd('InsertText', text);
+ this.deferFocus();
+ }
+ },
+
+
+ fixKeys : function(){
+ if(Ext.isIE){
+ return function(e){
+ var k = e.getKey(), r;
+ if(k == e.TAB){
+ e.stopEvent();
+ r = this.doc.selection.createRange();
+ if(r){
+ r.collapse(true);
+ r.pasteHTML(' ');
+ this.deferFocus();
+ }
+ }else if(k == e.ENTER){
+ r = this.doc.selection.createRange();
+ if(r){
+ var target = r.parentElement();
+ if(!target || target.tagName.toLowerCase() != 'li'){
+ e.stopEvent();
+ r.pasteHTML('<br />');
+ r.collapse(false);
+ r.select();
+ }
+ }
+ }
+ };
+ }else if(Ext.isOpera){
+ return function(e){
+ var k = e.getKey();
+ if(k == e.TAB){
+ e.stopEvent();
+ this.win.focus();
+ this.execCmd('InsertHTML',' ');
+ this.deferFocus();
+ }
+ };
+ }else if(Ext.isSafari){
+ return function(e){
+ var k = e.getKey();
+ if(k == e.TAB){
+ e.stopEvent();
+ this.execCmd('InsertText','\t');
+ this.deferFocus();
+ }
+ };
+ }
+ }(),
+
+
+ getToolbar : function(){
+ return this.tb;
+ },
+
+
+ buttonTips : {
+ bold : {
+ title: 'Bold (Ctrl+B)',
+ text: 'Make the selected text bold.',
+ cls: 'x-html-editor-tip'
+ },
+ italic : {
+ title: 'Italic (Ctrl+I)',
+ text: 'Make the selected text italic.',
+ cls: 'x-html-editor-tip'
+ },
+ underline : {
+ title: 'Underline (Ctrl+U)',
+ text: 'Underline the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ increasefontsize : {
+ title: 'Grow Text',
+ text: 'Increase the font size.',
+ cls: 'x-html-editor-tip'
+ },
+ decreasefontsize : {
+ title: 'Shrink Text',
+ text: 'Decrease the font size.',
+ cls: 'x-html-editor-tip'
+ },
+ backcolor : {
+ title: 'Text Highlight Color',
+ text: 'Change the background color of the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ forecolor : {
+ title: 'Font Color',
+ text: 'Change the color of the selected text.',
+ cls: 'x-html-editor-tip'
+ },
+ justifyleft : {
+ title: 'Align Text Left',
+ text: 'Align text to the left.',
+ cls: 'x-html-editor-tip'
+ },
+ justifycenter : {
+ title: 'Center Text',
+ text: 'Center text in the editor.',
+ cls: 'x-html-editor-tip'
+ },
+ justifyright : {
+ title: 'Align Text Right',
+ text: 'Align text to the right.',
+ cls: 'x-html-editor-tip'
+ },
+ insertunorderedlist : {
+ title: 'Bullet List',
+ text: 'Start a bulleted list.',
+ cls: 'x-html-editor-tip'
+ },
+ insertorderedlist : {
+ title: 'Numbered List',
+ text: 'Start a numbered list.',
+ cls: 'x-html-editor-tip'
+ },
+ createlink : {
+ title: 'Hyperlink',
+ text: 'Make the selected text a hyperlink.',
+ cls: 'x-html-editor-tip'
+ },
+ sourceedit : {
+ title: 'Source Edit',
+ text: 'Switch to source editing mode.',
+ cls: 'x-html-editor-tip'
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+});
+Ext.reg('htmleditor', Ext.form.HtmlEditor);
+
+Ext.form.TimeField = Ext.extend(Ext.form.ComboBox, {
+
+ minValue : null,
+
+ maxValue : null,
+
+ minText : "The time in this field must be equal to or after {0}",
+
+ maxText : "The time in this field must be equal to or before {0}",
+
+ invalidText : "{0} is not a valid time",
+
+ format : "g:i A",
+
+ altFormats : "g:ia|g:iA|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H",
+
+ increment: 15,
+
+
+ mode: 'local',
+
+ triggerAction: 'all',
+
+ typeAhead: false,
+
+
+ initComponent : function(){
+ Ext.form.TimeField.superclass.initComponent.call(this);
+
+ if(typeof this.minValue == "string"){
+ this.minValue = this.parseDate(this.minValue);
+ }
+ if(typeof this.maxValue == "string"){
+ this.maxValue = this.parseDate(this.maxValue);
+ }
+
+ if(!this.store){
+ var min = this.parseDate(this.minValue);
+ if(!min){
+ min = new Date().clearTime();
+ }
+ var max = this.parseDate(this.maxValue);
+ if(!max){
+ max = new Date().clearTime().add('mi', (24 * 60) - 1);
+ }
+ var times = [];
+ while(min <= max){
+ times.push([min.dateFormat(this.format)]);
+ min = min.add('mi', this.increment);
+ }
+ this.store = new Ext.data.SimpleStore({
+ fields: ['text'],
+ data : times
+ });
+ this.displayField = 'text';
+ }
+ },
+
+
+ getValue : function(){
+ var v = Ext.form.TimeField.superclass.getValue.call(this);
+ return this.formatDate(this.parseDate(v)) || '';
+ },
+
+
+ setValue : function(value){
+ Ext.form.TimeField.superclass.setValue.call(this, this.formatDate(this.parseDate(value)));
+ },
+
+
+ validateValue : Ext.form.DateField.prototype.validateValue,
+ parseDate : Ext.form.DateField.prototype.parseDate,
+ formatDate : Ext.form.DateField.prototype.formatDate,
+
+
+ beforeBlur : function(){
+ var v = this.parseDate(this.getRawValue());
+ if(v){
+ this.setValue(v.dateFormat(this.format));
+ }
+ }
+
+
+
+
+
+});
+Ext.reg('timefield', Ext.form.TimeField);
+
+Ext.form.Action = function(form, options){
+ this.form = form;
+ this.options = options || {};
+};
+
+
+Ext.form.Action.CLIENT_INVALID = 'client';
+
+Ext.form.Action.SERVER_INVALID = 'server';
+
+Ext.form.Action.CONNECT_FAILURE = 'connect';
+
+Ext.form.Action.LOAD_FAILURE = 'load';
+
+Ext.form.Action.prototype = {
+
+
+
+
+
+
+
+
+
+ type : 'default',
+
+
+
+
+ run : function(options){
+
+ },
+
+ success : function(response){
+
+ },
+
+ handleResponse : function(response){
+
+ },
+
+ failure : function(response){
+ this.response = response;
+ this.failureType = Ext.form.Action.CONNECT_FAILURE;
+ this.form.afterAction(this, false);
+ },
+
+ processResponse : function(response){
+ this.response = response;
+ if(!response.responseText){
+ return true;
+ }
+ this.result = this.handleResponse(response);
+ return this.result;
+ },
+
+ getUrl : function(appendParams){
+ var url = this.options.url || this.form.url || this.form.el.dom.action;
+ if(appendParams){
+ var p = this.getParams();
+ if(p){
+ url += (url.indexOf('?') != -1 ? '&' : '?') + p;
+ }
+ }
+ return url;
+ },
+
+ getMethod : function(){
+ return (this.options.method || this.form.method || this.form.el.dom.method || 'POST').toUpperCase();
+ },
+
+ getParams : function(){
+ var bp = this.form.baseParams;
+ var p = this.options.params;
+ if(p){
+ if(typeof p == "object"){
+ p = Ext.urlEncode(Ext.applyIf(p, bp));
+ }else if(typeof p == 'string' && bp){
+ p += '&' + Ext.urlEncode(bp);
+ }
+ }else if(bp){
+ p = Ext.urlEncode(bp);
+ }
+ return p;
+ },
+
+ createCallback : function(){
+ return {
+ success: this.success,
+ failure: this.failure,
+ scope: this,
+ timeout: (this.form.timeout*1000),
+ upload: this.form.fileUpload ? this.success : undefined
+ };
+ }
+};
+
+
+Ext.form.Action.Submit = function(form, options){
+ Ext.form.Action.Submit.superclass.constructor.call(this, form, options);
+};
+
+Ext.extend(Ext.form.Action.Submit, Ext.form.Action, {
+
+ type : 'submit',
+
+ run : function(){
+ var o = this.options;
+ var method = this.getMethod();
+ var isPost = method == 'POST';
+ if(o.clientValidation === false || this.form.isValid()){
+ Ext.Ajax.request(Ext.apply(this.createCallback(), {
+ form:this.form.el.dom,
+ url:this.getUrl(!isPost),
+ method: method,
+ params:isPost ? this.getParams() : null,
+ isUpload: this.form.fileUpload
+ }));
+
+ }else if (o.clientValidation !== false){ this.failureType = Ext.form.Action.CLIENT_INVALID;
+ this.form.afterAction(this, false);
+ }
+ },
+
+ success : function(response){
+ var result = this.processResponse(response);
+ if(result === true || result.success){
+ this.form.afterAction(this, true);
+ return;
+ }
+ if(result.errors){
+ this.form.markInvalid(result.errors);
+ this.failureType = Ext.form.Action.SERVER_INVALID;
+ }
+ this.form.afterAction(this, false);
+ },
+
+ handleResponse : function(response){
+ if(this.form.errorReader){
+ var rs = this.form.errorReader.read(response);
+ var errors = [];
+ if(rs.records){
+ for(var i = 0, len = rs.records.length; i < len; i++) {
+ var r = rs.records[i];
+ errors[i] = r.data;
+ }
+ }
+ if(errors.length < 1){
+ errors = null;
+ }
+ return {
+ success : rs.success,
+ errors : errors
+ };
+ }
+ return Ext.decode(response.responseText);
+ }
+});
+
+
+
+Ext.form.Action.Load = function(form, options){
+ Ext.form.Action.Load.superclass.constructor.call(this, form, options);
+ this.reader = this.form.reader;
+};
+
+Ext.extend(Ext.form.Action.Load, Ext.form.Action, {
+ type : 'load',
+
+ run : function(){
+ Ext.Ajax.request(Ext.apply(
+ this.createCallback(), {
+ method:this.getMethod(),
+ url:this.getUrl(false),
+ params:this.getParams()
+ }));
+ },
+
+ success : function(response){
+ var result = this.processResponse(response);
+ if(result === true || !result.success || !result.data){
+ this.failureType = Ext.form.Action.LOAD_FAILURE;
+ this.form.afterAction(this, false);
+ return;
+ }
+ this.form.clearInvalid();
+ this.form.setValues(result.data);
+ this.form.afterAction(this, true);
+ },
+
+ handleResponse : function(response){
+ if(this.form.reader){
+ var rs = this.form.reader.read(response);
+ var data = rs.records && rs.records[0] ? rs.records[0].data : null;
+ return {
+ success : rs.success,
+ data : data
+ };
+ }
+ return Ext.decode(response.responseText);
+ }
+});
+
+Ext.form.Action.ACTION_TYPES = {
+ 'load' : Ext.form.Action.Load,
+ 'submit' : Ext.form.Action.Submit
+};
+
+
+Ext.form.VTypes = function(){
+ var alpha = /^[a-zA-Z_]+$/;
+ var alphanum = /^[a-zA-Z0-9_]+$/;
+ var email = /^([\w]+)(.[\w]+)*(a)([\w-]+\.){1,5}([A-Za-z]){2,4}$/;
+ var url = /(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
+
+ return {
+
+ 'email' : function(v){
+ return email.test(v);
+ },
+
+ 'emailText' : 'This field should be an e-mail address in the format "user(a)domain.com"',
+
+ 'emailMask' : /[a-z0-9_\.\-@]/i,
+
+
+ 'url' : function(v){
+ return url.test(v);
+ },
+
+ 'urlText' : 'This field should be a URL in the format "http:/'+'/www.domain.com"',
+
+
+ 'alpha' : function(v){
+ return alpha.test(v);
+ },
+
+ 'alphaText' : 'This field should only contain letters and _',
+
+ 'alphaMask' : /[a-z_]/i,
+
+
+ 'alphanum' : function(v){
+ return alphanum.test(v);
+ },
+
+ 'alphanumText' : 'This field should only contain letters, numbers and _',
+
+ 'alphanumMask' : /[a-z0-9_]/i
+ };
+}();
+
+Ext.grid.GridPanel = Ext.extend(Ext.Panel, {
+ elements:'body',
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ddText : "{0} selected row{1}",
+
+ minColumnWidth : 25,
+
+ monitorWindowResize : true,
+
+ maxRowsToMeasure : 0,
+
+ trackMouseOver : true,
+
+ enableDragDrop : false,
+
+ enableColumnMove : true,
+
+ enableColumnHide : true,
+
+ enableHdMenu : true,
+
+ enableRowHeightSync : false,
+
+ stripeRows : true,
+
+ autoExpandColumn : false,
+
+ autoExpandMin : 50,
+
+ autoExpandMax : 1000,
+
+ view : null,
+
+ loadMask : false,
+
+
+ rendered : false,
+
+ viewReady: false,
+
+ stateEvents: ["columnmove", "columnresize", "sortchange"],
+
+
+ initComponent : function(){
+ Ext.grid.GridPanel.superclass.initComponent.call(this);
+
+ if(this.columns && (this.columns instanceof Array)){
+ this.colModel = new Ext.grid.ColumnModel(this.columns);
+ delete this.columns;
+ }
+
+
+ if(this.ds){
+ this.store = this.ds;
+ delete this.ds;
+ }
+ if(this.cm){
+ this.colModel = this.cm;
+ delete this.cm;
+ }
+ if(this.sm){
+ this.selModel = this.sm;
+ delete this.sm;
+ }
+ this.store = Ext.StoreMgr.lookup(this.store);
+
+ this.addEvents({
+
+
+ "click" : true,
+
+ "dblclick" : true,
+
+ "contextmenu" : true,
+
+ "mousedown" : true,
+
+ "mouseup" : true,
+
+ "mouseover" : true,
+
+ "mouseout" : true,
+
+ "keypress" : true,
+
+ "keydown" : true,
+
+
+
+ "cellmousedown" : true,
+
+ "rowmousedown" : true,
+
+ "headermousedown" : true,
+
+
+ "cellclick" : true,
+
+ "celldblclick" : true,
+
+ "rowclick" : true,
+
+ "rowdblclick" : true,
+
+ "headerclick" : true,
+
+ "headerdblclick" : true,
+
+ "rowcontextmenu" : true,
+
+ "cellcontextmenu" : true,
+
+ "headercontextmenu" : true,
+
+ "bodyscroll" : true,
+
+ "columnresize" : true,
+
+ "columnmove" : true,
+
+ "sortchange" : true
+ });
+ },
+
+
+ onRender : function(ct, position){
+ Ext.grid.GridPanel.superclass.onRender.apply(this, arguments);
+
+ var c = this.body;
+
+ this.el.addClass('x-grid-panel');
+
+ var view = this.getView();
+ view.init(this);
+
+ c.on("mousedown", this.onMouseDown, this);
+ c.on("click", this.onClick, this);
+ c.on("dblclick", this.onDblClick, this);
+ c.on("contextmenu", this.onContextMenu, this);
+ c.on("keydown", this.onKeyDown, this);
+
+ this.relayEvents(c, ["mousedown","mouseup","mouseover","mouseout","keypress"]);
+
+ this.getSelectionModel().init(this);
+ this.view.render();
+ },
+
+
+ initEvents : function(){
+ Ext.grid.GridPanel.superclass.initEvents.call(this);
+
+ if(this.loadMask){
+ this.loadMask = new Ext.LoadMask(this.bwrap,
+ Ext.apply({store:this.store}, this.loadMask));
+ }
+ },
+
+ initStateEvents : function(){
+ Ext.grid.GridPanel.superclass.initStateEvents.call(this);
+ this.colModel.on('hiddenchange', this.saveState, this, {delay: 100});
+ },
+
+ applyState : function(state){
+ var cm = this.colModel;
+ var cs = state.columns;
+ if(cs){
+ for(var i = 0, len = cs.length; i < len; i++){
+ var s = cs[i];
+ var c = cm.getColumnById(s.id);
+ if(c){
+ c.hidden = s.hidden;
+ c.width = s.width;
+ var oldIndex = cm.getIndexById(s.id);
+ if(oldIndex != i){
+ cm.moveColumn(oldIndex, i);
+ }
+ }
+ }
+ }
+ if(state.sort){
+ this.store.sort(state.sort.field, state.sort.direction);
+ }
+ },
+
+ getState : function(){
+ var o = {columns: []};
+ for(var i = 0, c; c = this.colModel.config[i]; i++){
+ o.columns[i] = {
+ id: c.id,
+ width: c.width
+ };
+ if(c.hidden){
+ o.columns[i].hidden = true;
+ }
+ }
+ var ss = this.store.getSortState();
+ if(ss){
+ o.sort = ss;
+ }
+ return o;
+ },
+
+
+ afterRender : function(){
+ Ext.grid.GridPanel.superclass.afterRender.call(this);
+ this.view.layout();
+ this.viewReady = true;
+ },
+
+
+ reconfigure : function(store, colModel){
+ if(this.loadMask){
+ this.loadMask.destroy();
+ this.loadMask = new Ext.LoadMask(this.body,
+ Ext.apply({store:store}, this.loadMask));
+ }
+ this.view.bind(store, colModel);
+ this.store = store;
+ this.colModel = colModel;
+ if(this.rendered){
+ this.view.refresh(true);
+ }
+ },
+
+
+ onKeyDown : function(e){
+ this.fireEvent("keydown", e);
+ },
+
+
+ onDestroy : function(){
+ if(this.rendered){
+ if(this.loadMask){
+ this.loadMask.destroy();
+ }
+ var c = this.body;
+ c.removeAllListeners();
+ this.view.destroy();
+ c.update("");
+ }
+ this.colModel.purgeListeners();
+ Ext.grid.GridPanel.superclass.onDestroy.call(this);
+ },
+
+
+ processEvent : function(name, e){
+ this.fireEvent(name, e);
+ var t = e.getTarget();
+ var v = this.view;
+ var header = v.findHeaderIndex(t);
+ if(header !== false){
+ this.fireEvent("header" + name, this, header, e);
+ }else{
+ var row = v.findRowIndex(t);
+ var cell = v.findCellIndex(t);
+ if(row !== false){
+ this.fireEvent("row" + name, this, row, e);
+ if(cell !== false){
+ this.fireEvent("cell" + name, this, row, cell, e);
+ }
+ }
+ }
+ },
+
+
+ onClick : function(e){
+ this.processEvent("click", e);
+ },
+
+
+ onMouseDown : function(e){
+ this.processEvent("mousedown", e);
+ },
+
+
+ onContextMenu : function(e, t){
+ this.processEvent("contextmenu", e);
+ },
+
+
+ onDblClick : function(e){
+ this.processEvent("dblclick", e);
+ },
+
+
+ walkCells : function(row, col, step, fn, scope){
+ var cm = this.colModel, clen = cm.getColumnCount();
+ var ds = this.store, rlen = ds.getCount(), first = true;
+ if(step < 0){
+ if(col < 0){
+ row--;
+ first = false;
+ }
+ while(row >= 0){
+ if(!first){
+ col = clen-1;
+ }
+ first = false;
+ while(col >= 0){
+ if(fn.call(scope || this, row, col, cm) === true){
+ return [row, col];
+ }
+ col--;
+ }
+ row--;
+ }
+ } else {
+ if(col >= clen){
+ row++;
+ first = false;
+ }
+ while(row < rlen){
+ if(!first){
+ col = 0;
+ }
+ first = false;
+ while(col < clen){
+ if(fn.call(scope || this, row, col, cm) === true){
+ return [row, col];
+ }
+ col++;
+ }
+ row++;
+ }
+ }
+ return null;
+ },
+
+
+ getSelections : function(){
+ return this.selModel.getSelections();
+ },
+
+
+ onResize : function(){
+ Ext.grid.GridPanel.superclass.onResize.apply(this, arguments);
+ if(this.viewReady){
+ this.view.layout();
+ }
+ },
+
+
+ getGridEl : function(){
+ return this.body;
+ },
+
+
+ stopEditing : function(){},
+
+
+ getSelectionModel : function(){
+ if(!this.selModel){
+ this.selModel = new Ext.grid.RowSelectionModel(
+ this.disableSelection ? {selectRow: Ext.emptyFn} : null);
+ }
+ return this.selModel;
+ },
+
+
+ getStore : function(){
+ return this.store;
+ },
+
+
+ getColumnModel : function(){
+ return this.colModel;
+ },
+
+
+ getView : function(){
+ if(!this.view){
+ this.view = new Ext.grid.GridView(this.viewConfig);
+ }
+ return this.view;
+ },
+
+ getDragDropText : function(){
+ var count = this.selModel.getCount();
+ return String.format(this.ddText, count, count == 1 ? '' : 's');
+ }
+});
+Ext.reg('grid', Ext.grid.GridPanel);
+
+
+Ext.grid.GridView = function(config){
+ Ext.apply(this, config);
+ this.addEvents({
+ "beforerowremoved" : true,
+ "beforerowsinserted" : true,
+ "beforerefresh" : true,
+ "rowremoved" : true,
+ "rowsinserted" : true,
+ "rowupdated" : true,
+ "refresh" : true
+ });
+ Ext.grid.GridView.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.grid.GridView, Ext.util.Observable, {
+
+
+
+ scrollOffset: 19,
+
+ autoFill: false,
+
+ forceFit: false,
+
+ sortClasses : ["sort-asc", "sort-desc"],
+
+ sortAscText : "Sort Ascending",
+
+ sortDescText : "Sort Descending",
+
+ columnsText : "Columns",
+
+ borderWidth: 2,
+
+
+
+ initTemplates : function(){
+ var ts = this.templates || {};
+ if(!ts.master){
+ ts.master = new Ext.Template(
+ '<div class="x-grid3" hidefocus="true">',
+ '<div class="x-grid3-viewport">',
+ '<div class="x-grid3-header"><div class="x-grid3-header-inner"><div class="x-grid3-header-offset">{header}</div></div><div class="x-clear"></div></div>',
+ '<div class="x-grid3-scroller"><div class="x-grid3-body">{body}</div><a href="#" class="x-grid3-focus" tabIndex="-1"></a></div>',
+ "</div>",
+ '<div class="x-grid3-resize-marker"> </div>',
+ '<div class="x-grid3-resize-proxy"> </div>',
+ "</div>"
+ );
+ }
+
+ if(!ts.header){
+ ts.header = new Ext.Template(
+ '<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
+ '<thead><tr class="x-grid3-hd-row">{cells}</tr></thead>',
+ "</table>"
+ );
+ }
+
+ if(!ts.hcell){
+ ts.hcell = new Ext.Template(
+ '<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id}" style="{style}"><div {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">', this.grid.enableHdMenu ? '<a class="x-grid3-hd-btn" href="#"></a>' : '',
+ '{value}<img class="x-grid3-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" />',
+ "</div></td>"
+ );
+ }
+
+ if(!ts.body){
+ ts.body = new Ext.Template('{rows}');
+ }
+
+ if(!ts.row){
+ ts.row = new Ext.Template(
+ '<div class="x-grid3-row {alt}" style="{tstyle}"><table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
+ '<tbody><tr>{cells}</tr>',
+ (this.enableRowBody ? '<tr class="x-grid3-row-body-tr" style="{bodyStyle}"><td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on"><div class="x-grid3-row-body">{body}</div></td></tr>' : ''),
+ '</tbody></table></div>'
+ );
+ }
+
+ if(!ts.cell){
+ ts.cell = new Ext.Template(
+ '<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>',
+ '<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',
+ "</td>"
+ );
+ }
+
+ for(var k in ts){
+ var t = ts[k];
+ if(t && typeof t.compile == 'function' && !t.compiled){
+ t.disableFormats = true;
+ t.compile();
+ }
+ }
+
+ this.templates = ts;
+
+ this.tdClass = 'x-grid3-cell';
+ this.cellSelector = 'td.x-grid3-cell';
+ this.hdCls = 'x-grid3-hd';
+ this.rowSelector = 'div.x-grid3-row';
+ this.colRe = new RegExp("x-grid3-td-([^\\s]+)", "");
+ },
+
+ fly : function(el){
+ if(!this._flyweight){
+ this._flyweight = new Ext.Element.Flyweight(document.body);
+ }
+ this._flyweight.dom = el;
+ return this._flyweight;
+ },
+
+ getEditorParent : function(ed){
+ return this.scroller.dom;
+ },
+
+ initElements : function(){
+ var E = Ext.Element;
+
+ var el = this.grid.getGridEl().dom.firstChild;
+ var cs = el.childNodes;
+
+ this.el = new E(el);
+
+ this.mainWrap = new E(cs[0]);
+ this.mainHd = new E(this.mainWrap.dom.firstChild);
+ this.innerHd = this.mainHd.dom.firstChild;
+ this.scroller = new E(this.mainWrap.dom.childNodes[1]);
+ if(this.forceFit){
+ this.scroller.setStyle('overflow-x', 'hidden');
+ }
+ this.mainBody = new E(this.scroller.dom.firstChild);
+
+ this.focusEl = new E(this.scroller.dom.childNodes[1]);
+ this.focusEl.swallowEvent("click", true);
+
+ this.resizeMarker = new E(cs[1]);
+ this.resizeProxy = new E(cs[2]);
+ },
+
+ getRows : function(){
+ return this.hasRows() ? this.mainBody.dom.childNodes : [];
+ },
+
+
+ findCell : function(el){
+ if(!el){
+ return false;
+ }
+ return this.fly(el).findParent(this.cellSelector, 3);
+ },
+
+ findCellIndex : function(el, requiredCls){
+ var cell = this.findCell(el);
+ if(cell && (!requiredCls || this.fly(cell).hasClass(requiredCls))){
+ return this.getCellIndex(cell);
+ }
+ return false;
+ },
+
+ getCellIndex : function(el){
+ if(el){
+ var m = el.className.match(this.colRe);
+ if(m && m[1]){
+ return this.cm.getIndexById(m[1]);
+ }
+ }
+ return false;
+ },
+
+ findHeaderCell : function(el){
+ var cell = this.findCell(el);
+ return cell && this.fly(cell).hasClass(this.hdCls) ? cell : null;
+ },
+
+ findHeaderIndex : function(el){
+ return this.findCellIndex(el, this.hdCls);
+ },
+
+ findRow : function(el){
+ if(!el){
+ return false;
+ }
+ return this.fly(el).findParent(this.rowSelector, 10);
+ },
+
+ findRowIndex : function(el){
+ var r = this.findRow(el);
+ return r ? r.rowIndex : false;
+ },
+
+
+
+ getRow : function(row){
+ return this.getRows()[row];
+ },
+
+
+ getCell : function(row, col){
+ return this.getRow(row).getElementsByTagName('td')[col];
+ },
+
+
+ getHeaderCell : function(index){
+ return this.mainHd.dom.getElementsByTagName('td')[index];
+ },
+
+
+ addRowClass : function(row, cls){
+ var r = this.getRow(row);
+ if(r){
+ this.fly(r).addClass(cls);
+ }
+ },
+
+ removeRowClass : function(row, cls){
+ var r = this.getRow(row);
+ if(r){
+ this.fly(r).removeClass(cls);
+ }
+ },
+
+ removeRow : function(row){
+ Ext.removeNode(this.getRow(row));
+ },
+
+ removeRows : function(firstRow, lastRow){
+ var bd = this.mainBody.dom;
+ for(var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++){
+ Ext.removeNode(bd.childNodes[firstRow]);
+ }
+ },
+
+
+ getScrollState : function(){
+ var sb = this.scroller.dom;
+ return {left: sb.scrollLeft, top: sb.scrollTop};
+ },
+
+ restoreScroll : function(state){
+ var sb = this.scroller.dom;
+ sb.scrollLeft = state.left;
+ sb.scrollTop = state.top;
+ },
+
+
+ scrollToTop : function(){
+ this.scroller.dom.scrollTop = 0;
+ this.scroller.dom.scrollLeft = 0;
+ },
+
+ syncScroll : function(){
+ var mb = this.scroller.dom;
+ this.innerHd.scrollLeft = mb.scrollLeft;
+ this.grid.fireEvent("bodyscroll", mb.scrollLeft, mb.scrollTop);
+ },
+
+ updateSortIcon : function(col, dir){
+ var sc = this.sortClasses;
+ var hds = this.mainHd.select('td').removeClass(sc);
+ hds.item(col).addClass(sc[dir == "DESC" ? 1 : 0]);
+ },
+
+ updateAllColumnWidths : function(){
+ var tw = this.getTotalWidth();
+ var clen = this.cm.getColumnCount();
+ var ws = [];
+ for(var i = 0; i < clen; i++){
+ ws[i] = this.getColumnWidth(i);
+ }
+
+ this.innerHd.firstChild.firstChild.style.width = tw;
+
+ for(var i = 0; i < clen; i++){
+ var hd = this.getHeaderCell(i);
+ hd.style.width = ws[i];
+ }
+
+ var ns = this.getRows();
+ for(var i = 0, len = ns.length; i < len; i++){
+ ns[i].style.width = tw;
+ ns[i].firstChild.style.width = tw;
+ var row = ns[i].firstChild.rows[0];
+ for(var j = 0; j < clen; j++){
+ row.childNodes[j].style.width = ws[j];
+ }
+ }
+
+ this.onAllColumnWidthsUpdated(ws, tw);
+ },
+
+ updateColumnWidth : function(col, width){
+ var w = this.getColumnWidth(col);
+ var tw = this.getTotalWidth();
+
+ this.innerHd.firstChild.firstChild.style.width = tw;
+ var hd = this.getHeaderCell(col);
+ hd.style.width = w;
+
+ var ns = this.getRows();
+ for(var i = 0, len = ns.length; i < len; i++){
+ ns[i].style.width = tw;
+ ns[i].firstChild.style.width = tw;
+ ns[i].firstChild.rows[0].childNodes[col].style.width = w;
+ }
+
+ this.onColumnWidthUpdated(col, w, tw);
+ },
+
+ updateColumnHidden : function(col, hidden){
+ var tw = this.getTotalWidth();
+
+ this.innerHd.firstChild.firstChild.style.width = tw;
+
+ var display = hidden ? 'none' : '';
+
+ var hd = this.getHeaderCell(col);
+ hd.style.display = display;
+
+ var ns = this.getRows();
+ for(var i = 0, len = ns.length; i < len; i++){
+ ns[i].style.width = tw;
+ ns[i].firstChild.style.width = tw;
+ ns[i].firstChild.rows[0].childNodes[col].style.display = display;
+ }
+
+ this.onColumnHiddenUpdated(col, hidden, tw);
+
+ delete this.lastViewWidth; this.layout();
+ },
+
+ doRender : function(cs, rs, ds, startRow, colCount, stripe){
+ var ts = this.templates, ct = ts.cell, rt = ts.row, last = colCount-1;
+ var tstyle = 'width:'+this.getTotalWidth()+';';
+ var buf = [], cb, c, p = {}, rp = {tstyle: tstyle}, r;
+ for(var j = 0, len = rs.length; j < len; j++){
+ r = rs[j]; cb = [];
+ var rowIndex = (j+startRow);
+ for(var i = 0; i < colCount; i++){
+ c = cs[i];
+ p.id = c.id;
+ p.css = i == 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : '');
+ p.attr = p.cellAttr = "";
+ p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds);
+ p.style = c.style;
+ if(p.value == undefined || p.value === "") p.value = " ";
+ if(r.dirty && typeof r.modified[c.name] !== 'undefined'){
+ p.css += ' x-grid3-dirty-cell';
+ }
+ cb[cb.length] = ct.apply(p);
+ }
+ var alt = [];
+ if(stripe && ((rowIndex+1) % 2 == 0)){
+ alt[0] = "x-grid3-row-alt";
+ }
+ if(r.dirty){
+ alt[1] = " x-grid3-dirty-row";
+ }
+ rp.cols = colCount;
+ if(this.getRowClass){
+ alt[2] = this.getRowClass(r, rowIndex, rp, ds);
+ }
+ rp.alt = alt.join(" ");
+ rp.cells = cb.join("");
+ buf[buf.length] = rt.apply(rp);
+ }
+ return buf.join("");
+ },
+
+ processRows : function(startRow, skipStripe){
+ if(this.ds.getCount() < 1){
+ return;
+ }
+ skipStripe = skipStripe || !this.grid.stripeRows;
+ startRow = startRow || 0;
+ var rows = this.getRows();
+ var cls = ' x-grid3-row-alt ';
+ for(var i = startRow, len = rows.length; i < len; i++){
+ var row = rows[i];
+ row.rowIndex = i;
+ if(!skipStripe){
+ var isAlt = ((i+1) % 2 == 0);
+ var hasAlt = (' '+row.className + ' ').indexOf(cls) != -1;
+ if(isAlt == hasAlt){
+ continue;
+ }
+ if(isAlt){
+ row.className += " x-grid3-row-alt";
+ }else{
+ row.className = row.className.replace("x-grid3-row-alt", "");
+ }
+ }
+ }
+ },
+
+ renderUI : function(){
+
+ var header = this.renderHeaders();
+ var body = this.templates.body.apply({rows:''});
+
+
+ var html = this.templates.master.apply({
+ body: body,
+ header: header
+ });
+
+ var g = this.grid;
+
+ g.getGridEl().dom.innerHTML = html;
+
+ this.initElements();
+
+
+ this.mainBody.dom.innerHTML = this.renderRows();
+ this.processRows(0, true);
+
+
+ Ext.fly(this.innerHd).on("click", this.handleHdDown, this);
+ this.mainHd.on("mouseover", this.handleHdOver, this);
+ this.mainHd.on("mouseout", this.handleHdOut, this);
+ this.mainHd.on("mousemove", this.handleHdMove, this);
+
+ this.scroller.on('scroll', this.syncScroll, this);
+ if(g.enableColumnResize !== false){
+ new Ext.grid.GridView.SplitDragZone(g, this.mainHd.dom);
+ }
+
+ if(g.enableColumnMove){
+ this.columnDrag = new Ext.grid.GridView.ColumnDragZone(g, this.innerHd);
+ this.columnDrop = new Ext.grid.HeaderDropZone(g, this.mainHd.dom);
+ }
+
+ if(g.enableHdMenu !== false){
+ if(g.enableColumnHide !== false){
+ this.colMenu = new Ext.menu.Menu({id:g.id + "-hcols-menu"});
+ this.colMenu.on("beforeshow", this.beforeColMenuShow, this);
+ this.colMenu.on("itemclick", this.handleHdMenuClick, this);
+ }
+ this.hmenu = new Ext.menu.Menu({id: g.id + "-hctx"});
+ this.hmenu.add(
+ {id:"asc", text: this.sortAscText, cls: "xg-hmenu-sort-asc"},
+ {id:"desc", text: this.sortDescText, cls: "xg-hmenu-sort-desc"}
+ );
+ if(g.enableColumnHide !== false){
+ this.hmenu.add('-',
+ {id:"columns", text: this.columnsText, menu: this.colMenu, iconCls: 'x-cols-icon'}
+ );
+ }
+ this.hmenu.on("itemclick", this.handleHdMenuClick, this);
+
+ }
+
+ if(g.enableDragDrop || g.enableDrag){
+ var dd = new Ext.grid.GridDragZone(g, {
+ ddGroup : g.ddGroup || 'GridDD'
+ });
+ }
+
+ this.updateHeaderSortState();
+
+ },
+
+ layout : function(){
+ if(!this.mainBody){
+ return; }
+ var g = this.grid;
+ var c = g.getGridEl(), cm = this.cm,
+ expandCol = g.autoExpandColumn,
+ gv = this;
+
+ var csize = c.getSize(true);
+ var vw = csize.width;
+
+ if(vw < 20 || csize.height < 20){ return;
+ }
+
+ if(g.autoHeight){
+ this.scroller.dom.style.overflow = 'visible';
+ }else{
+ this.el.setSize(csize.width, csize.height);
+
+ var hdHeight = this.mainHd.getHeight();
+ var vh = csize.height - (hdHeight);
+
+ this.scroller.setSize(vw, vh);
+ if(this.innerHd){
+ this.innerHd.style.width = (vw)+'px';
+ }
+ }
+ if(this.forceFit){
+ if(this.lastViewWidth != vw){
+ this.fitColumns(false, false);
+ this.lastViewWidth = vw;
+ }
+ }else {
+ this.autoExpand();
+ }
+ this.onLayout(vw, vh);
+ },
+
+ onLayout : function(vw, vh){
+ },
+
+ onColumnWidthUpdated : function(col, w, tw){
+
+ },
+
+ onAllColumnWidthsUpdated : function(ws, tw){
+
+ },
+
+ onColumnHiddenUpdated : function(col, hidden, tw){
+
+ },
+
+ updateColumnText : function(col, text){
+
+ },
+
+ afterMove : function(colIndex){
+ },
+
+
+ init: function(grid){
+ this.grid = grid;
+
+ this.initTemplates();
+ this.initData(grid.store, grid.colModel);
+ this.initUI(grid);
+ },
+
+ getColumnId : function(index){
+ return this.cm.getColumnId(index);
+ },
+
+ renderHeaders : function(){
+ var cm = this.cm, ts = this.templates;
+ var ct = ts.hcell;
+
+ var cb = [], sb = [], p = {};
+
+ for(var i = 0, len = cm.getColumnCount(); i < len; i++){
+ p.id = cm.getColumnId(i);
+ p.value = cm.getColumnHeader(i) || "";
+ p.style = this.getColumnStyle(i, true);
+ if(cm.config[i].align == 'right'){
+ p.istyle = 'padding-right:16px';
+ }
+ cb[cb.length] = ct.apply(p);
+ }
+ return ts.header.apply({cells: cb.join(""), tstyle:'width:'+this.getTotalWidth()+';'});
+ },
+
+ beforeUpdate : function(){
+ this.grid.stopEditing();
+ },
+
+ updateHeaders : function(){
+ this.innerHd.firstChild.innerHTML = this.renderHeaders();
+ },
+
+
+ focusRow : function(row){
+ this.focusCell(row, 0, false);
+ },
+
+
+ focusCell : function(row, col, hscroll){
+ var el = this.ensureVisible(row, col, hscroll);
+ if(el){
+ this.focusEl.alignTo(el, "tl-tl");
+ if(Ext.isGecko){
+ this.focusEl.focus();
+ }else{
+ this.focusEl.focus.defer(1, this.focusEl);
+ }
+ }
+ },
+
+ ensureVisible : function(row, col, hscroll){
+ if(typeof row != "number"){
+ row = row.rowIndex;
+ }
+ if(row < 0 || row >= this.ds.getCount()){
+ return;
+ }
+ col = (col !== undefined ? col : 0);
+
+ var rowEl = this.getRow(row), cellEl;
+ if(!(hscroll === false && col === 0)){
+ while(this.cm.isHidden(col)){
+ col++;
+ }
+ cellEl = this.getCell(row, col);
+ }
+ if(!rowEl){
+ return;
+ }
+
+ var c = this.scroller.dom;
+
+ var ctop = 0;
+ var p = rowEl, stop = this.el.dom;
+ while(p && p != stop){
+ ctop += p.offsetTop;
+ p = p.offsetParent;
+ }
+ ctop -= this.mainHd.dom.offsetHeight;
+
+ var cbot = ctop + rowEl.offsetHeight;
+
+ var ch = c.clientHeight;
+ var stop = parseInt(c.scrollTop, 10);
+ var sbot = stop + ch;
+
+ if(ctop < stop){
+ c.scrollTop = ctop;
+ }else if(cbot > sbot){
+ c.scrollTop = cbot-ch;
+ }
+
+ if(hscroll !== false){
+ var cleft = parseInt(cellEl.offsetLeft, 10);
+ var cright = cleft + cellEl.offsetWidth;
+
+ var sleft = parseInt(c.scrollLeft, 10);
+ var sright = sleft + c.clientWidth;
+ if(cleft < sleft){
+ c.scrollLeft = cleft;
+ }else if(cright > sright){
+ c.scrollLeft = cright-c.clientWidth;
+ }
+ }
+ return cellEl || rowEl;
+ },
+
+ insertRows : function(dm, firstRow, lastRow, isUpdate){
+ if(firstRow == 0 && lastRow == dm.getCount()-1){
+ this.refresh();
+ }else{
+ if(!isUpdate){
+ this.fireEvent("beforerowsinserted", this, firstRow, lastRow);
+ }
+ var html = this.renderRows(firstRow, lastRow);
+ var before = this.getRow(firstRow);
+ if(before){
+ Ext.DomHelper.insertHtml('beforeBegin', before, html);
+ }else{
+ Ext.DomHelper.insertHtml('beforeEnd', this.mainBody.dom, html);
+ }
+ if(!isUpdate){
+ this.fireEvent("rowsinserted", this, firstRow, lastRow);
+ this.processRows(firstRow);
+ }
+ }
+ },
+
+ deleteRows : function(dm, firstRow, lastRow){
+ if(dm.getRowCount()<1){
+ this.refresh();
+ }else{
+ this.fireEvent("beforerowsdeleted", this, firstRow, lastRow);
+
+ this.removeRows(firstRow, lastRow);
+
+ this.processRows(firstRow);
+ this.fireEvent("rowsdeleted", this, firstRow, lastRow);
+ }
+ },
+
+ getColumnStyle : function(col, isHeader){
+ var style = !isHeader ? (this.cm.config[col].css || '') : '';
+ style += 'width:'+this.getColumnWidth(col)+';';
+ if(this.cm.isHidden(col)){
+ style += 'display:none;';
+ }
+ var align = this.cm.config[col].align;
+ if(align){
+ style += 'text-align:'+align+';';
+ }
+ return style;
+ },
+
+ getColumnWidth : function(col){
+ var w = this.cm.getColumnWidth(col);
+ if(typeof w == 'number'){
+ return (Ext.isBorderBox ? w : (w-this.borderWidth > 0 ? w-this.borderWidth:0)) + 'px';
+ }
+ return w;
+ },
+
+ getTotalWidth : function(){
+ return this.cm.getTotalWidth()+'px';
+ },
+
+ fitColumns : function(preventRefresh, onlyExpand, omitColumn){
+ var cm = this.cm, leftOver, dist, i;
+ var tw = cm.getTotalWidth(false);
+ var aw = this.grid.getGridEl().getWidth(true)-this.scrollOffset;
+
+ if(aw < 20){ return;
+ }
+ var extra = aw - tw;
+
+ if(extra === 0){
+ return false;
+ }
+
+ var vc = cm.getColumnCount(true);
+ var ac = vc-(typeof omitColumn == 'number' ? 1 : 0);
+ if(ac === 0){
+ ac = 1;
+ omitColumn = undefined;
+ }
+ var colCount = cm.getColumnCount();
+ var cols = [];
+ var extraCol = 0;
+ var width = 0;
+ var w;
+ for (i = 0; i < colCount; i++){
+ if(!cm.isHidden(i) && !cm.isFixed(i) && i !== omitColumn){
+ w = cm.getColumnWidth(i);
+ cols.push(i);
+ extraCol = i;
+ cols.push(w);
+ width += w;
+ }
+ }
+ var frac = (aw - cm.getTotalWidth())/width;
+ while (cols.length){
+ w = cols.pop();
+ i = cols.pop();
+ cm.setColumnWidth(i, Math.max(this.grid.minColumnWidth, Math.floor(w + w*frac)), true);
+ }
+
+ if((tw = cm.getTotalWidth(false)) > aw){
+ var adjustCol = ac != vc ? omitColumn : extraCol;
+ cm.setColumnWidth(adjustCol, Math.max(1,
+ cm.getColumnWidth(adjustCol)- (tw-aw)), true);
+ }
+
+ if(preventRefresh !== true){
+ this.updateAllColumnWidths();
+ }
+
+
+ return true;
+ },
+
+ autoExpand : function(preventUpdate){
+ var g = this.grid, cm = this.cm;
+ if(!this.userResized && g.autoExpandColumn){
+ var tw = cm.getTotalWidth(false);
+ var aw = this.grid.getGridEl().getWidth(true)-this.scrollOffset;
+ if(tw != aw){
+ var ci = cm.getIndexById(g.autoExpandColumn);
+ var currentWidth = cm.getColumnWidth(ci);
+ var cw = Math.min(Math.max(((aw-tw)+currentWidth), g.autoExpandMin), g.autoExpandMax);
+ if(cw != currentWidth){
+ cm.setColumnWidth(ci, cw, true);
+ if(preventUpdate !== true){
+ this.updateColumnWidth(ci, cw);
+ }
+ }
+ }
+
+ }
+ },
+
+ getColumnData : function(){
+ var cs = [], cm = this.cm, colCount = cm.getColumnCount();
+ for(var i = 0; i < colCount; i++){
+ var name = cm.getDataIndex(i);
+ cs[i] = {
+ name : (typeof name == 'undefined' ? this.ds.fields.get(i).name : name),
+ renderer : cm.getRenderer(i),
+ id : cm.getColumnId(i),
+ style : this.getColumnStyle(i)
+ };
+ }
+ return cs;
+ },
+
+ renderRows : function(startRow, endRow){
+ var g = this.grid, cm = g.colModel, ds = g.store, stripe = g.stripeRows;
+ var colCount = cm.getColumnCount();
+
+ if(ds.getCount() < 1){
+ return "";
+ }
+
+ var cs = this.getColumnData();
+
+ startRow = startRow || 0;
+ endRow = typeof endRow == "undefined"? ds.getCount()-1 : endRow;
+
+ var rs = ds.getRange(startRow, endRow);
+
+ return this.doRender(cs, rs, ds, startRow, colCount, stripe);
+ },
+
+ renderBody : function(){
+ var markup = this.renderRows();
+ return this.templates.body.apply({rows: markup});
+ },
+
+ refreshRow : function(record){
+ var ds = this.ds, index;
+ if(typeof record == 'number'){
+ index = record;
+ record = ds.getAt(index);
+ }else{
+ index = ds.indexOf(record);
+ }
+ var cls = [];
+ this.insertRows(ds, index, index, true);
+ this.getRow(index).rowIndex = index;
+ this.onRemove(ds, record, index+1, true);
+ this.fireEvent("rowupdated", this, index, record);
+ },
+
+
+ refresh : function(headersToo){
+ this.fireEvent("beforerefresh", this);
+ this.grid.stopEditing();
+
+ var result = this.renderBody();
+ this.mainBody.update(result);
+
+ if(headersToo === true){
+ this.updateHeaders();
+ this.updateHeaderSortState();
+ }
+ this.processRows(0, true);
+ this.layout();
+ this.applyEmptyText();
+ this.fireEvent("refresh", this);
+ },
+
+ applyEmptyText : function(){
+ if(this.emptyText && !this.hasRows()){
+ this.mainBody.update('<div class="x-grid-empty">' + this.emptyText + '</div>');
+ }
+ },
+
+ updateHeaderSortState : function(){
+ var state = this.ds.getSortState();
+ if(!state){
+ return;
+ }
+ if(!this.sortState || (this.sortState.field != state.field || this.sortState.direction != state.direction)){
+ this.grid.fireEvent('sortchange', this.grid, state);
+ }
+ this.sortState = state;
+ var sortColumn = this.cm.findColumnIndex(state.field);
+ if(sortColumn != -1){
+ var sortDir = state.direction;
+ this.updateSortIcon(sortColumn, sortDir);
+ }
+ },
+
+ destroy : function(){
+ return;
+ if(this.colMenu){
+ this.colMenu.removeAll();
+ Ext.menu.MenuMgr.unregister(this.colMenu);
+ this.colMenu.getEl().remove();
+ delete this.colMenu;
+ }
+ if(this.hmenu){
+ this.hmenu.removeAll();
+ Ext.menu.MenuMgr.unregister(this.hmenu);
+ this.hmenu.getEl().remove();
+ delete this.hmenu;
+ }
+ if(this.grid.enableColumnMove){
+ var dds = Ext.dd.DDM.ids['gridHeader' + this.grid.getGridEl().id];
+ if(dds){
+ for(var dd in dds){
+ if(!dds[dd].config.isTarget && dds[dd].dragElId){
+ var elid = dds[dd].dragElId;
+ dds[dd].unreg();
+ Ext.get(elid).remove();
+ } else if(dds[dd].config.isTarget){
+ dds[dd].proxyTop.remove();
+ dds[dd].proxyBottom.remove();
+ dds[dd].unreg();
+ }
+ if(Ext.dd.DDM.locationCache[dd]){
+ delete Ext.dd.DDM.locationCache[dd];
+ }
+ }
+ delete Ext.dd.DDM.ids['gridHeader' + this.grid.getGridEl().id];
+ }
+ }
+
+ this.initData(null, null);
+ Ext.EventManager.removeResizeListener(this.onWindowResize, this);
+ },
+
+ onDenyColumnHide : function(){
+
+ },
+
+ render : function(){
+
+ var cm = this.cm;
+ var colCount = cm.getColumnCount();
+
+ if(this.grid.monitorWindowResize === true){
+ Ext.EventManager.onWindowResize(this.onWindowResize, this, true);
+ }
+
+ if(this.autoFill){
+ this.fitColumns(true, true);
+ }else if(this.forceFit){
+ this.fitColumns(true, false);
+ }else if(this.grid.autoExpandColumn){
+ this.autoExpand(true);
+ }
+
+ this.renderUI();
+
+ },
+
+ onWindowResize : function(){
+ if(!this.grid.monitorWindowResize || this.grid.autoHeight){
+ return;
+ }
+ this.layout();
+ },
+
+
+ initData : function(ds, cm){
+ if(this.ds){
+ this.ds.un("load", this.onLoad, this);
+ this.ds.un("datachanged", this.onDataChange, this);
+ this.ds.un("add", this.onAdd, this);
+ this.ds.un("remove", this.onRemove, this);
+ this.ds.un("update", this.onUpdate, this);
+ this.ds.un("clear", this.onClear, this);
+ }
+ if(ds){
+ ds.on("load", this.onLoad, this);
+ ds.on("datachanged", this.onDataChange, this);
+ ds.on("add", this.onAdd, this);
+ ds.on("remove", this.onRemove, this);
+ ds.on("update", this.onUpdate, this);
+ ds.on("clear", this.onClear, this);
+ }
+ this.ds = ds;
+
+ if(this.cm){
+ this.cm.un("configchange", this.onColConfigChange, this);
+ this.cm.un("widthchange", this.onColWidthChange, this);
+ this.cm.un("headerchange", this.onHeaderChange, this);
+ this.cm.un("hiddenchange", this.onHiddenChange, this);
+ this.cm.un("columnmoved", this.onColumnMove, this);
+ this.cm.un("columnlockchange", this.onColumnLock, this);
+ }
+ if(cm){
+ cm.on("configchange", this.onColConfigChange, this);
+ cm.on("widthchange", this.onColWidthChange, this);
+ cm.on("headerchange", this.onHeaderChange, this);
+ cm.on("hiddenchange", this.onHiddenChange, this);
+ cm.on("columnmoved", this.onColumnMove, this);
+ cm.on("columnlockchange", this.onColumnLock, this);
+ }
+ this.cm = cm;
+ },
+
+ onDataChange : function(){
+ this.refresh();
+ this.updateHeaderSortState();
+ },
+
+ onClear : function(){
+ this.refresh();
+ },
+
+ onUpdate : function(ds, record){
+ this.refreshRow(record);
+ },
+
+ onAdd : function(ds, records, index){
+ this.insertRows(ds, index, index + (records.length-1));
+ },
+
+ onRemove : function(ds, record, index, isUpdate){
+ if(isUpdate !== true){
+ this.fireEvent("beforerowremoved", this, index, record);
+ }
+ this.removeRow(index);
+ if(isUpdate !== true){
+ this.processRows(index);
+ this.applyEmptyText();
+ this.fireEvent("rowremoved", this, index, record);
+ }
+ },
+
+ onLoad : function(){
+ this.scrollToTop();
+ },
+
+ onColWidthChange : function(cm, col, width){
+ this.updateColumnWidth(col, width);
+ },
+
+ onHeaderChange : function(cm, col, text){
+ this.updateHeaders();
+ },
+
+ onHiddenChange : function(cm, col, hidden){
+ this.updateColumnHidden(col, hidden);
+ },
+
+ onColumnMove : function(cm, oldIndex, newIndex){
+ this.indexMap = null;
+ var s = this.getScrollState();
+ this.refresh(true);
+ this.restoreScroll(s);
+ this.afterMove(newIndex);
+ },
+
+ onColConfigChange : function(){
+ delete this.lastViewWidth;
+ this.indexMap = null;
+ this.refresh(true);
+ },
+
+
+ initUI : function(grid){
+ grid.on("headerclick", this.onHeaderClick, this);
+
+ if(grid.trackMouseOver){
+ grid.on("mouseover", this.onRowOver, this);
+ grid.on("mouseout", this.onRowOut, this);
+ }
+ },
+
+ initEvents : function(){
+
+ },
+
+ onHeaderClick : function(g, index){
+ if(this.headersDisabled || !this.cm.isSortable(index)){
+ return;
+ }
+ g.stopEditing();
+ g.store.sort(this.cm.getDataIndex(index));
+ },
+
+ onRowOver : function(e, t){
+ var row;
+ if((row = this.findRowIndex(t)) !== false){
+ this.addRowClass(row, "x-grid3-row-over");
+ }
+ },
+
+ onRowOut : function(e, t){
+ var row;
+ if((row = this.findRowIndex(t)) !== false && row !== this.findRowIndex(e.getRelatedTarget())){
+ this.removeRowClass(row, "x-grid3-row-over");
+ }
+ },
+
+ handleWheel : function(e){
+ e.stopPropagation();
+ },
+
+ onRowSelect : function(row){
+ this.addRowClass(row, "x-grid3-row-selected");
+ },
+
+ onRowDeselect : function(row){
+ this.removeRowClass(row, "x-grid3-row-selected");
+ },
+
+ onCellSelect : function(row, col){
+ var cell = this.getCell(row, col);
+ if(cell){
+ this.fly(cell).addClass("x-grid3-cell-selected");
+ }
+ },
+
+ onCellDeselect : function(row, col){
+ var cell = this.getCell(row, col);
+ if(cell){
+ this.fly(cell).removeClass("x-grid3-cell-selected");
+ }
+ },
+
+ onColumnSplitterMoved : function(i, w){
+ this.userResized = true;
+ var cm = this.grid.colModel;
+ cm.setColumnWidth(i, w, true);
+
+ if(this.forceFit){
+ this.fitColumns(true, false, i);
+ this.updateAllColumnWidths();
+ }else{
+ this.updateColumnWidth(i, w);
+ }
+
+ this.grid.fireEvent("columnresize", i, w);
+ },
+
+ handleHdMenuClick : function(item){
+ var index = this.hdCtxIndex;
+ var cm = this.cm, ds = this.ds;
+ switch(item.id){
+ case "asc":
+ ds.sort(cm.getDataIndex(index), "ASC");
+ break;
+ case "desc":
+ ds.sort(cm.getDataIndex(index), "DESC");
+ break;
+ default:
+ index = cm.getIndexById(item.id.substr(4));
+ if(index != -1){
+ if(item.checked && cm.getColumnsBy(this.isHideableColumn, this).length <= 1){
+ this.onDenyColumnHide();
+ return false;
+ }
+ cm.setHidden(index, item.checked);
+ }
+ }
+ return true;
+ },
+
+ isHideableColumn : function(c){
+ return !c.hidden && !c.fixed;
+ },
+
+ beforeColMenuShow : function(){
+ var cm = this.cm, colCount = cm.getColumnCount();
+ this.colMenu.removeAll();
+ for(var i = 0; i < colCount; i++){
+ if(cm.config[i].fixed !== true && cm.config[i].hideable !== false){
+ this.colMenu.add(new Ext.menu.CheckItem({
+ id: "col-"+cm.getColumnId(i),
+ text: cm.getColumnHeader(i),
+ checked: !cm.isHidden(i),
+ hideOnClick:false,
+ disabled: cm.config[i].hideable === false
+ }));
+ }
+ }
+ },
+
+ handleHdDown : function(e, t){
+ if(Ext.fly(t).hasClass('x-grid3-hd-btn')){
+ e.stopEvent();
+ var hd = this.findHeaderCell(t);
+ Ext.fly(hd).addClass('x-grid3-hd-menu-open');
+ var index = this.getCellIndex(hd);
+ this.hdCtxIndex = index;
+ var ms = this.hmenu.items, cm = this.cm;
+ ms.get("asc").setDisabled(!cm.isSortable(index));
+ ms.get("desc").setDisabled(!cm.isSortable(index));
+ this.hmenu.on("hide", function(){
+ Ext.fly(hd).removeClass('x-grid3-hd-menu-open');
+ }, this, {single:true});
+ this.hmenu.show(t, "tl-bl?");
+ }
+ },
+
+ handleHdOver : function(e, t){
+ var hd = this.findHeaderCell(t);
+ if(hd && !this.headersDisabled){
+ this.activeHd = hd;
+ this.activeHdIndex = this.getCellIndex(hd);
+ var fly = this.fly(hd);
+ this.activeHdRegion = fly.getRegion();
+ if(this.cm.isSortable(this.activeHdIndex) && !this.cm.isFixed(this.activeHdIndex)){
+ fly.addClass("x-grid3-hd-over");
+ this.activeHdBtn = fly.child('.x-grid3-hd-btn');
+ if(this.activeHdBtn){
+ this.activeHdBtn.dom.style.height = (hd.firstChild.offsetHeight-1)+'px';
+ }
+ }
+ }
+ },
+
+ handleHdMove : function(e, t){
+ if(this.activeHd && !this.headersDisabled){
+ var hw = this.splitHandleWidth || 5;
+ var r = this.activeHdRegion;
+ var x = e.getPageX();
+ var ss = this.activeHd.style;
+ if(x - r.left <= hw && this.cm.isResizable(this.activeHdIndex-1)){
+ if(Ext.isSafari){
+ ss.cursor = 'e-resize'; }else{
+ ss.cursor = 'col-resize';
+ }
+ }else if(r.right - x <= (!this.activeHdBtn ? hw : 2) && this.cm.isResizable(this.activeHdIndex)){
+ if(Ext.isSafari){
+ ss.cursor = 'w-resize'; }else{
+ ss.cursor = 'col-resize';
+ }
+ }else{
+ ss.cursor = '';
+ }
+ }
+ },
+
+ handleHdOut : function(e, t){
+ var hd = this.findHeaderCell(t);
+ if(hd && (!Ext.isIE || !e.within(hd, true))){
+ this.activeHd = null;
+ this.fly(hd).removeClass("x-grid3-hd-over");
+ hd.style.cursor = '';
+ }
+ },
+
+ hasRows : function(){
+ var fc = this.mainBody.dom.firstChild;
+ return fc && fc.className != 'x-grid-empty';
+ },
+
+ bind : function(d, c){
+ this.initData(d, c);
+ }
+});
+
+
+Ext.grid.GridView.SplitDragZone = function(grid, hd){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.marker = this.view.resizeMarker;
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this, hd,
+ "gridSplitters" + this.grid.getGridEl().id, {
+ dragElId : Ext.id(this.proxy.dom), resizeFrame:false
+ });
+ this.scroll = false;
+ this.hw = this.view.splitHandleWidth || 5;
+};
+Ext.extend(Ext.grid.GridView.SplitDragZone, Ext.dd.DDProxy, {
+
+ b4StartDrag : function(x, y){
+ this.view.headersDisabled = true;
+ var h = this.view.mainWrap.getHeight();
+ this.marker.setHeight(h);
+ this.marker.show();
+ this.marker.alignTo(this.view.getHeaderCell(this.cellIndex), 'tl-tl', [-2, 0]);
+ this.proxy.setHeight(h);
+ var w = this.cm.getColumnWidth(this.cellIndex);
+ var minw = Math.max(w-this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(minw, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = x - minw;
+ this.maxX = x + 1000;
+ this.startPos = x;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y);
+ },
+
+
+ handleMouseDown : function(e){
+ var t = this.view.findHeaderCell(e.getTarget());
+ if(t){
+ var xy = this.view.fly(t).getXY(), x = xy[0], y = xy[1];
+ var exy = e.getXY(), ex = exy[0], ey = exy[1];
+ var w = t.offsetWidth, adjust = false;
+ if((ex - x) <= this.hw){
+ adjust = -1;
+ }else if((x+w) - ex <= this.hw){
+ adjust = 0;
+ }
+ if(adjust !== false){
+ this.cm = this.grid.colModel;
+ var ci = this.view.getCellIndex(t);
+ if(adjust == -1){
+ while(this.cm.isHidden(ci+adjust)){
+ --adjust;
+ if(ci+adjust < 0){
+ return;
+ }
+ }
+ }
+ this.cellIndex = ci+adjust;
+ this.split = t.dom;
+ if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){
+ Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this, arguments);
+ }
+ }else if(this.view.columnDrag){
+ this.view.columnDrag.callHandleMouseDown(e);
+ }
+ }
+ },
+
+ endDrag : function(e){
+ this.marker.hide();
+ var v = this.view;
+ var endX = Math.max(this.minX, e.getPageX());
+ var diff = endX - this.startPos;
+ v.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff);
+ setTimeout(function(){
+ v.headersDisabled = false;
+ }, 50);
+ },
+
+ autoOffset : function(){
+ this.setDelta(0,0);
+ }
+});
+
+
+Ext.grid.GroupingView = Ext.extend(Ext.grid.GridView, {
+
+ hideGroupedColumn:false,
+
+ showGroupName:true,
+
+ startCollapsed:false,
+ enableGrouping:true,
+
+ enableGroupingMenu:true,
+
+ enableNoGroups:true,
+
+ emptyGroupText : '(None)',
+ ignoreAdd: false,
+
+ groupTextTpl : '{text}',
+ gidSeed : 1000,
+
+ initTemplates : function(){
+ Ext.grid.GroupingView.superclass.initTemplates.call(this);
+ this.state = {};
+
+ var sm = this.grid.getSelectionModel();
+ sm.on(sm.selectRow ? 'beforerowselect' : 'beforecellselect',
+ this.onBeforeRowSelect, this);
+
+ if(!this.startGroup){
+ this.startGroup = new Ext.XTemplate(
+ '<div id="{groupId}" class="x-grid-group {cls}">',
+ '<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div>', this.groupTextTpl ,'</div></div>',
+ '<div id="{groupId}-bd" class="x-grid-group-body">'
+ );
+ }
+ this.startGroup.compile();
+ this.endGroup = '</div></div>';
+ },
+
+ findGroup : function(el){
+ return Ext.fly(el).up('.x-grid-group', this.mainBody.dom);
+ },
+
+ getGroups : function(){
+ return this.hasRows() ? this.mainBody.dom.childNodes : [];
+ },
+
+ onAdd : function(){
+ if(this.enableGrouping && !this.ignoreAdd){
+ var ss = this.getScrollState();
+ this.refresh();
+ this.restoreScroll(ss);
+ }else if(!this.enableGrouping){
+ Ext.grid.GroupingView.superclass.onAdd.apply(this, arguments);
+ }
+ },
+
+ onRemove : function(ds, record, index, isUpdate){
+ Ext.grid.GroupingView.superclass.onRemove.apply(this, arguments);
+ var g = document.getElementById(record._groupId);
+ if(g && g.childNodes[1].childNodes.length < 1){
+ Ext.removeNode(g);
+ }
+ this.applyEmptyText();
+ },
+
+ refreshRow : function(record){
+ if(this.ds.getCount()==1){
+ this.refresh();
+ }else{
+ this.isUpdating = true;
+ Ext.grid.GroupingView.superclass.refreshRow.apply(this, arguments);
+ this.isUpdating = false;
+ }
+ },
+
+ beforeMenuShow : function(){
+ var field = this.getGroupField();
+ var g = this.hmenu.items.get('groupBy');
+ if(g){
+ g.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false);
+ }
+ var s = this.hmenu.items.get('showGroups');
+ if(s){
+ s.setChecked(!!field);
+ }
+ },
+
+ renderUI : function(){
+ Ext.grid.GroupingView.superclass.renderUI.call(this);
+ this.mainBody.on('mousedown', this.interceptMouse, this);
+
+ if(this.enableGroupingMenu && this.hmenu){
+ this.hmenu.add('-',{
+ id:'groupBy',
+ text: this.groupByText,
+ handler: this.onGroupByClick,
+ scope: this,
+ iconCls:'x-group-by-icon'
+ });
+ if(this.enableNoGroups){
+ this.hmenu.add({
+ id:'showGroups',
+ text: this.showGroupsText,
+ checked: true,
+ checkHandler: this.onShowGroupsClick,
+ scope: this
+ });
+ }
+ this.hmenu.on('beforeshow', this.beforeMenuShow, this);
+ }
+ },
+
+ onGroupByClick : function(){
+ this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));
+ },
+
+ onShowGroupsClick : function(mi, checked){
+ if(checked){
+ this.onGroupByClick();
+ }else{
+ this.grid.store.clearGrouping();
+ }
+ },
+
+
+ toggleGroup : function(group, expanded){
+ this.grid.stopEditing();
+ group = Ext.getDom(group);
+ var gel = Ext.fly(group);
+ expanded = expanded !== undefined ?
+ expanded : gel.hasClass('x-grid-group-collapsed');
+
+ this.state[gel.dom.id] = expanded;
+ gel[expanded ? 'removeClass' : 'addClass']('x-grid-group-collapsed');
+ },
+
+
+ toggleAllGroups : function(expanded){
+ var groups = this.getGroups();
+ for(var i = 0, len = groups.length; i < len; i++){
+ this.toggleGroup(groups[i], expanded);
+ }
+ },
+
+ expandAllGroups : function(){
+ this.toggleAllGroups(true);
+ },
+
+ collapseAllGroups : function(){
+ this.toggleAllGroups(false);
+ },
+
+ interceptMouse : function(e){
+ var hd = e.getTarget('.x-grid-group-hd', this.mainBody);
+ if(hd){
+ e.stopEvent();
+ this.toggleGroup(hd.parentNode);
+ }
+ },
+
+ getGroup : function(v, r, groupRenderer, rowIndex, colIndex, ds){
+ var g = groupRenderer ? groupRenderer(v, {}, r, rowIndex, colIndex, ds) : String(v);
+ if(g === ''){
+ g = this.cm.config[colIndex].emptyGroupText || this.emptyGroupText;
+ }
+ return g;
+ },
+
+ getGroupField : function(){
+ return this.grid.store.getGroupState();
+ },
+
+ renderRows : function(){
+ var groupField = this.getGroupField();
+ var eg = !!groupField;
+
+ if(this.hideGroupedColumn) {
+ var colIndex = this.cm.findColumnIndex(groupField);
+ if(!eg && this.lastGroupField !== undefined) {
+ this.mainBody.update('');
+ this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField), false);
+ delete this.lastGroupField;
+ }else if (eg && this.lastGroupField === undefined) {
+ this.lastGroupField = groupField;
+ this.cm.setHidden(colIndex, true);
+ }else if (eg && this.lastGroupField !== undefined && groupField !== this.lastGroupField) {
+ this.mainBody.update('');
+ var oldIndex = this.cm.findColumnIndex(this.lastGroupField);
+ this.cm.setHidden(oldIndex, false);
+ this.lastGroupField = groupField;
+ this.cm.setHidden(colIndex, true);
+ }
+ }
+ return Ext.grid.GroupingView.superclass.renderRows.apply(
+ this, arguments);
+ },
+
+ doRender : function(cs, rs, ds, startRow, colCount, stripe){
+ if(rs.length < 1){
+ return '';
+ }
+ var groupField = this.getGroupField();
+ var colIndex = this.cm.findColumnIndex(groupField);
+
+ this.enableGrouping = !!groupField;
+
+ if(!this.enableGrouping || this.isUpdating){
+ return Ext.grid.GroupingView.superclass.doRender.apply(
+ this, arguments);
+ }
+ var gstyle = 'width:'+this.getTotalWidth()+';';
+
+ var gidPrefix = this.grid.getGridEl().id;
+ var cfg = this.cm.config[colIndex];
+ var groupRenderer = cfg.groupRenderer || cfg.renderer;
+ var cls = this.startCollapsed ? 'x-grid-group-collapsed' : '';
+ var prefix = this.showGroupName ?
+ (cfg.groupName || cfg.header)+': ' : '';
+
+ var groups = [], curGroup, i, len, gid;
+ for(i = 0, len = rs.length; i < len; i++){
+ var rowIndex = startRow + i;
+ var r = rs[i],
+ gvalue = r.data[groupField],
+ g = this.getGroup(gvalue, r, groupRenderer, rowIndex, colIndex, ds);
+ if(!curGroup || curGroup.group != g){
+ gid = gidPrefix + '-gp-' + groupField + '-' + g;
+ var gcls = cls ? cls : (this.state[gid] === false ? 'x-grid-group-collapsed' : '');
+ curGroup = {
+ group: g,
+ gvalue: gvalue,
+ text: prefix + g,
+ groupId: gid,
+ startRow: rowIndex,
+ rs: [r],
+ cls: gcls,
+ style: gstyle
+ };
+ groups.push(curGroup);
+ }else{
+ curGroup.rs.push(r);
+ }
+ r._groupId = gid;
+ }
+
+ var buf = [];
+ for(i = 0, len = groups.length; i < len; i++){
+ var g = groups[i];
+ this.doGroupStart(buf, g, cs, ds, colCount);
+ buf[buf.length] = Ext.grid.GroupingView.superclass.doRender.call(
+ this, cs, g.rs, ds, g.startRow, colCount, stripe);
+
+ this.doGroupEnd(buf, g, cs, ds, colCount);
+ }
+ return buf.join('');
+ },
+
+
+ getGroupId : function(value){
+ var gidPrefix = this.grid.getGridEl().id;
+ var groupField = this.getGroupField();
+ var colIndex = this.cm.findColumnIndex(groupField);
+ var cfg = this.cm.config[colIndex];
+ var groupRenderer = cfg.groupRenderer || cfg.renderer;
+ var gtext = this.getGroup(value, {data:{}}, groupRenderer, 0, colIndex, this.ds);
+ return gidPrefix + '-gp-' + groupField + '-' + value;
+ },
+
+ doGroupStart : function(buf, g, cs, ds, colCount){
+ buf[buf.length] = this.startGroup.apply(g);
+ },
+
+
+ doGroupEnd : function(buf, g, cs, ds, colCount){
+ buf[buf.length] = this.endGroup;
+ },
+
+
+ getRows : function(){
+ if(!this.enableGrouping){
+ return Ext.grid.GroupingView.superclass.getRows.call(this);
+ }
+ var r = [];
+ var g, gs = this.getGroups();
+ for(var i = 0, len = gs.length; i < len; i++){
+ g = gs[i].childNodes[1].childNodes;
+ for(var j = 0, jlen = g.length; j < jlen; j++){
+ r[r.length] = g[j];
+ }
+ }
+ return r;
+ },
+
+ updateGroupWidths : function(){
+ if(!this.enableGrouping || !this.hasRows()){
+ return;
+ }
+ var tw = Math.max(this.cm.getTotalWidth(), this.el.dom.offsetWidth-this.scrollOffset) +'px';
+ var gs = this.getGroups();
+ for(var i = 0, len = gs.length; i < len; i++){
+ gs[i].firstChild.style.width = tw;
+ }
+ },
+
+ onColumnWidthUpdated : function(col, w, tw){
+ this.updateGroupWidths();
+ },
+
+ onAllColumnWidthsUpdated : function(ws, tw){
+ this.updateGroupWidths();
+ },
+
+ onColumnHiddenUpdated : function(col, hidden, tw){
+ this.updateGroupWidths();
+ },
+
+ onLayout : function(){
+ this.updateGroupWidths();
+ },
+
+ onBeforeRowSelect : function(sm, rowIndex){
+ if(!this.enableGrouping){
+ return;
+ }
+ var row = this.getRow(rowIndex);
+ if(row && !row.offsetParent){
+ var g = this.findGroup(row);
+ this.toggleGroup(g, true);
+ }
+ },
+
+ groupByText: 'Group By This Field',
+ showGroupsText: 'Show in Groups'
+});
+
+Ext.grid.GroupingView.GROUP_ID = 1000;
+
+
+Ext.grid.HeaderDragZone = function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+ Ext.grid.HeaderDragZone.superclass.constructor.call(this, hd);
+ if(hd2){
+ this.setHandleElId(Ext.id(hd));
+ this.setOuterHandleElId(Ext.id(hd2));
+ }
+ this.scroll = false;
+};
+Ext.extend(Ext.grid.HeaderDragZone, Ext.dd.DragZone, {
+ maxDragWidth: 120,
+ getDragData : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ var h = this.view.findHeaderCell(t);
+ if(h){
+ return {ddel: h.firstChild, header:h};
+ }
+ return false;
+ },
+
+ onInitDrag : function(e){
+ this.view.headersDisabled = true;
+ var clone = this.dragData.ddel.cloneNode(true);
+ clone.id = Ext.id();
+ clone.style.width = Math.min(this.dragData.header.offsetWidth,this.maxDragWidth) + "px";
+ this.proxy.update(clone);
+ return true;
+ },
+
+ afterValidDrop : function(){
+ var v = this.view;
+ setTimeout(function(){
+ v.headersDisabled = false;
+ }, 50);
+ },
+
+ afterInvalidDrop : function(){
+ var v = this.view;
+ setTimeout(function(){
+ v.headersDisabled = false;
+ }, 50);
+ }
+});
+
+
+
+Ext.grid.HeaderDropZone = function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+
+ this.proxyTop = Ext.DomHelper.append(document.body, {
+ cls:"col-move-top", html:" "
+ }, true);
+ this.proxyBottom = Ext.DomHelper.append(document.body, {
+ cls:"col-move-bottom", html:" "
+ }, true);
+ this.proxyTop.hide = this.proxyBottom.hide = function(){
+ this.setLeftTop(-100,-100);
+ this.setStyle("visibility", "hidden");
+ };
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+
+
+ Ext.grid.HeaderDropZone.superclass.constructor.call(this, grid.getGridEl().dom);
+};
+Ext.extend(Ext.grid.HeaderDropZone, Ext.dd.DropZone, {
+ proxyOffsets : [-4, -9],
+ fly: Ext.Element.fly,
+
+ getTargetFromEvent : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ var cindex = this.view.findCellIndex(t);
+ if(cindex !== false){
+ return this.view.getHeaderCell(cindex);
+ }
+ },
+
+ nextVisible : function(h){
+ var v = this.view, cm = this.grid.colModel;
+ h = h.nextSibling;
+ while(h){
+ if(!cm.isHidden(v.getCellIndex(h))){
+ return h;
+ }
+ h = h.nextSibling;
+ }
+ return null;
+ },
+
+ prevVisible : function(h){
+ var v = this.view, cm = this.grid.colModel;
+ h = h.prevSibling;
+ while(h){
+ if(!cm.isHidden(v.getCellIndex(h))){
+ return h;
+ }
+ h = h.prevSibling;
+ }
+ return null;
+ },
+
+ positionIndicator : function(h, n, e){
+ var x = Ext.lib.Event.getPageX(e);
+ var r = Ext.lib.Dom.getRegion(n.firstChild);
+ var px, pt, py = r.top + this.proxyOffsets[1];
+ if((r.right - x) <= (r.right-r.left)/2){
+ px = r.right+this.view.borderWidth;
+ pt = "after";
+ }else{
+ px = r.left;
+ pt = "before";
+ }
+ var oldIndex = this.view.getCellIndex(h);
+ var newIndex = this.view.getCellIndex(n);
+
+ if(this.grid.colModel.isFixed(newIndex)){
+ return false;
+ }
+
+ var locked = this.grid.colModel.isLocked(newIndex);
+
+ if(pt == "after"){
+ newIndex++;
+ }
+ if(oldIndex < newIndex){
+ newIndex--;
+ }
+ if(oldIndex == newIndex && (locked == this.grid.colModel.isLocked(oldIndex))){
+ return false;
+ }
+ px += this.proxyOffsets[0];
+ this.proxyTop.setLeftTop(px, py);
+ this.proxyTop.show();
+ if(!this.bottomOffset){
+ this.bottomOffset = this.view.mainHd.getHeight();
+ }
+ this.proxyBottom.setLeftTop(px, py+this.proxyTop.dom.offsetHeight+this.bottomOffset);
+ this.proxyBottom.show();
+ return pt;
+ },
+
+ onNodeEnter : function(n, dd, e, data){
+ if(data.header != n){
+ this.positionIndicator(data.header, n, e);
+ }
+ },
+
+ onNodeOver : function(n, dd, e, data){
+ var result = false;
+ if(data.header != n){
+ result = this.positionIndicator(data.header, n, e);
+ }
+ if(!result){
+ this.proxyTop.hide();
+ this.proxyBottom.hide();
+ }
+ return result ? this.dropAllowed : this.dropNotAllowed;
+ },
+
+ onNodeOut : function(n, dd, e, data){
+ this.proxyTop.hide();
+ this.proxyBottom.hide();
+ },
+
+ onNodeDrop : function(n, dd, e, data){
+ var h = data.header;
+ if(h != n){
+ var cm = this.grid.colModel;
+ var x = Ext.lib.Event.getPageX(e);
+ var r = Ext.lib.Dom.getRegion(n.firstChild);
+ var pt = (r.right - x) <= ((r.right-r.left)/2) ? "after" : "before";
+ var oldIndex = this.view.getCellIndex(h);
+ var newIndex = this.view.getCellIndex(n);
+ var locked = cm.isLocked(newIndex);
+ if(pt == "after"){
+ newIndex++;
+ }
+ if(oldIndex < newIndex){
+ newIndex--;
+ }
+ if(oldIndex == newIndex && (locked == cm.isLocked(oldIndex))){
+ return false;
+ }
+ cm.setLocked(oldIndex, locked, true);
+ cm.moveColumn(oldIndex, newIndex);
+ this.grid.fireEvent("columnmove", oldIndex, newIndex);
+ return true;
+ }
+ return false;
+ }
+});
+
+
+Ext.grid.GridView.ColumnDragZone = function(grid, hd){
+ Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, grid, hd, null);
+ this.proxy.el.addClass('x-grid3-col-dd');
+};
+
+Ext.extend(Ext.grid.GridView.ColumnDragZone, Ext.grid.HeaderDragZone, {
+ handleMouseDown : function(e){
+
+ },
+
+ callHandleMouseDown : function(e){
+ Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, e);
+ }
+});
+Ext.grid.SplitDragZone = function(grid, hd, hd2){
+ this.grid = grid;
+ this.view = grid.getView();
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.SplitDragZone.superclass.constructor.call(this, hd,
+ "gridSplitters" + this.grid.getGridEl().id, {
+ dragElId : Ext.id(this.proxy.dom), resizeFrame:false
+ });
+ this.setHandleElId(Ext.id(hd));
+ this.setOuterHandleElId(Ext.id(hd2));
+ this.scroll = false;
+};
+Ext.extend(Ext.grid.SplitDragZone, Ext.dd.DDProxy, {
+ fly: Ext.Element.fly,
+
+ b4StartDrag : function(x, y){
+ this.view.headersDisabled = true;
+ this.proxy.setHeight(this.view.mainWrap.getHeight());
+ var w = this.cm.getColumnWidth(this.cellIndex);
+ var minw = Math.max(w-this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(minw, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = x - minw;
+ this.maxX = x + 1000;
+ this.startPos = x;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y);
+ },
+
+
+ handleMouseDown : function(e){
+ ev = Ext.EventObject.setEvent(e);
+ var t = this.fly(ev.getTarget());
+ if(t.hasClass("x-grid-split")){
+ this.cellIndex = this.view.getCellIndex(t.dom);
+ this.split = t.dom;
+ this.cm = this.grid.colModel;
+ if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){
+ Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments);
+ }
+ }
+ },
+
+ endDrag : function(e){
+ this.view.headersDisabled = false;
+ var endX = Math.max(this.minX, Ext.lib.Event.getPageX(e));
+ var diff = endX - this.startPos;
+ this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff);
+ },
+
+ autoOffset : function(){
+ this.setDelta(0,0);
+ }
+});
+Ext.grid.GridDragZone = function(grid, config){
+ this.view = grid.getView();
+ Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, config);
+ if(this.view.lockedBody){
+ this.setHandleElId(Ext.id(this.view.mainBody.dom));
+ this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom));
+ }
+ this.scroll = false;
+ this.grid = grid;
+ this.ddel = document.createElement('div');
+ this.ddel.className = 'x-grid-dd-wrap';
+};
+
+Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, {
+ ddGroup : "GridDD",
+
+ getDragData : function(e){
+ var t = Ext.lib.Event.getTarget(e);
+ var rowIndex = this.view.findRowIndex(t);
+ if(rowIndex !== false){
+ var sm = this.grid.selModel;
+ if(!sm.isSelected(rowIndex) || e.hasModifier()){
+ sm.handleMouseDown(this.grid, rowIndex, e);
+ }
+ return {grid: this.grid, ddel: this.ddel, rowIndex: rowIndex, selections:sm.getSelections()};
+ }
+ return false;
+ },
+
+ onInitDrag : function(e){
+ var data = this.dragData;
+ this.ddel.innerHTML = this.grid.getDragDropText();
+ this.proxy.update(this.ddel);
+ },
+
+ afterRepair : function(){
+ this.dragging = false;
+ },
+
+ getRepairXY : function(e, data){
+ return false;
+ },
+
+ onEndDrag : function(data, e){
+ },
+
+ onValidDrop : function(dd, e, id){
+ this.hideProxy();
+ },
+
+ beforeInvalidDrop : function(e, id){
+
+ }
+});
+
+Ext.grid.ColumnModel = function(config){
+
+ this.setConfig(config, true);
+
+ this.defaultWidth = 100;
+
+
+ this.defaultSortable = false;
+
+ this.addEvents({
+
+ "widthchange": true,
+
+ "headerchange": true,
+
+ "hiddenchange": true,
+
+ "columnmoved" : true,
+
+ "columnlockchange" : true,
+
+ "configchange" : true
+ });
+ Ext.grid.ColumnModel.superclass.constructor.call(this);
+};
+Ext.extend(Ext.grid.ColumnModel, Ext.util.Observable, {
+
+
+
+
+
+
+
+
+
+
+
+
+ getColumnId : function(index){
+ return this.config[index].id;
+ },
+
+
+ setConfig : function(config, initial){
+ if(!initial){
+ delete this.totalWidth;
+ for(var i = 0, len = this.config.length; i < len; i++){
+ var c = this.config[i];
+ if(c.editor){
+ c.editor.destroy();
+ }
+ }
+ }
+ this.config = config;
+ this.lookup = {};
+
+ for(var i = 0, len = config.length; i < len; i++){
+ var c = config[i];
+ if(typeof c.renderer == "string"){
+ c.renderer = Ext.util.Format[c.renderer];
+ }
+ if(typeof c.id == "undefined"){
+ c.id = i;
+ }
+ if(c.editor && c.editor.isFormField){
+ c.editor = new Ext.grid.GridEditor(c.editor);
+ }
+ this.lookup[c.id] = c;
+ }
+ if(!initial){
+ this.fireEvent('configchange', this);
+ }
+ },
+
+
+ getColumnById : function(id){
+ return this.lookup[id];
+ },
+
+
+ getIndexById : function(id){
+ for(var i = 0, len = this.config.length; i < len; i++){
+ if(this.config[i].id == id){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+
+ moveColumn : function(oldIndex, newIndex){
+ var c = this.config[oldIndex];
+ this.config.splice(oldIndex, 1);
+ this.config.splice(newIndex, 0, c);
+ this.dataMap = null;
+ this.fireEvent("columnmoved", this, oldIndex, newIndex);
+ },
+
+
+ isLocked : function(colIndex){
+ return this.config[colIndex].locked === true;
+ },
+
+
+ setLocked : function(colIndex, value, suppressEvent){
+ if(this.isLocked(colIndex) == value){
+ return;
+ }
+ this.config[colIndex].locked = value;
+ if(!suppressEvent){
+ this.fireEvent("columnlockchange", this, colIndex, value);
+ }
+ },
+
+
+ getTotalLockedWidth : function(){
+ var totalWidth = 0;
+ for(var i = 0; i < this.config.length; i++){
+ if(this.isLocked(i) && !this.isHidden(i)){
+ this.totalWidth += this.getColumnWidth(i);
+ }
+ }
+ return totalWidth;
+ },
+
+
+ getLockedCount : function(){
+ for(var i = 0, len = this.config.length; i < len; i++){
+ if(!this.isLocked(i)){
+ return i;
+ }
+ }
+ },
+
+
+ getColumnCount : function(visibleOnly){
+ if(visibleOnly === true){
+ var c = 0;
+ for(var i = 0, len = this.config.length; i < len; i++){
+ if(!this.isHidden(i)){
+ c++;
+ }
+ }
+ return c;
+ }
+ return this.config.length;
+ },
+
+
+ getColumnsBy : function(fn, scope){
+ var r = [];
+ for(var i = 0, len = this.config.length; i < len; i++){
+ var c = this.config[i];
+ if(fn.call(scope||this, c, i) === true){
+ r[r.length] = c;
+ }
+ }
+ return r;
+ },
+
+
+ isSortable : function(col){
+ if(typeof this.config[col].sortable == "undefined"){
+ return this.defaultSortable;
+ }
+ return this.config[col].sortable;
+ },
+
+
+ getRenderer : function(col){
+ if(!this.config[col].renderer){
+ return Ext.grid.ColumnModel.defaultRenderer;
+ }
+ return this.config[col].renderer;
+ },
+
+
+ setRenderer : function(col, fn){
+ this.config[col].renderer = fn;
+ },
+
+
+ getColumnWidth : function(col){
+ return this.config[col].width || this.defaultWidth;
+ },
+
+
+ setColumnWidth : function(col, width, suppressEvent){
+ this.config[col].width = width;
+ this.totalWidth = null;
+ if(!suppressEvent){
+ this.fireEvent("widthchange", this, col, width);
+ }
+ },
+
+
+ getTotalWidth : function(includeHidden){
+ if(!this.totalWidth){
+ this.totalWidth = 0;
+ for(var i = 0, len = this.config.length; i < len; i++){
+ if(includeHidden || !this.isHidden(i)){
+ this.totalWidth += this.getColumnWidth(i);
+ }
+ }
+ }
+ return this.totalWidth;
+ },
+
+
+ getColumnHeader : function(col){
+ return this.config[col].header;
+ },
+
+
+ setColumnHeader : function(col, header){
+ this.config[col].header = header;
+ this.fireEvent("headerchange", this, col, header);
+ },
+
+
+ getColumnTooltip : function(col){
+ return this.config[col].tooltip;
+ },
+
+ setColumnTooltip : function(col, tooltip){
+ this.config[col].tooltip = tooltip;
+ },
+
+
+ getDataIndex : function(col){
+ return this.config[col].dataIndex;
+ },
+
+
+ setDataIndex : function(col, dataIndex){
+ this.config[col].dataIndex = dataIndex;
+ },
+
+ findColumnIndex : function(dataIndex){
+ var c = this.config;
+ for(var i = 0, len = c.length; i < len; i++){
+ if(c[i].dataIndex == dataIndex){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+
+ isCellEditable : function(colIndex, rowIndex){
+ return (this.config[colIndex].editable || (typeof this.config[colIndex].editable == "undefined" && this.config[colIndex].editor)) ? true : false;
+ },
+
+
+ getCellEditor : function(colIndex, rowIndex){
+ return this.config[colIndex].editor;
+ },
+
+
+ setEditable : function(col, editable){
+ this.config[col].editable = editable;
+ },
+
+
+
+ isHidden : function(colIndex){
+ return this.config[colIndex].hidden;
+ },
+
+
+
+ isFixed : function(colIndex){
+ return this.config[colIndex].fixed;
+ },
+
+
+ isResizable : function(colIndex){
+ return colIndex >= 0 && this.config[colIndex].resizable !== false && this.config[colIndex].fixed !== true;
+ },
+
+ setHidden : function(colIndex, hidden){
+ var c = this.config[colIndex];
+ if(c.hidden !== hidden){
+ c.hidden = hidden;
+ this.totalWidth = null;
+ this.fireEvent("hiddenchange", this, colIndex, hidden);
+ }
+ },
+
+
+ setEditor : function(col, editor){
+ this.config[col].editor = editor;
+ }
+});
+
+
+Ext.grid.ColumnModel.defaultRenderer = function(value){
+ if(typeof value == "string" && value.length < 1){
+ return " ";
+ }
+ return value;
+};
+
+
+Ext.grid.DefaultColumnModel = Ext.grid.ColumnModel;
+
+
+Ext.grid.AbstractSelectionModel = function(){
+ this.locked = false;
+ Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.grid.AbstractSelectionModel, Ext.util.Observable, {
+
+ init : function(grid){
+ this.grid = grid;
+ this.initEvents();
+ },
+
+
+ lock : function(){
+ this.locked = true;
+ },
+
+
+ unlock : function(){
+ this.locked = false;
+ },
+
+
+ isLocked : function(){
+ return this.locked;
+ }
+});
+
+Ext.grid.RowSelectionModel = function(config){
+ Ext.apply(this, config);
+ this.selections = new Ext.util.MixedCollection(false, function(o){
+ return o.id;
+ });
+
+ this.last = false;
+ this.lastActive = false;
+
+ this.addEvents({
+
+ "selectionchange" : true,
+
+ "beforerowselect" : true,
+
+ "rowselect" : true,
+
+ "rowdeselect" : true
+ });
+
+ Ext.grid.RowSelectionModel.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.grid.RowSelectionModel, Ext.grid.AbstractSelectionModel, {
+
+ singleSelect : false,
+
+
+ initEvents : function(){
+
+ if(!this.grid.enableDragDrop && !this.grid.enableDrag){
+ this.grid.on("rowmousedown", this.handleMouseDown, this);
+ }else{
+ this.grid.on("rowclick", function(grid, rowIndex, e) {
+ if(e.button === 0 && !e.shiftKey && !e.ctrlKey) {
+ this.selectRow(rowIndex, false);
+ grid.view.focusRow(rowIndex);
+ }
+ }, this);
+ }
+
+ this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), {
+ "up" : function(e){
+ if(!e.shiftKey){
+ this.selectPrevious(e.shiftKey);
+ }else if(this.last !== false && this.lastActive !== false){
+ var last = this.last;
+ this.selectRange(this.last, this.lastActive-1);
+ this.grid.getView().focusRow(this.lastActive);
+ if(last !== false){
+ this.last = last;
+ }
+ }else{
+ this.selectFirstRow();
+ }
+ },
+ "down" : function(e){
+ if(!e.shiftKey){
+ this.selectNext(e.shiftKey);
+ }else if(this.last !== false && this.lastActive !== false){
+ var last = this.last;
+ this.selectRange(this.last, this.lastActive+1);
+ this.grid.getView().focusRow(this.lastActive);
+ if(last !== false){
+ this.last = last;
+ }
+ }else{
+ this.selectFirstRow();
+ }
+ },
+ scope: this
+ });
+
+ var view = this.grid.view;
+ view.on("refresh", this.onRefresh, this);
+ view.on("rowupdated", this.onRowUpdated, this);
+ view.on("rowremoved", this.onRemove, this);
+ },
+
+
+ onRefresh : function(){
+ var ds = this.grid.store, index;
+ var s = this.getSelections();
+ this.clearSelections(true);
+ for(var i = 0, len = s.length; i < len; i++){
+ var r = s[i];
+ if((index = ds.indexOfId(r.id)) != -1){
+ this.selectRow(index, true);
+ }
+ }
+ if(s.length != this.selections.getCount()){
+ this.fireEvent("selectionchange", this);
+ }
+ },
+
+
+ onRemove : function(v, index, r){
+ if(this.selections.remove(r) !== false){
+ this.fireEvent('selectionchange', this);
+ }
+ },
+
+
+ onRowUpdated : function(v, index, r){
+ if(this.isSelected(r)){
+ v.onRowSelect(index);
+ }
+ },
+
+
+ selectRecords : function(records, keepExisting){
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ var ds = this.grid.store;
+ for(var i = 0, len = records.length; i < len; i++){
+ this.selectRow(ds.indexOf(records[i]), true);
+ }
+ },
+
+
+ getCount : function(){
+ return this.selections.length;
+ },
+
+
+ selectFirstRow : function(){
+ this.selectRow(0);
+ },
+
+
+ selectLastRow : function(keepExisting){
+ this.selectRow(this.grid.store.getCount() - 1, keepExisting);
+ },
+
+
+ selectNext : function(keepExisting){
+ if(this.hasNext()){
+ this.selectRow(this.last+1, keepExisting);
+ this.grid.getView().focusRow(this.last);
+ }
+ },
+
+
+ selectPrevious : function(keepExisting){
+ if(this.hasPrevious()){
+ this.selectRow(this.last-1, keepExisting);
+ this.grid.getView().focusRow(this.last);
+ }
+ },
+
+
+ hasNext : function(){
+ return this.last !== false && (this.last+1) < this.grid.store.getCount();
+ },
+
+
+ hasPrevious : function(){
+ return !!this.last;
+ },
+
+
+
+ getSelections : function(){
+ return [].concat(this.selections.items);
+ },
+
+
+ getSelected : function(){
+ return this.selections.itemAt(0);
+ },
+
+
+ each : function(fn, scope){
+ var s = this.getSelections();
+ for(var i = 0, len = s.length; i < len; i++){
+ if(fn.call(scope || this, s[i], i) === false){
+ return false;
+ }
+ }
+ return true;
+ },
+
+
+ clearSelections : function(fast){
+ if(this.locked) return;
+ if(fast !== true){
+ var ds = this.grid.store;
+ var s = this.selections;
+ s.each(function(r){
+ this.deselectRow(ds.indexOfId(r.id));
+ }, this);
+ s.clear();
+ }else{
+ this.selections.clear();
+ }
+ this.last = false;
+ },
+
+
+
+ selectAll : function(){
+ if(this.locked) return;
+ this.selections.clear();
+ for(var i = 0, len = this.grid.store.getCount(); i < len; i++){
+ this.selectRow(i, true);
+ }
+ },
+
+
+ hasSelection : function(){
+ return this.selections.length > 0;
+ },
+
+
+ isSelected : function(index){
+ var r = typeof index == "number" ? this.grid.store.getAt(index) : index;
+ return (r && this.selections.key(r.id) ? true : false);
+ },
+
+
+ isIdSelected : function(id){
+ return (this.selections.key(id) ? true : false);
+ },
+
+
+ handleMouseDown : function(g, rowIndex, e){
+ if(e.button !== 0 || this.isLocked()){
+ return;
+ };
+ var view = this.grid.getView();
+ if(e.shiftKey && this.last !== false){
+ var last = this.last;
+ this.selectRange(last, rowIndex, e.ctrlKey);
+ this.last = last;
+ view.focusRow(rowIndex);
+ }else{
+ var isSelected = this.isSelected(rowIndex);
+ if(e.ctrlKey && isSelected){
+ this.deselectRow(rowIndex);
+ }else if(!isSelected || this.getCount() > 1){
+ this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
+ view.focusRow(rowIndex);
+ }
+ }
+ },
+
+
+ selectRows : function(rows, keepExisting){
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ for(var i = 0, len = rows.length; i < len; i++){
+ this.selectRow(rows[i], true);
+ }
+ },
+
+
+ selectRange : function(startRow, endRow, keepExisting){
+ if(this.locked) return;
+ if(!keepExisting){
+ this.clearSelections();
+ }
+ if(startRow <= endRow){
+ for(var i = startRow; i <= endRow; i++){
+ this.selectRow(i, true);
+ }
+ }else{
+ for(var i = startRow; i >= endRow; i--){
+ this.selectRow(i, true);
+ }
+ }
+ },
+
+
+ deselectRange : function(startRow, endRow, preventViewNotify){
+ if(this.locked) return;
+ for(var i = startRow; i <= endRow; i++){
+ this.deselectRow(i, preventViewNotify);
+ }
+ },
+
+
+ selectRow : function(index, keepExisting, preventViewNotify){
+ if(this.locked || (index < 0 || index >= this.grid.store.getCount())) return;
+ var r = this.grid.store.getAt(index);
+ if(this.fireEvent("beforerowselect", this, index, keepExisting, r) !== false){
+ if(!keepExisting || this.singleSelect){
+ this.clearSelections();
+ }
+ this.selections.add(r);
+ this.last = this.lastActive = index;
+ if(!preventViewNotify){
+ this.grid.getView().onRowSelect(index);
+ }
+ this.fireEvent("rowselect", this, index, r);
+ this.fireEvent("selectionchange", this);
+ }
+ },
+
+
+ deselectRow : function(index, preventViewNotify){
+ if(this.locked) return;
+ if(this.last == index){
+ this.last = false;
+ }
+ if(this.lastActive == index){
+ this.lastActive = false;
+ }
+ var r = this.grid.store.getAt(index);
+ this.selections.remove(r);
+ if(!preventViewNotify){
+ this.grid.getView().onRowDeselect(index);
+ }
+ this.fireEvent("rowdeselect", this, index, r);
+ this.fireEvent("selectionchange", this);
+ },
+
+
+ restoreLast : function(){
+ if(this._last){
+ this.last = this._last;
+ }
+ },
+
+
+ acceptsNav : function(row, col, cm){
+ return !cm.isHidden(col) && cm.isCellEditable(col, row);
+ },
+
+
+ onEditorKey : function(field, e){
+ var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor;
+ if(k == e.TAB){
+ e.stopEvent();
+ ed.completeEdit();
+ if(e.shiftKey){
+ newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this);
+ }else{
+ newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
+ }
+ }else if(k == e.ENTER){
+ e.stopEvent();
+ ed.completeEdit();
+ if(e.shiftKey){
+ newCell = g.walkCells(ed.row-1, ed.col, -1, this.acceptsNav, this);
+ }else{
+ newCell = g.walkCells(ed.row+1, ed.col, 1, this.acceptsNav, this);
+ }
+ }else if(k == e.ESC){
+ ed.cancelEdit();
+ }
+ if(newCell){
+ g.startEditing(newCell[0], newCell[1]);
+ }
+ }
+});
+
+Ext.grid.CellSelectionModel = function(config){
+ Ext.apply(this, config);
+
+ this.selection = null;
+
+ this.addEvents({
+
+ "beforecellselect" : true,
+
+ "cellselect" : true,
+
+ "selectionchange" : true
+ });
+
+ Ext.grid.CellSelectionModel.superclass.constructor.call(this);
+};
+
+Ext.extend(Ext.grid.CellSelectionModel, Ext.grid.AbstractSelectionModel, {
+
+
+ initEvents : function(){
+ this.grid.on("cellmousedown", this.handleMouseDown, this);
+ this.grid.getGridEl().on(Ext.isIE ? "keydown" : "keypress", this.handleKeyDown, this);
+ var view = this.grid.view;
+ view.on("refresh", this.onViewChange, this);
+ view.on("rowupdated", this.onRowUpdated, this);
+ view.on("beforerowremoved", this.clearSelections, this);
+ view.on("beforerowsinserted", this.clearSelections, this);
+ if(this.grid.isEditor){
+ this.grid.on("beforeedit", this.beforeEdit, this);
+ }
+ },
+
+ beforeEdit : function(e){
+ this.select(e.row, e.column, false, true, e.record);
+ },
+
+ onRowUpdated : function(v, index, r){
+ if(this.selection && this.selection.record == r){
+ v.onCellSelect(index, this.selection.cell[1]);
+ }
+ },
+
+ onViewChange : function(){
+ this.clearSelections(true);
+ },
+
+
+ getSelectedCell : function(){
+ return this.selection ? this.selection.cell : null;
+ },
+
+
+ clearSelections : function(preventNotify){
+ var s = this.selection;
+ if(s){
+ if(preventNotify !== true){
+ this.grid.view.onCellDeselect(s.cell[0], s.cell[1]);
+ }
+ this.selection = null;
+ this.fireEvent("selectionchange", this, null);
+ }
+ },
+
+
+ hasSelection : function(){
+ return this.selection ? true : false;
+ },
+
+
+ handleMouseDown : function(g, row, cell, e){
+ if(e.button !== 0 || this.isLocked()){
+ return;
+ };
+ this.select(row, cell);
+ },
+
+
+ select : function(rowIndex, colIndex, preventViewNotify, preventFocus, r){
+ if(this.fireEvent("beforecellselect", this, rowIndex, colIndex) !== false){
+ this.clearSelections();
+ r = r || this.grid.store.getAt(rowIndex);
+ this.selection = {
+ record : r,
+ cell : [rowIndex, colIndex]
+ };
+ if(!preventViewNotify){
+ var v = this.grid.getView();
+ v.onCellSelect(rowIndex, colIndex);
+ if(preventFocus !== true){
+ v.focusCell(rowIndex, colIndex);
+ }
+ }
+ this.fireEvent("cellselect", this, rowIndex, colIndex);
+ this.fireEvent("selectionchange", this, this.selection);
+ }
+ },
+
+ isSelectable : function(rowIndex, colIndex, cm){
+ return !cm.isHidden(colIndex);
+ },
+
+
+ handleKeyDown : function(e){
+ if(!e.isNavKeyPress()){
+ return;
+ }
+ var g = this.grid, s = this.selection;
+ if(!s){
+ e.stopEvent();
+ var cell = g.walkCells(0, 0, 1, this.isSelectable, this);
+ if(cell){
+ this.select(cell[0], cell[1]);
+ }
+ return;
+ }
+ var sm = this;
+ var walk = function(row, col, step){
+ return g.walkCells(row, col, step, sm.isSelectable, sm);
+ };
+ var k = e.getKey(), r = s.cell[0], c = s.cell[1];
+ var newCell;
+
+ switch(k){
+ case e.TAB:
+ if(e.shiftKey){
+ newCell = walk(r, c-1, -1);
+ }else{
+ newCell = walk(r, c+1, 1);
+ }
+ break;
+ case e.DOWN:
+ newCell = walk(r+1, c, 1);
+ break;
+ case e.UP:
+ newCell = walk(r-1, c, -1);
+ break;
+ case e.RIGHT:
+ newCell = walk(r, c+1, 1);
+ break;
+ case e.LEFT:
+ newCell = walk(r, c-1, -1);
+ break;
+ case e.ENTER:
+ if(g.isEditor && !g.editing){
+ g.startEditing(r, c);
+ e.stopEvent();
+ return;
+ }
+ break;
+ };
+ if(newCell){
+ this.select(newCell[0], newCell[1]);
+ e.stopEvent();
+ }
+ },
+
+ acceptsNav : function(row, col, cm){
+ return !cm.isHidden(col) && cm.isCellEditable(col, row);
+ },
+
+ onEditorKey : function(field, e){
+ var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor;
+ if(k == e.TAB){
+ if(e.shiftKey){
+ newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this);
+ }else{
+ newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
+ }
+ e.stopEvent();
+ }else if(k == e.ENTER){
+ ed.completeEdit();
+ e.stopEvent();
+ }else if(k == e.ESC){
+ ed.cancelEdit();
+ }
+ if(newCell){
+ g.startEditing(newCell[0], newCell[1]);
+ }
+ }
+});
+
+Ext.grid.EditorGridPanel = Ext.extend(Ext.grid.GridPanel, {
+
+ clicksToEdit: 2,
+
+
+ isEditor : true,
+
+ trackMouseOver: false,
+
+ detectEdit: false,
+
+
+ initComponent : function(){
+ Ext.grid.EditorGridPanel.superclass.initComponent.call(this);
+
+ if(!this.selModel){
+ this.selModel = new Ext.grid.CellSelectionModel();
+ }
+
+ this.activeEditor = null;
+
+ this.addEvents({
+
+ "beforeedit" : true,
+
+ "afteredit" : true,
+
+ "validateedit" : true
+ });
+ },
+
+
+ initEvents : function(){
+ Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
+
+ this.on("bodyscroll", this.stopEditing, this);
+
+ if(this.clicksToEdit == 1){
+ this.on("cellclick", this.onCellDblClick, this);
+ }else {
+ if(this.clicksToEdit == 'auto' && this.view.mainBody){
+ this.view.mainBody.on("mousedown", this.onAutoEditClick, this);
+ }
+ this.on("celldblclick", this.onCellDblClick, this);
+ }
+ this.getGridEl().addClass("xedit-grid");
+ },
+
+
+ onCellDblClick : function(g, row, col){
+ this.startEditing(row, col);
+ },
+
+
+ onAutoEditClick : function(e, t){
+ var row = this.view.findRowIndex(t);
+ var col = this.view.findCellIndex(t);
+ if(row !== false && col !== false){
+ if(this.selModel.getSelectedCell){
+ var sc = this.selModel.getSelectedCell();
+ if(sc && sc.cell[0] === row && sc.cell[1] === col){
+ this.startEditing(row, col);
+ }
+ }else{
+ if(this.selModel.isSelected(row)){
+ this.startEditing(row, col);
+ }
+ }
+ }
+ },
+
+
+ onEditComplete : function(ed, value, startValue){
+ this.editing = false;
+ this.activeEditor = null;
+ ed.un("specialkey", this.selModel.onEditorKey, this.selModel);
+ if(String(value) !== String(startValue)){
+ var r = ed.record;
+ var field = this.colModel.getDataIndex(ed.col);
+ var e = {
+ grid: this,
+ record: r,
+ field: field,
+ originalValue: startValue,
+ value: value,
+ row: ed.row,
+ column: ed.col,
+ cancel:false
+ };
+ if(this.fireEvent("validateedit", e) !== false && !e.cancel){
+ r.set(field, e.value);
+ delete e.cancel;
+ this.fireEvent("afteredit", e);
+ }
+ }
+ this.view.focusCell(ed.row, ed.col);
+ },
+
+
+ startEditing : function(row, col){
+ this.stopEditing();
+ if(this.colModel.isCellEditable(col, row)){
+ this.view.ensureVisible(row, col, true);
+ var r = this.store.getAt(row);
+ var field = this.colModel.getDataIndex(col);
+ var e = {
+ grid: this,
+ record: r,
+ field: field,
+ value: r.data[field],
+ row: row,
+ column: col,
+ cancel:false
+ };
+ if(this.fireEvent("beforeedit", e) !== false && !e.cancel){
+ this.editing = true;
+ var ed = this.colModel.getCellEditor(col, row);
+ if(!ed.rendered){
+ ed.render(this.view.getEditorParent(ed));
+ }
+ (function(){
+ ed.row = row;
+ ed.col = col;
+ ed.record = r;
+ ed.on("complete", this.onEditComplete, this, {single: true});
+ ed.on("specialkey", this.selModel.onEditorKey, this.selModel);
+ this.activeEditor = ed;
+ var v = r.data[field];
+ ed.startEdit(this.view.getCell(row, col), v);
+ }).defer(50, this);
+ }
+ }
+ },
+
+
+ stopEditing : function(){
+ if(this.activeEditor){
+ this.activeEditor.completeEdit();
+ }
+ this.activeEditor = null;
+ }
+});
+Ext.reg('editorgrid', Ext.grid.EditorGridPanel);
+Ext.grid.GridEditor = function(field, config){
+ Ext.grid.GridEditor.superclass.constructor.call(this, field, config);
+ field.monitorTab = false;
+};
+
+Ext.extend(Ext.grid.GridEditor, Ext.Editor, {
+ alignment: "tl-tl",
+ autoSize: "width",
+ hideEl : false,
+ cls: "x-small-editor x-grid-editor",
+ shim:false,
+ shadow:false
+});
+
+Ext.grid.PropertyRecord = Ext.data.Record.create([
+ {name:'name',type:'string'}, 'value'
+]);
+
+
+Ext.grid.PropertyStore = function(grid, source){
+ this.grid = grid;
+ this.store = new Ext.data.Store({
+ recordType : Ext.grid.PropertyRecord
+ });
+ this.store.on('update', this.onUpdate, this);
+ if(source){
+ this.setSource(source);
+ }
+ Ext.grid.PropertyStore.superclass.constructor.call(this);
+};
+Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, {
+ setSource : function(o){
+ this.source = o;
+ this.store.removeAll();
+ var data = [];
+ for(var k in o){
+ if(this.isEditableValue(o[k])){
+ data.push(new Ext.grid.PropertyRecord({name: k, value: o[k]}, k));
+ }
+ }
+ this.store.loadRecords({records: data}, {}, true);
+ },
+
+ onUpdate : function(ds, record, type){
+ if(type == Ext.data.Record.EDIT){
+ var v = record.data['value'];
+ var oldValue = record.modified['value'];
+ if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){
+ this.source[record.id] = v;
+ record.commit();
+ this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue);
+ }else{
+ record.reject();
+ }
+ }
+ },
+
+ getProperty : function(row){
+ return this.store.getAt(row);
+ },
+
+ isEditableValue: function(val){
+ if(val && val instanceof Date){
+ return true;
+ }else if(typeof val == 'object' || typeof val == 'function'){
+ return false;
+ }
+ return true;
+ },
+
+ setValue : function(prop, value){
+ this.source[prop] = value;
+ this.store.getById(prop).set('value', value);
+ },
+
+ getSource : function(){
+ return this.source;
+ }
+});
+
+
+Ext.grid.PropertyColumnModel = function(grid, store){
+ this.grid = grid;
+ var g = Ext.grid;
+ g.PropertyColumnModel.superclass.constructor.call(this, [
+ {header: this.nameText, width:50, sortable: true, dataIndex:'name', id: 'name'},
+ {header: this.valueText, width:50, resizable:false, dataIndex: 'value', id: 'value'}
+ ]);
+ this.store = store;
+ this.bselect = Ext.DomHelper.append(document.body, {
+ tag: 'select', cls: 'x-grid-editor x-hide-display', children: [
+ {tag: 'option', value: 'true', html: 'true'},
+ {tag: 'option', value: 'false', html: 'false'}
+ ]
+ });
+ var f = Ext.form;
+
+ var bfield = new f.Field({
+ el:this.bselect,
+ bselect : this.bselect,
+ autoShow: true,
+ getValue : function(){
+ return this.bselect.value == 'true';
+ }
+ });
+ this.editors = {
+ 'date' : new g.GridEditor(new f.DateField({selectOnFocus:true})),
+ 'string' : new g.GridEditor(new f.TextField({selectOnFocus:true})),
+ 'number' : new g.GridEditor(new f.NumberField({selectOnFocus:true, style:'text-align:left;'})),
+ 'boolean' : new g.GridEditor(bfield)
+ };
+ this.renderCellDelegate = this.renderCell.createDelegate(this);
+ this.renderPropDelegate = this.renderProp.createDelegate(this);
+};
+
+Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, {
+ nameText : 'Name',
+ valueText : 'Value',
+ dateFormat : 'm/j/Y',
+
+ renderDate : function(dateVal){
+ return dateVal.dateFormat(this.dateFormat);
+ },
+
+ renderBool : function(bVal){
+ return bVal ? 'true' : 'false';
+ },
+
+ isCellEditable : function(colIndex, rowIndex){
+ return colIndex == 1;
+ },
+
+ getRenderer : function(col){
+ return col == 1 ?
+ this.renderCellDelegate : this.renderPropDelegate;
+ },
+
+ renderProp : function(v){
+ return this.getPropertyName(v);
+ },
+
+ renderCell : function(val){
+ var rv = val;
+ if(val instanceof Date){
+ rv = this.renderDate(val);
+ }else if(typeof val == 'boolean'){
+ rv = this.renderBool(val);
+ }
+ return Ext.util.Format.htmlEncode(rv);
+ },
+
+ getPropertyName : function(name){
+ var pn = this.grid.propertyNames;
+ return pn && pn[name] ? pn[name] : name;
+ },
+
+ getCellEditor : function(colIndex, rowIndex){
+ var p = this.store.getProperty(rowIndex);
+ var n = p.data['name'], val = p.data['value'];
+ if(this.grid.customEditors[n]){
+ return this.grid.customEditors[n];
+ }
+ if(val instanceof Date){
+ return this.editors['date'];
+ }else if(typeof val == 'number'){
+ return this.editors['number'];
+ }else if(typeof val == 'boolean'){
+ return this.editors['boolean'];
+ }else{
+ return this.editors['string'];
+ }
+ }
+});
+
+
+Ext.grid.PropertyGrid = Ext.extend(Ext.grid.EditorGridPanel, {
+
+
+
+ enableColLock:false,
+ enableColumnMove:false,
+ stripeRows:false,
+ trackMouseOver: false,
+ clicksToEdit:1,
+ enableHdMenu : false,
+ viewConfig : {
+ forceFit:true
+ },
+
+ initComponent : function(){
+ this.customEditors = this.customEditors || {};
+ this.lastEditRow = null;
+ var store = new Ext.grid.PropertyStore(this);
+ this.propStore = store;
+ var cm = new Ext.grid.PropertyColumnModel(this, store);
+ store.store.sort('name', 'ASC');
+ this.addEvents({
+
+ beforepropertychange: true,
+
+ propertychange: true
+ });
+ this.cm = cm;
+ this.ds = store.store;
+ Ext.grid.PropertyGrid.superclass.initComponent.call(this);
+
+ this.selModel.on('beforecellselect', function(sm, rowIndex, colIndex){
+ if(colIndex === 0){
+ this.startEditing.defer(200, this, [rowIndex, 1]);
+ return false;
+ }
+ }, this);
+ },
+
+ onRender : function(){
+ Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments);
+
+ this.getGridEl().addClass('x-props-grid');
+ },
+
+ afterRender: function(){
+ Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments);
+ if(this.source){
+ this.setSource(this.source);
+ }
+ },
+
+
+ setSource : function(source){
+ this.propStore.setSource(source);
+ },
+
+
+ getSource : function(){
+ return this.propStore.getSource();
+ }
+});
+
+Ext.grid.RowNumberer = function(config){
+ Ext.apply(this, config);
+ if(this.rowspan){
+ this.renderer = this.renderer.createDelegate(this);
+ }
+};
+
+Ext.grid.RowNumberer.prototype = {
+
+ header: "",
+
+ width: 23,
+
+ sortable: false,
+
+
+ fixed:true,
+ dataIndex: '',
+ id: 'numberer',
+ rowspan: undefined,
+
+
+ renderer : function(v, p, record, rowIndex){
+ if(this.rowspan){
+ p.cellAttr = 'rowspan="'+this.rowspan+'"';
+ }
+ return rowIndex+1;
+ }
+};
+
+Ext.grid.CheckboxSelectionModel = Ext.extend(Ext.grid.RowSelectionModel, {
+
+ header: '<div class="x-grid3-hd-checker"> </div>',
+
+ width: 20,
+
+ sortable: false,
+
+
+ fixed:true,
+ dataIndex: '',
+ id: 'checker',
+
+
+ initEvents : function(){
+ Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);
+ this.grid.on('render', function(){
+ var view = this.grid.getView();
+ view.mainBody.on('mousedown', this.onMouseDown, this);
+ Ext.fly(view.innerHd).on('mousedown', this.onHdMouseDown, this);
+
+ }, this);
+ },
+
+
+ onMouseDown : function(e, t){
+ if(t.className == 'x-grid3-row-checker'){
+ e.stopEvent();
+ var row = e.getTarget('.x-grid3-row');
+ if(row){
+ var index = row.rowIndex;
+ if(this.isSelected(index)){
+ this.deselectRow(index);
+ }else{
+ this.selectRow(index, true);
+ }
+ }
+ }
+ },
+
+
+ onHdMouseDown : function(e, t){
+ if(t.className == 'x-grid3-hd-checker'){
+ e.stopEvent();
+ var hd = Ext.fly(t.parentNode);
+ var isChecked = hd.hasClass('x-grid3-hd-checker-on');
+ if(isChecked){
+ hd.removeClass('x-grid3-hd-checker-on');
+ this.clearSelections();
+ }else{
+ hd.addClass('x-grid3-hd-checker-on');
+ this.selectAll();
+ }
+ }
+ },
+
+
+ renderer : function(v, p, record){
+ return '<div class="x-grid3-row-checker"> </div>';
+ }
+});
+
+Ext.LoadMask = function(el, config){
+ this.el = Ext.get(el);
+ Ext.apply(this, config);
+ if(this.store){
+ this.store.on('beforeload', this.onBeforeLoad, this);
+ this.store.on('load', this.onLoad, this);
+ this.store.on('loadexception', this.onLoad, this);
+ this.removeMask = Ext.value(this.removeMask, false);
+ }else{
+ var um = this.el.getUpdater();
+ um.showLoadIndicator = false; um.on('beforeupdate', this.onBeforeLoad, this);
+ um.on('update', this.onLoad, this);
+ um.on('failure', this.onLoad, this);
+ this.removeMask = Ext.value(this.removeMask, true);
+ }
+};
+
+Ext.LoadMask.prototype = {
+
+
+ msg : 'Loading...',
+
+ msgCls : 'x-mask-loading',
+
+
+ disabled: false,
+
+
+ disable : function(){
+ this.disabled = true;
+ },
+
+
+ enable : function(){
+ this.disabled = false;
+ },
+
+ onLoad : function(){
+ this.el.unmask(this.removeMask);
+ },
+
+ onBeforeLoad : function(){
+ if(!this.disabled){
+ this.el.mask(this.msg, this.msgCls);
+ }
+ },
+
+ show: function(){
+ this.onBeforeLoad();
+ },
+
+ hide: function(){
+ this.onLoad();
+ },
+
+ destroy : function(){
+ if(this.store){
+ this.store.un('beforeload', this.onBeforeLoad, this);
+ this.store.un('load', this.onLoad, this);
+ this.store.un('loadexception', this.onLoad, this);
+ }else{
+ var um = this.el.getUpdater();
+ um.un('beforeupdate', this.onBeforeLoad, this);
+ um.un('update', this.onLoad, this);
+ um.un('failure', this.onLoad, this);
+ }
+ }
+};
+
+Ext.ProgressBar = Ext.extend(Ext.BoxComponent, {
+
+ baseCls : 'x-progress',
+
+
+ waitTimer : null,
+
+
+ initComponent : function(){
+ Ext.ProgressBar.superclass.initComponent.call(this);
+ this.addEvents({
+
+ "update" : true
+ });
+ },
+
+
+ onRender : function(ct, position){
+ Ext.ProgressBar.superclass.onRender.call(this, ct, position);
+
+ var tpl = new Ext.Template(
+ '<div class="{cls}-wrap">',
+ '<div class="{cls}-inner">',
+ '<div class="{cls}-bar">',
+ '<div class="{cls}-text">',
+ '<div> </div>',
+ '</div>',
+ '</div>',
+ '<div class="{cls}-text {cls}-text-back">',
+ '<div> </div>',
+ '</div>',
+ '</div>',
+ '</div>'
+ );
+
+ if(position){
+ this.el = tpl.insertBefore(position, {cls: this.baseCls}, true);
+ }else{
+ this.el = tpl.append(ct, {cls: this.baseCls}, true);
+ }
+ if(this.id){
+ this.el.dom.id = this.id;
+ }
+ var inner = this.el.dom.firstChild;
+ this.progressBar = Ext.get(inner.firstChild);
+
+ if(this.textEl){
+
+ this.textEl = Ext.get(this.textEl);
+ delete this.textTopEl;
+ }else{
+
+ this.textTopEl = Ext.get(this.progressBar.dom.firstChild);
+ var textBackEl = Ext.get(inner.childNodes[1]);
+ this.textTopEl.setStyle("z-index", 99).addClass('x-hidden');
+ this.textEl = new Ext.CompositeElement([this.textTopEl.dom.firstChild, textBackEl.dom.firstChild]);
+ this.textEl.setWidth(inner.offsetWidth);
+ }
+ if(this.value){
+ this.updateProgress(this.value, this.text);
+ }else{
+ this.updateText(this.text);
+ }
+ this.setSize(this.width || 'auto', 'auto');
+ this.progressBar.setHeight(inner.offsetHeight);
+ },
+
+
+ updateProgress : function(value, text){
+ this.value = value || 0;
+ if(text){
+ this.updateText(text);
+ }
+ var w = Math.floor(value*this.el.dom.firstChild.offsetWidth);
+ this.progressBar.setWidth(w);
+ if(this.textTopEl){
+
+ this.textTopEl.removeClass('x-hidden').setWidth(w);
+ }
+ this.fireEvent('update', this, value, text);
+ return this;
+ },
+
+
+ wait : function(o){
+ if(!this.waitTimer){
+ var scope = this;
+ o = o || {};
+ this.waitTimer = Ext.TaskMgr.start({
+ run: function(i){
+ var inc = o.increment || 10;
+ this.updateProgress(((((i+inc)%inc)+1)*(100/inc))*.01);
+ },
+ interval: o.interval || 1000,
+ duration: o.duration,
+ onStop: function(){
+ if(o.fn){
+ o.fn.apply(o.scope || this);
+ }
+ this.reset();
+ },
+ scope: scope
+ });
+ }
+ return this;
+ },
+
+
+ isWaiting : function(){
+ return this.waitTimer != null;
+ },
+
+
+ updateText : function(text){
+ this.text = text || ' ';
+ this.textEl.update(this.text);
+ return this;
+ },
+
+
+ setSize : function(w, h){
+ Ext.ProgressBar.superclass.setSize.call(this, w, h);
+ if(this.textTopEl){
+ var inner = this.el.dom.firstChild;
+ this.textEl.setSize(inner.offsetWidth, inner.offsetHeight);
+ }
+ return this;
+ },
+
+
+ reset : function(hide){
+ this.updateProgress(0);
+ if(this.textTopEl){
+ this.textTopEl.addClass('x-hidden');
+ }
+ if(this.waitTimer){
+ this.waitTimer.onStop = null;
+ Ext.TaskMgr.stop(this.waitTimer);
+ this.waitTimer = null;
+ }
+ if(hide === true){
+ this.hide();
+ }
+ return this;
+ }
+});
+Ext.reg('progress', Ext.ProgressBar);
+Ext.debug = {};
+
+(function(){
+
+var cp;
+
+function createConsole(){
+
+ var scriptPanel = new Ext.debug.ScriptsPanel();
+ var logView = new Ext.debug.LogPanel();
+ var tree = new Ext.debug.DomTree();
+
+ var tabs = new Ext.TabPanel({
+ activeTab: 0,
+ border: false,
+ tabPosition: 'bottom',
+ items: [{
+ title: 'Debug Console',
+ layout:'border',
+ items: [logView, scriptPanel]
+ },{
+ title: 'DOM Inspector',
+ layout:'border',
+ items: [tree]
+ }]
+ });
+
+ cp = new Ext.Panel({
+ id: 'x-debug-browser',
+ title: 'Console',
+ collapsible: true,
+ animCollapse: false,
+ style: 'position:absolute;left:0;bottom:0;',
+ height:200,
+ logView: logView,
+ layout: 'fit',
+
+ tools:[{
+ id: 'close',
+ handler: function(){
+ cp.destroy();
+ cp = null;
+ Ext.EventManager.removeResizeListener(handleResize);
+ }
+ }],
+
+ items: tabs
+ });
+
+ cp.render(document.body);
+
+ cp.resizer = new Ext.Resizable(cp.el, {
+ minHeight:50,
+ handles: "n",
+ pinned: true,
+ transparent:true,
+ resizeElement : function(){
+ var box = this.proxy.getBox();
+ this.proxy.hide();
+ cp.setHeight(box.height);
+ return box;
+ }
+ });
+
+ function handleResize(){
+ cp.setWidth(Ext.getBody().getViewSize().width);
+ }
+ Ext.EventManager.onWindowResize(handleResize);
+
+ handleResize();
+}
+
+
+Ext.apply(Ext, {
+ log : function(){
+ if(!cp){
+ createConsole();
+ }
+ cp.logView.log.apply(cp.logView, arguments);
+ },
+
+ logf : function(format, arg1, arg2, etc){
+ Ext.log(String.format.apply(String, arguments));
+ },
+
+ dump : function(o){
+ if(typeof o == 'string' || typeof o == 'number' || typeof o == 'undefined' || o instanceof Date){
+ Ext.log(o);
+ }else if(!o){
+ Ext.log("null");
+ }else if(typeof o != "object"){
+ Ext.log('Unknown return type');
+ }else if(o instanceof Array){
+ Ext.log('['+o.join(',')+']');
+ }else{
+ var b = ["{\n"];
+ for(var key in o){
+ var to = typeof o[key];
+ if(to != "function" && to != "object"){
+ b.push(String.format(" {0}: {1},\n", key, o[key]));
+ }
+ }
+ var s = b.join("");
+ if(s.length > 3){
+ s = s.substr(0, s.length-2);
+ }
+ Ext.log(s + "\n}");
+ }
+ },
+
+ _timers : {},
+
+ time : function(name){
+ name = name || "def";
+ Ext._timers[name] = new Date().getTime();
+ },
+
+ timeEnd : function(name, printResults){
+ var t = new Date().getTime();
+ name = name || "def";
+ var v = String.format("{0} ms", t-Ext._timers[name]);
+ Ext._timers[name] = new Date().getTime();
+ if(printResults !== false){
+ Ext.log('Timer ' + (name == "def" ? v : name + ": " + v));
+ }
+ return v;
+ }
+});
+
+})();
+
+
+Ext.debug.ScriptsPanel = Ext.extend(Ext.Panel, {
+ id:'x-debug-scripts',
+ region: 'east',
+ minWidth: 200,
+ split: true,
+ width: 350,
+ border: false,
+ layout:'anchor',
+ style:'border-width:0 0 0 1px;',
+
+ initComponent : function(){
+
+ this.scriptField = new Ext.form.TextArea({
+ anchor: '100% -26',
+ style:'border-width:0;'
+ });
+
+ this.trapBox = new Ext.form.Checkbox({
+ id: 'console-trap',
+ boxLabel: 'Trap Errors',
+ checked: true
+ });
+
+ this.toolbar = new Ext.Toolbar([{
+ text: 'Run',
+ scope: this,
+ handler: this.evalScript
+ },{
+ text: 'Clear',
+ scope: this,
+ handler: this.clear
+ },
+ '->',
+ this.trapBox,
+ ' ', ' '
+ ]);
+
+ this.items = [this.toolbar, this.scriptField];
+
+ Ext.debug.ScriptsPanel.superclass.initComponent.call(this);
+ },
+
+ evalScript : function(){
+ var s = this.scriptField.getValue();
+ if(this.trapBox.getValue()){
+ try{
+ var rt = eval(s);
+ Ext.dump(rt === undefined? '(no return)' : rt);
+ }catch(e){
+ Ext.log(e.message || e.descript);
+ }
+ }else{
+ var rt = eval(s);
+ Ext.dump(rt === undefined? '(no return)' : rt);
+ }
+ },
+
+ clear : function(){
+ this.scriptField.setValue('');
+ this.scriptField.focus();
+ }
+
+});
+
+Ext.debug.LogPanel = Ext.extend(Ext.Panel, {
+ autoScroll: true,
+ region: 'center',
+ border: false,
+ style:'border-width:0 1px 0 0',
+
+ log : function(){
+ var markup = [ '<div style="padding:5px !important;border-bottom:1px solid #ccc;">',
+ Ext.util.Format.htmlEncode(Array.prototype.join.call(arguments, ', ')).replace(/\n/g, '<br />').replace(/\s/g, ' '),
+ '</div>'].join('');
+
+ this.body.insertHtml('beforeend', markup);
+ this.body.scrollTo('top', 100000);
+ },
+
+ clear : function(){
+ this.body.update('');
+ this.body.dom.scrollTop = 0;
+ }
+});
+
+Ext.debug.DomTree = Ext.extend(Ext.tree.TreePanel, {
+ enableDD:false ,
+ lines:false,
+ rootVisible:false,
+ animate:false,
+ hlColor:'ffff9c',
+ autoScroll: true,
+ region:'center',
+ border:false,
+
+ initComponent : function(){
+
+
+ Ext.debug.DomTree.superclass.initComponent.call(this);
+
+ var styles = false, hnode;
+ var nonSpace = /^\s*$/;
+ var html = Ext.util.Format.htmlEncode;
+ var ellipsis = Ext.util.Format.ellipsis;
+ var styleRe = /\s?([a-z\-]*)\:([^;]*)(?:[;\s\n\r]*)/gi;
+
+ function findNode(n){
+ if(!n || n.nodeType != 1 || n == document.body || n == document){
+ return false;
+ }
+ var pn = [n], p = n;
+ while((p = p.parentNode) && p.nodeType == 1 && p.tagName.toUpperCase() != 'HTML'){
+ pn.unshift(p);
+ }
+ var cn = hnode;
+ for(var i = 0, len = pn.length; i < len; i++){
+ cn.expand();
+ cn = cn.findChild('htmlNode', pn[i]);
+ if(!cn){ return false;
+ }
+ }
+ cn.select();
+ var a = cn.ui.anchor;
+ treeEl.dom.scrollTop = Math.max(0 ,a.offsetTop-10);
+ cn.highlight();
+ return true;
+ }
+
+ function nodeTitle(n){
+ var s = n.tagName;
+ if(n.id){
+ s += '#'+n.id;
+ }else if(n.className){
+ s += '.'+n.className;
+ }
+ return s;
+ }
+
+ function onNodeSelect(t, n, last){
+ return;
+ if(last && last.unframe){
+ last.unframe();
+ }
+ var props = {};
+ if(n && n.htmlNode){
+ if(frameEl.pressed){
+ n.frame();
+ }
+ if(inspecting){
+ return;
+ }
+ addStyle.enable();
+ reload.setDisabled(n.leaf);
+ var dom = n.htmlNode;
+ stylePanel.setTitle(nodeTitle(dom));
+ if(styles && !showAll.pressed){
+ var s = dom.style ? dom.style.cssText : '';
+ if(s){
+ var m;
+ while ((m = styleRe.exec(s)) != null){
+ props[m[1].toLowerCase()] = m[2];
+ }
+ }
+ }else if(styles){
+ var cl = Ext.debug.cssList;
+ var s = dom.style, fly = Ext.fly(dom);
+ if(s){
+ for(var i = 0, len = cl.length; i<len; i++){
+ var st = cl[i];
+ var v = s[st] || fly.getStyle(st);
+ if(v != undefined && v !== null && v !== ''){
+ props[st] = v;
+ }
+ }
+ }
+ }else{
+ for(var a in dom){
+ var v = dom[a];
+ if((isNaN(a+10)) && v != undefined && v !== null && v !== '' && !(Ext.isGecko && a[0] == a[0].toUpperCase())){
+ props[a] = v;
+ }
+ }
+ }
+ }else{
+ if(inspecting){
+ return;
+ }
+ addStyle.disable();
+ reload.disabled();
+ }
+ stylesGrid.setSource(props);
+ stylesGrid.treeNode = n;
+ stylesGrid.view.fitColumns();
+ }
+
+ this.loader = new Ext.tree.TreeLoader();
+ this.loader.load = function(n, cb){
+ var isBody = n.htmlNode == document.body;
+ var cn = n.htmlNode.childNodes;
+ for(var i = 0, c; c = cn[i]; i++){
+ if(isBody && c.id == 'x-debug-browser'){
+ continue;
+ }
+ if(c.nodeType == 1){
+ n.appendChild(new Ext.debug.HtmlNode(c));
+ }else if(c.nodeType == 3 && !nonSpace.test(c.nodeValue)){
+ n.appendChild(new Ext.tree.TreeNode({
+ text:'<em>' + ellipsis(html(String(c.nodeValue)), 35) + '</em>',
+ cls: 'x-tree-noicon'
+ }));
+ }
+ }
+ cb();
+ };
+
+
+ this.root = this.setRootNode(new Ext.tree.TreeNode('Ext'));
+
+ hnode = this.root.appendChild(new Ext.debug.HtmlNode(
+ document.getElementsByTagName('html')[0]
+ ));
+
+ }
+});
+
+
+Ext.debug.HtmlNode = function(){
+ var html = Ext.util.Format.htmlEncode;
+ var ellipsis = Ext.util.Format.ellipsis;
+ var nonSpace = /^\s*$/;
+
+ var attrs = [
+ {n: 'id', v: 'id'},
+ {n: 'className', v: 'class'},
+ {n: 'name', v: 'name'},
+ {n: 'type', v: 'type'},
+ {n: 'src', v: 'src'},
+ {n: 'href', v: 'href'}
+ ];
+
+ function hasChild(n){
+ for(var i = 0, c; c = n.childNodes[i]; i++){
+ if(c.nodeType == 1){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function renderNode(n, leaf){
+ var tag = n.tagName.toLowerCase();
+ var s = '<' + tag;
+ for(var i = 0, len = attrs.length; i < len; i++){
+ var a = attrs[i];
+ var v = n[a.n];
+ if(v && !nonSpace.test(v)){
+ s += ' ' + a.v + '="<i>' + html(v) +'</i>"';
+ }
+ }
+ var style = n.style ? n.style.cssText : '';
+ if(style){
+ s += ' style="<i>' + html(style.toLowerCase()) +'</i>"';
+ }
+ if(leaf && n.childNodes.length > 0){
+ s+='><em>' + ellipsis(html(String(n.innerHTML)), 35) + '</em></'+tag+'>';
+ }else if(leaf){
+ s += ' />';
+ }else{
+ s += '>';
+ }
+ return s;
+ }
+
+ var HtmlNode = function(n){
+ var leaf = !hasChild(n);
+ this.htmlNode = n;
+ this.tagName = n.tagName.toLowerCase();
+ var attr = {
+ text : renderNode(n, leaf),
+ leaf : leaf,
+ cls: 'x-tree-noicon'
+ };
+ HtmlNode.superclass.constructor.call(this, attr);
+ this.attributes.htmlNode = n; if(!leaf){
+ this.on('expand', this.onExpand, this);
+ this.on('collapse', this.onCollapse, this);
+ }
+ };
+
+
+ Ext.extend(HtmlNode, Ext.tree.AsyncTreeNode, {
+ cls: 'x-tree-noicon',
+ preventHScroll: true,
+ refresh : function(highlight){
+ var leaf = !hasChild(this.htmlNode);
+ this.setText(renderNode(this.htmlNode, leaf));
+ if(highlight){
+ Ext.fly(this.ui.textNode).highlight();
+ }
+ },
+
+ onExpand : function(){
+ if(!this.closeNode && this.parentNode){
+ this.closeNode = this.parentNode.insertBefore(new Ext.tree.TreeNode({
+ text:'</' + this.tagName + '>',
+ cls: 'x-tree-noicon'
+ }), this.nextSibling);
+ }else if(this.closeNode){
+ this.closeNode.ui.show();
+ }
+ },
+
+ onCollapse : function(){
+ if(this.closeNode){
+ this.closeNode.ui.hide();
+ }
+ },
+
+ render : function(bulkRender){
+ HtmlNode.superclass.render.call(this, bulkRender);
+ },
+
+ highlightNode : function(){
+ },
+
+ highlight : function(){
+ },
+
+ frame : function(){
+ this.htmlNode.style.border = '1px solid #0000ff';
+ },
+
+ unframe : function(){
+ this.htmlNode.style.border = '';
+ }
+ });
+
+ return HtmlNode;
+}();
+
+
+
Modified: trunk/sandbox/samples/rex-demo/src/main/resources/org/richfaces/demo/common/components.properties
===================================================================
--- trunk/sandbox/samples/rex-demo/src/main/resources/org/richfaces/demo/common/components.properties 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/samples/rex-demo/src/main/resources/org/richfaces/demo/common/components.properties 2007-11-01 22:27:10 UTC (rev 3700)
@@ -1,4 +1,4 @@
# list of components in comma-separated format
#id=name,iconImage,captionImage,devGuideLocation,tldDocLocation,javaDocLocation
resizable= rexc, Resizable, /images/ico_common.gif, /images/cn_resizable.gif, RichFacesComponentsLibrary.html#resizable, jbossrichfaces/freezone/docs/tlddoc/rich/resizable.html, jbossrichfaces/freezone/docs/apidoc/org/richfaces/component/UIResizable.html, /richfaces/resizable.jsf
-jQuery= rexc, jQuery, /images/ico_common.gif, /images/cn_jQuery.gif, RichFacesComponentsLibrary.html#jQuery, jbossrichfaces/freezone/docs/tlddoc/rich/jQuery.html, jbossrichfaces/freezone/docs/apidoc/org/richfaces/component/UIJQuery.html, /richfaces/jQuery.jsf
+#messageBox= rexc, MessageBox, /images/ico_common.gif, /images/cn_resizable.gif, RichFacesComponentsLibrary.html#resizable, jbossrichfaces/freezone/docs/tlddoc/rich/resizable.html, jbossrichfaces/freezone/docs/apidoc/org/richfaces/component/UIResizable.html, /richfaces/resizable.jsf
Deleted: trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/jQuery.xhtml
===================================================================
--- trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/jQuery.xhtml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/jQuery.xhtml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -1,23 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:rich="http://richfaces.org/rich">
-<ui:composition template="/templates/main.xhtml">
- <ui:define name="title">RichFaces - Open Source Rich JSF Components - jQuery Extension</ui:define>
- <ui:define name="body">
-
- <rich:tabPanel switchType="server" value="#{componentNavigator.activeTab}" styleClass="top_tab" contentClass="content_tab" headerClass="header_tabs_class" inactiveTabClass="inactive_tab" activeTabClass="active_tab">
-
- <rich:tab label="Usage">
- <ui:include src="/richfaces/jQuery/usage.xhtml"/>
- </rich:tab>
- <ui:include src="/templates/include/tagInfo.xhtml">
- <ui:param name="path" value="rich/jQuery"/>
- </ui:include>
- </rich:tabPanel>
-
- </ui:define>
-</ui:composition>
-</html>
Modified: trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/resizable/examples/simple.xhtml
===================================================================
--- trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/resizable/examples/simple.xhtml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/samples/rex-demo/src/main/webapp/richfaces/resizable/examples/simple.xhtml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -6,21 +6,45 @@
xmlns:rex="http://labs.jboss.com/jbossrichfaces/ui/ui/rex-resizable"
xmlns:rich="http://richfaces.org/rich">
-
+<f:view contentType="text/html">
- <h:form>
- <rex:resizable preserveRatio="false" easing="easingInStrong" animate="true"
- minWidth="450" minHeight="100" width="429" height="200"
+ <rex:resizable name="mypanel" preserveRatio="false" easing="easingInStrong" animate="true"
+ minWidth="480" minHeight="130" width="429" height="200"
style="padding-bottom:4px;z-index:2000">
<rich:panel style="height:100%">
<f:facet name="header">
Dialog Title
</f:facet>
- Drag botton right hand corner to resize<br /><br />
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh, sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. Maecenas tortor turpis, interdum non, sodales non, iaculis ac, lacus. Vestibulum auctor, tortor quis iaculis malesuada, libero lectus bibendum purus, sit amet tincidunt quam turpis vel lacus.
+ Drag the botton right hand corner to resize<br /><br />
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed metus nibh,
+ sodales a, porta at, vulputate eget, dui. Pellentesque ut nisl. Maecenas
+ tortor turpis, interdum non, sodales non, iaculis ac, lacus. Vestibulum auctor,
+ tortor quis iaculis malesuada, libero lectus bibendum purus, sit amet tincidunt
+ quam turpis vel lacus.
</rich:panel>
</rex:resizable>
- </h:form>
+
+<p>
+ <b>Confirm</b><br />
+ Standard Yes/No dialog.
+ <button id="mb1" onclick="go();">Show</button>
+</p>
+<script>
+
+ function showResult(btn){
+ alert('You clicked the '+btn+' button');
+ };
+
+
+ function go() {
+
+ Ext.MessageBox.confirm('Confirm', 'Are you sure you want to do that?', showResult, document.body);
+ }
+
+
+
+</script>
+</f:view>
</ui:composition>
\ No newline at end of file
Modified: trunk/sandbox/samples/rex-demo/src/main/webapp/welcome.xhtml
===================================================================
--- trunk/sandbox/samples/rex-demo/src/main/webapp/welcome.xhtml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/samples/rex-demo/src/main/webapp/welcome.xhtml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -6,24 +6,37 @@
<ui:composition template="/templates/main.xhtml">
<ui:define name="title">RichFaces - Open Source Rich JSF Components</ui:define>
<ui:define name="body">
- <p>Welcome to the <a href="http://labs.jboss.com/jbossrichfaces"
- target="_blank" style="color:#000">Rich Faces 3.1</a> demo!</p>
+ <p>Welcome to the Rich Faces - Ext JS Integration Demo!</p>
<h4>About RichFaces</h4>
- <p>RichFaces is a rich component library for JavaServer Faces
- built on an advanced open source framework (Ajax4jsf). It allows easy integration of AJAX capabilities into enterprise-level business
+ <p>RichFaces is a rich component library for JavaServer Faces.
+ It allows easy integration of AJAX capabilities into enterprise-level business
application development.</p>
- <p>RichFaces enriches the Ajax4jsf framework in two important
+ <p>RichFaces enriches the JSF framework in two important
ways. First, it expands a number of visual ready-to-use components.
- Secondly, it fully implements the skinnability feature of the Ajax4jsf
- framework including a large number of predefined skins. Using
- skinnability, it is much easier to manage the look-and-feel of an
- application.</p>
+ Secondly, it fully implements the skinnability feature including a large number
+ of predefined skins. Using skinnability, it is much easier to manage the
+ look-and-feel of an application.</p>
+ <h4>About Ext JS</h4>
+ <p>Ext is a client-side, JavaScript framework for building web applications.
+ In early 2006, Jack Slocum began working on a set of extension utilities for the Yahoo!
+ User Interface (YUI) library. These extensions were quickly organized into an independent
+ library of code and distributed under the name "yui-ext." In the fall of 2006, Jack
+ released version .33 of yui-ext, which turned out to be the final version of the code under
+ that name (and under the open source BSD license). By the end of the year, the library had
+ gained so much in popularity that the name was changed simply to Ext, a reflection of its
+ maturity and independence as a framework. A company was formed in early 2007, and Ext is
+ now dual-licensed under the LGPL and a commercial license. The library officially hit
+ version 1.0 on April 1, 2007. Read <a href="http://extjs.com/learn/Ext_FAQ">ExtJS FAQ</a>
+ for more information about this library.</p>
<h4>About This Demo</h4>
- <p>This demo Web application showcases the most important
- functionality available in RichFaces components. For each component
- or component set selected in the left-hand sidebar, you can see it in action. Also, you can immediately see the effect of predefined
- skins on the application whole look-and-feel.
+ <p>This demo Web application showcases the RichFaces components and functionality based
+ on the ExtJS Javascript Widgets.
</p>
+ <p><b>Note:</b>The set of components presented with this demo has a purpose to demonstrate
+ a posibility of the integration only. This component set cannot be distributed or used in
+ production unless the legal issues with <a href="http://extjs.com/license">Ext JS license</a>
+ is resolved.
+ </p>
</ui:define>
</ui:composition>
</html>
Modified: trunk/sandbox/ui/pom.xml
===================================================================
--- trunk/sandbox/ui/pom.xml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/ui/pom.xml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -19,5 +19,6 @@
<module>orderingList</module>
<module>columns</module>
<module>rex-resizable</module>
+ <module>rex-messageBox</module>
</modules>
</project>
\ No newline at end of file
Property changes on: trunk/sandbox/ui/rex-messageBox
___________________________________________________________________
Name: svn:ignore
+ .classpath
.project
.settings
target
Added: trunk/sandbox/ui/rex-messageBox/pom.xml
===================================================================
--- trunk/sandbox/ui/rex-messageBox/pom.xml (rev 0)
+++ trunk/sandbox/ui/rex-messageBox/pom.xml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>ui</artifactId>
+ <groupId>org.richfaces.sandbox</groupId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.richfaces.sandbox</groupId>
+ <artifactId>rex-messageBox</artifactId>
+ <name>rex-messageBox</name>
+ <version>1.0-SNAPSHOT</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.richfaces.cdk</groupId>
+ <artifactId>maven-cdk-plugin</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <library>
+ <prefix>org.richfaces.sandbox</prefix>
+ <taglib>
+ <shortName>rex-messageBox</shortName>
+ </taglib>
+ </library>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.framework</groupId>
+ <artifactId>richfaces-impl</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: trunk/sandbox/ui/rex-messageBox/src/main/config/component/messageBox.xml
===================================================================
--- trunk/sandbox/ui/rex-messageBox/src/main/config/component/messageBox.xml (rev 0)
+++ trunk/sandbox/ui/rex-messageBox/src/main/config/component/messageBox.xml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" >
+<components>
+ <component>
+ <name>org.richfaces.sandbox.MessageBox</name>
+ <family>org.richfaces.sandbox.MessageBox</family>
+ <classname>org.richfaces.sandbox.component.html.HtmlMessageBox</classname>
+ <superclass>org.richfaces.sandbox.component.UIMessageBox</superclass>
+ <description>
+ <![CDATA[
+ ]]>
+ </description>
+ <renderer generate="true" override="true">
+ <name>org.richfaces.sandbox.MessageBoxRenderer</name>
+ <template>htmlMessageBox.jspx</template>
+ </renderer>
+ <tag>
+ <name>messageBox</name>
+ <classname>org.richfaces.sandbox.taglib.MessageBoxTag</classname>
+ <superclass>
+ org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
+ </superclass>
+ </tag>
+ <!--
+ <taghandler>
+ <classname>org.ajax4jsf.tag.TestHandler</classname>
+ </taghandler>
+ -->
+ &ui_component_attributes;
+ <!--
+ <property>
+ <name>param</name>
+ <classname>java.lang.String</classname>
+ <description>
+ </description>
+ <defaultvalue>"default"</defaultvalue>
+ </property>
+ -->
+ </component>
+</components>
Added: trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/component/UIMessageBox.java
===================================================================
--- trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/component/UIMessageBox.java (rev 0)
+++ trunk/sandbox/ui/rex-messageBox/src/main/java/org/richfaces/sandbox/component/UIMessageBox.java 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,19 @@
+/**
+ *
+ */
+
+package org.richfaces.sandbox.component;
+
+import javax.faces.component.UIComponentBase;
+
+/**
+ * JSF component class
+ *
+ */
+public abstract class UIMessageBox extends UIComponentBase {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.sandbox.MessageBox";
+
+ public static final String COMPONENT_FAMILY = "org.richfaces.sandbox.MessageBox";
+
+}
Added: trunk/sandbox/ui/rex-messageBox/src/main/templates/htmlMessageBox.jspx
===================================================================
--- trunk/sandbox/ui/rex-messageBox/src/main/templates/htmlMessageBox.jspx (rev 0)
+++ trunk/sandbox/ui/rex-messageBox/src/main/templates/htmlMessageBox.jspx 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:root
+ xmlns:f="http://ajax4jsf.org/cdk/template"
+ xmlns:c=" http://java.sun.com/jsf/core"
+ xmlns:ui=" http://ajax4jsf.org/cdk/ui"
+ xmlns:u=" http://ajax4jsf.org/cdk/u"
+ xmlns:x=" http://ajax4jsf.org/cdk/x"
+ class="org.richfaces.sandbox.renderkit.html.MessageBoxRenderer"
+ baseclass="org.ajax4jsf.renderkit.AjaxComponentRendererBase"
+ component="org.richfaces.sandbox.component.UIMessageBox"
+ >
+ <f:clientid var="clientId"/>
+
+ <script type="text/javascript">
+
+ </script>
+
+ <!--
+ <div id="#{clientId}"
+ x:passThruWithExclusions="value,name,type,id"
+ >
+ </div>
+ -->
+</f:root>
\ No newline at end of file
Added: trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/component/JSFComponentTest.java
===================================================================
--- trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/component/JSFComponentTest.java (rev 0)
+++ trunk/sandbox/ui/rex-messageBox/src/test/java/org/richfaces/sandbox/component/JSFComponentTest.java 2007-11-01 22:27:10 UTC (rev 3700)
@@ -0,0 +1,53 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.sandbox.component;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import javax.faces.component.UIComponent;
+
+/**
+ * Unit test for simple Component.
+ */
+public class JSFComponentTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public JSFComponentTest( String testName )
+ {
+ super( testName );
+ }
+
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testComponent()
+ {
+ assertTrue( true );
+ }
+}
Modified: trunk/sandbox/ui/rex-resizable/src/main/config/component/resizable.xml
===================================================================
--- trunk/sandbox/ui/rex-resizable/src/main/config/component/resizable.xml 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/ui/rex-resizable/src/main/config/component/resizable.xml 2007-11-01 22:27:10 UTC (rev 3700)
@@ -29,6 +29,16 @@
&html_style_attributes;
<property>
+ <name>name</name>
+ <classname>java.lang.String</classname>
+ <description>
+ Name of the javascript variable that will be used to
+ access to the Ext.Resizable object. Might be otiopal if
+ the direct access is not required.
+ </description>
+ <defaultvalue>""</defaultvalue>
+ </property>
+ <property>
<name>adjustments</name>
<classname>java.lang.String</classname>
<description>
Modified: trunk/sandbox/ui/rex-resizable/src/main/templates/resizable.jspx
===================================================================
--- trunk/sandbox/ui/rex-resizable/src/main/templates/resizable.jspx 2007-11-01 21:13:52 UTC (rev 3699)
+++ trunk/sandbox/ui/rex-resizable/src/main/templates/resizable.jspx 2007-11-01 22:27:10 UTC (rev 3700)
@@ -33,6 +33,12 @@
variables.setVariable("params", json.toString());
+ String name = (String)component.getAttributes().get("name");
+ if (! "".equals(name)) {
+ variables.setVariable("name", "window." + name + "=");
+ }
+
+
]]>
</jsp:scriptlet>
@@ -45,7 +51,7 @@
<f:clientid var="clientId"/>
<script type="text/javascript">
window.Richfaces.rexInitWidget(function(){
-new Ext.Resizable("#{clientId}", { #{params} });
+#{name} new Ext.Resizable("#{clientId}", { #{params} });
});
</script>
17 years, 2 months
JBoss Rich Faces SVN: r3699 - trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts.
by richfaces-svn-commits@lists.jboss.org
Author: vmolotkov
Date: 2007-11-01 17:13:52 -0400 (Thu, 01 Nov 2007)
New Revision: 3699
Modified:
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
Log:
rich styles was added
Modified: trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 21:04:15 UTC (rev 3698)
+++ trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 21:13:52 UTC (rev 3699)
@@ -33,9 +33,18 @@
Shuttle.ASC = "acs";
Shuttle.DESC = "desc";
-Shuttle.SELECTED_ITEM_CLASS = "ol_select";
-Shuttle.NORMAL_ITEM_CLASS = "ol_normal";
-Shuttle.ACTIVE_ITEM_CLASS = "ol_active";
+
+Shuttle.SELECTED_ITEM_CLASS = "ol_select rich-ordering-list-row-selected";
+Shuttle.NORMAL_ITEM_CLASS = "ol_normal rich-ordering-list-row";
+Shuttle.ACTIVE_ITEM_CLASS = "ol_active rich-ordering-list-row-active";
+Shuttle.DISABLED_ITEM_CLASS = "rich-ordering-list-row-disabled";
+
+Shuttle.SELECTED_SUBITEM_CLASS = "rich-ordering-list-cell-selected";
+Shuttle.NORMAL_SUBITEM_CLASS = "rich-ordering-list-cell";
+Shuttle.ACTIVE_SUBITEM_CLASS = "rich-ordering-list-cell-active";
+Shuttle.DISABLED_SUBITEM_CLASS = "rich-ordering-list-cell-disabled";
+
+
Shuttle.ACTIVITY_MARKER = "a";
Shuttle.SELECTION_MARKER = "s";
Shuttle.ITEM_SEPARATOR = ",";
@@ -211,6 +220,7 @@
markedItem._selected = true;
this.selectedItems.push(markedShuttleItem);
}
+
this.activeItem.className = Shuttle.SELECTED_ITEM_CLASS;
if (this.activeItem && !this.getSelectItemByNode(this.activeItem)._selected) {
17 years, 2 months
JBoss Rich Faces SVN: r3698 - in trunk/sandbox/ui/orderingList/src/main: resources/org/richfaces/renderkit/html/scripts and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: vmolotkov
Date: 2007-11-01 17:04:15 -0400 (Thu, 01 Nov 2007)
New Revision: 3698
Modified:
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
Log:
new OderingList styles is added
Modified: trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss 2007-11-01 20:38:48 UTC (rev 3697)
+++ trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss 2007-11-01 21:04:15 UTC (rev 3698)
@@ -4,20 +4,98 @@
xmlns="http://www.w3.org/1999/xhtml" >
<f:verbatim><![CDATA[
-.selectedItem {
- color: white;
- background-color: blue;
+.ol_header {
+ padding : 1px;
}
-.normalItem {
- background-color: white;
- color: black;
+
+.ol_headerlabel {
+ font-family : Arial;
+ font-size :11px;
+ font-weight : bold;
+ padding : 3px 3px 3px 8px;
}
-.activeItem {
- color: white;
- background-color: brown;
- border: 1px black dotted;
+
+.ol_body {
+ border : 1px solid #bfbfc0;
+ background-color : #e7f2fb;
}
+.ol_list {
+ overflow : auto;
+ width : 200px;
+ height : 150px;
+ background : #FFFFFF;
+ border : 1px solid #bfbfc0;
+ margin : 0px 8px 8px 8px;
+}
+
+.ol_button_layout {
+ padding : 15px 8px 15px 0px;
+ vertical-align : top;
+}
+
+.ol_button {
+ background : #4A75B5;
+ border : 1px solid #bfbfc0;
+ margin-bottom : 3px;
+ cursor : pointer;
+ padding : 1px;
+}
+
+.ol_button_dis {
+ background : #bfbfc0;
+ border : 1px solid #bfbfc0;
+ margin-bottom : 3px;
+ padding : 1px;
+}
+
+.ol_button_press {
+ background : #4A75B5;
+ border : 1px solid #bfbfc0;
+ margin-bottom : 3px;
+ padding : 2px 0px 0px 2px;
+}
+
+#internal_tab {
+ width : 100%;
+}
+
+#internal_tab .ol_endcol {
+ border-right : 0px;
+}
+
+#internal_tab td {
+ color : #000000;
+ font-family : Arial;
+ font-size :11px;
+ border-bottom : 1px solid #bfbfc0;
+ border-right : 1px solid #bfbfc0;
+ padding : 2px;
+}
+
+#internal_tab th {
+ background : #4A75B5;
+ color : #FFFFFF;
+
+ font-family : Arial;
+ font-size :11px;
+ font-weight : normal;
+ border-bottom : 1px solid #bfbfc0;
+ border-right : 1px solid #bfbfc0;
+ padding : 2px;
+}
+
+#internal_tab tr.ol_select {
+ background : #EAF0F8;
+}
+
+#internal_tab tr.ol_active {
+ background : #C6D6EA;
+}
+
+#internal_tab tr.ol_normal {
+}
+
.body {
-moz-user-select: none;
}
Modified: trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 20:38:48 UTC (rev 3697)
+++ trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 21:04:15 UTC (rev 3698)
@@ -33,9 +33,9 @@
Shuttle.ASC = "acs";
Shuttle.DESC = "desc";
-Shuttle.SELECTED_ITEM_CLASS = "selectedItem";
-Shuttle.NORMAL_ITEM_CLASS = "normalItem";
-Shuttle.ACTIVE_ITEM_CLASS = "activeItem";
+Shuttle.SELECTED_ITEM_CLASS = "ol_select";
+Shuttle.NORMAL_ITEM_CLASS = "ol_normal";
+Shuttle.ACTIVE_ITEM_CLASS = "ol_active";
Shuttle.ACTIVITY_MARKER = "a";
Shuttle.SELECTION_MARKER = "s";
Shuttle.ITEM_SEPARATOR = ",";
Modified: trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-01 20:38:48 UTC (rev 3697)
+++ trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-01 21:04:15 UTC (rev 3698)
@@ -18,7 +18,7 @@
<f:clientid var="clientId"/>
<script type="text/javascript">
function init() {
- var shuttle = new Shuttle('#{clientId}', '#{clientId}internal_tab', '#{clientId}focusKeeper', '#{clientId}valueKeeper');
+ var shuttle = new Shuttle('#{clientId}', 'internal_tab', '#{clientId}focusKeeper', '#{clientId}valueKeeper');
Shuttle.setFocus('#{clientId}focusKeeper');
document.getElementById('up').onclick = function() {shuttle.moveSelectedItems('up');};
document.getElementById('down').onclick = function() {shuttle.moveSelectedItems('down');};
@@ -32,20 +32,20 @@
<input id="#{clientId}focusKeeper" type="button" value="" style="position: absolute; left: -32767;" name="focusKeeper"/>
<input id="#{clientId}valueKeeper" type="hidden" name="valueKeeper" value=""/>
- <table id="#{clientId}table" cellpadding="0" cellspacing="0" class="">
- <tbody id="#{clientId}tbody">
- <tr>
- <td>
- <div class="">
- <table id="#{clientId}internal_tab" cellpadding="0" cellspacing="0" class="">
+ <table id="#{clientId}table" cellpadding="0" cellspacing="0" class="ol_body">
+ <tr>
+ <td>
+ <div class="ol_list">
+ <table id="internal_tab" cellpadding="0" cellspacing="0" class="">
+ <tbody id="#{clientId}tbody">
<vcp:body>
<f:call name="renderChildren" />
</vcp:body>
- </table>
- </div>
- </td>
- </tr>
- </tbody>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
</table>
<a id="sortLabel" href="#">Header</a><br/>
17 years, 2 months
JBoss Rich Faces SVN: r3697 - in trunk/sandbox/ui/orderingList/src/main: java/org/richfaces/renderkit and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: vmolotkov
Date: 2007-11-01 16:38:48 -0400 (Thu, 01 Nov 2007)
New Revision: 3697
Modified:
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/SelectItem.js
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
Log:
functionality "saveState" on the client side,
data synchronization on the server side,
cosmetic changes in a template,corrected behaviour SHIFT+CLICK
Modified: trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java 2007-11-01 18:39:02 UTC (rev 3696)
+++ trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java 2007-11-01 20:38:48 UTC (rev 3697)
@@ -1,6 +1,7 @@
package org.richfaces.component;
import java.util.Iterator;
+import java.util.List;
import org.ajax4jsf.component.UIDataAdaptor;
import org.ajax4jsf.model.DataComponentState;
@@ -11,6 +12,12 @@
public abstract class UIOrderingList extends UIDataAdaptor {
+ private List synchronizedList;
+
+ private List selectedItems;
+
+ private Object activeItem;
+
@Override
protected DataComponentState createComponentState() {
return new RepeatState();
@@ -39,4 +46,27 @@
}
}
+ public List getSynchronizedList() {
+ return synchronizedList;
+ }
+
+ public void setSynchronizedList(List synchronizedList) {
+ this.synchronizedList = synchronizedList;
+ }
+
+ public List getSelectedItems() {
+ return selectedItems;
+ }
+
+ public void setSelectedItems(List selectedItems) {
+ this.selectedItems = selectedItems;
+ }
+
+ public Object getActiveItem() {
+ return activeItem;
+ }
+
+ public void setActiveItem(Object activeItem) {
+ this.activeItem = activeItem;
+ }
}
Modified: trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java 2007-11-01 18:39:02 UTC (rev 3696)
+++ trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java 2007-11-01 20:38:48 UTC (rev 3697)
@@ -1,7 +1,11 @@
package org.richfaces.renderkit;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
@@ -14,6 +18,14 @@
public abstract class OrderingListRendererBase extends AbstractRowsRenderer {
+ private final static String VALUE_ORDER_ID_PREFIX = "valueKeeper";
+
+ private final static Character ACTIVITY_MARKER = 'a';
+
+ private final static Character SELECTION_MARKER = 's';
+
+ private final static String ITEM_SEPARATOR = ",";
+
protected Class getComponentClass() {
return UIOrderingList.class;
}
@@ -30,7 +42,6 @@
UIDataAdaptor table = holder.getTable();
writer.startElement(HTML.TR_ELEMENT, table);
- writer.writeAttribute(HTML.id_ATTRIBUTE, table.getClientId(context), null);
List<UIComponent> children = table.getChildren();
for (UIComponent component : children) {
@@ -51,15 +62,54 @@
public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
encodeRows(context, component);
}
-
- public String initJSShuttleObject(FacesContext context, UIOrderingList component) {
- StringBuffer script = new StringBuffer();
- script.append("var shuttleItems = new Array();");
- script.append("for (var i = 9; i > 0; i--) {");
- script.append("shuttleItems[9-i] = new SelectItem('Item ' + i, i, 'description' + i, null, false);");
- script.append("}");
- script.append("var shuttle = new Shuttle('").append(component.getClientId(context)).append("', shuttleItems);");
- //script.append(" shuttle.init();");
- return script.toString();
+
+ public void doDecode(FacesContext context, UIComponent component) {
+ UIOrderingList orderingList = (UIOrderingList) component;
+
+ String clientId = component.getClientId(context);
+ Map requestParameterMap = context.getExternalContext()
+ .getRequestParameterMap();
+
+ String valueOrder = (String) requestParameterMap.get(clientId.concat(VALUE_ORDER_ID_PREFIX));
+
+ if (valueOrder != null) {
+ String[] valueOrderAr = valueOrder.split(ITEM_SEPARATOR);
+ List oldValues = (List) orderingList.getValue();
+ valuesSynchronization(valueOrderAr, oldValues);
+ }
}
+
+
+ private void valuesSynchronization(String[] valueOrder, List oldValues) {
+ List synchronizedList = new ArrayList();
+ List selectedItems = new ArrayList();
+ Object activeItem = null;
+ Integer itemIndex = null;
+ String[] currentOrder;
+
+ for (int i = 0; i < valueOrder.length; i++) {
+ currentOrder = valueOrder[i].split("d+");
+
+ try {
+ itemIndex = new Integer(currentOrder[0]);
+ } catch (NumberFormatException e) {
+ // TODO: handle exception
+ }
+
+ Object currentItem = oldValues.get(itemIndex.intValue());
+ synchronizedList.add(currentItem);
+
+ if (currentOrder.length > 1) {
+ Iterator it = Arrays.asList(currentOrder[1].toCharArray()).iterator();
+ while (it.hasNext()) {
+ Character marker = (Character) it.next();
+ if (ACTIVITY_MARKER.equals(marker)) {
+ activeItem = currentItem;
+ } else if (SELECTION_MARKER.equals(marker)) {
+ selectedItems.add(currentItem);
+ }
+ }
+ }
+ }
+ }
}
Modified: trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 18:39:02 UTC (rev 3696)
+++ trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2007-11-01 20:38:48 UTC (rev 3697)
@@ -8,21 +8,27 @@
}
}
-Shuttle = function(containerId, shuttleItems) {
+Shuttle = function(containerId, tableId, focusKeeperId, valueKeeperId) {
this.container = document.getElementById(containerId);
+ this.shuttleTable = document.getElementById(tableId);
+ this.shuttleTbody = this.shuttleTable.tBodies[0];
+
this.items = null;
this.selectedItems = new Array();
- this.shuttleItems = shuttleItems;
+ this.retrieveShuttleItems();
this.shuttle = null;
this.sortOrder = Shuttle.ASC;
- this.shuttleTable = null;
- this.shuttleTbody = null;
-
this.activeItem = null;
- this.focusKeeper = document.getElementById("focusKeeper");
+ this.focusKeeper = document.getElementById(focusKeeperId);
+ this.valueKeeper = document.getElementById(valueKeeperId);
+
+ var obj = this;
+ this.focusKeeper.onkeydown = function(e) {
+ obj.onkeydownHandler(window.event || e);
+ }
}
Shuttle.ASC = "acs";
@@ -30,7 +36,20 @@
Shuttle.SELECTED_ITEM_CLASS = "selectedItem";
Shuttle.NORMAL_ITEM_CLASS = "normalItem";
Shuttle.ACTIVE_ITEM_CLASS = "activeItem";
+Shuttle.ACTIVITY_MARKER = "a";
+Shuttle.SELECTION_MARKER = "s";
+Shuttle.ITEM_SEPARATOR = ",";
+Shuttle.prototype.retrieveShuttleItems = function() {
+ var rows = this.shuttleTbody.rows;
+ this.shuttleItems = new Array();
+ var obj = this;
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+ this.shuttleItems[i] = new SelectItem(null, i, false, row);
+ }
+}
+
Shuttle.prototype.add = function(selectItem) {
this.createShuttleItem(selectItem, this.shuttle);
}
@@ -93,7 +112,9 @@
item.parentNode.insertBefore(item, rows[item.rowIndex + incr]);
}
}
- }
+ }
+
+ this.saveState();
}
}
@@ -117,25 +138,37 @@
}
Shuttle.prototype.onclickHandler = function(event) {
- var activeElem = event.target || event.srcElement;
+ //var activeElem = event.target || event.srcElement;
+ var activeElem;
+ if (event.rangeParent) {
+ activeElem = event.rangeParent.parentNode;
+ } else {
+ activeElem = event.srcElement;
+ }
+
if (activeElem == null) {
return;
}
while (activeElem.tagName.toLowerCase() != "tr") {
activeElem = activeElem.parentNode;
+ if (!activeElem.tagName) {
+ return; //for IE
+ }
}
if (event.ctrlKey) {
this.addSelectedItem(activeElem);
- //FIX
+ this.activeItem = activeElem;
} else if (event.shiftKey) {
- this.selectItemGroup(activeElem);
+ this.selectionItemGroup(activeElem);
} else {
- this.selectItem(activeElem);
+ this.selectionItem(activeElem);
+ this.activeItem = activeElem;
}
- activeElem.className = Shuttle.ACTIVE_ITEM_CLASS;
- this.activeItem = activeElem;
+ this.activeItem.className = Shuttle.ACTIVE_ITEM_CLASS;
+
+ this.saveState();
}
Shuttle.prototype.onkeydownHandler = function(event) {
@@ -149,17 +182,15 @@
/**
* Click handler
*/
-Shuttle.prototype.selectItem = function(activeItem) {
- var markedItem = this.getSelectItemById(activeItem.id);
+Shuttle.prototype.selectionItem = function(activeItem) {
+ var markedItem = this.getSelectItemByNode(activeItem);
var markedShuttleItem = activeItem;
if (markedItem != null) {
+ this.resetMarked();
if (markedItem._selected) {
- this.resetMarked();
markedItem._selected = false;
} else {
- this.resetMarked();
-
markedItem._selected = true;
this.selectedItems[0] = markedShuttleItem;
}
@@ -170,7 +201,7 @@
* CTRL+Click handler
*/
Shuttle.prototype.addSelectedItem = function(activeItem) {
- var markedItem = this.getSelectItemById(activeItem.id);
+ var markedItem = this.getSelectItemByNode(activeItem);
var markedShuttleItem = activeItem;
if (markedItem._selected) {
@@ -182,7 +213,7 @@
}
this.activeItem.className = Shuttle.SELECTED_ITEM_CLASS;
- if (this.activeItem && !this.getSelectItemById(this.activeItem.id)._selected) {
+ if (this.activeItem && !this.getSelectItemByNode(this.activeItem)._selected) {
this.activeItem.className = Shuttle.NORMAL_ITEM_CLASS;
}
}
@@ -190,23 +221,27 @@
/**
* Shift+Click handler
*/
-Shuttle.prototype.selectItemGroup = function(activeItem) {
- var lastItemIndex = this.activeItem.rowIndex;
+Shuttle.prototype.selectionItemGroup = function(currentItem) {
+ //FIXME
+ var activeItemIndex = this.activeItem.rowIndex;
var startIndex;
var endIndex;
- this.resetMarked();
- if (activeItem.rowIndex > lastItemIndex) {
- startIndex = lastItemIndex;
- endIndex = activeItem.rowIndex;
+
+ if (currentItem.rowIndex > activeItemIndex) {
+ startIndex = activeItemIndex;
+ endIndex = currentItem.rowIndex;
} else {
- startIndex = activeItem.rowIndex;
- endIndex = lastItemIndex;
+ startIndex = currentItem.rowIndex;
+ endIndex = activeItemIndex;
}
+
+ this.resetMarked();
+
var rows = this.shuttleTbody.rows;
for (var i = startIndex; i <= endIndex; i++) {
rows[i].className = Shuttle.SELECTED_ITEM_CLASS;
this.selectedItems.push(rows[i]);
- this.getSelectItemById(rows[i].id)._selected = true;
+ this.getSelectItemByNode(rows[i])._selected = true;
}
}
@@ -215,33 +250,26 @@
for (var i = 0; i < rows.length; i++) {
var shuttleItem = rows[i];
shuttleItem.className = Shuttle.NORMAL_ITEM_CLASS;
- this.getSelectItemById(shuttleItem.id)._selected = false; //FIXME
+ this.getSelectItemByNode(shuttleItem)._selected = false; //FIXME
}
this.selectedItems.length = 0;
}
-Shuttle.prototype.getSelectItemById = function(selectItemId) {
+Shuttle.prototype.getSelectItemByNode = function(selectItemNode) {
for (var i = 0; i < this.shuttleItems.length; i++) {
var item = this.shuttleItems[i];
- if (selectItemId == item._id) {
+ if (selectItemNode.rowIndex == item._node.rowIndex) {
return item;
}
}
- return null
+ return null;
}
-Shuttle.prototype.init = function() {
- this.shuttleTable = document.createElement("table");
- this.shuttleTbody = document.createElement("tbody");
+/*Shuttle.prototype.init = function() {
this.shuttle = this.shuttleTbody;
this.addList(this.shuttleItems);
this.shuttleTable.appendChild(this.shuttle)
this.container.appendChild(this.shuttleTable);
-
- var obj = this;
- this.focusKeeper.onkeydown = function(e) {
- obj.onkeydownHandler(window.event || e);
- }
}
Shuttle.prototype.rebuild = function() {
@@ -282,8 +310,30 @@
td.textContent = selectItem._label;
}
selectItem._node = tr;
+}*/
+
+Shuttle.prototype.toString = function() {
+ var result = new Array();
+ for (var i = 0; i < this.shuttleItems.length; i++) {
+ var item = this.shuttleItems[i];
+ result.push(item._id);
+ if (item._selected) {
+ result.push(Shuttle.SELECTION_MARKER);
+ }
+ if (this.activeItem.rowIndex == item._node.rowIndex) {
+ result.push(Shuttle.ACTIVITY_MARKER);
+ }
+ if (i != (this.shuttleItems.length - 1)) {
+ result.push(Shuttle.ITEM_SEPARATOR);
+ }
+ }
+ return result.join("");
}
+Shuttle.prototype.saveState = function() {
+ this.valueKeeper.value = this.toString();
+}
+
Shuttle.prototype.compareByLabel = function(obj1, obj2) {
obj1 = obj1._label;
obj2 = obj2._label;
Modified: trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/SelectItem.js
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/SelectItem.js 2007-11-01 18:39:02 UTC (rev 3696)
+++ trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/SelectItem.js 2007-11-01 20:38:48 UTC (rev 3697)
@@ -1,20 +1,6 @@
-SelectItem = function(label, value, description, id, selected, node) {
+SelectItem = function(label, id, selected, node) {
this._label = label;
- this._value = value;
this._node = node;
- this._description = description;
- if (id == null) {
- this._id = this.generateId();
- } else {
- this._id = id;
- }
+ this._id = id;
this._selected = selected;
-}
-
-SelectItem.ITEM_ID_PREFIX = "row_";
-SelectItem.PREV_ID = 0;
-
-SelectItem.prototype.generateId = function() {
- SelectItem.PREV_ID++;
- return SelectItem.ITEM_ID_PREFIX.concat(SelectItem.PREV_ID);
}
\ No newline at end of file
Modified: trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
===================================================================
--- trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-01 18:39:02 UTC (rev 3696)
+++ trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-01 20:38:48 UTC (rev 3697)
@@ -16,22 +16,47 @@
</h:scripts>
<f:clientid var="clientId"/>
- <div id="#{clientId}" onclick="Shuttle.setFocus('focusKeeper')">
- <input id="focusKeeper" type="button" value="" style="position: absolute; top: -100; left: -100;" name="focusKeeper"/>
- <vcp:body>
- <f:call name="renderChildren" />
- </vcp:body>
+ <script type="text/javascript">
+ function init() {
+ var shuttle = new Shuttle('#{clientId}', '#{clientId}internal_tab', '#{clientId}focusKeeper', '#{clientId}valueKeeper');
+ Shuttle.setFocus('#{clientId}focusKeeper');
+ document.getElementById('up').onclick = function() {shuttle.moveSelectedItems('up');};
+ document.getElementById('down').onclick = function() {shuttle.moveSelectedItems('down');};
+ document.getElementById('first').onclick = function() {shuttle.moveSelectedItems('first');};
+ document.getElementById('last').onclick = function() {shuttle.moveSelectedItems('last');};
+ document.getElementById('#{clientId}table').onclick = function(e) {shuttle.onclickHandler(window.event || e);}
+ }
+ </script>
+
+ <div id="#{clientId}" onclick="Shuttle.setFocus('#{clientId}focusKeeper')">
+ <input id="#{clientId}focusKeeper" type="button" value="" style="position: absolute; left: -32767;" name="focusKeeper"/>
+ <input id="#{clientId}valueKeeper" type="hidden" name="valueKeeper" value=""/>
- <a href="#" onclick="shuttle.sort();">Header</a><br/>
- <a href="#" onclick="shuttle.moveSelectedItems('up');">up</a><br/>
- <a href="#" onclick="shuttle.moveSelectedItems('down');">down</a><br/>
- <a href="#" onclick="shuttle.moveSelectedItems('first');">first</a><br/>
- <a href="#" onclick="shuttle.moveSelectedItems('last');">last</a>
+ <table id="#{clientId}table" cellpadding="0" cellspacing="0" class="">
+ <tbody id="#{clientId}tbody">
+ <tr>
+ <td>
+ <div class="">
+ <table id="#{clientId}internal_tab" cellpadding="0" cellspacing="0" class="">
+ <vcp:body>
+ <f:call name="renderChildren" />
+ </vcp:body>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <a id="sortLabel" href="#">Header</a><br/>
+ <a id="up" href="#" >up</a><br/>
+ <a id="down" href="#" >down</a><br/>
+ <a id="first" href="#" >first</a><br/>
+ <a id="last" href="#" >last</a>
</div>
<script type="text/javascript">
- #{this:initJSShuttleObject(context, component)}
document.body.onselectstart = function() {return false;};
document.body.className = "body";
- document.body.onload = Shuttle.setFocus('focusKeeper');
+ document.body.onload = init();
</script>
</f:root>
\ No newline at end of file
17 years, 2 months
JBoss Rich Faces SVN: r3696 - trunk/framework/impl/src/main/java/org/ajax4jsf/resource.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2007-11-01 14:39:02 -0400 (Thu, 01 Nov 2007)
New Revision: 3696
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
Log:
fix paint2D
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java 2007-11-01 18:36:37 UTC (rev 3695)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java 2007-11-01 18:39:02 UTC (rev 3696)
@@ -389,7 +389,7 @@
getKey()));
}
// context.setHeader("Content-Type",getContentType());
- context.setContentType(getContentType(null));
+ context.setContentType(getContentType(context));
if (!cached && getContentLength(context) > 0) {
context.setIntHeader("Content-Length", getContentLength(context));
} else {
17 years, 2 months
JBoss Rich Faces SVN: r3695 - trunk/sandbox/samples.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2007-11-01 14:36:37 -0400 (Thu, 01 Nov 2007)
New Revision: 3695
Added:
trunk/sandbox/samples/columnsDemo/
Removed:
trunk/sandbox/samples/colunmsDemo/
Log:
RF-1204
Copied: trunk/sandbox/samples/columnsDemo (from rev 3668, trunk/sandbox/samples/colunmsDemo)
17 years, 2 months
JBoss Rich Faces SVN: r3694 - in trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs: resources and 37 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: SergeySmirnov
Date: 2007-11-01 14:32:20 -0400 (Thu, 01 Nov 2007)
New Revision: 3694
Added:
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/README.txt
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/borders.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/box.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/button.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/combo.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/core.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/date-picker.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dd.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/debug.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dialog.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/editor.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/ext-all.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/form.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/grid.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/layout.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/menu.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/panel.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/progress.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/qtips.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset-min.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/resizable.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tabs.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/toolbar.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tree.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/window.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/xtheme-gray.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/ext-css-patch.xcss
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners-blue.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l-blue.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r-blue.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb-blue.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-arrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-add.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-no.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-yes.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/editor/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/editor/tb-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/exclamation.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/text-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger-tpl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/gradient-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/Thumbs.db
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-left-white.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-right-white.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-top.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/columns.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/dirty.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/done.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-no.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-yes.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/footer-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-split.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-hrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-loading.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-split.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-vista-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hd-btn.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow-over.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-sel-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-by.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-expand-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hd-pop.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-asc.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-desc.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/invalid_line.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/mso-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/nowait.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first-disabled.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last-disabled.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next-disabled.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev-disabled.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/pick-button.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/refresh.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-check-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-expand-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-over.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-sel.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_asc.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_desc.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/wait.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/collapse.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/expand.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/gradient-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-left.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-top.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-collapse.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-expand.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-light-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stick.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stuck.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close-on.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/checked.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/group-checked.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/item-over.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu-parent.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/unchecked.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/left-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/light-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprite-tpl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprites.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tools-sprites-trans.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-corners-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-left-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-top-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/progress/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/progress/progress-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-c.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-lr.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/blue-loading.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/calendar.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/hd-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/large-loading.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/left-btn.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/right-btn.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/warning.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/square.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-left.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroller-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-btm-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow-light.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-over-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/gray-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-add.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-between.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-no.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-over.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-under.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-yes.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus-nl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus-nl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-line.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus-nl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus-nl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder-open.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/leaf.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/loading.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/s.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-error.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-info.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-question.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-warning.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-arrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/gradient-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/corners-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/left-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/light-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprite-tpl.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprites.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tools-sprites-trans.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-corners-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-left-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-top-bottom.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/tip-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/s.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-left.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroller-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-btm-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tabs-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow-light.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-over-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/gray-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-btn-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-error.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-info.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-question.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-warning.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.pspimage
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-right.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/right-corners.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/top-bottom.png
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-center.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-left.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-right.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/collapse.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/dlg-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/e-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/expand.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/hd-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/s-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/se-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/w-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/gradient-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-split.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-vista-hd.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/collapse.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/expand.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/gradient-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-collapse.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-expand.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-light-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/stick.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close-on.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/tip-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/s.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle-dark.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-left-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-right-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/gray-bg.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/tb-btn-sprite.gif
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/basic-dialog.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/grid.css
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/license.txt
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/raw-images/
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/raw-images/shadow.psd
trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/resources.jsb
Log:
upgrade ext js to 2.0.0
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/README.txt
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/README.txt (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/README.txt 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,3 @@
+2006-11-21 jvs:
+ext-all.css contains all of the other css files combined and stripped of comments (except themes).
+
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/borders.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/borders.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/borders.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,61 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-panel-noborder .x-panel-body-noborder {
+ border-width:0;
+}
+
+.x-panel-noborder .x-panel-header-noborder {
+ border-width:0;
+ border-bottom:1px solid #99bbe8;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-width:0;
+ border-bottom:1px solid #99bbe8;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-width:0;
+ border-top:1px solid #99bbe8;
+}
+
+.x-window-noborder .x-window-mc {
+ border-width:0;
+}
+
+.x-window-plain .x-window-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-header-noborder {
+ border-top-width:0;
+ border-left-width:0;
+ border-right-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-footer-noborder {
+ border-bottom-width:0;
+ border-left-width:0;
+ border-right-width:0;
+}
+
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-width:0;
+ border-top:1px solid #99bbe8;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-width:0;
+ border-bottom:1px solid #99bbe8;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/box.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/box.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/box.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,111 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+/*
+ Creates rounded, raised boxes like on the Ext website - the markup isn't pretty:
+ <div class="x-box-blue">
+ <div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>
+ <div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc">
+ <h3>YOUR TITLE HERE (optional)</h3>
+ <div>YOUR CONTENT HERE</div>
+ </div></div></div>
+ <div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>
+ </div>
+ */
+
+.x-box-tl {
+ background: transparent url(../images/default/box/corners.gif) no-repeat 0 0;
+ zoom:1;
+}
+
+.x-box-tc {
+ height: 8px;
+ background: transparent url(../images/default/box/tb.gif) repeat-x 0 0;
+ overflow: hidden;
+}
+
+.x-box-tr {
+ background: transparent url(../images/default/box/corners.gif) no-repeat right -8px;
+}
+
+.x-box-ml {
+ background: transparent url(../images/default/box/l.gif) repeat-y 0;
+ padding-left: 4px;
+ overflow: hidden;
+ zoom:1;
+}
+
+.x-box-mc {
+ background: #eee url(../images/default/box/tb.gif) repeat-x 0 -16px;
+ padding: 4px 10px;
+ font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
+ color: #393939;
+ font-size: 12px;
+}
+
+.x-box-mc h3 {
+ font-size: 14px;
+ font-weight: bold;
+ margin: 0 0 4px 0;
+ zoom:1;
+}
+
+.x-box-mr {
+ background: transparent url(../images/default/box/r.gif) repeat-y right;
+ padding-right: 4px;
+ overflow: hidden;
+}
+
+.x-box-bl {
+ background: transparent url(../images/default/box/corners.gif) no-repeat 0 -16px;
+ zoom:1;
+}
+
+.x-box-bc {
+ background: transparent url(../images/default/box/tb.gif) repeat-x 0 -8px;
+ height: 8px;
+ overflow: hidden;
+}
+
+.x-box-br {
+ background: transparent url(../images/default/box/corners.gif) no-repeat right -24px;
+}
+
+.x-box-tl, .x-box-bl {
+ padding-left: 8px;
+ overflow: hidden;
+}
+
+.x-box-tr, .x-box-br {
+ padding-right: 8px;
+ overflow: hidden;
+}
+
+.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
+ background-image: url(../images/default/box/corners-blue.gif);
+}
+
+.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
+ background-image: url(../images/default/box/tb-blue.gif);
+}
+
+.x-box-blue .x-box-mc {
+ background-color: #c3daf9;
+}
+
+.x-box-blue .x-box-mc h3 {
+ color: #17385b;
+}
+
+.x-box-blue .x-box-ml {
+ background-image: url(../images/default/box/l-blue.gif);
+}
+
+.x-box-blue .x-box-mr {
+ background-image: url(../images/default/box/r-blue.gif);
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/button.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/button.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/button.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,148 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-btn{
+ font:normal 11px tahoma, verdana, helvetica;
+ cursor:pointer;
+ white-space: nowrap;
+}
+.x-btn button{
+ border:0 none;
+ background:transparent;
+ font:normal 11px tahoma,verdana,helvetica;
+ padding-left:3px;
+ padding-right:3px;
+ cursor:pointer;
+ margin:0;
+ overflow:visible;
+ width:auto;
+ -moz-outline:0 none;
+ outline:0 none;
+}
+* html .ext-ie .x-btn button {
+ width:1px;
+}
+.ext-gecko .x-btn button {
+ padding-left:0;
+ padding-right:0;
+}
+.ext-ie .x-btn button {
+ padding-top:2px;
+}
+/*
+ Predefined css class for buttons with only icon. Add this class (x-btn-icon) and a class with a background-image
+ to your button for a button with just an icon.
+ e.g.
+ .my-class .x-btn-text { background-image: url(foo.gif); }
+ */
+
+.x-btn-icon .x-btn-center .x-btn-text{
+ background-position: center;
+ background-repeat: no-repeat;
+ height: 16px;
+ width: 16px;
+ cursor:pointer;
+ white-space: nowrap;
+ padding:0;
+}
+.x-btn-icon .x-btn-center{
+ padding:1px;
+}
+.x-btn em {
+ font-style:normal;
+ font-weight:normal;
+}
+/*
+ Button class for icon and text. Add this class (x-btn-text-icon) and a class with a background-image
+ to your button for both text and icon.
+*/
+
+.x-btn-text-icon .x-btn-center .x-btn-text{
+ background-position: 0 2px;
+ background-repeat: no-repeat;
+ padding-left:18px;
+ padding-top:3px;
+ padding-bottom:2px;
+ padding-right:0;
+}
+
+.x-btn-left, .x-btn-right{
+ font-size:1px;
+ line-height:1px;
+}
+.x-btn-left{
+ width:3px;
+ height:21px;
+ background:url(../images/default/button/btn-sprite.gif) no-repeat 0 0;
+}
+.x-btn-right{
+ width:3px;
+ height:21px;
+ background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -21px;
+}
+.x-btn-left i, .x-btn-right i{
+ display:block;
+ width:3px;
+ overflow:hidden;
+ font-size:1px;
+ line-height:1px;
+}
+.x-btn-center{
+ background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -42px;
+ vertical-align: middle;
+ text-align:center;
+ padding:0 5px;
+ cursor:pointer;
+ white-space:nowrap;
+}
+.x-btn-over .x-btn-left{
+ background-position:0 -63px;
+}
+.x-btn-over .x-btn-right{
+ background-position:0 -84px;
+}
+.x-btn-over .x-btn-center{
+ background-position:0 -105px;
+}
+.x-btn-click .x-btn-center, .x-btn-menu-active .x-btn-center{
+ background-position:0 -126px;
+}
+.x-btn-disabled *{
+ color:gray !important;
+ cursor:default !important;
+}
+.x-btn-menu-text-wrap .x-btn-center {
+ padding:0 3px;
+}
+.ext-gecko .x-btn-menu-text-wrap .x-btn-center {
+ padding:0 1px;
+}
+.x-btn-menu-arrow-wrap .x-btn-center {
+ padding:0;
+}
+.x-btn-menu-arrow-wrap .x-btn-center button {
+ width:12px !important;
+ height:21px;
+ padding:0 !important;
+ display:block;
+ background:transparent url(../images/default/button/btn-arrow.gif) no-repeat left 3px;
+}
+.x-btn-with-menu .x-btn-center {
+ padding-right:2px !important;
+}
+.x-btn-with-menu .x-btn-center em {
+ display:block;
+ background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0;
+ padding-right:10px;
+}
+
+.x-btn-text-icon .x-btn-with-menu .x-btn-center em {
+ display:block;
+ background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px;
+ padding-right:10px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/combo.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/combo.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/combo.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,55 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-combo-list {
+ border:1px solid #98c0f4;
+ background:#ddecfe;
+ zoom:1;
+ overflow:hidden;
+}
+.x-combo-list-inner {
+ overflow:auto;
+ background:white;
+ position:relative; /* for calculating scroll offsets */
+ zoom:1;
+ overflow-x:hidden;
+}
+.x-combo-list-hd {
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+ color:#15428b;
+ background-image: url(../images/default/layout/panel-title-light-bg.gif);
+ border-bottom:1px solid #98c0f4;
+ padding:3px;
+}
+.x-resizable-pinned .x-combo-list-inner {
+ border-bottom:1px solid #98c0f4;
+}
+.x-combo-list-item {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+ padding:2px;
+ border:1px solid #fff;
+ white-space: nowrap;
+ overflow:hidden;
+ text-overflow: ellipsis;
+}
+.x-combo-list .x-combo-selected{
+ border:1px dotted #a3bae9 !important;
+ background:#DFE8F6;
+ cursor:pointer;
+}
+.x-combo-noedit{
+ cursor:pointer;
+}
+.x-combo-list .x-toolbar {
+ border-top:1px solid #98c0f4;
+ border-bottom:0 none;
+}
+
+.x-combo-list-small .x-combo-list-item {
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/core.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/core.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/core.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,310 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.ext-el-mask {
+ z-index: 20000;
+ position: absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ background-color: #CCC;
+ width: 100%;
+ height: 100%;
+ zoom: 1;
+}
+.ext-el-mask-msg {
+ z-index: 20001;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border:1px solid #6593cf;
+ background: #c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px;
+ padding:2px;
+}
+.ext-el-mask-msg div {
+ padding:5px 10px 5px 10px;
+ background: #eee;
+ border:1px solid #a3bad9;
+ color:#222;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+ cursor:wait;
+}
+
+.ext-shim {
+ position:absolute;
+ visibility:hidden;
+ left:0;
+ top:0;
+ overflow:hidden;
+}
+.ext-ie .ext-shim {
+ filter: alpha(opacity=0);
+}
+
+.x-mask-loading div {
+ padding:5px 10px 5px 25px;
+ background: #fbfbfb url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px;
+ line-height: 16px;
+}
+/* class for hiding elements without using display:none */
+.x-hidden, .x-hide-offsets {
+ position:absolute;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+}
+.x-hide-display {
+ display:none !important;
+}
+
+.x-hide-visibility {
+ visibility:hidden !important;
+}
+
+.x-masked {
+ overflow: hidden !important;
+}
+
+.x-masked select, .x-masked object, .x-masked embed {
+ visibility: hidden;
+}
+
+.x-layer {
+ visibility: hidden;
+}
+
+.x-unselectable, .x-unselectable * {
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.x-repaint {
+ zoom: 1;
+ background-color: transparent;
+ -moz-outline: none;
+}
+
+.x-item-disabled {
+ color: gray;
+ cursor: default;
+ opacity: .6;
+ -moz-opacity: .6;
+ filter: alpha(opacity=60);
+}
+
+.x-item-disabled * {
+ color: gray !important;
+ cursor: default !important;
+}
+
+.x-splitbar-proxy {
+ position: absolute;
+ visibility: hidden;
+ z-index: 20001;
+ background: #aaa;
+ zoom: 1;
+ line-height: 1px;
+ font-size: 1px;
+ overflow: hidden;
+}
+
+.x-splitbar-h, .x-splitbar-proxy-h {
+ cursor: e-resize;
+ cursor: col-resize;
+}
+
+.x-splitbar-v, .x-splitbar-proxy-v {
+ cursor: s-resize;
+ cursor: row-resize;
+}
+
+.x-color-palette {
+ width: 150px;
+ height: 92px;
+ cursor: pointer;
+}
+
+.x-color-palette a {
+ border: 1px solid #fff;
+ float: left;
+ padding: 2px;
+ text-decoration: none;
+ -moz-outline: 0 none;
+ outline: 0 none;
+ cursor: pointer;
+}
+
+.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel {
+ border: 1px solid #8BB8F3;
+ background: #deecfd;
+}
+
+.x-color-palette em {
+ display: block;
+ border: 1px solid #ACA899;
+}
+
+.x-color-palette em span {
+ cursor: pointer;
+ display: block;
+ height: 10px;
+ line-height: 10px;
+ width: 10px;
+}
+
+.x-ie-shadow {
+ display: none;
+ position: absolute;
+ overflow: hidden;
+ left:0;
+ top:0;
+ background:#777;
+ zoom:1;
+}
+
+.x-shadow {
+ display: none;
+ position: absolute;
+ overflow: hidden;
+ left:0;
+ top:0;
+}
+
+.x-shadow * {
+ overflow: hidden;
+}
+
+.x-shadow * {
+ padding: 0;
+ border: 0;
+ margin: 0;
+ clear: none;
+ zoom: 1;
+}
+
+/* top bottom */
+.x-shadow .xstc, .x-shadow .xsbc {
+ height: 6px;
+ float: left;
+}
+
+/* corners */
+.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr {
+ width: 6px;
+ height: 6px;
+ float: left;
+}
+
+/* sides */
+.x-shadow .xsc {
+ width: 100%;
+}
+
+.x-shadow .xsml, .x-shadow .xsmr {
+ width: 6px;
+ float: left;
+ height: 100%;
+}
+
+.x-shadow .xsmc {
+ float: left;
+ height: 100%;
+ background: transparent url( ../images/default/shadow-c.png );
+}
+
+.x-shadow .xst, .x-shadow .xsb {
+ height: 6px;
+ overflow: hidden;
+ width: 100%;
+}
+
+.x-shadow .xsml {
+ background: transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0;
+}
+
+.x-shadow .xsmr {
+ background: transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0;
+}
+
+.x-shadow .xstl {
+ background: transparent url( ../images/default/shadow.png ) no-repeat 0 0;
+}
+
+.x-shadow .xstc {
+ background: transparent url( ../images/default/shadow.png ) repeat-x 0 -30px;
+}
+
+.x-shadow .xstr {
+ background: transparent url( ../images/default/shadow.png ) repeat-x 0 -18px;
+}
+
+.x-shadow .xsbl {
+ background: transparent url( ../images/default/shadow.png ) no-repeat 0 -12px;
+}
+
+.x-shadow .xsbc {
+ background: transparent url( ../images/default/shadow.png ) repeat-x 0 -36px;
+}
+
+.x-shadow .xsbr {
+ background: transparent url( ../images/default/shadow.png ) repeat-x 0 -6px;
+}
+
+.loading-indicator {
+ font-size: 11px;
+ background-image: url( '../images/default/grid/loading.gif' );
+ background-repeat: no-repeat;
+ background-position: left;
+ padding-left: 20px;
+ line-height: 16px;
+ margin: 3px;
+}
+
+.x-text-resize {
+ position: absolute;
+ left: -1000px;
+ top: -1000px;
+ visibility: hidden;
+ zoom: 1;
+}
+
+.x-drag-overlay {
+ width: 100%;
+ height: 100%;
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ background-image:url(../images/default/s.gif);
+ z-index: 20000;
+}
+
+.x-clear {
+ clear:both;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+
+
+.x-spotlight {
+ z-index: 8999;
+ position: absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ background-color: #CCC;
+ width:0;
+ height:0;
+ zoom: 1;
+}
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/date-picker.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/date-picker.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/date-picker.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,246 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-date-picker {
+ border: 1px solid #1b376c;
+ border-top:0 none;
+ background:#fff;
+ position:relative;
+}
+.x-date-picker a {
+ -moz-outline:0 none;
+ outline:0 none;
+}
+.x-date-inner, .x-date-inner td, .x-date-inner th{
+ border-collapse:separate;
+}
+.x-date-middle,.x-date-left,.x-date-right {
+ background: url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px;
+ color:#FFF;
+ font:bold 11px "sans serif", tahoma, verdana, helvetica;
+ overflow:hidden;
+}
+
+.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{
+ background:transparent !important;
+ vertical-align:middle;
+}
+.x-date-middle .x-btn .x-btn-text {
+ color:#fff;
+}
+.x-date-middle .x-btn-with-menu .x-btn-center em {
+ background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;
+}
+.x-date-right, .x-date-left {
+ width:18px;
+}
+.x-date-right{
+ text-align:right;
+}
+.x-date-middle {
+ padding-top:2px;padding-bottom:2px;
+}
+.x-date-right a, .x-date-left a{
+ display:block;
+ width:16px;
+ height:16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ cursor:pointer;
+ -moz-opacity: 0.6;
+ opacity:.6;
+ filter: alpha(opacity=60);
+}
+.x-date-right a:hover, .x-date-left a:hover{
+ -moz-opacity: 1;
+ opacity:1;
+ filter: alpha(opacity=100);
+}
+.x-date-right a {
+ background-image: url(../images/default/shared/right-btn.gif);
+ margin-right:2px;
+ text-decoration:none !important;
+}
+.x-date-left a{
+ background-image: url(../images/default/shared/left-btn.gif);
+ margin-left:2px;
+ text-decoration:none !important;
+}
+table.x-date-inner {
+ width:100%;
+ table-layout:fixed;
+}
+.x-date-inner th {
+ width:25px;
+}
+.x-date-inner th {
+ background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;
+ text-align:right !important;
+ border-bottom: 1px solid #a3bad9;
+ font:normal 10px arial, helvetica,tahoma,sans-serif;
+ color:#233d6d;
+ cursor:default;
+ padding:0;
+ border-collapse:separate;
+}
+.x-date-inner th span {
+ display:block;
+ padding:2px;
+ padding-right:7px;
+}
+.x-date-inner td {
+ border: 1px solid #fff;
+ text-align:right;
+ padding:0;
+}
+.x-date-inner a {
+ padding:2px 5px;
+ display:block;
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+ text-decoration:none;
+ color:black;
+ text-align:right;
+ zoom:1;
+}
+.x-date-inner .x-date-active{
+ cursor:pointer;
+ color:black;
+}
+.x-date-inner .x-date-selected a{
+ background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;
+ border:1px solid #8db2e3;
+ padding:1px 4px;
+}
+.x-date-inner .x-date-today a{
+ border: 1px solid darkred;
+ padding:1px 4px;
+}
+.x-date-inner .x-date-selected span{
+ font-weight:bold;
+}
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a {
+ color:#aaaaaa;
+ text-decoration:none !important;
+}
+.x-date-bottom {
+ padding:4px;
+ border-top: 1px solid #a3bad9;
+ background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;
+}
+
+.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
+ text-decoration:none !important;
+ color:black;
+ background: #ddecfe;
+}
+
+.x-date-inner .x-date-disabled a {
+ cursor:default;
+ background:#eeeeee;
+ color:#bbbbbb;
+}
+.x-date-mmenu{
+ background:#eeeeee !important;
+}
+.x-date-mmenu .x-menu-item {
+ font-size:10px;
+ padding:1px 24px 1px 4px;
+ white-space: nowrap;
+ color:#000;
+}
+.x-date-mmenu .x-menu-item .x-menu-item-icon {
+ width:10px;height:10px;margin-right:5px;
+ background-position:center -4px !important;
+}
+
+.x-date-mp {
+ position:absolute;
+ left:0;
+ top:0;
+ background:white;
+ display:none;
+}
+.x-date-mp td {
+ padding:2px;
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+}
+td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn {
+ border: 0 none;
+ text-align:center;
+ vertical-align: middle;
+ width:25%;
+}
+.x-date-mp-ok {
+ margin-right:3px;
+}
+.x-date-mp-btns button {
+ text-decoration:none;
+ text-align:center;
+ text-decoration:none !important;
+ background:#083772;
+ color:white;
+ border:1px solid;
+ border-color: #3366cc #000055 #000055 #3366cc;
+ padding:1px 3px 1px;
+ font:normal 11px arial, helvetica,tahoma,sans-serif;
+ cursor:pointer;
+}
+.x-date-mp-btns {
+ background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;
+}
+.x-date-mp-btns td {
+ border-top: 1px solid #c5d2df;
+ text-align:center;
+}
+td.x-date-mp-month a,td.x-date-mp-year a {
+ display:block;
+ padding:2px 4px;
+ text-decoration:none;
+ text-align:center;
+ color:#15428b;
+}
+
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover {
+ color:#15428b;
+ text-decoration:none;
+ cursor:pointer;
+ background: #ddecfe;
+}
+
+td.x-date-mp-sel a {
+ padding:1px 3px;
+ background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;
+ border:1px solid #8db2e3;
+}
+.x-date-mp-ybtn a {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ cursor:pointer;
+ background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;
+ display:block;
+ margin:0 auto;
+}
+.x-date-mp-ybtn a.x-date-mp-next {
+ background-position:0 -120px;
+}
+.x-date-mp-ybtn a.x-date-mp-next:hover {
+ background-position:-15px -120px;
+}
+.x-date-mp-ybtn a.x-date-mp-prev {
+ background-position:0 -105px;
+}
+.x-date-mp-ybtn a.x-date-mp-prev:hover {
+ background-position:-15px -105px;
+}
+.x-date-mp-ybtn {
+ text-align:center;
+}
+td.x-date-mp-sep {
+ border-right:1px solid #c5d2df;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dd.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dd.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dd.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,75 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-dd-drag-proxy{
+ position:absolute;
+ left:0;top:0;
+ visibility:hidden;
+ z-index:15000;
+}
+.x-dd-drag-ghost{
+ color: black;
+ font: normal 11px arial, helvetica, sans-serif;
+ -moz-opacity: 0.85;
+ opacity:.85;
+ filter: alpha(opacity=85);
+ border-top:1px solid #dddddd;
+ border-left:1px solid #dddddd;
+ border-right:1px solid #bbbbbb;
+ border-bottom:1px solid #bbbbbb;
+ padding:3px;
+ padding-left:20px;
+ background-color:white;
+ white-space:nowrap;
+}
+.x-dd-drag-repair .x-dd-drag-ghost{
+ -moz-opacity: 0.4;
+ opacity:.4;
+ filter: alpha(opacity=40);
+ border:0 none;
+ padding:0;
+ background-color:transparent;
+}
+.x-dd-drag-repair .x-dd-drop-icon{
+ visibility:hidden;
+}
+.x-dd-drop-icon{
+ position:absolute;
+ top:3px;
+ left:3px;
+ display:block;
+ width:16px;
+ height:16px;
+ background-color:transparent;
+ background-position: center;
+ background-repeat: no-repeat;
+ z-index:1;
+}
+.x-dd-drop-nodrop .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-no.gif);
+}
+.x-dd-drop-ok .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-yes.gif);
+}
+.x-dd-drop-ok-add .x-dd-drop-icon{
+ background-image: url(../images/default/dd/drop-add.gif);
+}
+
+
+.x-view-selector {
+ position:absolute;
+ left:0;
+ top:0;
+ width:0;
+ background:#c3daf9;
+ border:1px dotted #3399bb;
+ opacity: .5;
+ -moz-opacity: .5;
+ filter:alpha(opacity=50);
+ zoom:1;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/debug.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/debug.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/debug.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,37 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+#x-debug-browser .x-tree .x-tree-node a span {
+ color:#222297;
+ font-size:11px;
+ padding-top:2px;
+ font-family:"monotype","courier new",sans-serif;
+ line-height:18px;
+}
+#x-debug-browser .x-tree a i {
+ color:#FF4545;
+ font-style:normal;
+}
+#x-debug-browser .x-tree a em {
+ color:#999;
+}
+#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{
+ background:#c3daf9;
+}
+#x-debug-browser .x-tool-toggle {
+ background-position:0 -75px;
+}
+#x-debug-browser .x-tool-toggle-over {
+ background-position:-15px -75px;
+}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle {
+ background-position:0 -60px;
+}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle-over {
+ background-position:-15px -60px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dialog.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dialog.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/dialog.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,61 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-window-dlg .x-window-body {
+ border:0 none !important;
+ padding:5px 10px;
+ overflow:hidden !important;
+}
+.x-window-dlg .x-window-mc {
+ border:0 none !important;
+}
+.x-window-dlg .ext-mb-text,
+.x-window-dlg .x-window-header-text {
+ font-size:12px;
+}
+.x-window-dlg .ext-mb-input {
+ margin-top:4px;
+ width:95%;
+}
+.x-window-dlg .ext-mb-textarea {
+ margin-top:4px;
+ font:normal 12px tahoma,arial,helvetica,sans-serif;
+}
+.x-window-dlg .x-progress-wrap {
+ margin-top:4px;
+}
+.ext-ie .x-window-dlg .x-progress-wrap {
+ margin-top:6px;
+}
+.x-window-dlg .x-msg-box-wait {
+ background: transparent url(../images/default/grid/loading.gif) no-repeat left;
+ display:block;
+ width:300px;
+ padding-left:18px;
+ line-height:18px;
+}
+.x-window-dlg .ext-mb-icon {
+ float:left;
+ width:47px;
+ height:32px;
+}
+.ext-ie .x-window-dlg .ext-mb-icon {
+ width:44px; /* 3px IE margin issue */
+}
+.x-window-dlg .ext-mb-info {
+ background:transparent url(../images/default/window/icon-info.gif) no-repeat top left;
+}
+.x-window-dlg .ext-mb-warning {
+ background:transparent url(../images/default/window/icon-warning.gif) no-repeat top left;
+}
+.x-window-dlg .ext-mb-question {
+ background:transparent url(../images/default/window/icon-question.gif) no-repeat top left;
+}
+.x-window-dlg .ext-mb-error {
+ background:transparent url(../images/default/window/icon-error.gif) no-repeat top left;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/editor.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/editor.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/editor.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,66 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-html-editor-wrap {
+ border:1px solid #a9bfd3;
+ background:white;
+}
+.x-html-editor-tb .x-btn-text {
+ background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat;
+}
+.x-html-editor-tb .x-edit-bold .x-btn-text {
+ background-position:0 0;
+}
+.x-html-editor-tb .x-edit-italic .x-btn-text {
+ background-position:-16px 0;
+}
+.x-html-editor-tb .x-edit-underline .x-btn-text {
+ background-position:-32px 0;
+}
+.x-html-editor-tb .x-edit-forecolor .x-btn-text {
+ background-position:-160px 0;
+}
+.x-html-editor-tb .x-edit-backcolor .x-btn-text {
+ background-position:-176px 0;
+}
+.x-html-editor-tb .x-edit-justifyleft .x-btn-text {
+ background-position:-112px 0;
+}
+.x-html-editor-tb .x-edit-justifycenter .x-btn-text {
+ background-position:-128px 0;
+}
+.x-html-editor-tb .x-edit-justifyright .x-btn-text {
+ background-position:-144px 0;
+}
+.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text {
+ background-position:-80px 0;
+}
+.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text {
+ background-position:-96px 0;
+}
+.x-html-editor-tb .x-edit-increasefontsize .x-btn-text {
+ background-position:-48px 0;
+}
+.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text {
+ background-position:-64px 0;
+}
+.x-html-editor-tb .x-edit-sourceedit .x-btn-text {
+ background-position:-192px 0;
+}
+.x-html-editor-tb .x-edit-createlink .x-btn-text {
+ background-position:-208px 0;
+}
+
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
+ padding:5px;
+ padding-bottom:1px;
+}
+
+.x-html-editor-tb .x-toolbar {
+ position:static !important;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/ext-all.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/ext-all.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/ext-all.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,841 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}
+img,body,html{border:0;}
+address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
+ol,ul{list-style:none;}
+caption,th{text-align:left;}
+h1,h2,h3,h4,h5,h6{font-size:100%;}
+q:before,q:after{content:'';}
+
+.ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}
+.ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}
+.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}
+.ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}
+.ext-ie .ext-shim{filter:alpha(opacity=0);}
+.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px;line-height:16px;}
+.x-hidden,.x-hide-offsets{position:absolute;left:-10000px;top:-10000px;visibility:hidden;}
+.x-hide-display{display:none!important;}
+.x-hide-visibility{visibility:hidden!important;}
+.x-masked{overflow:hidden!important;}
+.x-masked select,.x-masked object,.x-masked embed{visibility:hidden;}
+.x-layer{visibility:hidden;}
+.x-unselectable,.x-unselectable *{-moz-user-select:none;-khtml-user-select:none;}
+.x-repaint{zoom:1;background-color:transparent;-moz-outline:none;}
+.x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-item-disabled *{color:gray!important;cursor:default!important;}
+.x-splitbar-proxy{position:absolute;visibility:hidden;z-index:20001;background:#aaa;zoom:1;line-height:1px;font-size:1px;overflow:hidden;}
+.x-splitbar-h,.x-splitbar-proxy-h{cursor:e-resize;cursor:col-resize;}
+.x-splitbar-v,.x-splitbar-proxy-v{cursor:s-resize;cursor:row-resize;}
+.x-color-palette{width:150px;height:92px;cursor:pointer;}
+.x-color-palette a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-color-palette a:hover,.x-color-palette a.x-color-palette-sel{border:1px solid #8BB8F3;background:#deecfd;}
+.x-color-palette em{display:block;border:1px solid #ACA899;}
+.x-color-palette em span{cursor:pointer;display:block;height:10px;line-height:10px;width:10px;}
+.x-ie-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;background:#777;zoom:1;}
+.x-shadow{display:none;position:absolute;overflow:hidden;left:0;top:0;}
+.x-shadow *{overflow:hidden;}
+.x-shadow *{padding:0;border:0;margin:0;clear:none;zoom:1;}
+.x-shadow .xstc,.x-shadow .xsbc{height:6px;float:left;}
+.x-shadow .xstl,.x-shadow .xstr,.x-shadow .xsbl,.x-shadow .xsbr{width:6px;height:6px;float:left;}
+.x-shadow .xsc{width:100%;}
+.x-shadow .xsml,.x-shadow .xsmr{width:6px;float:left;height:100%;}
+.x-shadow .xsmc{float:left;height:100%;background:transparent url( ../images/default/shadow-c.png );}
+.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}
+.x-shadow .xsml{background:transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0;}
+.x-shadow .xsmr{background:transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0;}
+.x-shadow .xstl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 0;}
+.x-shadow .xstc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -30px;}
+.x-shadow .xstr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -18px;}
+.x-shadow .xsbl{background:transparent url( ../images/default/shadow.png ) no-repeat 0 -12px;}
+.x-shadow .xsbc{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -36px;}
+.x-shadow .xsbr{background:transparent url( ../images/default/shadow.png ) repeat-x 0 -6px;}
+.loading-indicator{font-size:11px;background-image:url( '../images/default/grid/loading.gif' );background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
+.x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}
+.x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../images/default/s.gif);z-index:20000;}
+.x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-spotlight{z-index:8999;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:0;height:0;zoom:1;}
+
+.x-tab-panel{overflow:hidden;}
+.x-tab-panel-header,.x-tab-panel-footer{background:#deecfd;border:1px solid #8db2e3;overflow:hidden;zoom:1;}
+.x-tab-panel-header{border:1px solid #8db2e3;padding-bottom:2px;}
+.x-tab-panel-footer{border:1px solid #8db2e3;padding-top:2px;}
+.x-tab-strip-wrap{width:100%;overflow:hidden;position:relative;zoom:1;}
+ul.x-tab-strip{display:block;width:5000px;zoom:1;}
+ul.x-tab-strip-top{padding-top:1px;background:url(../images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;border-bottom:1px solid #8db2e3;}
+ul.x-tab-strip-bottom{padding-bottom:1px;background:url(../images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;border-top:1px solid #8db2e3;border-bottom:0 none;}
+.x-tab-panel-header-plain .x-tab-strip-top{background:transparent!important;padding-top:0!important;}
+.x-tab-panel-header-plain{background:transparent!important;border-width:0!important;padding-bottom:0!important;}
+.x-tab-panel-header-plain .x-tab-strip-spacer{border:1px solid #8db2e3;border-top:0 none;height:2px;background:#deecfd;font-size:1px;line-height:1px;}
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer{height:3px;}
+ul.x-tab-strip li{float:left;margin-left:2px;}
+ul.x-tab-strip li.x-tab-edge{float:left;margin:0!important;padding:0!important;border:0 none!important;font-size:1px!important;line-height:1px!important;overflow:hidden;zoom:1;background:transparent!important;width:1px;}
+.x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}
+.x-tab-strip a{text-decoration:none!important;-moz-outline:none;outline:none;cursor:pointer;}
+.x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}
+.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}
+.x-tab-strip .x-tab-with-icon .x-tab-right{padding-left:6px;}
+.x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}
+.x-tab-strip-over span.x-tab-strip-text{color:#15428b;}
+.x-tab-strip-active{cursor:default;}
+.x-tab-strip-active span.x-tab-strip-text{cursor:default;color:#15428b;font-weight:bold;}
+.x-tab-strip-disabled .x-tabs-text{cursor:default;color:#aaa;}
+.x-tab-panel-body{overflow:hidden;}
+.x-tab-panel-bwrap{overflow:hidden;}
+.ext-ie .x-tab-strip .x-tab-right{position:relative;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{margin-bottom:-1px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-bottom:5px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{margin-top:-1px;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text{padding-top:5px;}
+.x-tab-strip-top .x-tab-right{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}
+.x-tab-strip-top .x-tab-left{background:transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}
+.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-right{background-position:0 -101px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-left{background-position:right -401px;}
+.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner{background-position:0 -251px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-right{background-position:0 0;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-left{background-position:right -301px;}
+.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner{background-position:0 -151px;}
+.x-tab-strip-bottom .x-tab-right{background:url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{background:url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background:url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background:url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{padding:0 10px;}
+.x-tab-strip-bottom .x-tab-right{padding:0;}
+.x-tab-strip .x-tab-strip-close{display:none;}
+.x-tab-strip-closable{position:relative;}
+.x-tab-strip-closable .x-tab-left{padding-right:19px;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../images/default/tabs/tab-close.gif);opacity:.6;-moz-opacity:.6;background-repeat:no-repeat;display:block;width:11px;height:11px;position:absolute;top:3px;right:3px;cursor:pointer;z-index:2;}
+.x-tab-strip .x-tab-strip-active a.x-tab-strip-close{opacity:.8;-moz-opacity:.8;}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../images/default/tabs/tab-close.gif);opacity:1;-moz-opacity:1;}
+.x-tab-panel-body{border:1px solid #8db2e3;background:#fff;}
+.x-tab-panel-body-top{border-top:0 none;}
+.x-tab-panel-body-bottom{border-bottom:0 none;}
+.x-tab-scroller-left{background:transparent url(../images/default/tabs/scroll-left.gif) no-repeat -18px 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;left:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-left-over{background-position:0 0;}
+.x-tab-scroller-left-disabled{background-position:-18px 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scroller-right{background:transparent url(../images/default/tabs/scroll-right.gif) no-repeat 0 0;border-bottom:1px solid #8db2e3;width:18px;position:absolute;right:0;top:0;z-index:10;cursor:pointer;}
+.x-tab-scroller-right-over{background-position:-18px 0;}
+.x-tab-scroller-right-disabled{background-position:0 0;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);cursor:default;}
+.x-tab-scrolling .x-tab-strip-wrap{margin-left:18px;margin-right:18px;}
+.x-tab-scrolling{position:relative;}
+.x-tab-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+
+ .x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
+.x-form-text{height:22px;line-height:18px;vertical-align:middle;}
+.ext-ie .x-form-text{margin-top:-1px;margin-bottom:-1px;height:22px;line-height:18px;}
+.ext-strict .x-form-text{height:18px;}
+.ext-safari .x-form-text{height:20px;}
+.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}
+.x-form-select-one{height:20px;line-height:18px;vertical-align:middle;background-color:#fff;border:1px solid #B5B8C8;}
+.x-form-field-wrap{position:relative;zoom:1;white-space:nowrap;}
+.x-editor .x-form-check-wrap{background:#fff;}
+.x-form-field-wrap .x-form-trigger{width:17px;height:21px;border:0;background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0;cursor:pointer;border-bottom:1px solid #B5B8C8;position:absolute;top:0;}
+.ext-safari .x-form-field-wrap .x-form-trigger{height:19px;}
+.x-form-field-wrap .x-form-date-trigger{background-image:url(../images/default/form/date-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-clear-trigger{background-image:url(../images/default/form/clear-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-search-trigger{background-image:url(../images/default/form/search-trigger.gif);cursor:pointer;}
+.ext-safari .x-form-field-wrap .x-form-trigger{right:0;}
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{position:static;top:auto;vertical-align:top;}
+.x-form-field-wrap .x-form-trigger-over{background-position:-17px 0;}
+.x-form-field-wrap .x-form-trigger-click{background-position:-34px 0;}
+.x-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;}
+.x-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;}
+.x-trigger-wrap-focus .x-form-trigger-click{background-position:-85px 0;}
+.x-trigger-wrap-focus .x-form-trigger{border-bottom:1px solid #7eadd9;}
+.x-item-disabled .x-form-trigger-over{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-item-disabled .x-form-trigger-click{background-position:0 0!important;border-bottom:1px solid #B5B8C8;}
+.x-form-focus,textarea.x-form-focus{border:1px solid #7eadd9;}
+.x-form-invalid,textarea.x-form-invalid{background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom;border:1px solid #dd7870;}
+.ext-safari .x-form-invalid{background-color:#fee;border:1px solid #ff7870;}
+.x-editor{visibility:hidden;padding:0;margin:0;}
+.x-form-check-wrap{line-height:18px;}
+.ext-ie .x-form-check-wrap input{width:15px;height:15px;}
+.x-editor .x-form-check-wrap{padding:3px;}
+.x-editor .x-form-checkbox{height:13px;}
+.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
+.x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}
+.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;}
+.x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}
+.x-form-element{padding-left:105px;position:relative;}
+.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
+.x-form-label-right label{text-align:right;}
+.x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}
+.x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}
+.x-form-label-top .x-form-item{padding-bottom:4px;}
+.x-form fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}
+.x-form fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
+.ext-ie .x-form fieldset legend{margin-bottom:10px;}
+.ext-ie .x-form fieldset{padding-top:0;padding-bottom:5px;}
+.x-form-empty-field{color:gray;}
+.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}
+.x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}
+.ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}
+.ext-strict .x-small-editor .x-form-text{height:16px!important;}
+.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}
+.ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}
+.ext-border-box .x-small-editor .x-form-text{height:20px;}
+.x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}
+.x-small-editor .x-form-num-field{text-align:right;}
+.x-small-editor .x-form-field-wrap .x-form-trigger{height:19px;}
+.x-form-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-clear-left{clear:left;height:0;overflow:hidden;line-height:0;font-size:0;}
+.x-form-cb-label{width:'auto'!important;float:none!important;clear:none!important;display:inline!important;margin-left:4px;}
+.x-form-column{float:left;padding:0;margin:0;width:48%;overflow:hidden;zoom:1;}
+.x-form .x-form-btns-ct .x-btn{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns td{border:0;padding:0;}
+.x-form .x-form-btns-ct .x-form-btns-right table{float:right;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-left table{float:left;clear:none;}
+.x-form .x-form-btns-ct .x-form-btns-center{text-align:center;}
+.x-form .x-form-btns-ct .x-form-btns-center table{margin:0 auto;}
+.x-form .x-form-btns-ct table td.x-form-btn-td{padding:3px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+.x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px;}
+.x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}
+.x-fieldset legend input{margin-right:3px;float:left!important;height:13px;width:13px;}
+fieldset.x-panel-collapsed{padding-bottom:0!important;border-width:1px 0 0 0!important;}
+fieldset.x-panel-collapsed .x-fieldset-bwrap{visibility:hidden;position:absolute;left:-1000px;top:-1000px;}
+.ext-ie .x-fieldset-bwrap{zoom:1;}
+.ext-ie td .x-form-text{position:relative;top:-1px;}
+.ext-gecko .x-window-body .x-form-item{-moz-outline:none;overflow:auto;}
+.ext-gecko .x-form-item{-moz-outline:none;}
+.x-hide-label label.x-form-item-label{display:none;}
+.x-hide-label .x-form-element{padding-left:0!important;}
+
+.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}
+.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
+* html .ext-ie .x-btn button{width:1px;}
+.ext-gecko .x-btn button{padding-left:0;padding-right:0;}
+.ext-ie .x-btn button{padding-top:2px;}
+.x-btn-icon .x-btn-center .x-btn-text{background-position:center;background-repeat:no-repeat;height:16px;width:16px;cursor:pointer;white-space:nowrap;padding:0;}
+.x-btn-icon .x-btn-center{padding:1px;}
+.x-btn em{font-style:normal;font-weight:normal;}
+.x-btn-text-icon .x-btn-center .x-btn-text{background-position:0 2px;background-repeat:no-repeat;padding-left:18px;padding-top:3px;padding-bottom:2px;padding-right:0;}
+.x-btn-left,.x-btn-right{font-size:1px;line-height:1px;}
+.x-btn-left{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 0;}
+.x-btn-right{width:3px;height:21px;background:url(../images/default/button/btn-sprite.gif) no-repeat 0 -21px;}
+.x-btn-left i,.x-btn-right i{display:block;width:3px;overflow:hidden;font-size:1px;line-height:1px;}
+.x-btn-center{background:url(../images/default/button/btn-sprite.gif) repeat-x 0 -42px;vertical-align:middle;text-align:center;padding:0 5px;cursor:pointer;white-space:nowrap;}
+.x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-btn-click .x-btn-center,.x-btn-menu-active .x-btn-center{background-position:0 -126px;}
+.x-btn-disabled *{color:gray!important;cursor:default!important;}
+.x-btn-menu-text-wrap .x-btn-center{padding:0 3px;}
+.ext-gecko .x-btn-menu-text-wrap .x-btn-center{padding:0 1px;}
+.x-btn-menu-arrow-wrap .x-btn-center{padding:0;}
+.x-btn-menu-arrow-wrap .x-btn-center button{width:12px!important;height:21px;padding:0!important;display:block;background:transparent url(../images/default/button/btn-arrow.gif) no-repeat left 3px;}
+.x-btn-with-menu .x-btn-center{padding-right:2px!important;}
+.x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0;padding-right:10px;}
+.x-btn-text-icon .x-btn-with-menu .x-btn-center em{display:block;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}
+
+.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:#d0def0 url(../images/default/toolbar/bg.gif) repeat-x top left;position:relative;zoom:1;}
+.x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}
+.x-toolbar td{vertical-align:middle;}
+.mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../images/default/grid/mso-hd.gif);}
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
+.x-toolbar .x-item-disabled *{color:gray;cursor:default;}
+.x-toolbar .x-btn-left{background:none;}
+.x-toolbar .x-btn-right{background:none;}
+.x-toolbar .x-btn-center{background:none;padding:0;}
+.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:2px;}
+.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{padding-right:0;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{padding:0 2px;}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{width:12px;background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;}
+.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button{background-position:0 -47px;}
+.x-toolbar .x-btn-over .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}
+.x-toolbar .x-btn-over .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}
+.x-toolbar .x-btn-over .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;}
+.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;}
+.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right{background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;}
+.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center{background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;}
+.x-toolbar .x-btn-with-menu .x-btn-center em{padding-right:8px;}
+.x-toolbar .ytb-text{padding:2px;}
+.x-toolbar .ytb-sep{background-image:url(../images/default/grid/grid-blue-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px 0;border:0;}
+.x-toolbar .ytb-spacer{width:2px;}
+.x-tbar-page-number{width:24px;height:14px;}
+.x-tbar-page-first{background-image:url(../images/default/grid/page-first.gif)!important;}
+.x-tbar-loading{background-image:url(../images/default/grid/done.gif)!important;}
+.x-tbar-page-last{background-image:url(../images/default/grid/page-last.gif)!important;}
+.x-tbar-page-next{background-image:url(../images/default/grid/page-next.gif)!important;}
+.x-tbar-page-prev{background-image:url(../images/default/grid/page-prev.gif)!important;}
+.x-item-disabled .x-tbar-loading{background-image:url(../images/default/grid/loading.gif)!important;}
+.x-item-disabled .x-tbar-page-first{background-image:url(../images/default/grid/page-first-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-last{background-image:url(../images/default/grid/page-last-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-next{background-image:url(../images/default/grid/page-next-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-prev{background-image:url(../images/default/grid/page-prev-disabled.gif)!important;}
+.x-paging-info{position:absolute;top:5px;right:8px;color:#444;}
+
+.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;background:white;filter:alpha(opacity=0);opacity:0;zoom:1;}
+.x-resizable-handle-east{width:6px;cursor:e-resize;right:0;top:0;height:100%;}
+.ext-ie .x-resizable-handle-east{margin-right:-1px;}
+.x-resizable-handle-south{width:100%;cursor:s-resize;left:0;bottom:0;height:6px;}
+.ext-ie .x-resizable-handle-south{margin-bottom:-1px;}
+.x-resizable-handle-west{width:6px;cursor:w-resize;left:0;top:0;height:100%;}
+.x-resizable-handle-north{width:100%;cursor:n-resize;left:0;top:0;height:6px;}
+.x-resizable-handle-southeast{width:6px;cursor:se-resize;right:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-handle-northwest{width:6px;cursor:nw-resize;left:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-northeast{width:6px;cursor:ne-resize;right:0;top:0;height:6px;z-index:101;}
+.x-resizable-handle-southwest{width:6px;cursor:sw-resize;left:0;bottom:0;height:6px;z-index:101;}
+.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:alpha(opacity=100);opacity:1;}
+.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west{background:url(../images/default/sizer/e-handle.gif);background-position:left;}
+.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north{background:url(../images/default/sizer/s-handle.gif);background-position:top;}
+.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background:url(../images/default/sizer/se-handle.gif);background-position:top left;}
+.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background:url(../images/default/sizer/nw-handle.gif);background-position:bottom right;}
+.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background:url(../images/default/sizer/ne-handle.gif);background-position:bottom left;}
+.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background:url(../images/default/sizer/sw-handle.gif);background-position:top right;}
+.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;display:none;left:0;top:0;z-index:50000;}
+.x-resizable-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background:white;z-index:200000;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}
+
+ .x-grid3{position:relative;overflow:hidden;background-color:#fff;}
+.x-grid-panel .x-panel-body{overflow:hidden!important;}
+.x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}
+.ext-ie .x-grid3 table,.ext-safari .x-grid3 table{table-layout:fixed;}
+.x-grid3-viewport{overflow:hidden;}
+.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}
+.x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}
+.x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}
+.x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}
+.x-grid3-row .x-grid3-marker{padding:3px;}
+.x-grid3-cell-inner,.x-grid3-hd-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:3px 3px 3px 5px;white-space:nowrap;}
+.x-grid3-hd-inner{position:relative;cursor:inherit;padding:4px 3px 4px 5px;}
+.x-grid3-row-body{white-space:normal;}
+.x-grid3-body-cell{-moz-outline:0 none;outline:0 none;}
+.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner{width:100%;}
+.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner{width:auto;}
+.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}
+.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../images/default/grid/row-over.gif) repeat-x left top;}
+.x-grid3-resize-proxy{width:1px;left:0;background-color:#777;cursor:e-resize;cursor:col-resize;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-resize-marker{width:1px;left:0;background-color:#777;position:absolute;top:0;height:100px;overflow:hidden;visibility:hidden;border:0 none;z-index:7;}
+.x-grid3-focus{position:absolute;top:0;-moz-outline:0 none;outline:0 none;-moz-user-select:normal;-khtml-user-select:normal;}
+.x-grid3-header{background:#f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 0 0 0;}
+.x-grid3-header-pop{border-left:1px solid #d0d0d0;float:right;clear:none;}
+.x-grid3-header-pop-inner{border-left:1px solid #eee;width:14px;height:19px;background:transparent url(../images/default/grid/hd-pop.gif) no-repeat center center;}
+.ext-ie .x-grid3-header-pop-inner{width:15px;}
+.ext-strict .x-grid3-header-pop-inner{width:14px;}
+.x-grid3-header-inner{overflow:hidden;zoom:1;float:left;}
+.x-grid3-header-offset{padding-left:1px;width:10000px;}
+td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open{border-left:1px solid #aaccf6;border-right:1px solid #aaccf6;}
+td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;}
+.x-grid3-sort-icon{background-repeat:no-repeat;display:none;height:4px;width:13px;margin-left:3px;vertical-align:middle;}
+.sort-asc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_asc.gif);display:inline;}
+.sort-desc .x-grid3-sort-icon{background-image:url(../images/default/grid/sort_desc.gif);display:inline;}
+.x-grid3-body{zoom:1;}
+.x-grid3-scroller{overflow:auto;zoom:1;position:relative;}
+.x-grid3-cell-text,.x-grid3-hd-text{display:block;padding:3px 5px 3px 5px;-moz-user-select:none;-khtml-user-select:none;color:black;}
+.x-grid3-split{background-image:url(../images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;cursor:e-resize;cursor:col-resize;display:block;font-size:1px;height:16px;overflow:hidden;position:absolute;top:2px;width:6px;z-index:3;}
+.x-grid3-hd-text{color:#15428b;}
+.x-dd-drag-proxy .x-grid3-hd-inner{background:#ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;width:120px;padding:3px;border:1px solid #aaccf6;overflow:hidden;}
+.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:1px;font-size:1px;overflow:hidden;visibility:hidden;z-index:20000;}
+.col-move-top{background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top;}
+.col-move-bottom{background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top;}
+.x-grid3-row-selected{background:#DFE8F6;border:1px dotted #a3bae9;}
+.x-grid3-cell-selected{background-color:#B8CFEE!important;color:black;}
+.x-grid3-cell-selected span{color:black!important;}
+.x-grid3-cell-selected .x-grid3-cell-text{color:black;}
+.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:black;padding:0;border-top:1px solid white;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}
+.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}
+.x-grid3-dirty-cell{background:transparent url(../images/default/grid/dirty.gif) no-repeat 0 0;}
+.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}
+.x-grid3-topbar .x-toolbar{border-right:0 none;}
+.x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}
+.x-props-grid .x-grid3-cell{padding:1px;}
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:black!important;}
+.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:white!important;border:0 none;border-right:1px solid #eee;}
+.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-asc.gif);}
+.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-desc.gif);}
+.xg-hmenu-lock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-lock.gif);}
+.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../images/default/grid/hmenu-unlock.gif);}
+.x-grid3-col-dd{border:0 none;padding:0;background:transparent;}
+.x-dd-drag-ghost .x-grid3-dd-wrap{padding:1px 3px 3px 1px;}
+.x-grid3-hd{-moz-user-select:none;}
+.x-grid3-hd-btn{display:none;position:absolute;width:14px;background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center;right:0;top:0;z-index:2;cursor:pointer;}
+.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn{display:block;}
+a.x-grid3-hd-btn:hover{background-position:-14px center;}
+.x-grid3-body .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner{padding:0!important;height:100%;}
+.x-grid3-row-expander{width:100%;height:18px;background-position:4px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-expand-sprite.gif);}
+.x-grid3-row-collapsed .x-grid3-row-expander{background-position:4px 2px;}
+.x-grid3-row-expanded .x-grid3-row-expander{background-position:-21px 2px;}
+.x-grid3-row-collapsed .x-grid3-row-body{display:none!important;}
+.x-grid3-row-expanded .x-grid3-row-body{display:block!important;}
+.x-grid3-body .x-grid3-td-checker{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner{padding:0!important;height:100%;}
+.x-grid3-row-checker,.x-grid3-hd-checker{width:100%;height:18px;background-position:2px 2px;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/grid/row-check-sprite.gif);}
+.x-grid3-row .x-grid3-row-checker{background-position:2px 2px;}
+.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 2px;}
+.x-grid3-hd-checker{background-position:2px 3px;}
+.x-grid3-hd-checker-on .x-grid3-hd-checker{background-position:-23px 3px;}
+.x-grid3-body .x-grid3-td-numberer{background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner{padding:3px 5px 0 0!important;text-align:right;color:#444;}
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander{background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;}
+.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner{padding:1px 0 0 0!important;}
+.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/unchecked.gif);}
+.x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../images/default/menu/checked.gif);}
+.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}
+.x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}
+.x-grid-group-hd div{background:transparent url(../images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}
+.x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}
+.x-grid-group-collapsed .x-grid-group-body{display:none;}
+.x-group-by-icon{background-image:url(../images/default/grid/group-by.gif);}
+.x-cols-icon{background-image:url(../images/default/grid/columns.gif);}
+.x-show-groups-icon{background-image:url(../images/default/grid/group-by.gif);}
+.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
+.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+
+.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}
+.x-dd-drag-ghost{color:black;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
+.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:0.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}
+.x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}
+.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}
+.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url(../images/default/dd/drop-no.gif);}
+.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../images/default/dd/drop-yes.gif);}
+.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../images/default/dd/drop-add.gif);}
+.x-view-selector{position:absolute;left:0;top:0;width:0;background:#c3daf9;border:1px dotted #39b;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);zoom:1;}
+
+.x-tree .x-panel-body{background-color:#fff;}
+.ext-strict .ext-ie .x-tree .x-panel-bwrap{position:relative;overflow:hidden;}
+.x-tree-icon,.x-tree-ec-icon,.x-tree-elbow-line,.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-repeat:no-repeat;}
+.x-tree-node-collapsed .x-tree-node-icon,.x-tree-node-expanded .x-tree-node-icon,.x-tree-node-leaf .x-tree-node-icon{border:0 none;height:18px;margin:0;padding:0;vertical-align:top;width:16px;background-position:center;background-repeat:no-repeat;}
+.ext-ie .x-tree-node-indent img,.ext-ie .x-tree-node-icon,.ext-ie .x-tree-ec-icon{vertical-align:middle!important;}
+.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../images/default/tree/folder.gif);}
+.x-tree-node-expanded .x-tree-node-icon{background-image:url(../images/default/tree/folder-open.gif);}
+.x-tree-node-leaf .x-tree-node-icon{background-image:url(../images/default/tree/leaf.gif);}
+.ext-ie input.x-tree-node-cb{width:15px;height:15px;}
+input.x-tree-node-cb{margin-left:1px;}
+.ext-ie input.x-tree-node-cb{margin-left:0;}
+.x-tree-noicon .x-tree-node-icon{width:0;height:0;}
+.x-tree-node-loading .x-tree-node-icon{background-image:url(../images/default/tree/loading.gif)!important;}
+.x-tree-node-loading a span{font-style:italic;color:#444;}
+.ext-ie .x-tree-node-el input{width:15px;height:15px;}
+.x-tree-lines .x-tree-elbow{background-image:url(../images/default/tree/elbow.gif);}
+.x-tree-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus.gif);}
+.x-tree-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus.gif);}
+.x-tree-lines .x-tree-elbow-end{background-image:url(../images/default/tree/elbow-end.gif);}
+.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus.gif);}
+.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus.gif);}
+.x-tree-lines .x-tree-elbow-line{background-image:url(../images/default/tree/elbow-line.gif);}
+.x-tree-no-lines .x-tree-elbow{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-plus{background-image:url(../images/default/tree/elbow-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../images/default/tree/elbow-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end{background:transparent;}
+.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url(../images/default/tree/elbow-end-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../images/default/tree/elbow-end-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-line{background:transparent;}
+.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}
+.ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}
+.x-tree-node{color:black;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}
+.x-tree-node-el{line-height:18px;}
+.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:black;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}
+.x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:black;padding:1px 3px 1px 2px;}
+.x-tree-node .x-tree-node-disabled a span{color:gray!important;}
+.x-tree-node .x-tree-node-disabled .x-tree-node-icon{-moz-opacity:0.5;opacity:.5;filter:alpha(opacity=50);}
+.x-tree-node .x-tree-node-inline-icon{background:transparent;}
+.x-tree-node a:hover,.x-dd-drag-ghost a:hover{text-decoration:none;}
+.x-tree-node div.x-tree-drag-insert-below{border-bottom:1px dotted #36c;}
+.x-tree-node div.x-tree-drag-insert-above{border-top:1px dotted #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{border-bottom:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{border-top:0 none;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{border-bottom:2px solid #36c;}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{border-top:2px solid #36c;}
+.x-tree-node .x-tree-drag-append a span{background:#ddd;border:1px dotted gray;}
+.x-tree-node .x-tree-selected a span{background:#36c;color:white;}
+.x-dd-drag-ghost .x-tree-node-indent,.x-dd-drag-ghost .x-tree-ec-icon{display:none!important;}
+.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(../images/default/tree/drop-add.gif);}
+.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../images/default/tree/drop-over.gif);}
+.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../images/default/tree/drop-under.gif);}
+.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../images/default/tree/drop-between.gif);}
+
+.x-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}
+.x-tip .x-tip-close{background-image:url(../images/default/qtip/close.gif);height:15px;float:right;width:15px;margin:0 0 2px 2px;cursor:pointer;display:none;}
+.x-tip .x-tip-tc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;padding-top:3px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0;padding-left:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-tr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0;padding-right:6px;overflow:hidden;zoom:1;}
+.x-tip .x-tip-bc{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
+.x-tip .x-tip-bl{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-br{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}
+.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-tip .x-tip-ml{background:#fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-mr{background:transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}
+.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}
+.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px 0;color:#444;}
+.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}
+.x-form-invalid-tip .x-tip-top{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-top-left{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-top-right{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-ft{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-ft-left{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-ft-right{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bd-left{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bd-right{background-image:url(../images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bd .x-tip-bd-inner{padding-left:24px;background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px;}
+.x-form-invalid-tip .x-tip-bd-inner{padding:2px;}
+
+.x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}
+.x-date-picker a{-moz-outline:0 none;outline:0 none;}
+.x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}
+.x-date-middle,.x-date-left,.x-date-right{background:url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}
+.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}
+.x-date-middle .x-btn .x-btn-text{color:#fff;}
+.x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}
+.x-date-right,.x-date-left{width:18px;}
+.x-date-right{text-align:right;}
+.x-date-middle{padding-top:2px;padding-bottom:2px;}
+.x-date-right a,.x-date-left a{display:block;width:16px;height:16px;background-position:center;background-repeat:no-repeat;cursor:pointer;-moz-opacity:0.6;opacity:.6;filter:alpha(opacity=60);}
+.x-date-right a:hover,.x-date-left a:hover{-moz-opacity:1;opacity:1;filter:alpha(opacity=100);}
+.x-date-right a{background-image:url(../images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}
+.x-date-left a{background-image:url(../images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}
+table.x-date-inner{width:100%;table-layout:fixed;}
+.x-date-inner th{width:25px;}
+.x-date-inner th{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
+.x-date-inner th span{display:block;padding:2px;padding-right:7px;}
+.x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}
+.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:black;text-align:right;zoom:1;}
+.x-date-inner .x-date-active{cursor:pointer;color:black;}
+.x-date-inner .x-date-selected a{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}
+.x-date-inner .x-date-today a{border:1px solid darkred;padding:1px 4px;}
+.x-date-inner .x-date-selected span{font-weight:bold;}
+.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a{color:#aaa;text-decoration:none!important;}
+.x-date-bottom{padding:4px;border-top:1px solid #a3bad9;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover{text-decoration:none!important;color:black;background:#ddecfe;}
+.x-date-inner .x-date-disabled a{cursor:default;background:#eee;color:#bbb;}
+.x-date-mmenu{background:#eee!important;}
+.x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}
+.x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}
+.x-date-mp{position:absolute;left:0;top:0;background:white;display:none;}
+.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}
+td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}
+.x-date-mp-ok{margin-right:3px;}
+.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}
+.x-date-mp-btns{background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;}
+.x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}
+td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}
+td.x-date-mp-month a:hover,td.x-date-mp-year a:hover{color:#15428b;text-decoration:none;cursor:pointer;background:#ddecfe;}
+td.x-date-mp-sel a{padding:1px 3px;background:#dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;}
+.x-date-mp-ybtn a{overflow:hidden;width:15px;height:15px;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;display:block;margin:0 auto;}
+.x-date-mp-ybtn a.x-date-mp-next{background-position:0 -120px;}
+.x-date-mp-ybtn a.x-date-mp-next:hover{background-position:-15px -120px;}
+.x-date-mp-ybtn a.x-date-mp-prev{background-position:0 -105px;}
+.x-date-mp-ybtn a.x-date-mp-prev:hover{background-position:-15px -105px;}
+.x-date-mp-ybtn{text-align:center;}
+td.x-date-mp-sep{border-right:1px solid #c5d2df;}
+
+.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../images/default/menu/menu.gif) repeat-y;padding:2px;}
+.x-menu a{text-decoration:none!important;}
+.ext-ie .x-menu{zoom:1;overflow:hidden;}
+.x-menu-list{background:transparent;border:0 none;}
+.x-menu li{line-height:100%;}
+.x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}
+.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
+.x-menu-item-arrow{background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right;}
+.x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;}
+.x-menu-focus{position:absolute;left:0;top:-5px;width:0;height:0;line-height:1px;}
+.x-menu a.x-menu-item{display:block;line-height:16px;padding:3px 21px 3px 3px;white-space:nowrap;text-decoration:none;color:#222;-moz-outline:0 none;outline:0 none;cursor:pointer;}
+.x-menu-item-active{background:#ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom;border:1px solid #aaccf6;padding:0;}
+.x-menu-item-active a.x-menu-item{color:#233d6d;}
+.x-menu-item-icon{border:0 none;height:16px;padding:0;vertical-align:top;width:16px;margin:0 8px 0 0;background-position:center;}
+.x-menu-check-item .x-menu-item-icon{background:transparent url(../images/default/menu/unchecked.gif) no-repeat center;}
+.x-menu-item-checked .x-menu-item-icon{background-image:url(../images/default/menu/checked.gif);}
+.x-menu-group-item .x-menu-item-icon{background:transparent;}
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{background:transparent url(../images/default/menu/group-checked.gif) no-repeat center;}
+.x-menu-plain{background:#fff!important;}
+.x-menu-date-item{padding:0;}
+.x-menu .x-color-palette,.x-menu .x-date-picker{margin-left:26px;margin-right:4px;}
+.x-menu .x-date-picker{border:1px solid #a3bad9;margin-top:2px;margin-bottom:2px;}
+.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker{margin:0;border:0 none;}
+.x-date-menu{padding:0!important;}
+.x-cycle-menu .x-menu-item-checked{border:1px dotted #a3bae9!important;background:#DFE8F6;padding:0;}
+
+ .x-box-tl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 0;zoom:1;}
+.x-box-tc{height:8px;background:transparent url(../images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
+.x-box-tr{background:transparent url(../images/default/box/corners.gif) no-repeat right -8px;}
+.x-box-ml{background:transparent url(../images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
+.x-box-mc{background:#eee url(../images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}
+.x-box-mc h3{font-size:14px;font-weight:bold;margin:0 0 4px 0;zoom:1;}
+.x-box-mr{background:transparent url(../images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
+.x-box-bl{background:transparent url(../images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
+.x-box-bc{background:transparent url(../images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}
+.x-box-br{background:transparent url(../images/default/box/corners.gif) no-repeat right -24px;}
+.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden;}
+.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden;}
+.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url(../images/default/box/corners-blue.gif);}
+.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url(../images/default/box/tb-blue.gif);}
+.x-box-blue .x-box-mc{background-color:#c3daf9;}
+.x-box-blue .x-box-mc h3{color:#17385b;}
+.x-box-blue .x-box-ml{background-image:url(../images/default/box/l-blue.gif);}
+.x-box-blue .x-box-mr{background-image:url(../images/default/box/r-blue.gif);}
+
+#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
+#x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}
+#x-debug-browser .x-tree a em{color:#999;}
+#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}
+#x-debug-browser .x-tool-toggle{background-position:0 -75px;}
+#x-debug-browser .x-tool-toggle-over{background-position:-15px -75px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle{background-position:0 -60px;}
+#x-debug-browser.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -60px;}
+
+.x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}
+.x-combo-list-inner{overflow:auto;background:white;position:relative;zoom:1;overflow-x:hidden;}
+.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
+.x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}
+.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
+.x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}
+.x-combo-noedit{cursor:pointer;}
+.x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}
+.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}
+
+.x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}
+.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
+.x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:white;}
+.x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
+.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}
+.x-panel-header{overflow:hidden;zoom:1;}
+.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;border:0 none;background:transparent;}
+.x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}
+.x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}
+.x-panel-tc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
+.x-panel-tl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 0;padding-left:6px;zoom:1;border-bottom:1px solid #99bbe8;}
+.x-panel-tr{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}
+.x-panel-bc{background:transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom;zoom:1;}
+.x-panel-bc .x-panel-footer{zoom:1;}
+.x-panel-bl{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-panel-br{background:transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}
+.x-panel-mc .x-panel-body{background:transparent;border:0 none;}
+.x-panel-ml{background:#fff url(../images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-panel-mr{background:transparent url(../images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-panel-bc .x-panel-footer{padding-bottom:6px;}
+.x-panel-nofooter .x-panel-bc{height:6px;font-size:0;line-height:0;}
+.x-panel-bwrap{overflow:hidden;zoom:1;}
+.x-panel-body{overflow:hidden;zoom:1;}
+.x-panel-collapsed .x-resizable-handle{display:none;}
+.ext-gecko .x-panel-animated div{overflow:hidden!important;}
+.x-plain-body{overflow:hidden;}
+.x-plain-bbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-tbar .x-toolbar{overflow:hidden;padding:2px;}
+.x-plain-bwrap{overflow:hidden;zoom:1;}
+.x-plain{overflow:hidden;}
+.x-tool{overflow:hidden;width:15px;height:15px;float:right;cursor:pointer;background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;margin-left:2px;}
+.x-tool-toggle{background-position:0 -60px;}
+.x-tool-toggle-over{background-position:-15px -60px;}
+.x-panel-collapsed .x-tool-toggle{background-position:0 -75px;}
+.x-panel-collapsed .x-tool-toggle-over{background-position:-15px -75px;}
+.x-tool-close{background-position:0 -0;}
+.x-tool-close-over{background-position:-15px 0;}
+.x-tool-minimize{background-position:0 -15px;}
+.x-tool-minimize-over{background-position:-15px -15px;}
+.x-tool-maximize{background-position:0 -30px;}
+.x-tool-maximize-over{background-position:-15px -30px;}
+.x-tool-restore{background-position:0 -45px;}
+.x-tool-restore-over{background-position:-15px -45px;}
+.x-tool-gear{background-position:0 -90px;}
+.x-tool-gear-over{background-position:-15px -90px;}
+.x-tool-pin{background-position:0 -135px;}
+.x-tool-pin-over{background-position:-15px -135px;}
+.x-tool-unpin{background-position:0 -150px;}
+.x-tool-unpin-over{background-position:-15px -150px;}
+.x-tool-right{background-position:0 -165px;}
+.x-tool-right-over{background-position:-15px -165px;}
+.x-tool-left{background-position:0 -180px;}
+.x-tool-left-over{background-position:-15px -180px;}
+.x-tool-up{background-position:0 -210px;}
+.x-tool-up-over{background-position:-15px -210px;}
+.x-tool-down{background-position:0 -195px;}
+.x-tool-down-over{background-position:-15px -195px;}
+.x-tool-refresh{background-position:0 -225px;}
+.x-tool-refresh-over{background-position:-15px -225px;}
+.x-tool-minus{background-position:0 -255px;}
+.x-tool-minus-over{background-position:-15px -255px;}
+.x-tool-plus{background-position:0 -240px;}
+.x-tool-plus-over{background-position:-15px -240px;}
+.x-tool-search{background-position:0 -270px;}
+.x-tool-search-over{background-position:-15px -270px;}
+.x-tool-save{background-position:0 -285px;}
+.x-tool-save-over{background-position:-15px -285px;}
+.x-tool-help{background-position:0 -300px;}
+.x-tool-help-over{background-position:-15px -300px;}
+.x-panel-ghost{background:#cbddf3;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;opacity:.65;-moz-opacity:.65;filter:alpha(opacity=65);}
+.x-panel-ghost ul{margin:0;padding:0;overflow:hidden;font-size:0;line-height:0;border:1px solid #99bbe8;border-top:0 none;display:block;}
+.x-panel-ghost *{cursor:move!important;}
+.x-panel-dd-spacer{border:2px dashed #99bbe8;}
+.x-panel-btns-ct{padding:5px;}
+.x-panel-btns-ct .x-btn{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns td{border:0;padding:0;}
+.x-panel-btns-ct .x-panel-btns-right table{float:right;clear:none;}
+.x-panel-btns-ct .x-panel-btns-left table{float:left;clear:none;}
+.x-panel-btns-ct .x-panel-btns-center{text-align:center;}
+.x-panel-btns-ct .x-panel-btns-center table{margin:0 auto;}
+.x-panel-btns-ct table td.x-panel-btn-td{padding:3px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-left{background-position:0 -147px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-right{background-position:0 -168px;}
+.x-panel-btns-ct .x-btn-focus .x-btn-center{background-position:0 -189px;}
+.x-panel-btns-ct .x-btn-over .x-btn-left{background-position:0 -63px;}
+.x-panel-btns-ct .x-btn-over .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-over .x-btn-center{background-position:0 -105px;}
+.x-panel-btns-ct .x-btn-click .x-btn-center{background-position:0 -126px;}
+.x-panel-btns-ct .x-btn-click .x-btn-right{background-position:0 -84px;}
+.x-panel-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
+
+.x-window{zoom:1;}
+.x-window .x-resizable-handle{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}
+.x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-window-header{overflow:hidden;zoom:1;}
+.x-window-bwrap{z-index:1;position:relative;zoom:1;}
+.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;}
+.x-window-header-text{cursor:pointer;}
+.x-window-tc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
+.x-window-tl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}
+.x-window-tr{background:transparent url(../images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}
+.x-window-bc{background:transparent url(../images/default/window/top-bottom.png) repeat-x 0 bottom;zoom:1;}
+.x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}
+.x-window-bl{background:transparent url(../images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-window-br{background:transparent url(../images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}
+.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}
+.x-window-ml{background:transparent url(../images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-window-mr{background:transparent url(../images/default/window/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;}
+.x-panel-nofooter .x-window-bc{height:6px;}
+.x-window-body{overflow:hidden;}
+.x-window-bwrap{overflow:hidden;}
+.x-window-maximized .x-window-bl,.x-window-maximized .x-window-br,.x-window-maximized .x-window-ml,.x-window-maximized .x-window-mr,.x-window-maximized .x-window-tl,.x-window-maximized .x-window-tr{padding:0;}
+.x-window-maximized .x-window-footer{padding-bottom:0;}
+.x-window-maximized .x-window-tc{padding-left:3px;padding-right:3px;background-color:white;}
+.x-window-maximized .x-window-mc{border-left:0 none;border-right:0 none;}
+.x-window-tbar .x-toolbar,.x-window-bbar .x-toolbar{border-left:0 none;border-right:0 none;}
+.x-window-bbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
+.x-window-draggable,.x-window-draggable .x-window-header-text{cursor:move;}
+.x-window-maximized .x-window-draggable,.x-window-maximized .x-window-draggable .x-window-header-text{cursor:default;}
+.x-window-body{background:transparent;}
+.x-panel-ghost .x-window-tl{border-bottom:1px solid #99bbe8;}
+.x-panel-collapsed .x-window-tl{border-bottom:1px solid #84a0c4;}
+.x-window-maximized-ct{overflow:hidden;}
+.x-window-maximized .x-resizable-handle{display:none;}
+.x-window-sizing-ghost ul{border:0 none!important;}
+.x-dlg-focus{-moz-outline:0 none;outline:0 none;width:0;height:0;overflow:hidden;position:absolute;top:0;left:0;}
+.x-dlg-mask{z-index:10000;display:none;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;}
+body.ext-ie6.x-body-masked select{visibility:hidden;}
+body.ext-ie6.x-body-masked .x-window select{visibility:visible;}
+.x-window-plain .x-window-mc{background:#CAD9EC;border-right:1px solid #DFE8F6;border-bottom:1px solid #DFE8F6;border-top:1px solid #a3bae9;border-left:1px solid #a3bae9;}
+.x-window-plain .x-window-body{border-left:1px solid #DFE8F6;border-top:1px solid #DFE8F6;border-bottom:1px solid #a3bae9;border-right:1px solid #a3bae9;background:transparent!important;}
+body.x-body-masked .x-window-plain .x-window-mc{background:#C7D6E9;}
+
+.x-html-editor-wrap{border:1px solid #a9bfd3;background:white;}
+.x-html-editor-tb .x-btn-text{background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat;}
+.x-html-editor-tb .x-edit-bold .x-btn-text{background-position:0 0;}
+.x-html-editor-tb .x-edit-italic .x-btn-text{background-position:-16px 0;}
+.x-html-editor-tb .x-edit-underline .x-btn-text{background-position:-32px 0;}
+.x-html-editor-tb .x-edit-forecolor .x-btn-text{background-position:-160px 0;}
+.x-html-editor-tb .x-edit-backcolor .x-btn-text{background-position:-176px 0;}
+.x-html-editor-tb .x-edit-justifyleft .x-btn-text{background-position:-112px 0;}
+.x-html-editor-tb .x-edit-justifycenter .x-btn-text{background-position:-128px 0;}
+.x-html-editor-tb .x-edit-justifyright .x-btn-text{background-position:-144px 0;}
+.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text{background-position:-80px 0;}
+.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text{background-position:-96px 0;}
+.x-html-editor-tb .x-edit-increasefontsize .x-btn-text{background-position:-48px 0;}
+.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text{background-position:-64px 0;}
+.x-html-editor-tb .x-edit-sourceedit .x-btn-text{background-position:-192px 0;}
+.x-html-editor-tb .x-edit-createlink .x-btn-text{background-position:-208px 0;}
+.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px;}
+.x-html-editor-tb .x-toolbar{position:static!important;}
+
+.x-panel-noborder .x-panel-body-noborder{border-width:0;}
+.x-panel-noborder .x-panel-header-noborder{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-window-noborder .x-window-mc{border-width:0;}
+.x-window-plain .x-window-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-body-noborder{border-width:0;}
+.x-tab-panel-noborder .x-tab-panel-header-noborder{border-top-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-noborder .x-tab-panel-footer-noborder{border-bottom-width:0;border-left-width:0;border-right-width:0;}
+.x-tab-panel-bbar-noborder .x-toolbar{border-width:0;border-top:1px solid #99bbe8;}
+.x-tab-panel-tbar-noborder .x-toolbar{border-width:0;border-bottom:1px solid #99bbe8;}
+
+.x-border-layout-ct{background:#dfe8f6;}
+.x-border-panel{position:absolute;left:0;top:0;}
+.x-tool-collapse-south{background-position:0 -195px;}
+.x-tool-collapse-south-over{background-position:-15px -195px;}
+.x-tool-collapse-north{background-position:0 -210px;}
+.x-tool-collapse-north-over{background-position:-15px -210px;}
+.x-tool-collapse-west{background-position:0 -180px;}
+.x-tool-collapse-west-over{background-position:-15px -180px;}
+.x-tool-collapse-east{background-position:0 -165px;}
+.x-tool-collapse-east-over{background-position:-15px -165px;}
+.x-tool-expand-south{background-position:0 -210px;}
+.x-tool-expand-south-over{background-position:-15px -210px;}
+.x-tool-expand-north{background-position:0 -195px;}
+.x-tool-expand-north-over{background-position:-15px -195px;}
+.x-tool-expand-west{background-position:0 -165px;}
+.x-tool-expand-west-over{background-position:-15px -165px;}
+.x-tool-expand-east{background-position:0 -180px;}
+.x-tool-expand-east-over{background-position:-15px -180px;}
+.x-tool-expand-north,.x-tool-expand-south{float:right;margin:3px;}
+.x-tool-expand-east,.x-tool-expand-west{float:none;margin:3px auto;}
+.x-accordion-hd .x-tool-toggle{background-position:0 -255px;}
+.x-accordion-hd .x-tool-toggle-over{background-position:-15px -255px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle{background-position:0 -240px;}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over{background-position:-15px -240px;}
+.x-accordion-hd{color:#222;padding-top:4px;padding-bottom:3px;border-top:0 none;font-weight:normal;background:transparent url(../images/default/panel/light-hd.gif) repeat-x 0 -9px;}
+.x-layout-collapsed{position:absolute;left:-10000px;top:-10000px;visibility:hidden;background-color:#d2e0f2;width:20px;height:20px;overflow:hidden;border:1px solid #98c0f4;z-index:20;}
+.ext-border-box .x-layout-collapsed{width:22px;height:22px;}
+.x-layout-collapsed-over{cursor:pointer;background-color:#d9e8fb;}
+.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools{position:absolute;top:0;left:0;width:20px;height:20px;}
+.x-layout-split{position:absolute;height:5px;width:5px;line-height:1px;font-size:1px;z-index:3;background-color:transparent;}
+.x-layout-split-h{background-image:url(../images/default/s.gif);background-position:left;}
+.x-layout-split-v{background-image:url(../images/default/s.gif);background-position:top;}
+.x-column-layout-ct{overflow:hidden;zoom:1;}
+.x-column{float:left;padding:0;margin:0;overflow:hidden;zoom:1;}
+.x-layout-mini{position:absolute;top:0;left:0;display:block;width:5px;height:35px;cursor:pointer;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
+.x-layout-mini-over,.x-layout-collapsed-over .x-layout-mini{opacity:1;-moz-opacity:1;filter:none;}
+.x-layout-split-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
+.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
+.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
+.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-right.gif);}
+.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../images/default/layout/mini-left.gif);}
+.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../images/default/layout/mini-top.gif);}
+.x-layout-cmini-west,.x-layout-cmini-east{border:0 none;width:5px!important;padding:0;background:transparent;}
+.x-layout-cmini-north,.x-layout-cmini-south{border:0 none;height:5px!important;padding:0;background:transparent;}
+.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;}
+.x-abs-layout-item{position:absolute;left:0;top:0;}
+
+.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
+.x-progress-inner{height:18px;background:#e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;position:relative;}
+.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../images/default/progress/progress-bg.gif ) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}
+.x-progress-text{font-size:11px;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
+.x-progress-text-back{color:#396095;line-height:16px;}
+.ext-ie .x-progress-text-back{line-height:15px;}
+
+.x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}
+.x-window-dlg .x-window-mc{border:0 none!important;}
+.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}
+.x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}
+.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-window-dlg .x-progress-wrap{margin-top:4px;}
+.ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}
+.x-window-dlg .x-msg-box-wait{background:transparent url(../images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}
+.x-window-dlg .ext-mb-icon{float:left;width:47px;height:32px;}
+.ext-ie .x-window-dlg .ext-mb-icon{width:44px;}
+.x-window-dlg .ext-mb-info{background:transparent url(../images/default/window/icon-info.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-warning{background:transparent url(../images/default/window/icon-warning.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-question{background:transparent url(../images/default/window/icon-question.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-error{background:transparent url(../images/default/window/icon-error.gif) no-repeat top left;}
+
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/form.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/form.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/form.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,453 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+/* all fields */
+.x-form-field{
+ margin: 0 0 0 0;
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+}
+
+/* ---- text fields ---- */
+.x-form-text, textarea.x-form-field{
+ padding: 1px 3px;
+ background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0;
+ border: 1px solid #B5B8C8;
+}
+.x-form-text {
+ height:22px;
+ line-height:18px;
+ vertical-align:middle;
+}
+.ext-ie .x-form-text {
+ margin-top:-1px; /* ie bogus margin bug */
+ margin-bottom:-1px;
+ height:22px; /* ie quirks */
+ line-height:18px;
+}
+.ext-strict .x-form-text {
+ height:18px;
+}
+.ext-safari .x-form-text {
+ height:20px; /* safari always same size */
+}
+.ext-gecko .x-form-text {
+ padding-top:2px; /* FF won't center the text vertically */
+ padding-bottom:0;
+}
+/* select boxes */
+
+.x-form-select-one {
+ height:20px;
+ line-height:18px;
+ vertical-align:middle;
+ background-color:#fff; /* opera */
+ border: 1px solid #B5B8C8;
+}
+
+/* multi select boxes */
+
+/* --- TODO --- */
+
+/* checkboxes */
+
+/* --- TODO --- */
+
+/* radios */
+
+/* --- TODO --- */
+
+
+/* wrapped fields and triggers */
+
+.x-form-field-wrap {
+ position:relative;
+ zoom:1;
+ white-space: nowrap;
+}
+
+.x-editor .x-form-check-wrap {
+ background:#fff;
+}
+.x-form-field-wrap .x-form-trigger{
+ width:17px;
+ height:21px;
+ border:0;
+ background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0;
+ cursor:pointer;
+ border-bottom: 1px solid #B5B8C8;
+ position:absolute;
+ top:0;
+}
+.ext-safari .x-form-field-wrap .x-form-trigger{
+ height:19px; /* safari doesn't allow height adjustments to the fields, so adjust trigger */
+}
+
+.x-form-field-wrap .x-form-date-trigger{
+ background-image: url(../images/default/form/date-trigger.gif);
+ cursor:pointer;
+}
+.x-form-field-wrap .x-form-clear-trigger{
+ background-image: url(../images/default/form/clear-trigger.gif);
+ cursor:pointer;
+}
+.x-form-field-wrap .x-form-search-trigger{
+ background-image: url(../images/default/form/search-trigger.gif);
+ cursor:pointer;
+}
+.ext-safari .x-form-field-wrap .x-form-trigger{
+ right:0;
+}
+.x-form-field-wrap .x-form-twin-triggers{
+
+}
+.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{
+ position:static;
+ top:auto;
+ vertical-align:top;
+}
+
+
+.x-form-field-wrap .x-form-trigger-over{
+ background-position:-17px 0;
+}
+.x-form-field-wrap .x-form-trigger-click{
+ background-position:-34px 0;
+}
+
+.x-trigger-wrap-focus .x-form-trigger{
+ background-position:-51px 0;
+}
+.x-trigger-wrap-focus .x-form-trigger-over{
+ background-position:-68px 0;
+}
+.x-trigger-wrap-focus .x-form-trigger-click{
+ background-position:-85px 0;
+}
+.x-trigger-wrap-focus .x-form-trigger{
+ border-bottom: 1px solid #7eadd9;
+}
+
+.x-item-disabled .x-form-trigger-over{
+ background-position:0 0 !important;
+ border-bottom: 1px solid #B5B8C8;
+}
+.x-item-disabled .x-form-trigger-click{
+ background-position:0 0 !important;
+ border-bottom: 1px solid #B5B8C8;
+}
+
+/* field focus style */
+.x-form-focus, textarea.x-form-focus{
+ border: 1px solid #7eadd9;
+}
+
+/* invalid fields */
+.x-form-invalid, textarea.x-form-invalid{
+ background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom;
+ border: 1px solid #dd7870;
+}
+.ext-safari .x-form-invalid{
+ background-color:#ffeeee;
+ border: 1px solid #ff7870;
+}
+
+/* editors */
+
+.x-editor {
+ visibility:hidden;
+ padding:0;
+ margin:0;
+}
+.x-form-check-wrap {
+ line-height:18px;
+}
+.ext-ie .x-form-check-wrap input {
+ width:15px;
+ height:15px;
+}
+.x-editor .x-form-check-wrap {
+ padding:3px;
+}
+.x-editor .x-form-checkbox {
+ height:13px;
+}
+/* If you override the default field font above, you would need to change this font as well */
+.x-form-grow-sizer {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+ left: -10000px;
+ padding: 8px 3px;
+ position: absolute;
+ visibility:hidden;
+ top: -10000px;
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word;
+ zoom:1;
+}
+.x-form-grow-sizer p {
+ margin:0 !important;
+ border:0 none !important;
+ padding:0 !important;
+}
+/* Form Items CSS */
+
+.x-form-item {
+ font:normal 12px tahoma, arial, helvetica, sans-serif;
+ display:block;
+ margin-bottom:4px;
+}
+
+.x-form-item label {
+ display:block;
+ float:left;
+ width:100px;
+ padding:3px;
+ padding-left:0;
+ clear:left;
+ z-index:2;
+ position:relative;
+}
+
+.x-form-element {
+ padding-left:105px;
+ position:relative;
+}
+
+.x-form-invalid-msg {
+ color:#ee0000;
+ padding:2px;
+ padding-left:18px;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+ background: transparent url(../images/default/shared/warning.gif) no-repeat 0 2px;
+ line-height:16px;
+ width:200px;
+}
+
+
+.x-form-label-right label {
+ text-align:right;
+}
+
+.x-form-label-top .x-form-item label {
+ width:auto;
+ float:none;
+ clear:none;
+ display:inline;
+ margin-bottom:4px;
+ position:static;
+}
+
+.x-form-label-top .x-form-element {
+ padding-left:0;
+ padding-top:4px;
+}
+
+.x-form-label-top .x-form-item {
+ padding-bottom:4px;
+}
+
+
+.x-form fieldset {
+ border:1px solid #B5B8C8;
+ padding:10px;
+ margin-bottom:10px;
+}
+.x-form fieldset legend {
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+ color:#15428b;
+}
+.ext-ie .x-form fieldset legend {
+ margin-bottom:10px;
+}
+.ext-ie .x-form fieldset {
+ padding-top: 0;
+ padding-bottom:5px;
+}
+.x-form-empty-field {
+ color:gray;
+}
+/* Editor small font for grid, toolbar and tree */
+.x-small-editor .x-form-field {
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+}
+.x-small-editor .x-form-text {
+ height:20px;
+ line-height:16px;
+ vertical-align:middle;
+}
+.ext-ie .x-small-editor .x-form-text {
+ margin-top:-1px !important; /* ie bogus margin bug */
+ margin-bottom:-1px !important;
+ height:20px !important; /* ie quirks */
+ line-height:16px !important;
+}
+.ext-strict .x-small-editor .x-form-text {
+ height:16px !important;
+}
+
+.ext-safari .x-small-editor .x-form-field {
+ /* safari text field will not size so needs bigger font */
+ font:normal 12px arial, tahoma, helvetica, sans-serif;
+}
+.ext-ie .x-small-editor .x-form-text {
+ height:20px;
+ line-height:16px;
+}
+.ext-border-box .x-small-editor .x-form-text {
+ height:20px;
+}
+
+.x-small-editor .x-form-select-one {
+ height:20px;
+ line-height:16px;
+ vertical-align:middle;
+}
+.x-small-editor .x-form-num-field {
+ text-align:right;
+}
+.x-small-editor .x-form-field-wrap .x-form-trigger{
+ height:19px;
+}
+
+
+.x-form-clear {
+ clear:both;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+.x-form-clear-left {
+ clear:left;
+ height:0;
+ overflow:hidden;
+ line-height:0;
+ font-size:0;
+}
+
+.x-form-cb-label {
+ width:'auto' !important;
+ float:none !important;
+ clear:none !important;
+ display:inline !important;
+ margin-left:4px;
+}
+
+.x-form-column {
+ float:left;
+ padding:0;
+ margin:0;
+ width:48%;
+ overflow:hidden;
+ zoom:1;
+}
+
+/* buttons */
+.x-form .x-form-btns-ct .x-btn{
+ float:right;
+ clear:none;
+}
+.x-form .x-form-btns-ct .x-form-btns td {
+ border:0;
+ padding:0;
+}
+.x-form .x-form-btns-ct .x-form-btns-right table{
+ float:right;
+ clear:none;
+}
+.x-form .x-form-btns-ct .x-form-btns-left table{
+ float:left;
+ clear:none;
+}
+.x-form .x-form-btns-ct .x-form-btns-center{
+ text-align:center; /*ie*/
+}
+.x-form .x-form-btns-ct .x-form-btns-center table{
+ margin:0 auto; /*everyone else*/
+}
+.x-form .x-form-btns-ct table td.x-form-btn-td{
+ padding:3px;
+}
+
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-form .x-form-btns-ct .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+.x-form .x-form-btns-ct .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
+.x-form-invalid-icon {
+ width:16px;
+ height:18px;
+ visibility:hidden;
+ position:absolute;
+ left:0;
+ top:0;
+ display:block;
+ background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px;
+}
+
+/* fieldsets */
+.x-fieldset legend .x-tool-toggle {
+ margin-right:3px;
+ margin-left:0;
+ float:left !important;
+}
+.x-fieldset legend input {
+ margin-right:3px;
+ float:left !important;
+ height:13px;
+ width:13px;
+}
+fieldset.x-panel-collapsed {
+ padding-bottom:0 !important;
+ border-width: 1px 0 0 0 !important;
+}
+fieldset.x-panel-collapsed .x-fieldset-bwrap {
+ visibility:hidden;
+ position:absolute;
+ left:-1000px;
+ top:-1000px;
+}
+.ext-ie .x-fieldset-bwrap {
+ zoom:1;
+}
+.ext-ie td .x-form-text {
+ position:relative;
+ top:-1px;
+}
+
+.ext-gecko .x-window-body .x-form-item {
+ -moz-outline: none;
+ overflow: auto;
+}
+
+.ext-gecko .x-form-item {
+ -moz-outline: none;
+}
+
+.x-hide-label label.x-form-item-label {
+ display:none;
+}
+.x-hide-label .x-form-element {
+ padding-left: 0 !important;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/grid.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/grid.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/grid.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,534 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+/* Grid2 styles */
+.x-grid3 {
+ position:relative;
+ overflow:hidden;
+ background-color:#fff;
+}
+
+.x-grid-panel .x-panel-body {
+ overflow:hidden !important;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border:1px solid #99bbe8;
+}
+
+.ext-ie .x-grid3 table,.ext-safari .x-grid3 table {
+ table-layout:fixed;
+}
+.x-grid3-viewport{
+ overflow:hidden;
+}
+.x-grid3-hd-row td, .x-grid3-row td, .x-grid3-summary-row td{
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+}
+.x-grid3-row td, .x-grid3-summary-row td {
+ line-height:13px;
+ vertical-align: top;
+ padding-left:1px;
+ padding-right:1px;
+ -moz-user-select: none;
+}
+.x-grid3-hd-row td {
+ line-height:15px;
+ vertical-align:middle;
+ border-left:1px solid #eee;
+ border-right:1px solid #d0d0d0;
+}
+
+.x-grid3-hd-row .x-grid3-marker-hd {
+ padding:3px;
+}
+
+.x-grid3-row .x-grid3-marker {
+ padding:3px;
+}
+
+.x-grid3-cell-inner, .x-grid3-hd-inner{
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ padding:3px 3px 3px 5px;
+ white-space: nowrap;
+}
+
+.x-grid3-hd-inner {
+ position:relative;
+ cursor:inherit;
+ padding:4px 3px 4px 5px;
+}
+
+.x-grid3-row-body {
+ white-space:normal;
+}
+
+.x-grid3-body-cell {
+ -moz-outline:0 none;
+ outline:0 none;
+}
+/* IE Quirks to clip */
+.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{
+ width:100%;
+}
+/* reverse above in strict mode */
+.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{
+ width:auto;
+}
+
+.x-grid3-col {
+
+}
+
+.x-grid3-row {
+ cursor: default;
+ border:1px solid #ededed;
+ border-top-color:#fff;
+ /*border-bottom: 1px solid #ededed;*/
+ width:100%;
+}
+.x-grid3-row-alt{
+ /*background-color:#f1f2f4;*/
+}
+
+.x-grid3-row-over {
+ border:1px solid #dddddd;
+ background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top;
+}
+
+.x-grid3-resize-proxy {
+ width:1px;
+ left:0;
+ background-color:#777;
+ cursor: e-resize;
+ cursor: col-resize;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+.x-grid3-resize-marker {
+ width:1px;
+ left:0;
+ background-color:#777;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+.x-grid3-focus {
+ position:absolute;
+ top:0;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: normal;
+ -khtml-user-select: normal;
+}
+
+/* header styles */
+.x-grid3-header{
+ background: #f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;
+ cursor:default;
+ zoom:1;
+ padding:1px 0 0 0;
+}
+
+.x-grid3-header-pop {
+ border-left:1px solid #d0d0d0;
+ float:right;
+ clear:none;
+}
+.x-grid3-header-pop-inner {
+ border-left:1px solid #eee;
+ width:14px;
+ height:19px;
+ background: transparent url(../images/default/grid/hd-pop.gif) no-repeat center center;
+}
+.ext-ie .x-grid3-header-pop-inner {
+ width:15px;
+}
+.ext-strict .x-grid3-header-pop-inner {
+ width:14px;
+}
+.x-grid3-header-inner {
+ overflow:hidden;
+ zoom:1;
+ float:left;
+}
+.x-grid3-header-offset {
+ padding-left:1px;
+ width:10000px;
+}
+
+td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
+ border-left:1px solid #aaccf6;
+ border-right:1px solid #aaccf6;
+}
+td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner {
+ background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;
+
+}
+.x-grid3-sort-icon{
+ background-repeat: no-repeat;
+ display: none;
+ height: 4px;
+ width: 13px;
+ margin-left:3px;
+ vertical-align: middle;
+}
+.sort-asc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_asc.gif);
+ display: inline;
+}
+.sort-desc .x-grid3-sort-icon {
+ background-image: url(../images/default/grid/sort_desc.gif);
+ display: inline;
+}
+
+/* Body Styles */
+.x-grid3-body {
+ zoom:1;
+}
+.x-grid3-scroller {
+ overflow:auto;
+ zoom:1;
+ position:relative;
+}
+.x-grid3-cell-text, .x-grid3-hd-text {
+ display: block;
+ padding: 3px 5px 3px 5px;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ color:black;
+}
+.x-grid3-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+ background-position: center;
+ background-repeat: no-repeat;
+ cursor: e-resize;
+ cursor: col-resize;
+ display: block;
+ font-size: 1px;
+ height: 16px;
+ overflow: hidden;
+ position: absolute;
+ top: 2px;
+ width: 6px;
+ z-index: 3;
+}
+
+.x-grid3-hd-text {
+ color:#15428b;
+}
+/* Column Reorder DD */
+.x-dd-drag-proxy .x-grid3-hd-inner{
+ background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom;
+ width:120px;
+ padding:3px;
+ border:1px solid #aaccf6;
+ overflow:hidden;
+}
+
+.col-move-top, .col-move-bottom{
+ width:9px;
+ height:9px;
+ position:absolute;
+ top:0;
+ line-height:1px;
+ font-size:1px;
+ overflow:hidden;
+ visibility:hidden;
+ z-index:20000;
+}
+.col-move-top{
+ background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top;
+}
+.col-move-bottom{
+ background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top;
+}
+
+/* Selection Styles */
+.x-grid3-row-selected {
+ background: #DFE8F6;
+ border:1px dotted #a3bae9;
+}/*
+.x-grid3-row-selected td {
+ border-left:1px solid #c3daf9;
+ border-right:1px solid #719ad5;
+}*/
+.x-grid3-row-selected span, .x-grid3-row-selected b, .x-grid3-row-selected div, .x-grid3-row-selected strong, .x-grid3-row-selected i{
+
+}
+.x-grid3-cell-selected{
+ background-color: #B8CFEE !important;
+ color: black;
+}
+.x-grid3-cell-selected span{
+ color: black !important;
+}
+.x-grid3-cell-selected .x-grid3-cell-text{
+ color: black;
+}
+
+.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{
+ background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom !important;
+ vertical-align:middle !important;
+ color:black;
+ padding:0;
+ border-top:1px solid white;
+ border-bottom:none !important;
+ border-right:1px solid #6fa0df !important;
+ text-align:center;
+}
+.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{
+ padding:0 4px;
+ color:#15428b !important;
+ text-align:center;
+}
+
+/* dirty cells */
+.x-grid3-dirty-cell {
+ background: transparent url(../images/default/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* Grid Toolbars */
+.x-grid3-topbar, .x-grid3-bottombar{
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+ overflow:hidden;
+ display:none;
+ zoom:1;
+ position:relative;
+}
+.x-grid3-topbar .x-toolbar{
+ border-right:0 none;
+}
+.x-grid3-bottombar .x-toolbar{
+ border-right:0 none;
+ border-bottom:0 none;
+ border-top:1px solid #a9bfd3;
+}
+/* Props Grid Styles */
+.x-props-grid .x-grid3-cell{
+ padding:1px;
+}
+.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
+ background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y -16px !important;
+ padding-left:12px;
+ color:black !important;
+}
+.x-props-grid .x-grid3-body .x-grid3-td-name{
+ padding:1px;
+ padding-right:0;
+ background:white !important;
+ border:0 none;
+ border-right:1px solid #eeeeee;
+}
+
+/* header menu */
+.xg-hmenu-sort-asc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-asc.gif);
+}
+.xg-hmenu-sort-desc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-desc.gif);
+}
+.xg-hmenu-lock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-lock.gif);
+}
+.xg-hmenu-unlock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-unlock.gif);
+}
+
+/* dd */
+.x-grid3-col-dd {
+ border:0 none;
+ padding:0;
+ background:transparent;
+}
+
+.x-dd-drag-ghost .x-grid3-dd-wrap {
+ padding:1px 3px 3px 1px;
+}
+
+.x-grid3-hd {
+ -moz-user-select:none;
+}
+
+.x-grid3-hd-btn {
+ display:none;
+ position:absolute;
+ width:14px;
+ background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center;
+ right:0;
+ top:0;
+ z-index:2;
+ cursor:pointer;
+}
+
+.x-grid3-hd-over .x-grid3-hd-btn, .x-grid3-hd-menu-open .x-grid3-hd-btn {
+ display:block;
+}
+
+a.x-grid3-hd-btn:hover {
+ background-position:-14px center;
+}
+
+/* Expanders */
+
+.x-grid3-body .x-grid3-td-expander {
+ background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;
+}
+.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner {
+ padding:0 !important;
+ height:100%;
+}
+.x-grid3-row-expander {
+ width:100%;
+ height:18px;
+ background-position:4px 2px;
+ background-repeat:no-repeat;
+ background-color:transparent;
+ background-image:url(../images/default/grid/row-expand-sprite.gif);
+}
+.x-grid3-row-collapsed .x-grid3-row-expander {
+ background-position:4px 2px;
+}
+.x-grid3-row-expanded .x-grid3-row-expander {
+ background-position:-21px 2px;
+}
+.x-grid3-row-collapsed .x-grid3-row-body {
+ display:none !important;
+}
+.x-grid3-row-expanded .x-grid3-row-body {
+ display:block !important;
+}
+
+/* Checkers */
+
+.x-grid3-body .x-grid3-td-checker {
+ background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;
+}
+
+.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner, .x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner {
+ padding:0 !important;
+ height:100%;
+}
+
+.x-grid3-row-checker, .x-grid3-hd-checker {
+ width:100%;
+ height:18px;
+ background-position:2px 2px;
+ background-repeat:no-repeat;
+ background-color:transparent;
+ background-image:url(../images/default/grid/row-check-sprite.gif);
+}
+.x-grid3-row .x-grid3-row-checker {
+ background-position:2px 2px;
+}
+.x-grid3-row-selected .x-grid3-row-checker, .x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 2px;
+}
+.x-grid3-hd-checker {
+ background-position:2px 3px;
+}
+.x-grid3-hd-checker-on .x-grid3-hd-checker {
+ background-position:-23px 3px;
+}
+
+/* Numberer */
+
+.x-grid3-body .x-grid3-td-numberer {
+ background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right;
+}
+.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
+ padding:3px 5px 0 0 !important;
+ text-align:right;
+ color:#444;
+}
+
+/* All specials */
+
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
+.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
+ background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right;
+}
+.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner {
+ padding: 1px 0 0 0 !important;
+}
+
+.x-grid3-check-col {
+ width:100%;
+ height:16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ background-color:transparent;
+ background-image:url(../images/default/menu/unchecked.gif);
+}
+
+
+.x-grid3-check-col-on {
+ width:100%;
+ height:16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ background-color:transparent;
+ background-image:url(../images/default/menu/checked.gif);
+}
+
+/* Grouping classes */
+.x-grid-group, .x-grid-group-body, .x-grid-group-hd {
+ zoom:1;
+}
+.x-grid-group-hd {
+ border-bottom: 2px solid #99bbe8;
+ cursor:pointer;
+ padding-top:6px;
+}
+.x-grid-group-hd div {
+ background:transparent url(../images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;
+ padding:4px 4px 4px 17px;
+ color:#3764a0;
+ font:bold 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-grid-group-collapsed .x-grid-group-hd div {
+ background-position: 3px 3px;
+}
+.x-grid-group-collapsed .x-grid-group-body {
+ display:none;
+}
+
+.x-group-by-icon {
+ background-image:url(../images/default/grid/group-by.gif);
+}
+.x-cols-icon {
+ background-image:url(../images/default/grid/columns.gif);
+}
+.x-show-groups-icon {
+ background-image:url(../images/default/grid/group-by.gif);
+}
+
+.ext-ie .x-grid3 .x-editor .x-form-text { /* ie bug */
+ position:relative;
+ top:-1px;
+}
+
+.x-grid-empty {
+ padding:10px;
+ color:gray;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/layout.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/layout.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/layout.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,263 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-border-layout-ct {
+ background:#dfe8f6;
+}
+.x-border-panel {
+ position:absolute;
+ left:0;
+ top:0;
+}
+
+.x-tool-collapse-south {
+ background-position:0 -195px;
+}
+.x-tool-collapse-south-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-collapse-north {
+ background-position:0 -210px;
+}
+.x-tool-collapse-north-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-collapse-west {
+ background-position:0 -180px;
+}
+.x-tool-collapse-west-over {
+ background-position:-15px -180px;
+}
+
+.x-tool-collapse-east {
+ background-position:0 -165px;
+}
+.x-tool-collapse-east-over {
+ background-position:-15px -165px;
+}
+
+
+.x-tool-expand-south {
+ background-position:0 -210px;
+}
+.x-tool-expand-south-over {
+ background-position:-15px -210px;
+}
+
+.x-tool-expand-north {
+ background-position:0 -195px;
+}
+.x-tool-expand-north-over {
+ background-position:-15px -195px;
+}
+
+.x-tool-expand-west {
+ background-position:0 -165px;
+}
+.x-tool-expand-west-over {
+ background-position:-15px -165px;
+}
+
+.x-tool-expand-east {
+ background-position:0 -180px;
+}
+.x-tool-expand-east-over {
+ background-position:-15px -180px;
+}
+
+.x-tool-expand-north, .x-tool-expand-south {
+ float:right;
+ margin:3px;
+}
+.x-tool-expand-east, .x-tool-expand-west {
+ float:none;
+ margin:3px auto;
+}
+
+
+
+.x-accordion-hd .x-tool-toggle {
+ background-position:0 -255px;
+}
+.x-accordion-hd .x-tool-toggle-over {
+ background-position:-15px -255px;
+}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle {
+ background-position:0 -240px;
+}
+.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over {
+ background-position:-15px -240px;
+}
+
+.x-accordion-hd {
+ color:#222;
+ padding-top:4px;
+ padding-bottom:3px;
+ border-top:0 none;
+ font-weight:normal;
+ background: transparent url(../images/default/panel/light-hd.gif) repeat-x 0 -9px;
+}
+
+.x-layout-collapsed{
+ position:absolute;
+ left:-10000px;
+ top:-10000px;
+ visibility:hidden;
+ background-color:#d2e0f2;
+ width:20px;
+ height:20px;
+ overflow:hidden;
+ border:1px solid #98c0f4;
+ z-index:20;
+}
+.ext-border-box .x-layout-collapsed{
+ width:22px;
+ height:22px;
+}
+.x-layout-collapsed-over{
+ cursor:pointer;
+ background-color:#d9e8fb;
+}
+.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{
+ position:absolute;
+ top:0;
+ left:0;
+ width:20px;
+ height:20px;
+}
+
+
+.x-layout-split{
+ position:absolute;
+ height:5px;
+ width:5px;
+ line-height:1px;
+ font-size:1px;
+ z-index:3;
+ background-color:transparent;
+}
+
+.x-layout-split-h{
+ background-image:url(../images/default/s.gif);
+ background-position: left;
+}
+.x-layout-split-v{
+ background-image:url(../images/default/s.gif);
+ background-position: top;
+}
+
+.x-column-layout-ct {
+ overflow:hidden;
+ /*padding:3px 3px 3px 3px;*/
+ zoom:1;
+}
+
+.x-column {
+ float:left;
+ padding:0;
+ margin:0;
+ overflow:hidden;
+ zoom:1;
+ /*margin:3px;*/
+}
+
+/* mini mode */
+
+.x-layout-mini {
+ position:absolute;
+ top:0;
+ left:0;
+ display:block;
+ width:5px;
+ height:35px;
+ cursor:pointer;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+}
+.x-layout-mini-over, .x-layout-collapsed-over .x-layout-mini{
+ opacity:1;
+ -moz-opacity:1;
+ filter:none;
+}
+
+.x-layout-split-west .x-layout-mini {
+ top:48%;
+ background-image:url(../images/default/layout/mini-left.gif);
+}
+.x-layout-split-east .x-layout-mini {
+ top:48%;
+ background-image:url(../images/default/layout/mini-right.gif);
+}
+.x-layout-split-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+ background-image:url(../images/default/layout/mini-top.gif);
+}
+.x-layout-split-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+ background-image:url(../images/default/layout/mini-bottom.gif);
+}
+
+
+.x-layout-cmini-west .x-layout-mini {
+ top:48%;
+ background-image:url(../images/default/layout/mini-right.gif);
+}
+
+.x-layout-cmini-east .x-layout-mini {
+ top:48%;
+ background-image:url(../images/default/layout/mini-left.gif);
+}
+
+.x-layout-cmini-north .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+ background-image:url(../images/default/layout/mini-bottom.gif);
+}
+
+.x-layout-cmini-south .x-layout-mini {
+ left:48%;
+ height:5px;
+ width:35px;
+ background-image:url(../images/default/layout/mini-top.gif);
+}
+
+.x-layout-cmini-west, .x-layout-cmini-east {
+ border:0 none;
+ width:5px !important;
+ padding:0;
+ background:transparent;
+}
+
+.x-layout-cmini-north, .x-layout-cmini-south {
+ border:0 none;
+ height:5px !important;
+ padding:0;
+ background:transparent;
+}
+
+.x-viewport, .x-viewport body {
+ margin: 0;
+ padding: 0;
+ border: 0 none;
+ overflow: hidden;
+ height: 100%;
+}
+
+.x-abs-layout-item {
+ position:absolute;
+ left:0;
+ top:0;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/menu.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/menu.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/menu.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,134 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-menu {
+ border: 1px solid #718bb7;
+ z-index: 15000;
+ zoom: 1;
+ background: #f0f0f0 url(../images/default/menu/menu.gif) repeat-y;
+ padding: 2px;
+}
+.x-menu a {
+ text-decoration: none !important;
+}
+.ext-ie .x-menu {
+ zoom:1;
+ overflow:hidden;
+}
+.x-menu-list{
+ background:transparent;
+ border:0 none;
+}
+.x-menu li{
+ line-height:100%;
+}
+.x-menu li.x-menu-sep-li{
+ font-size:1px;
+ line-height:1px;
+}
+.x-menu-list-item{
+ font:normal 11px tahoma,arial, sans-serif;
+ white-space: nowrap;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ display:block;
+ padding:1px;
+}
+.x-menu-item-arrow{
+ background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right;
+}
+.x-menu-sep {
+ display:block;
+ font-size:1px;
+ line-height:1px;
+ margin: 2px 3px;
+ background-color:#e0e0e0;
+ border-bottom:1px solid #fff;
+}
+.x-menu-focus {
+ position:absolute;
+ left:0;
+ top:-5px;
+ width:0;
+ height:0;
+ line-height:1px;
+}
+.x-menu a.x-menu-item {
+ display:block;
+ line-height:16px;
+ padding:3px 21px 3px 3px;
+ white-space: nowrap;
+ text-decoration:none;
+ color:#222;
+ -moz-outline: 0 none;
+ outline: 0 none;
+ cursor:pointer;
+}
+.x-menu-item-active {
+ background: #ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom;
+ border:1px solid #aaccf6;
+ padding: 0;
+}
+.x-menu-item-active a.x-menu-item {
+ color: #233d6d;
+}
+
+.x-menu-item-icon {
+ border: 0 none;
+ height: 16px;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ margin: 0 8px 0 0;
+ background-position:center;
+}
+
+.x-menu-check-item .x-menu-item-icon{
+ background: transparent url(../images/default/menu/unchecked.gif) no-repeat center;
+}
+
+.x-menu-item-checked .x-menu-item-icon{
+ background-image:url(../images/default/menu/checked.gif);
+}
+.x-menu-group-item .x-menu-item-icon{
+ background: transparent;
+}
+
+.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
+ background: transparent url(../images/default/menu/group-checked.gif) no-repeat center;
+}
+
+.x-menu-plain {
+ background:#fff !important;
+}
+.x-menu-date-item{
+ padding:0;
+}
+
+.x-menu .x-color-palette, .x-menu .x-date-picker{
+ margin-left: 26px;
+ margin-right:4px;
+}
+.x-menu .x-date-picker{
+ border:1px solid #a3bad9;
+ margin-top:2px;
+ margin-bottom:2px;
+}
+.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{
+ margin: 0;
+ border: 0 none;
+}
+.x-date-menu {
+ padding:0 !important;
+}
+
+.x-cycle-menu .x-menu-item-checked {
+ border:1px dotted #a3bae9 !important;
+ background:#DFE8F6;
+ padding:0;
+}
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/panel.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/panel.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/panel.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,411 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-panel {
+ border-style: solid;
+ border-color: #99bbe8;
+ border-width:0;
+}
+
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+ color:#15428b;
+ font:bold 11px tahoma,arial,verdana,sans-serif;
+ padding:5px 3px 4px 5px;
+ border:1px solid #99bbe8;
+ line-height: 15px;
+ background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;
+}
+
+.x-panel-body {
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ overflow:hidden;
+ background:white;
+}
+
+.x-panel-bbar .x-toolbar {
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-panel-tbar .x-toolbar {
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
+ border-top:1px solid #99bbe8;
+ border-bottom: 0 none;
+}
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+ border-top:1px solid #99bbe8;
+}
+.x-panel-header {
+ overflow:hidden;
+ zoom:1;
+}
+.x-panel-tl .x-panel-header {
+ color:#15428b;
+ font:bold 11px tahoma,arial,verdana,sans-serif;
+ padding:5px 0 4px 0;
+ border:0 none;
+ background:transparent;
+}
+.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon {
+ padding-left:20px !important;
+ background-repeat:no-repeat;
+ background-position:0 4px;
+ zoom:1;
+}
+.x-panel-inline-icon {
+ width:16px;
+ height:16px;
+ background-repeat:no-repeat;
+ background-position:0 0;
+ vertical-align:middle;
+ margin-right:4px;
+ margin-top:-1px;
+ margin-bottom:-1px;
+}
+.x-panel-tc {
+ background: transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 0;
+ overflow:hidden;
+}
+.x-panel-tl {
+ background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ border-bottom:1px solid #99bbe8;
+}
+.x-panel-tr {
+ background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat right 0;
+ zoom:1;
+ padding-right:6px;
+}
+.x-panel-bc {
+ background: transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom;
+ zoom:1;
+}
+.x-panel-bc .x-panel-footer {
+ zoom:1;
+}
+
+.x-panel-bl {
+ background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+.x-panel-br {
+ background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+.x-panel-mc {
+ border:0 none;
+ padding:0;
+ margin:0;
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ padding-top:6px;
+ background:#dfe8f6;
+}
+.x-panel-mc .x-panel-body {
+ background:transparent;
+ border: 0 none;
+}
+.x-panel-ml {
+ background: #fff url(../images/default/panel/left-right.gif) repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+.x-panel-mr {
+ background: transparent url(../images/default/panel/left-right.gif) repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+.x-panel-bc .x-panel-footer {
+ padding-bottom:6px;
+}
+.x-panel-nofooter .x-panel-bc {
+ height:6px;
+ font-size:0;
+ line-height:0;
+}
+
+.x-panel-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+.x-panel-body {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-panel-collapsed .x-resizable-handle{
+ display:none;
+}
+
+.ext-gecko .x-panel-animated div {
+ overflow:hidden !important;
+}
+
+/* Plain */
+.x-plain-body {
+ overflow:hidden;
+}
+
+.x-plain-bbar .x-toolbar {
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-plain-tbar .x-toolbar {
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-plain-bwrap {
+ overflow:hidden;
+ zoom:1;
+}
+
+.x-plain {
+ overflow:hidden;
+}
+
+/* Tools */
+.x-tool {
+ overflow:hidden;
+ width:15px;
+ height:15px;
+ float:right;
+ cursor:pointer;
+ background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat;
+ margin-left:2px;
+}
+
+/* expand / collapse tools */
+.x-tool-toggle {
+ background-position:0 -60px;
+}
+.x-tool-toggle-over {
+ background-position:-15px -60px;
+}
+.x-panel-collapsed .x-tool-toggle {
+ background-position:0 -75px;
+}
+.x-panel-collapsed .x-tool-toggle-over {
+ background-position:-15px -75px;
+}
+
+.x-tool-close {
+ background-position:0 -0;
+}
+.x-tool-close-over {
+ background-position:-15px 0;
+}
+
+.x-tool-minimize {
+ background-position:0 -15px;
+}
+.x-tool-minimize-over {
+ background-position:-15px -15px;
+}
+
+.x-tool-maximize {
+ background-position:0 -30px;
+}
+.x-tool-maximize-over {
+ background-position:-15px -30px;
+}
+
+.x-tool-restore {
+ background-position:0 -45px;
+}
+.x-tool-restore-over {
+ background-position:-15px -45px;
+}
+
+.x-tool-gear {
+ background-position:0 -90px;
+}
+.x-tool-gear-over {
+ background-position:-15px -90px;
+}
+
+.x-tool-pin {
+ background-position:0 -135px;
+}
+.x-tool-pin-over {
+ background-position:-15px -135px;
+}
+.x-tool-unpin {
+ background-position:0 -150px;
+}
+.x-tool-unpin-over {
+ background-position:-15px -150px;
+}
+.x-tool-right {
+ background-position:0 -165px;
+}
+.x-tool-right-over {
+ background-position:-15px -165px;
+}
+.x-tool-left {
+ background-position:0 -180px;
+}
+.x-tool-left-over {
+ background-position:-15px -180px;
+}
+.x-tool-up {
+ background-position:0 -210px;
+}
+.x-tool-up-over {
+ background-position:-15px -210px;
+}
+.x-tool-down {
+ background-position:0 -195px;
+}
+.x-tool-down-over {
+ background-position:-15px -195px;
+}
+.x-tool-refresh {
+ background-position:0 -225px;
+}
+.x-tool-refresh-over {
+ background-position:-15px -225px;
+}
+
+.x-tool-minus {
+ background-position:0 -255px;
+}
+.x-tool-minus-over {
+ background-position:-15px -255px;
+}
+.x-tool-plus {
+ background-position:0 -240px;
+}
+.x-tool-plus-over {
+ background-position:-15px -240px;
+}
+
+.x-tool-search {
+ background-position:0 -270px;
+}
+.x-tool-search-over {
+ background-position:-15px -270px;
+}
+.x-tool-save {
+ background-position:0 -285px;
+}
+.x-tool-save-over {
+ background-position:-15px -285px;
+}
+.x-tool-help {
+ background-position:0 -300px;
+}
+.x-tool-help-over {
+ background-position:-15px -300px;
+}
+
+/* Ghosting */
+.x-panel-ghost {
+ background:#cbddf3;
+ z-index:12000;
+ overflow:hidden;
+ position:absolute;
+ left:0;top:0;
+ opacity:.65;
+ -moz-opacity:.65;
+ filter:alpha(opacity=65);
+}
+
+.x-panel-ghost ul {
+ margin:0;
+ padding:0;
+ overflow:hidden;
+ font-size:0;
+ line-height:0;
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ display:block;
+}
+
+.x-panel-ghost * {
+ cursor:move !important;
+}
+
+.x-panel-dd-spacer {
+ border:2px dashed #99bbe8;
+}
+/* Buttons */
+
+.x-panel-btns-ct {
+ padding:5px;
+}
+
+.x-panel-btns-ct .x-btn{
+ float:right;
+ clear:none;
+}
+.x-panel-btns-ct .x-panel-btns td {
+ border:0;
+ padding:0;
+}
+.x-panel-btns-ct .x-panel-btns-right table{
+ float:right;
+ clear:none;
+}
+.x-panel-btns-ct .x-panel-btns-left table{
+ float:left;
+ clear:none;
+}
+.x-panel-btns-ct .x-panel-btns-center{
+ text-align:center; /*ie*/
+}
+.x-panel-btns-ct .x-panel-btns-center table{
+ margin:0 auto; /*everyone else*/
+}
+.x-panel-btns-ct table td.x-panel-btn-td{
+ padding:3px;
+}
+
+.x-panel-btns-ct .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+.x-panel-btns-ct .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+.x-panel-btns-ct .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-panel-btns-ct .x-btn-over .x-btn-left{
+ background-position:0 -63px;
+}
+.x-panel-btns-ct .x-btn-over .x-btn-right{
+ background-position:0 -84px;
+}
+.x-panel-btns-ct .x-btn-over .x-btn-center{
+ background-position:0 -105px;
+}
+
+.x-panel-btns-ct .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+.x-panel-btns-ct .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+.x-panel-btns-ct .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/progress.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/progress.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/progress.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,43 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-progress-wrap {
+ border:1px solid #6593cf;
+ overflow:hidden;
+}
+.x-progress-inner {
+ height:18px;
+ background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;
+ position:relative;
+}
+.x-progress-bar {
+ height:18px;
+ float:left;
+ width:0;
+ background:#9CBFEE url( ../images/default/progress/progress-bg.gif ) repeat-x left center;
+ border-top:1px solid #D1E4FD;
+ border-bottom:1px solid #7FA9E4;
+ border-right:1px solid #7FA9E4;
+}
+.x-progress-text {
+ font-size:11px;
+ font-weight:bold;
+ color:#fff;
+ padding:1px 5px;
+ overflow:hidden;
+ position:absolute;
+ left:0;
+ text-align:center;
+}
+.x-progress-text-back {
+ color:#396095;
+ line-height:16px;
+}
+.ext-ie .x-progress-text-back {
+ line-height:15px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/qtips.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/qtips.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/qtips.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,125 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-tip{
+ position: absolute;
+ top: 0;
+ left:0;
+ visibility: hidden;
+ z-index: 20000;
+ border:0 none;
+}
+.x-tip .x-tip-close{
+ background-image: url(../images/default/qtip/close.gif);
+ height: 15px;
+ float:right;
+ width: 15px;
+ margin:0 0 2px 2px;
+ cursor:pointer;
+ display:none;
+}
+.x-tip .x-tip-tc {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -62px;
+ padding-top:3px;
+ overflow:hidden;
+ zoom:1;
+}
+.x-tip .x-tip-tl {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0;
+ padding-left:6px;
+ overflow:hidden;
+ zoom:1;
+}
+.x-tip .x-tip-tr {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0;
+ padding-right:6px;
+ overflow:hidden;
+ zoom:1;
+}
+.x-tip .x-tip-bc {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;
+ height:3px;
+ overflow:hidden;
+}
+.x-tip .x-tip-bl {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;
+ padding-left:6px;
+ zoom:1;
+}
+.x-tip .x-tip-br {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -59px;
+ padding-right:6px;
+ zoom:1;
+}
+.x-tip .x-tip-mc {
+ border:0 none;
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+}
+.x-tip .x-tip-ml {
+ background: #fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;
+ padding-left:6px;
+ zoom:1;
+}
+.x-tip .x-tip-mr {
+ background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -124px;
+ padding-right:6px;
+ zoom:1;
+}
+.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc {
+ font-size:0;
+ line-height:0;
+}
+.x-tip .x-tip-header-text {
+ font: bold 11px tahoma,arial,helvetica,sans-serif;
+ padding:0;
+ margin:0 0 2px 0;
+ color:#444;
+}
+.x-tip .x-tip-body {
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ margin:0 !important;
+ line-height:14px;
+ color:#444;
+ padding:0;
+}
+
+
+.x-form-invalid-tip {
+}
+
+.x-form-invalid-tip .x-tip-top {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-top-left {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-top-right {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-ft {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-ft-left {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-ft-right {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-bd-left {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-bd-right {
+ background-image: url(../images/default/form/error-tip-corners.gif);
+}
+.x-form-invalid-tip .x-tip-bd .x-tip-bd-inner {
+ padding-left:24px;
+ background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px;
+}
+.x-form-invalid-tip .x-tip-bd-inner {
+ padding:2px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset-min.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset-min.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset-min.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,9 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/reset.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,9 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/resizable.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/resizable.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/resizable.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,143 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-resizable-handle {
+ position:absolute;
+ z-index:100;
+ /* ie needs these */
+ font-size:1px;
+ line-height:6px;
+ overflow:hidden;
+ background:white;
+ filter:alpha(opacity=0);
+ opacity:0;
+ zoom:1;
+}
+.x-resizable-handle-east{
+ width:6px;
+ cursor:e-resize;
+ right:0;
+ top:0;
+ height:100%;
+}
+.ext-ie .x-resizable-handle-east {
+ margin-right:-1px; /*IE rounding error*/
+}
+.x-resizable-handle-south{
+ width:100%;
+ cursor:s-resize;
+ left:0;
+ bottom:0;
+ height:6px;
+}
+.ext-ie .x-resizable-handle-south {
+ margin-bottom:-1px; /*IE rounding error*/
+}
+.x-resizable-handle-west{
+ width:6px;
+ cursor:w-resize;
+ left:0;
+ top:0;
+ height:100%;
+}
+.x-resizable-handle-north{
+ width:100%;
+ cursor:n-resize;
+ left:0;
+ top:0;
+ height:6px;
+}
+.x-resizable-handle-southeast{
+ width:6px;
+ cursor:se-resize;
+ right:0;
+ bottom:0;
+ height:6px;
+ z-index:101;
+}
+.x-resizable-handle-northwest{
+ width:6px;
+ cursor:nw-resize;
+ left:0;
+ top:0;
+ height:6px;
+ z-index:101;
+}
+.x-resizable-handle-northeast{
+ width:6px;
+ cursor:ne-resize;
+ right:0;
+ top:0;
+ height:6px;
+ z-index:101;
+}
+.x-resizable-handle-southwest{
+ width:6px;
+ cursor:sw-resize;
+ left:0;
+ bottom:0;
+ height:6px;
+ z-index:101;
+}
+.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{
+ filter:alpha(opacity=100);
+ opacity:1;
+}
+.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{
+ background:url(../images/default/sizer/e-handle.gif);
+ background-position: left;
+}
+.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west{
+ background:url(../images/default/sizer/e-handle.gif);
+ background-position: left;
+}
+.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{
+ background:url(../images/default/sizer/s-handle.gif);
+ background-position: top;
+}
+.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{
+ background:url(../images/default/sizer/s-handle.gif);
+ background-position: top;
+}
+.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
+ background:url(../images/default/sizer/se-handle.gif);
+ background-position: top left;
+}
+.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
+ background:url(../images/default/sizer/nw-handle.gif);
+ background-position:bottom right;
+}
+.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
+ background:url(../images/default/sizer/ne-handle.gif);
+ background-position: bottom left;
+}
+.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
+ background:url(../images/default/sizer/sw-handle.gif);
+ background-position: top right;
+}
+.x-resizable-proxy{
+ border: 1px dashed #3b5a82;
+ position:absolute;
+ overflow:hidden;
+ display:none;
+ left:0;top:0;
+ z-index:50000;
+}
+.x-resizable-overlay{
+ width:100%;
+ height:100%;
+ display:none;
+ position:absolute;
+ left:0;
+ top:0;
+ background:white;
+ z-index:200000;
+ -moz-opacity: 0;
+ opacity:0;
+ filter: alpha(opacity=0);
+}
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tabs.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tabs.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tabs.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,341 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-tab-panel {
+ overflow:hidden;
+}
+.x-tab-panel-header, .x-tab-panel-footer {
+ background: #deecfd;
+ border: 1px solid #8db2e3;
+ overflow:hidden;
+ zoom:1;
+}
+
+
+.x-tab-panel-header {
+ border: 1px solid #8db2e3;
+ padding-bottom: 2px;
+}
+
+.x-tab-panel-footer {
+ border: 1px solid #8db2e3;
+ padding-top: 2px;
+}
+
+
+.x-tab-strip-wrap {
+ width:100%;
+ overflow:hidden;
+ position:relative;
+ zoom:1;
+}
+ul.x-tab-strip {
+ display:block;
+ width:5000px;
+ zoom:1;
+}
+
+ul.x-tab-strip-top{
+ padding-top: 1px;
+ background: url(../images/default/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom;
+ border-bottom: 1px solid #8db2e3;
+}
+
+ul.x-tab-strip-bottom{
+ padding-bottom: 1px;
+ background: url(../images/default/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top;
+ border-top: 1px solid #8db2e3;
+ border-bottom: 0 none;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-top {
+ background:transparent !important;
+ padding-top:0 !important;
+}
+.x-tab-panel-header-plain {
+ background:transparent !important;
+ border-width:0 !important;
+ padding-bottom:0 !important;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer {
+ border:1px solid #8db2e3;
+ border-top: 0 none;
+ height:2px;
+ background: #deecfd;
+ font-size:1px;
+ line-height:1px;
+}
+
+.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer {
+ height:3px;
+}
+
+
+ul.x-tab-strip li {
+ float:left;
+ margin-left:2px;
+}
+
+
+ul.x-tab-strip li.x-tab-edge {
+ float:left;
+ margin:0 !important;
+ padding:0 !important;
+ border:0 none !important;
+ font-size:1px !important;
+ line-height:1px !important;
+ overflow:hidden;
+ zoom:1;
+ background:transparent !important;
+ width:1px;
+}
+
+.x-tab-strip a, .x-tab-strip span, .x-tab-strip em {
+ display:block;
+}
+
+.x-tab-strip a {
+ text-decoration:none !important;
+ -moz-outline: none;
+ outline: none;
+ cursor:pointer;
+}
+
+.x-tab-strip-inner {
+ overflow:hidden;
+ text-overflow: ellipsis;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ font:normal 11px tahoma,arial,helvetica;
+ color:#416aa3;
+ white-space: nowrap;
+ cursor:pointer;
+ padding:4px 0;
+}
+.x-tab-strip .x-tab-with-icon .x-tab-right {
+ padding-left:6px;
+}
+.x-tab-strip .x-tab-with-icon span.x-tab-strip-text {
+ padding-left:20px;
+ background-position: 0 3px;
+ background-repeat: no-repeat;
+}
+
+.x-tab-strip-over span.x-tab-strip-text {
+ color:#15428b;
+}
+
+.x-tab-strip-active {
+ cursor:default;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ cursor:default;
+ color:#15428b;
+ font-weight:bold;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ cursor:default;
+ color:#aaaaaa;
+}
+
+.x-tab-panel-body {
+ overflow:hidden;
+}
+.x-tab-panel-bwrap {
+ overflow:hidden;
+}
+.ext-ie .x-tab-strip .x-tab-right {
+ position:relative;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right {
+ margin-bottom:-1px;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text {
+ padding-bottom:5px;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ margin-top:-1px;
+}
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text {
+ padding-top:5px;
+}
+
+
+.x-tab-strip-top .x-tab-right {
+ background: transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;
+ padding-left:10px;
+}
+
+.x-tab-strip-top .x-tab-left {
+ background: transparent url(../images/default/tabs/tabs-sprite.gif) no-repeat right -351px;
+ padding-right:10px;
+}
+
+.x-tab-strip-top .x-tab-strip-inner {
+ background: transparent url(../images/default/tabs/tabs-sprite.gif) repeat-x 0 -201px;
+}
+
+.x-tab-strip-top .x-tab-strip-over .x-tab-right {
+ background-position:0 -101px;
+}
+.x-tab-strip-top .x-tab-strip-over .x-tab-left {
+ background-position:right -401px;
+}
+.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner {
+ background-position:0 -251px;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-right {
+ background-position: 0 0;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-left {
+ background-position: right -301px;
+}
+
+.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner {
+ background-position: 0 -151px;
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;
+}
+.x-tab-strip-bottom .x-tab-left {
+ padding:0 10px;
+}
+.x-tab-strip-bottom .x-tab-right {
+ padding:0;
+}
+.x-tab-strip .x-tab-strip-close {
+ display:none;
+}
+.x-tab-strip-closable {
+ position:relative;
+}
+
+.x-tab-strip-closable .x-tab-left {
+ padding-right:19px;
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image:url(../images/default/tabs/tab-close.gif);
+ opacity:.6;
+ -moz-opacity:.6;
+ background-repeat:no-repeat;
+ display:block;
+ width:11px;height:11px;
+ position:absolute;
+ top:3px;
+ right:3px;
+ cursor:pointer;
+ z-index:2;
+}
+
+.x-tab-strip .x-tab-strip-active a.x-tab-strip-close {
+ opacity:.8;
+ -moz-opacity:.8;
+}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+ background-image:url(../images/default/tabs/tab-close.gif);
+ opacity:1;
+ -moz-opacity:1;
+}
+
+.x-tab-panel-body {
+ border: 1px solid #8db2e3;
+ background:#fff;
+}
+.x-tab-panel-body-top {
+ border-top: 0 none;
+}
+.x-tab-panel-body-bottom {
+ border-bottom: 0 none;
+}
+
+.x-tab-scroller-left {
+ background: transparent url(../images/default/tabs/scroll-left.gif) no-repeat -18px 0;
+ border-bottom: 1px solid #8db2e3;
+ width:18px;
+ position:absolute;
+ left:0;
+ top:0;
+ z-index:10;
+ cursor:pointer;
+}
+.x-tab-scroller-left-over {
+ background-position: 0 0;
+}
+.x-tab-scroller-left-disabled {
+ background-position: -18px 0;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+ cursor:default;
+}
+.x-tab-scroller-right {
+ background: transparent url(../images/default/tabs/scroll-right.gif) no-repeat 0 0;
+ border-bottom: 1px solid #8db2e3;
+ width:18px;
+ position:absolute;
+ right:0;
+ top:0;
+ z-index:10;
+ cursor:pointer;
+}
+.x-tab-scroller-right-over {
+ background-position: -18px 0;
+}
+.x-tab-scroller-right-disabled {
+ background-position: 0 0;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+ cursor:default;
+}
+
+.x-tab-scrolling .x-tab-strip-wrap {
+ margin-left:18px;
+ margin-right:18px;
+}
+
+.x-tab-scrolling {
+ position:relative;
+}
+
+.x-tab-panel-bbar .x-toolbar {
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
+
+.x-tab-panel-tbar .x-toolbar {
+ border:1px solid #99bbe8;
+ border-top:0 none;
+ overflow:hidden;
+ padding:2px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/toolbar.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/toolbar.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/toolbar.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,163 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-toolbar{
+ border-color:#a9bfd3;
+ border-style:solid;
+ border-width:0 0 1px 0;
+ display: block;
+ padding:2px;
+ background:#d0def0 url(../images/default/toolbar/bg.gif) repeat-x top left;
+ position:relative;
+ zoom:1;
+}
+.x-toolbar .x-item-disabled .x-btn-icon {
+ opacity: .35;
+ -moz-opacity: .35;
+ filter: alpha(opacity=35);
+}
+.x-toolbar td {
+ vertical-align:middle;
+}
+.mso .x-toolbar, .x-grid-mso .x-toolbar{
+ border: 0 none;
+ background: url(../images/default/grid/mso-hd.gif);
+}
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
+ white-space: nowrap;
+ font:normal 11px tahoma, arial, helvetica, sans-serif;
+}
+.x-toolbar .x-item-disabled {
+ color:gray;
+ cursor:default;
+ opacity:.6;
+ -moz-opacity:.6;
+ filter:alpha(opacity=60);
+}
+.x-toolbar .x-item-disabled * {
+ color:gray;
+ cursor:default;
+}
+.x-toolbar .x-btn-left{
+ background:none;
+}
+.x-toolbar .x-btn-right{
+ background:none;
+}
+.x-toolbar .x-btn-center{
+ background:none;
+ padding:0 0;
+}
+.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{
+ padding-right:2px;
+}
+.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{
+ padding-right:0;
+}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{
+ padding:0 2px;
+}
+
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button {
+ width:12px;
+ background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;
+}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button {
+ width:12px;
+ background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px;
+}
+.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button {
+ background-position: 0 -47px;
+}
+.x-toolbar .x-btn-over .x-btn-left{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;
+}
+.x-toolbar .x-btn-over .x-btn-right{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;
+}
+.x-toolbar .x-btn-over .x-btn-center{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px;
+}
+
+.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px;
+}
+.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px;
+}
+
+.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{
+ background: url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px;
+}
+
+.x-toolbar .x-btn-with-menu .x-btn-center em{
+ padding-right:8px;
+}
+
+.x-toolbar .ytb-text{
+ padding:2px;
+}
+.x-toolbar .ytb-sep {
+ background-image: url(../images/default/grid/grid-blue-split.gif);
+ background-position: center;
+ background-repeat: no-repeat;
+ display: block;
+ font-size: 1px;
+ height: 16px;
+ width:4px;
+ overflow: hidden;
+ cursor:default;
+ margin: 0 2px 0;
+ border:0;
+}
+.x-toolbar .ytb-spacer {
+ width:2px;
+}
+
+/* Paging Toolbar */
+
+.x-tbar-page-number{
+ width:24px;
+ height:14px;
+}
+.x-tbar-page-first{
+ background-image: url(../images/default/grid/page-first.gif) !important;
+}
+.x-tbar-loading{
+ background-image: url(../images/default/grid/done.gif) !important;
+}
+.x-tbar-page-last{
+ background-image: url(../images/default/grid/page-last.gif) !important;
+}
+.x-tbar-page-next{
+ background-image: url(../images/default/grid/page-next.gif) !important;
+}
+.x-tbar-page-prev{
+ background-image: url(../images/default/grid/page-prev.gif) !important;
+}
+.x-item-disabled .x-tbar-loading{
+ background-image: url(../images/default/grid/loading.gif) !important;
+}
+.x-item-disabled .x-tbar-page-first{
+ background-image: url(../images/default/grid/page-first-disabled.gif) !important;
+}
+.x-item-disabled .x-tbar-page-last{
+ background-image: url(../images/default/grid/page-last-disabled.gif) !important;
+}
+.x-item-disabled .x-tbar-page-next{
+ background-image: url(../images/default/grid/page-next-disabled.gif) !important;
+}
+.x-item-disabled .x-tbar-page-prev{
+ background-image: url(../images/default/grid/page-prev-disabled.gif) !important;
+}
+.x-paging-info {
+ position:absolute;
+ top:5px;
+ right: 8px;
+ color:#444;
+}
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tree.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tree.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/tree.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,209 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-tree .x-panel-body{
+ background-color:#fff;
+}
+.ext-strict .ext-ie .x-tree .x-panel-bwrap{
+ position:relative;
+ overflow:hidden;
+}
+.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{
+ border: 0 none;
+ height: 18px;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ background-repeat: no-repeat;
+}
+.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{
+ border: 0 none;
+ height: 18px;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ width: 16px;
+ background-position:center;
+ background-repeat: no-repeat;
+}
+.ext-ie .x-tree-node-indent img, .ext-ie .x-tree-node-icon, .ext-ie .x-tree-ec-icon {
+ vertical-align:middle !important;
+}
+/* some default icons for leaf/folder */
+.x-tree-node-collapsed .x-tree-node-icon{
+ background-image:url(../images/default/tree/folder.gif);
+}
+.x-tree-node-expanded .x-tree-node-icon{
+ background-image:url(../images/default/tree/folder-open.gif);
+}
+.x-tree-node-leaf .x-tree-node-icon{
+ background-image:url(../images/default/tree/leaf.gif);
+}
+
+/* checkboxes */
+.ext-ie input.x-tree-node-cb {
+ width:15px;
+ height:15px;
+}
+input.x-tree-node-cb {
+ margin-left:1px;
+}
+.ext-ie input.x-tree-node-cb {
+ margin-left:0;
+}
+
+.x-tree-noicon .x-tree-node-icon{
+ width:0; height:0;
+}
+/* loading icon */
+.x-tree-node-loading .x-tree-node-icon{
+ background-image:url(../images/default/tree/loading.gif) !important;
+}
+.x-tree-node-loading a span{
+ font-style: italic;
+ color:#444444;
+}
+.ext-ie .x-tree-node-el input {
+ width:15px;
+ height:15px;
+}
+/* Line styles */
+.x-tree-lines .x-tree-elbow{
+ background-image:url(../images/default/tree/elbow.gif);
+}
+.x-tree-lines .x-tree-elbow-plus{
+ background-image:url(../images/default/tree/elbow-plus.gif);
+}
+.x-tree-lines .x-tree-elbow-minus{
+ background-image:url(../images/default/tree/elbow-minus.gif);
+}
+.x-tree-lines .x-tree-elbow-end{
+ background-image:url(../images/default/tree/elbow-end.gif);
+}
+.x-tree-lines .x-tree-elbow-end-plus{
+ background-image:url(../images/default/tree/elbow-end-plus.gif);
+}
+.x-tree-lines .x-tree-elbow-end-minus{
+ background-image:url(../images/default/tree/elbow-end-minus.gif);
+}
+.x-tree-lines .x-tree-elbow-line{
+ background-image:url(../images/default/tree/elbow-line.gif);
+}
+
+/* No line styles */
+.x-tree-no-lines .x-tree-elbow{
+ background:transparent;
+}
+.x-tree-no-lines .x-tree-elbow-plus{
+ background-image:url(../images/default/tree/elbow-plus-nl.gif);
+}
+.x-tree-no-lines .x-tree-elbow-minus{
+ background-image:url(../images/default/tree/elbow-minus-nl.gif);
+}
+.x-tree-no-lines .x-tree-elbow-end{
+ background:transparent;
+}
+.x-tree-no-lines .x-tree-elbow-end-plus{
+ background-image:url(../images/default/tree/elbow-end-plus-nl.gif);
+}
+.x-tree-no-lines .x-tree-elbow-end-minus{
+ background-image:url(../images/default/tree/elbow-end-minus-nl.gif);
+}
+.x-tree-no-lines .x-tree-elbow-line{
+ background:transparent;
+}
+
+.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{
+ cursor:pointer;
+}
+.ext-ie ul.x-tree-node-ct{
+ font-size:0;
+ line-height:0;
+ zoom:1;
+}
+.x-tree-node{
+ color: black;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+ white-space: nowrap;
+}
+
+.x-tree-node-el {
+ line-height:18px;
+}
+
+.x-tree-node a, .x-dd-drag-ghost a{
+ text-decoration:none;
+ color:black;
+ -khtml-user-select:none;
+ -moz-user-select:none;
+ -kthml-user-focus:normal;
+ -moz-user-focus:normal;
+ -moz-outline: 0 none;
+ outline:0 none;
+}
+.x-tree-node a span, .x-dd-drag-ghost a span{
+ text-decoration:none;
+ color:black;
+ padding:1px 3px 1px 2px;
+}
+.x-tree-node .x-tree-node-disabled a span{
+ color:gray !important;
+}
+.x-tree-node .x-tree-node-disabled .x-tree-node-icon{
+ -moz-opacity: 0.5;
+ opacity:.5;
+ filter: alpha(opacity=50);
+}
+.x-tree-node .x-tree-node-inline-icon{
+ background:transparent;
+}
+.x-tree-node a:hover, .x-dd-drag-ghost a:hover{
+ text-decoration:none;
+}
+.x-tree-node div.x-tree-drag-insert-below{
+ border-bottom:1px dotted #3366cc;
+}
+.x-tree-node div.x-tree-drag-insert-above{
+ border-top:1px dotted #3366cc;
+}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{
+ border-bottom:0 none;
+}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{
+ border-top:0 none;
+}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{
+ border-bottom:2px solid #3366cc;
+}
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{
+ border-top:2px solid #3366cc;
+}
+.x-tree-node .x-tree-drag-append a span{
+ background:#dddddd;
+ border:1px dotted gray;
+}
+.x-tree-node .x-tree-selected a span{
+ background:#3366cc;
+ color:white;
+}
+.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{
+ display:none !important;
+}
+.x-tree-drop-ok-append .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-add.gif);
+}
+.x-tree-drop-ok-above .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-over.gif);
+}
+.x-tree-drop-ok-below .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-under.gif);
+}
+.x-tree-drop-ok-between .x-dd-drop-icon{
+ background-image: url(../images/default/tree/drop-between.gif);
+}
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/window.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/window.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/window.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,210 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-window {
+ zoom:1;
+}
+.x-window .x-resizable-handle {
+ opacity:0;
+ -moz-opacity:0;
+ filter:alpha(opacity=0);
+}
+
+.x-window-proxy {
+ background:#C7DFFC;
+ border:1px solid #99bbe8;
+ z-index:12000;
+ overflow:hidden;
+ position:absolute;
+ left:0;top:0;
+ display:none;
+ opacity:.5;
+ -moz-opacity:.5;
+ filter:alpha(opacity=50);
+}
+
+.x-window-header {
+ overflow:hidden;
+ zoom:1;
+}
+.x-window-bwrap {
+ z-index:1;
+ position:relative;
+ zoom:1;
+}
+.x-window-tl .x-window-header {
+ color:#15428b;
+ font:bold 11px tahoma,arial,verdana,sans-serif;
+ padding:5px 0 4px 0;
+}
+.x-window-header-text {
+ cursor:pointer;
+}
+.x-window-tc {
+ background: transparent url(../images/default/window/top-bottom.png) repeat-x 0 0;
+ overflow:hidden;
+ zoom:1;
+}
+.x-window-tl {
+ background: transparent url(../images/default/window/left-corners.png) no-repeat 0 0;
+ padding-left:6px;
+ zoom:1;
+ z-index:1;
+ position:relative;
+}
+.x-window-tr {
+ background: transparent url(../images/default/window/right-corners.png) no-repeat right 0;
+ padding-right:6px;
+}
+.x-window-bc {
+ background: transparent url(../images/default/window/top-bottom.png) repeat-x 0 bottom;
+ zoom:1;
+}
+.x-window-bc .x-window-footer {
+ padding-bottom:6px;
+ zoom:1;
+ font-size:0;
+ line-height:0;
+}
+.x-window-bl {
+ background: transparent url(../images/default/window/left-corners.png) no-repeat 0 bottom;
+ padding-left:6px;
+ zoom:1;
+}
+.x-window-br {
+ background: transparent url(../images/default/window/right-corners.png) no-repeat right bottom;
+ padding-right:6px;
+ zoom:1;
+}
+.x-window-mc {
+ border:1px solid #99bbe8;
+ padding:0;
+ margin:0;
+ font: normal 11px tahoma,arial,helvetica,sans-serif;
+ background:#dfe8f6;
+}
+
+
+.x-window-ml {
+ background: transparent url(../images/default/window/left-right.png) repeat-y 0 0;
+ padding-left:6px;
+ zoom:1;
+}
+.x-window-mr {
+ background: transparent url(../images/default/window/left-right.png) repeat-y right 0;
+ padding-right:6px;
+ zoom:1;
+}
+.x-panel-nofooter .x-window-bc {
+ height:6px;
+}
+.x-window-body {
+ overflow:hidden;
+}
+.x-window-bwrap {
+ overflow:hidden;
+}
+.x-window-maximized .x-window-bl, .x-window-maximized .x-window-br,
+ .x-window-maximized .x-window-ml, .x-window-maximized .x-window-mr,
+ .x-window-maximized .x-window-tl, .x-window-maximized .x-window-tr {
+ padding:0;
+}
+.x-window-maximized .x-window-footer {
+ padding-bottom:0;
+}
+.x-window-maximized .x-window-tc {
+ padding-left:3px;
+ padding-right:3px;
+ background-color:white;
+}
+.x-window-maximized .x-window-mc {
+ border-left:0 none;
+ border-right:0 none;
+}
+.x-window-tbar .x-toolbar, .x-window-bbar .x-toolbar {
+ border-left:0 none;
+ border-right: 0 none;
+}
+.x-window-bbar .x-toolbar {
+ border-top:1px solid #99bbe8;
+ border-bottom:0 none;
+}
+.x-window-draggable, .x-window-draggable .x-window-header-text {
+ cursor:move;
+}
+.x-window-maximized .x-window-draggable, .x-window-maximized .x-window-draggable .x-window-header-text {
+ cursor:default;
+}
+.x-window-body {
+ background:transparent;
+}
+.x-panel-ghost .x-window-tl {
+ border-bottom:1px solid #99bbe8;
+}
+.x-panel-collapsed .x-window-tl {
+ border-bottom:1px solid #84a0c4;
+}
+.x-window-maximized-ct {
+ overflow:hidden;
+}
+.x-window-maximized .x-resizable-handle {
+ display:none;
+}
+.x-window-sizing-ghost ul {
+ border:0 none !important;
+}
+
+
+.x-dlg-focus{
+ -moz-outline:0 none;
+ outline:0 none;
+ width:0;
+ height:0;
+ overflow:hidden;
+ position:absolute;
+ top:0;
+ left:0;
+}
+.x-dlg-mask{
+ z-index:10000;
+ display:none;
+ position:absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity:.50;
+ filter: alpha(opacity=50);
+ background-color:#CCC;
+}
+
+body.ext-ie6.x-body-masked select {
+ visibility:hidden;
+}
+body.ext-ie6.x-body-masked .x-window select {
+ visibility:visible;
+}
+
+.x-window-plain .x-window-mc {
+ background: #CAD9EC;
+ border-right:1px solid #DFE8F6;
+ border-bottom:1px solid #DFE8F6;
+ border-top:1px solid #a3bae9;
+ border-left:1px solid #a3bae9;
+}
+
+.x-window-plain .x-window-body {
+ border-left:1px solid #DFE8F6;
+ border-top:1px solid #DFE8F6;
+ border-bottom:1px solid #a3bae9;
+ border-right:1px solid #a3bae9;
+ background:transparent !important;
+}
+
+body.x-body-masked .x-window-plain .x-window-mc {
+ background: #C7D6E9;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/xtheme-gray.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/xtheme-gray.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/css/xtheme-gray.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,415 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-panel {
+ border-style: solid;
+ border-color: #d0d0d0;
+}
+.x-panel-header {
+ color:#333;
+ border:1px solid #d0d0d0;
+ background-image:url(../images/gray/panel/white-top-bottom.gif);
+}
+
+.x-panel-body {
+ border-color:#d0d0d0;
+}
+
+.x-panel-bbar .x-toolbar {
+ border-color:#d0d0d0;
+}
+
+.x-panel-tbar .x-toolbar {
+ border-color:#d0d0d0;
+}
+
+.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
+ border-color:#d0d0d0;
+}
+.x-panel-body-noheader, .x-panel-mc .x-panel-body {
+ border-color:#d0d0d0;
+}
+.x-panel-tl .x-panel-header {
+ color:#333;
+}
+.x-panel-tc {
+ background-image:url(../images/gray/panel/top-bottom.gif);
+}
+.x-panel-tl {
+ background-image:url(../images/gray/panel/corners-sprite.gif);
+ border-color:#d0d0d0;
+}
+.x-panel-tr {
+ background-image:url(../images/gray/panel/corners-sprite.gif);
+}
+.x-panel-bc {
+ background-image:url(../images/gray/panel/top-bottom.gif);
+}
+.x-panel-bl {
+ background-image:url(../images/gray/panel/corners-sprite.gif);
+}
+.x-panel-br {
+ background-image:url(../images/gray/panel/corners-sprite.gif);
+}
+.x-panel-mc {
+ background:#f1f1f1;
+}
+.x-panel-mc .x-panel-body {
+ background:transparent;
+ border: 0 none;
+}
+.x-panel-ml {
+ background-image:url(../images/gray/panel/left-right.gif);
+}
+.x-panel-mr {
+ background-image:url(../images/gray/panel/left-right.gif);
+}
+
+/* Tools */
+.x-tool {
+ background-image:url(../images/gray/panel/tool-sprites.gif);
+}
+
+/* Ghosting */
+.x-panel-ghost {
+ background:#e0e0e0;
+}
+
+.x-panel-ghost ul {
+ border-color:#b0b0b0;
+}
+
+.x-grid-panel .x-panel-mc .x-panel-body {
+ border:1px solid #d0d0d0;
+}
+
+/* Buttons */
+
+.x-btn-left{
+ background-image:url(../images/gray/button/btn-sprite.gif);
+}
+.x-btn-right{
+ background-image:url(../images/gray/button/btn-sprite.gif);
+}
+.x-btn-center{
+ background-image:url(../images/gray/button/btn-sprite.gif);
+}
+
+/* Layout classes */
+
+.x-border-layout-ct {
+ background:#f1f2f4;
+}
+
+.x-accordion-hd {
+ background-image:url(../images/gray/panel/light-hd.gif);
+}
+
+.x-layout-collapsed{
+ background-color:#eee;
+ border-color:#e0e0e0;
+}
+.x-layout-collapsed-over{
+ background-color:#fbfbfb;
+}
+
+
+/* qtips */
+.x-tip .x-tip-top {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-left {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-right {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-left {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-right {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-left {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-right {
+ background-image:url(../images/gray/qtip/tip-sprite.gif);
+}
+
+/* Toolbars */
+
+.x-toolbar{
+ border-color:#d0d0d0;
+ background:#f0f4f5 url(../images/gray/toolbar/bg.gif) repeat-x top left;
+}
+.x-toolbar button {
+ color:#444;
+}
+.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button {
+ background-image:url(../images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button {
+ background-image:url(../images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-over .x-btn-left{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-right{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-center{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over button {
+ color:#111;
+}
+.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+
+.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{
+ background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .ytb-sep {
+ background-image: url(../images/default/grid/grid-split.gif);
+}
+
+/* Tabs */
+
+.x-tab-panel-header, .x-tab-panel-footer {
+ background: #EAEAEA;
+ border-color:#d0d0d0;
+}
+
+
+.x-tab-panel-header {
+ border-color:#d0d0d0;
+}
+
+.x-tab-panel-footer {
+ border-color:#d0d0d0;
+}
+
+ul.x-tab-strip-top{
+ background:#dbdbdb url(../images/gray/tabs/tab-strip-bg.gif) repeat-x left top;
+ border-color:#d0d0d0;
+ padding-top: 2px;
+}
+
+ul.x-tab-strip-bottom{
+ background-image:url(../images/gray/tabs/tab-strip-btm-bg.gif);
+ border-color:#d0d0d0;
+}
+
+.x-tab-strip span.x-tab-strip-text {
+ color:#333;
+}
+.x-tab-strip-over span.x-tab-strip-text {
+ color:#111;
+}
+
+.x-tab-strip-active span.x-tab-strip-text {
+ color:#333;
+}
+
+.x-tab-strip-disabled .x-tabs-text {
+ color:#aaaaaa;
+}
+
+.x-tab-strip-top .x-tab-right {
+ background-image:url(../images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-top .x-tab-left {
+ background-image:url(../images/gray/tabs/tabs-sprite.gif);
+}
+.x-tab-strip-top .x-tab-strip-inner {
+ background-image:url(../images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image:url(../images/gray/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image:url(../images/gray/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image:url(../images/gray/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image:url(../images/gray/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image:url(../images/gray/tabs/tab-close.gif);
+}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+ background-image:url(../images/gray/tabs/tab-close.gif);
+}
+
+.x-tab-panel-body {
+ border-color:#d0d0d0;
+ background:#fff;
+}
+.x-tab-panel-bbar .x-toolbar {
+ border-color: #d0d0d0;
+}
+
+.x-tab-panel-tbar .x-toolbar {
+ border-color: #d0d0d0;
+}
+
+.x-tab-panel-header-plain .x-tab-strip-spacer {
+ border-color:#d0d0d0;
+ background: #eaeaea;
+}
+
+.x-tab-scroller-left {
+ background-image: url(../images/gray/tabs/scroll-left.gif);
+ border-color:#aeaeae;
+}
+.x-tab-scroller-right {
+ background-image: url(../images/gray/tabs/scroll-right.gif);
+ border-color:#aeaeae;
+}
+
+/* Window */
+
+.x-window-proxy {
+ background:#e0e0e0;
+ border-color:#b0b0b0;
+}
+
+.x-window-tl .x-window-header {
+ color:#555;
+}
+.x-window-tc {
+ background-image:url(../images/gray/window/top-bottom.png);
+}
+.x-window-tl {
+ background-image:url(../images/gray/window/left-corners.png);
+}
+.x-window-tr {
+ background-image:url(../images/gray/window/right-corners.png);
+}
+.x-window-bc {
+ background-image:url(../images/gray/window/top-bottom.png);
+}
+.x-window-bl {
+ background-image:url(../images/gray/window/left-corners.png);
+}
+.x-window-br {
+ background-image:url(../images/gray/window/right-corners.png);
+}
+.x-window-mc {
+ border:1px solid #d0d0d0;
+ background:#e8e8e8;
+}
+
+.x-window-ml {
+ background-image:url(../images/gray/window/left-right.png);
+}
+.x-window-mr {
+ background-image:url(../images/gray/window/left-right.png);
+}
+.x-panel-ghost .x-window-tl {
+ border-color:#d0d0d0;
+}
+.x-panel-collapsed .x-window-tl {
+ border-color:#d0d0d0;
+}
+
+.x-window-plain .x-window-mc {
+ background: #e8e8e8;
+ border-right:1px solid #eee;
+ border-bottom:1px solid #eee;
+ border-top:1px solid #d0d0d0;
+ border-left:1px solid #d0d0d0;
+}
+
+.x-window-plain .x-window-body {
+ border-left:1px solid #eee;
+ border-top:1px solid #eee;
+ border-bottom:1px solid #d0d0d0;
+ border-right:1px solid #d0d0d0;
+ background:transparent !important;
+}
+
+body.x-body-masked .x-window-mc, body.x-body-masked .x-window-plain .x-window-mc {
+ background-color: #e4e4e4;
+}
+
+
+/* misc */
+.x-html-editor-wrap {
+ border-color:#d0d0d0;
+}
+
+/* Borders go last for specificity */
+.x-panel-noborder .x-panel-body-noborder {
+ border-width:0;
+}
+
+.x-panel-noborder .x-panel-header-noborder {
+ border-width:0;
+ border-bottom:1px solid #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
+ border-width:0;
+ border-bottom:1px solid #d0d0d0;
+}
+
+.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
+ border-width:0;
+ border-top:1px solid #d0d0d0;
+}
+
+.x-window-noborder .x-window-mc {
+ border-width:0;
+}
+.x-window-plain .x-window-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-body-noborder {
+ border-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-header-noborder {
+ border-top-width:0;
+ border-left-width:0;
+ border-right-width:0;
+}
+
+.x-tab-panel-noborder .x-tab-panel-footer-noborder {
+ border-bottom-width:0;
+ border-left-width:0;
+ border-right-width:0;
+}
+
+
+.x-tab-panel-bbar-noborder .x-toolbar {
+ border-width:0;
+ border-top:1px solid #d0d0d0;
+}
+
+.x-tab-panel-tbar-noborder .x-toolbar {
+ border-width:0;
+ border-bottom:1px solid #d0d0d0;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/ext-css-patch.xcss
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/ext-css-patch.xcss (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/ext-css-patch.xcss 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,1241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:template xmlns:f='http:/jsf.exadel.com/template'
+xmlns:u='http:/jsf.exadel.com/template/util'
+xmlns="http://www.w3.org/1999/xhtml" >
+<u:selector name=".ext-el-mask-msg">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb-blue.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-mask-loading div">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsmc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-c.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-lr.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsmr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-lr.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xstl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xstc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xstr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsbl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsbc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-shadow .xsbr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".loading-indicator">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-drag-overlay">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name="ul.x-tab-strip-top">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name="ul.x-tab-strip-bottom">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-btm-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-top .x-tab-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-top .x-tab-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-top .x-tab-strip-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-bottom .x-tab-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-right-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-bottom .x-tab-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-left-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-bottom .x-tab-strip-active .x-tab-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-right-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip-bottom .x-tab-strip-active .x-tab-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-left-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip .x-tab-strip-closable a.x-tab-strip-close">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-close.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-close.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-scroller-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-left.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tab-scroller-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-right.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-text,textarea.x-form-field">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/text-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-field-wrap .x-form-trigger">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-field-wrap .x-form-date-trigger">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-field-wrap .x-form-clear-trigger">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-field-wrap .x-form-search-trigger">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid,textarea.x-form-invalid">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/invalid_line.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-msg">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/warning.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/exclamation.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-center">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-menu-arrow-wrap .x-btn-center button">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-arrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-with-menu .x-btn-center em">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-btn-text-icon .x-btn-with-menu .x-btn-center em">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".mso .x-toolbar,.x-grid-mso .x-toolbar">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/mso-hd.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-over .x-btn-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-over .x-btn-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-over .x-btn-center">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-toolbar .ytb-sep">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-split.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tbar-page-first">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tbar-loading">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/done.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tbar-page-last">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tbar-page-next">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tbar-page-prev">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-item-disabled .x-tbar-loading">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-item-disabled .x-tbar-page-first">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first-disabled.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-item-disabled .x-tbar-page-last">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last-disabled.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-item-disabled .x-tbar-page-next">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next-disabled.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-item-disabled .x-tbar-page-prev">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev-disabled.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-row-over">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-over.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-header">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-header-pop-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hd-pop.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name="td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow-over.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".sort-asc .x-grid3-sort-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_asc.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".sort-desc .x-grid3-sort-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_desc.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-split">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-split.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-dd-drag-proxy .x-grid3-hd-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow-over.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".col-move-top">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-top.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".col-move-bottom">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-hrow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-dirty-cell">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/dirty.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-props-grid .x-grid3-td-name .x-grid3-cell-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".xg-hmenu-sort-asc .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-asc.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".xg-hmenu-sort-desc .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-desc.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".xg-hmenu-lock .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".xg-hmenu-unlock .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-hd-btn">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hd-btn.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-body .x-grid3-td-expander">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-row-expander">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-expand-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-body .x-grid3-td-checker">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-row-checker,.x-grid3-hd-checker">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-check-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-body .x-grid3-td-numberer">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-sel-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-check-col">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/unchecked.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid3-check-col-on">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/checked.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-grid-group-hd div">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-expand-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-group-by-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-by.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-cols-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/columns.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-show-groups-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-by.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-dd-drop-nodrop .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-no.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-dd-drop-ok .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-yes.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-dd-drop-ok-add .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-add.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-node-collapsed .x-tree-node-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-node-expanded .x-tree-node-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder-open.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-node-leaf .x-tree-node-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/leaf.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-node-loading .x-tree-node-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/loading.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-plus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-minus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-end">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-end-plus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-end-minus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-lines .x-tree-elbow-line">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-line.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-no-lines .x-tree-elbow-plus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus-nl.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-no-lines .x-tree-elbow-minus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus-nl.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-no-lines .x-tree-elbow-end-plus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus-nl.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-no-lines .x-tree-elbow-end-minus">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus-nl.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-drop-ok-append .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-add.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-drop-ok-above .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-over.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-drop-ok-below .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-under.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tree-drop-ok-between .x-dd-drop-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-between.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-close">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/close.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-tc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-tl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-tr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-bc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-bl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-br">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-ml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tip .x-tip-mr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-top">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-top-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-top-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-ft">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-ft-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-ft-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-bd-left">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-bd-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-form-invalid-tip .x-tip-bd .x-tip-bd-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/exclamation.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-middle,.x-date-left,.x-date-right">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/hd-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-middle .x-btn-with-menu .x-btn-center em">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow-light.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-right a">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/right-btn.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-left a">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/left-btn.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-inner th">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-inner .x-date-selected a">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-bottom">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-mp-btns">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name="td.x-date-mp-sel a">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-date-mp-ybtn a">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprites.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu-item-arrow">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu-parent.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu-item-active">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/item-over.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu-check-item .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/unchecked.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu-item-checked .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/checked.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-menu-item-checked .x-menu-group-item .x-menu-item-icon">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/group-checked.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-tl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-tc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-tr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-ml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-mc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-mr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-bl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-bc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-br">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners-blue.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb-blue.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-blue .x-box-ml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l-blue.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-box-blue .x-box-mr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r-blue.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-combo-list-hd">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-light-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-header">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-top-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-tc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-tl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-tr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-bc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-bl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-br">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-ml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/left-right.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-panel-mr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/left-right.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-tool">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprites.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-tc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-tl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-tr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-bc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-bl">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-br">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-ml">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-mr">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.png" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-html-editor-tb .x-btn-text">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/editor/tb-sprite.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-accordion-hd">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/light-hd.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-h">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-v">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-west .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-left.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-east .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-right.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-north .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-top.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-split-south .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-cmini-west .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-right.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-cmini-east .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-left.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-cmini-north .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-bottom.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-layout-cmini-south .x-layout-mini">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-top.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-progress-inner">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-progress-bar">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/progress/progress-bg.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-dlg .x-msg-box-wait">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-dlg .ext-mb-info">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-info.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-dlg .ext-mb-warning">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-warning.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-dlg .ext-mb-question">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-question.gif" />
+ </u:style>
+</u:selector>
+
+<u:selector name=".x-window-dlg .ext-mb-error">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-error.gif" />
+ </u:style>
+</u:selector>
+
+</f:template>
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners-blue.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners-blue.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/corners.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l-blue.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l-blue.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/l.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r-blue.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r-blue.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/r.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb-blue.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb-blue.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/box/tb.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-arrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-arrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/button/btn-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-add.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-add.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-no.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-no.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-yes.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/dd/drop-yes.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/editor/tb-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/editor/tb-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/clear-trigger.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/date-trigger.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/error-tip-corners.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/exclamation.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/exclamation.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/search-trigger.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/text-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/text-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger-tpl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger-tpl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/form/trigger.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/gradient-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/gradient-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/Thumbs.db
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/Thumbs.db
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-left-white.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-left-white.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-right-white.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/arrow-right-white.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-top.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/col-move-top.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/columns.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/columns.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/dirty.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/dirty.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/done.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/done.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-no.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-no.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-yes.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/drop-yes.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/footer-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/footer-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-split.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-blue-split.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-hrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-hrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-loading.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-loading.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-split.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-split.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-vista-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid-vista-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hd-btn.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hd-btn.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow-over.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow-over.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-hrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-sel-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/grid3-special-col-sel-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-by.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-by.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-expand-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/group-expand-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hd-pop.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hd-pop.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-asc.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-asc.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-desc.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-desc.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-lock.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/hmenu-unlock.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/invalid_line.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/invalid_line.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/loading.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/mso-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/mso-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/nowait.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/nowait.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first-disabled.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first-disabled.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-first.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last-disabled.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last-disabled.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-last.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next-disabled.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next-disabled.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-next.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev-disabled.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev-disabled.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/page-prev.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/pick-button.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/pick-button.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/refresh.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/refresh.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-check-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-check-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-expand-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-expand-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-over.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-over.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-sel.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/row-sel.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_asc.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_asc.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_desc.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/sort_desc.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/wait.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/grid/wait.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/collapse.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/collapse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/expand.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/expand.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/gradient-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/gradient-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-left.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-left.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-top.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/mini-top.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-collapse.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-collapse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-expand.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/ns-expand.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-light-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/panel-title-light-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stick.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stick.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stuck.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/stuck.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close-on.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close-on.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/layout/tab-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/checked.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/checked.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/group-checked.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/group-checked.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/item-over.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/item-over.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu-parent.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu-parent.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/menu.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/unchecked.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/menu/unchecked.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/corners-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/left-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/left-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/light-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/light-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprite-tpl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprite-tpl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprites.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tool-sprites.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tools-sprites-trans.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/tools-sprites-trans.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/top-bottom.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-corners-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-corners-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-left-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-left-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-top-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/panel/white-top-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/progress/progress-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/progress/progress-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/qtip/tip-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/s.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-c.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-c.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-lr.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow-lr.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shadow.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/blue-loading.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/blue-loading.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/calendar.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/calendar.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/glass-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/hd-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/hd-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/large-loading.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/large-loading.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/left-btn.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/left-btn.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/right-btn.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/right-btn.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/warning.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/shared/warning.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/e-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/ne-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/nw-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/s-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/se-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/square.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/square.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/sizer/sw-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-left.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-left.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroll-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroller-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/scroller-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-inactive-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-btm-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-bg.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-btm-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tab-strip-btm-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tabs/tabs-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow-light.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow-light.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-arrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-over-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/btn-over-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/gray-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/gray-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/toolbar/tb-btn-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-add.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-add.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-between.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-between.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-no.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-no.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-over.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-over.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-under.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-under.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-yes.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/drop-yes.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus-nl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus-nl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-minus.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus-nl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus-nl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end-plus.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-end.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-line.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-line.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus-nl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus-nl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-minus.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus-nl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus-nl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow-plus.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/elbow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder-open.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder-open.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/folder.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/leaf.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/leaf.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/loading.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/loading.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/s.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/tree/s.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-error.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-error.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-info.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-info.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-question.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-question.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-warning.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/icon-warning.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-corners.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/left-right.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/right-corners.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/default/window/top-bottom.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-arrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-arrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/button/btn-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/gradient-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/gradient-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/corners-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/corners-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/left-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/left-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/light-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/light-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprite-tpl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprite-tpl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprites.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tool-sprites.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tools-sprites-trans.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/tools-sprites-trans.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/top-bottom.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-corners-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-corners-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-left-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-left-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-top-bottom.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/panel/white-top-bottom.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/tip-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/qtip/tip-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/s.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/s.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-left.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-left.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroll-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroller-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/scroller-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-btm-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-bg.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-btm-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tab-strip-btm-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tabs-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/tabs/tabs-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow-light.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow-light.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-arrow.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-over-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/btn-over-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/gray-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/gray-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-btn-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/toolbar/tb-btn-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-error.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-error.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-info.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-info.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-question.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-question.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-warning.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/icon-warning.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.pspimage
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-corners.pspimage
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-right.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/left-right.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/right-corners.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/right-corners.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/top-bottom.png
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/gray/window/top-bottom.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-center.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-center.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-left.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-left.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-right.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/bg-right.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/collapse.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/collapse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/dlg-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/dlg-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/e-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/e-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/expand.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/expand.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/hd-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/hd-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/s-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/s-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/se-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/se-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/w-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/basic-dialog/w-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/gradient-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/gradient-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-split.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-split.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-vista-hd.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/grid/grid-vista-hd.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/collapse.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/collapse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/expand.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/expand.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/gradient-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/gradient-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-collapse.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-collapse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-expand.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/ns-expand.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-light-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/panel-title-light-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/stick.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/stick.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close-on.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close-on.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/layout/tab-close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/tip-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/qtip/tip-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/s.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/s.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/e-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/ne-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/nw-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/s-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/se-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle-dark.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle-dark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/sizer/sw-handle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-inactive-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-left-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-left-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-right-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-btm-right-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/tabs/tab-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/gray-bg.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/gray-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/tb-btn-sprite.gif
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/images/vista/toolbar/tb-btn-sprite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/basic-dialog.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/basic-dialog.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/basic-dialog.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,286 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+.x-dlg-proxy {
+ background-image: url(../images/default/gradient-bg.gif);
+ background-color:#c3daf9;
+ border:1px solid #6593cf;
+ z-index:10001;
+ overflow:hidden;
+ position:absolute;
+ left:0;top:0;
+}
+.x-dlg-shadow{
+ background:#aaaaaa;
+ position:absolute;
+ left:0;top:0;
+}
+.x-dlg-focus{
+ -moz-outline:0 none;
+ outline:0 none;
+ width:0;
+ height:0;
+ overflow:hidden;
+ position:absolute;
+ top:0;
+ left:0;
+}
+.x-dlg-mask{
+ z-index:10000;
+ display:none;
+ position:absolute;
+ top:0;
+ left:0;
+ -moz-opacity: 0.5;
+ opacity:.50;
+ filter: alpha(opacity=50);
+ background-color:#CCC;
+}
+body.x-body-masked select {
+ visibility:hidden;
+}
+body.x-body-masked .x-dlg select {
+ visibility:visible;
+}
+.x-dlg{
+ z-index:10001;
+ overflow:hidden;
+ position:absolute;
+ left:300;top:0;
+}
+.x-dlg .x-dlg-hd {
+ background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px;
+ background-color:navy;
+ color:#FFF;
+ font:bold 12px "sans serif", tahoma, verdana, helvetica;
+ overflow:hidden;
+ padding:5px;
+ white-space: nowrap;
+}
+.x-dlg .x-dlg-hd-left {
+ background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px;
+ padding-left:3px;
+ margin:0;
+}
+.x-dlg .x-dlg-hd-right {
+ background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0;
+ padding-right:3px;
+}
+.x-dlg .x-dlg-dlg-body{
+ background:url(../images/default/layout/gradient-bg.gif);
+ border:1px solid #6593cf;
+ border-top:0 none;
+ padding:10px;
+ position:absolute;
+ top:24px;left:0;
+ z-index:1;
+ overflow:hidden;
+}
+.x-dlg-collapsed .x-resizable-handle{
+ display:none;
+}
+.x-dlg .x-dlg-bd{
+ overflow:hidden;
+}
+.x-dlg .x-dlg-ft{
+ overflow:hidden;
+ padding:5px;
+ padding-bottom:0;
+}
+
+.x-dlg .x-tabs-body{
+ background:white;
+ overflow:auto;
+}
+.x-dlg .x-tabs-top .x-tabs-body{
+ border:1px solid #6593cf;
+ border-top:0 none;
+}
+.x-dlg .x-tabs-bottom .x-tabs-body{
+ border:1px solid #6593cf;
+ border-bottom:0 none;
+}
+.x-dlg .x-layout-container .x-tabs-body{
+ border:0 none;
+}
+.x-dlg .inner-tab{
+ margin:5px;
+}
+.x-dlg .x-dlg-ft .x-btn{
+ margin-right:5px;
+ float:right;
+ clear:none;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns td {
+ border:0;
+ padding:0;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns-right table{
+ float:right;
+ clear:none;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns-left table{
+ float:left;
+ clear:none;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns-center{
+ text-align:center; /*ie*/
+}
+.x-dlg .x-dlg-ft .x-dlg-btns-center table{
+ margin:0 auto; /*everyone else*/
+}
+
+
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-left{
+ background-position:0 -147px;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-right{
+ background-position:0 -168px;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-center{
+ background-position:0 -189px;
+}
+
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-center{
+ background-position:0 -126px;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-right{
+ background-position:0 -84px;
+}
+.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-left{
+ background-position:0 -63px;
+}
+
+.x-dlg-draggable .x-dlg-hd{
+ cursor:move;
+}
+.x-dlg-closable .x-dlg-hd{
+ padding-right:22px;
+}
+.x-dlg-toolbox {
+ position:absolute;
+ top:4px;
+ right:4px;
+ z-index:6;
+ width:40px;
+ cursor:default;
+ height:15px;
+ background:transparent;
+}
+.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse {
+ float:right;
+ height:15px;
+ width:15px;
+ margin:0;
+ margin-left:2px;
+ padding:0;
+ line-height:1px;
+ font-size:1px;
+ background-repeat:no-repeat;
+ cursor:pointer;
+ visibility:inherit;
+}
+.x-dlg .x-dlg-close {
+ background-image:url(../images/default/basic-dialog/close.gif);
+}
+.x-dlg .x-dlg-collapse {
+ background-image:url(../images/default/basic-dialog/collapse.gif);
+}
+.x-dlg-collapsed .x-dlg-collapse {
+ background-image:url(../images/default/basic-dialog/expand.gif);
+}
+.x-dlg .x-dlg-close-over, .x-dlg .x-dlg-collapse-over {
+
+}
+.x-dlg div.x-resizable-handle-east{
+ background-image:url(../images/default/basic-dialog/e-handle.gif);
+ border:0;
+ background-position:right;
+ margin-right:0;
+}
+.x-dlg div.x-resizable-handle-south{
+ background-image:url(../images/default/sizer/s-handle-dark.gif);
+ border:0;
+ height:6px;
+}
+.x-dlg div.x-resizable-handle-west{
+ background-image:url(../images/default/basic-dialog/e-handle.gif);
+ border:0;
+ background-position:1px;
+}
+.x-dlg div.x-resizable-handle-north{
+ background-image:url(../images/default/s.gif);
+ border:0;
+}
+.x-dlg div.x-resizable-handle-northeast, .xtheme-gray .x-dlg div.x-resizable-handle-northeast{
+ background-image:url(../images/default/s.gif);
+ border:0;
+}
+.x-dlg div.x-resizable-handle-northwest, .xtheme-gray .x-dlg div.x-resizable-handle-northwest{
+ background-image:url(../images/default/s.gif);
+ border:0;
+}
+.x-dlg div.x-resizable-handle-southeast{
+ background-image:url(../images/default/basic-dialog/se-handle.gif);
+ background-position: bottom right;
+ width:8px;
+ height:8px;
+ border:0;
+}
+.x-dlg div.x-resizable-handle-southwest{
+ background-image:url(../images/default/sizer/sw-handle-dark.gif);
+ background-position: top right;
+ margin-left:1px;
+ margin-bottom:1px;
+ border:0;
+}
+
+#x-msg-box .x-dlg-ft .x-btn{
+ float:none;
+ clear:none;
+ margin:0 3px;
+}
+
+#x-msg-box .x-dlg-bd {
+ padding:5px;
+ overflow:hidden !important;
+ font:normal 13px verdana,tahoma,sans-serif;
+}
+#x-msg-box .ext-mb-input {
+ margin-top:4px;
+ width:95%;
+}
+#x-msg-box .ext-mb-textarea {
+ margin-top:4px;
+ font:normal 13px verdana,tahoma,sans-serif;
+}
+#x-msg-box .ext-mb-progress-wrap {
+ margin-top:4px;
+ border:1px solid #6593cf;
+}
+#x-msg-box .ext-mb-progress {
+ height:18px;
+ background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;
+}
+#x-msg-box .ext-mb-progress-bar {
+ height:18px;
+ overflow:hidden;
+ width:0;
+ background:#8BB8F3;
+ border-top:1px solid #B2D0F7;
+ border-bottom:1px solid #65A1EF;
+ border-right:1px solid #65A1EF;
+}
+
+#x-msg-box .x-msg-box-wait {
+ background: transparent url(../images/default/grid/loading.gif) no-repeat left;
+ display:block;
+ width:300px;
+ padding-left:18px;
+ line-height:18px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/grid.css
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/grid.css (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/legacy/grid.css 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,295 @@
+/*
+ * Ext JS Library 2.0 Beta 1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * licensing(a)extjs.com
+ *
+ * http://extjs.com/license
+ */
+
+/* Grid2 styles */
+.x-grid {
+ position:relative;
+ overflow:hidden;
+ background-color:#fff;
+}
+.x-grid-scroller {
+ overflow:auto;
+}
+.x-grid-viewport, .x-grid-locked{
+ position:absolute;
+ left:0; top: 0;
+ z-index:2;
+ overflow:hidden;
+ visibility:hidden;
+}
+.x-grid-cell-inner, .x-grid-hd-inner{
+ overflow:hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+}
+.x-grid-hd-row td, .x-grid-row td{
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+ line-height:13px;
+ white-space: nowrap;
+ vertical-align: top;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+}
+.x-grid-hd-row td {
+ line-height:14px;
+}
+.x-grid-col {
+ border-right: 1px solid #ebebeb;
+ border-bottom: 1px solid #ebebeb;
+}
+/* Locked styles */
+
+.x-grid-locked .x-grid-body td {
+ background-color: #FBFDFF;
+ border-right: 1px solid #deecfd;
+ border-bottom: 1px solid #deecfd !important;
+}
+.x-grid-locked .x-grid-body td .x-grid-cell-inner {
+ border-top:0 none;
+}
+.x-grid-locked .x-grid-row-alt td{
+ background-color: #F5FAFE;
+}
+
+.x-grid-locked .x-grid-header table{
+ border-right:1px solid transparent;
+}
+.x-grid-locked .x-grid-body table{
+ border-right:1px solid #c3daf9;
+}
+
+.x-grid-locked .x-grid-body td .x-grid-cell-inner {
+
+}
+.x-grid-row {
+ cursor: default;
+}
+.x-grid-row-alt{
+ background-color:#f1f1f1;
+}
+.x-grid-row-over td{
+ background-color:#d9e8fb;
+}
+.x-grid-resize-proxy {
+ width:3px;
+ background-color:#cccccc;
+ cursor: e-resize;
+ cursor: col-resize;
+ position:absolute;
+ top:0;
+ height:100px;
+ overflow:hidden;
+ visibility:hidden;
+ border:0 none;
+ z-index:7;
+}
+.x-grid-focus {
+ position:absolute;
+ top:0;
+ -moz-outline:0 none;
+ outline:0 none;
+ -moz-user-select: normal;
+ -khtml-user-select: normal;
+}
+
+/* header styles */
+.x-grid-header{
+ background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x;
+ overflow:hidden;
+ position:relative;
+ cursor:default;
+ width:100%;
+}
+.x-grid-hd-row{
+ height:22px;
+}
+.x-grid-hd {
+ padding-right:1px;
+}
+.x-grid-hd-over .x-grid-hd-inner {
+ border-bottom: 1px solid #c3daf9;
+}
+.x-grid-hd-over .x-grid-hd-text {
+ background: #fafafa url(../images/default/grid/grid-hrow.gif) repeat-x 0 1px;
+ padding-bottom:1px;
+ border-bottom: 1px solid #b3cae9;
+}
+.x-grid-sort-icon{
+ background-repeat: no-repeat;
+ display: none;
+ height: 4px;
+ width: 13px;
+ margin-left:3px;
+ vertical-align: middle;
+}
+.x-grid-header .sort-asc .x-grid-sort-icon {
+ background-image: url(../images/default/grid/sort_asc.gif);
+ display: inline;
+}
+.x-grid-header .sort-desc .x-grid-sort-icon {
+ background-image: url(../images/default/grid/sort_desc.gif);
+ display: inline;
+}
+
+/* Body Styles */
+.x-grid-body {
+ overflow:hidden;
+ position:relative;
+ width:100%;
+ zoom:1;
+}
+
+.x-grid-cell-text,.x-grid-hd-text {
+ display: block;
+ padding: 3px 5px 3px 5px;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ color:black;
+}
+.x-grid-hd-text {
+ padding-top:4px;
+}
+.x-grid-split {
+ background-image: url(../images/default/grid/grid-split.gif);
+ background-position: center;
+ background-repeat: no-repeat;
+ cursor: e-resize;
+ cursor: col-resize;
+ display: block;
+ font-size: 1px;
+ height: 16px;
+ overflow: hidden;
+ position: absolute;
+ top: 2px;
+ width: 6px;
+ z-index: 3;
+}
+
+.x-grid-hd-text {
+ color:#15428b;
+}
+/* Column Reorder DD */
+.x-dd-drag-proxy .x-grid-hd-inner{
+ background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x;
+ height:22px;
+ width:120px;
+}
+
+.col-move-top, .col-move-bottom{
+ width:9px;
+ height:9px;
+ position:absolute;
+ top:0;
+ line-height:1px;
+ font-size:1px;
+ overflow:hidden;
+ visibility:hidden;
+ z-index:20000;
+}
+.col-move-top{
+ background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top;
+}
+.col-move-bottom{
+ background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top;
+}
+
+/* Selection Styles */
+.x-grid-row-selected td, .x-grid-locked .x-grid-row-selected td{
+ background-color: #316ac5 !important;
+ color: white;
+}
+.x-grid-row-selected span, .x-grid-row-selected b, .x-grid-row-selected div, .x-grid-row-selected strong, .x-grid-row-selected i{
+ color: white !important;
+}
+.x-grid-row-selected .x-grid-cell-text{
+ color: white;
+}
+.x-grid-cell-selected{
+ background-color: #316ac5 !important;
+ color: white;
+}
+.x-grid-cell-selected span{
+ color: white !important;
+}
+.x-grid-cell-selected .x-grid-cell-text{
+ color: white;
+}
+
+.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{
+ background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom !important;
+ vertical-align:middle !important;
+ color:black;
+ padding:0;
+ border-top:1px solid white;
+ border-bottom:none !important;
+ border-right:1px solid #6fa0df !important;
+ text-align:center;
+}
+.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{
+ padding:0 4px;
+ color:#15428b !important;
+ text-align:center;
+}
+
+/* dirty cells */
+.x-grid-dirty-cell {
+ background: transparent url(../images/default/grid/dirty.gif) no-repeat 0 0;
+}
+
+/* Grid Toolbars */
+.x-grid-topbar, .x-grid-bottombar{
+ font:normal 11px arial, tahoma, helvetica, sans-serif;
+ overflow:hidden;
+ display:none;
+ zoom:1;
+ position:relative;
+}
+.x-grid-topbar .x-toolbar{
+ border-right:0 none;
+}
+.x-grid-bottombar .x-toolbar{
+ border-right:0 none;
+ border-bottom:0 none;
+ border-top:1px solid #a9bfd3;
+}
+/* Props Grid Styles */
+.x-props-grid .x-grid-cell-selected .x-grid-cell-text{
+ background-color: #316ac5 !important;
+}
+.x-props-grid .x-grid-col-value .x-grid-cell-text{
+ background-color: white;
+}
+.x-props-grid .x-grid-col-name{
+ background-color: #c3daf9;
+}
+.x-props-grid .x-grid-col-name .x-grid-cell-text{
+ background-color: white;
+ margin-left:10px;
+}
+.x-props-grid .x-grid-split-value {
+ visibility:hidden;
+}
+
+/* header menu */
+.xg-hmenu-sort-asc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-asc.gif);
+}
+.xg-hmenu-sort-desc .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-desc.gif);
+}
+.xg-hmenu-lock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-lock.gif);
+}
+.xg-hmenu-unlock .x-menu-item-icon{
+ background-image: url(../images/default/grid/hmenu-unlock.gif);
+}
+
+/* dd */
+.x-dd-drag-ghost .x-grid-dd-wrap {
+ padding:1px 3px 3px 1px;
+}
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/license.txt
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/license.txt (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/license.txt 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,50 @@
+Ext JS - JavaScript Library
+Copyright (c) 2006-2007, Ext JS, LLC
+All rights reserved.
+licensing(a)extjs.com
+
+http://extjs.com/license
+
+
+License of CSS and Graphics ("Assets")
+------------------------------------------------------------------------------------------
+The Assets distributed with Ext are licensed for use ONLY
+with their associated Ext JavaScript component ("Component"). Use of the Assets in
+any way that does not also include the Component is prohibited without explicit
+permission from Ext JS, LLC. Deriving images and CSS from the Assets in an effort
+to bypass this license is also prohibited.
+
+
+Open Source License
+------------------------------------------------------------------------------------------
+Ext is also licensed under the terms of the Open Source LGPL 3.0 license. You may use
+our open source license if you:
+ * Want to use Ext in an open source project that precludes using non-open source software
+ * Plan to use Ext in a personal, educational or non-profit manner
+ * Are using Ext in a commercial application that is not a software development library
+or toolkit, you will meet LGPL requirements and you do not wish to support the project
+
+http://www.gnu.org/licenses/lgpl.html
+
+
+Commercial License
+------------------------------------------------------------------------------------------
+If you are using this library for commercial purposes, we encourage you to purchase
+a commercial license. Please visit http://extjs.com/license for more details.
+
+
+OEM / Reseller License
+------------------------------------------------------------------------------------------
+If you plan to distribute Ext in a product that will be packaged or sold as a software
+development library, toolkit or plug-in-based framework ("LIBRARY"), we require that you
+work with us to establish a specific license that is appropriate. Use of the open source
+license in a LIBRARY is not permitted without explicit permission from Ext JS, LLC.
+
+For more details, please visit: http://extjs.com/license.
+
+--
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
\ No newline at end of file
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/raw-images/shadow.psd
===================================================================
(Binary files differ)
Property changes on: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/raw-images/shadow.psd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/resources.jsb
===================================================================
--- trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/resources.jsb (rev 0)
+++ trunk/sandbox/impl/src/main/resources/org/richfaces/renderkit/html/scripts/extjs/resources/resources.jsb 2007-11-01 18:32:20 UTC (rev 3694)
@@ -0,0 +1,688 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project path="" name="Ext - Resources" author="Ext JS, LLC" version="2.0 Beta 1" copyright="Ext JS Library $version
Copyright(c) 2006-2007, $author.
licensing@extjs.com

http://extjs.com/license" output="C:\apps\www\deploy\ext-2.0-beta1\resources" source="true" source-dir="$output" minify="False" min-dir="$output\build" doc="False" doc-dir="$output\docs" master="true" master-file="$output\yui-ext.js" zip="true" zip-file="$output\yuo-ext.$version.zip">
+ <directory name="" />
+ <target name="All css" file="$output\css\ext-all.css" debug="True" shorthand="False" shorthand-list="YAHOO.util.Dom.setStyle
YAHOO.util.Dom.getStyle
YAHOO.util.Dom.getRegion
YAHOO.util.Dom.getViewportHeight
YAHOO.util.Dom.getViewportWidth
YAHOO.util.Dom.get
YAHOO.util.Dom.getXY
YAHOO.util.Dom.setXY
YAHOO.util.CustomEvent
YAHOO.util.Event.addListener
YAHOO.util.Event.getEvent
YAHOO.util.Event.getTarget
YAHOO.util.Event.preventDefault
YAHOO.util.Event.stopEvent
YAHOO.util.Event.stopPropagation
YAHOO.util.Event.stopEvent
YAHOO.util.Anim
YAHOO.util.Motion
YAHOO.util.Connect.asyncRequest
YAHOO.util.Connect.setForm
YAHOO.util.Dom
YAHOO.util.Event">
+ <include name="css\reset.css" />
+ <include name="css\core.css" />
+ <include name="css\tabs.css" />
+ <include name="css\form.css" />
+ <include name="css\button.css" />
+ <include name="css\toolbar.css" />
+ <include name="css\resizable.css" />
+ <include name="css\grid.css" />
+ <include name="css\dd.css" />
+ <include name="css\tree.css" />
+ <include name="css\qtips.css" />
+ <include name="css\date-picker.css" />
+ <include name="css\menu.css" />
+ <include name="css\box.css" />
+ <include name="css\debug.css" />
+ <include name="css\combo.css" />
+ <include name="css\panel.css" />
+ <include name="css\window.css" />
+ <include name="css\editor.css" />
+ <include name="css\borders.css" />
+ <include name="css\layout.css" />
+ <include name="css\progress.css" />
+ <include name="css\dialog.css" />
+ </target>
+ <file name="images\basic-dialog\gray\close.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\gray\dlg-bg.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\gray\e-handle.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\gray\hd-sprite.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\gray\s-handle.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\gray\se-handle.gif" path="images\basic-dialog\gray" />
+ <file name="images\basic-dialog\btn-sprite.gif" path="images\basic-dialog" />
+ <file name="images\basic-dialog\close.gif" path="images\basic-dialog" />
+ <file name="images\basic-dialog\e-handle.gif" path="images\basic-dialog" />
+ <file name="images\basic-dialog\hd-sprite.gif" path="images\basic-dialog" />
+ <file name="images\basic-dialog\s-handle.gif" path="images\basic-dialog" />
+ <file name="images\basic-dialog\se-handle.gif" path="images\basic-dialog" />
+ <file name="images\grid\arrow-left-white.gif" path="images\grid" />
+ <file name="images\grid\arrow-right-white.gif" path="images\grid" />
+ <file name="images\grid\done.gif" path="images\grid" />
+ <file name="images\grid\drop-no.gif" path="images\grid" />
+ <file name="images\grid\drop-yes.gif" path="images\grid" />
+ <file name="images\grid\footer-bg.gif" path="images\grid" />
+ <file name="images\grid\grid-blue-hd.gif" path="images\grid" />
+ <file name="images\grid\grid-blue-split.gif" path="images\grid" />
+ <file name="images\grid\grid-loading.gif" path="images\grid" />
+ <file name="images\grid\grid-split.gif" path="images\grid" />
+ <file name="images\grid\grid-vista-hd.gif" path="images\grid" />
+ <file name="images\grid\invalid_line.gif" path="images\grid" />
+ <file name="images\grid\loading.gif" path="images\grid" />
+ <file name="images\grid\mso-hd.gif" path="images\grid" />
+ <file name="images\grid\nowait.gif" path="images\grid" />
+ <file name="images\grid\page-first-disabled.gif" path="images\grid" />
+ <file name="images\grid\page-first.gif" path="images\grid" />
+ <file name="images\grid\page-last-disabled.gif" path="images\grid" />
+ <file name="images\grid\page-last.gif" path="images\grid" />
+ <file name="images\grid\page-next-disabled.gif" path="images\grid" />
+ <file name="images\grid\page-next.gif" path="images\grid" />
+ <file name="images\grid\page-prev-disabled.gif" path="images\grid" />
+ <file name="images\grid\page-prev.gif" path="images\grid" />
+ <file name="images\grid\pick-button.gif" path="images\grid" />
+ <file name="images\grid\refresh.gif" path="images\grid" />
+ <file name="images\grid\sort_asc.gif" path="images\grid" />
+ <file name="images\grid\sort_desc.gif" path="images\grid" />
+ <file name="images\grid\wait.gif" path="images\grid" />
+ <file name="images\layout\gray\collapse.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\expand.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\gradient-bg.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\ns-collapse.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\ns-expand.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\panel-close.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\panel-title-bg.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\panel-title-light-bg.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\screenshot.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\tab-close-on.gif" path="images\layout\gray" />
+ <file name="images\layout\gray\tab-close.gif" path="images\layout\gray" />
+ <file name="images\layout\collapse.gif" path="images\layout" />
+ <file name="images\layout\expand.gif" path="images\layout" />
+ <file name="images\layout\gradient-bg.gif" path="images\layout" />
+ <file name="images\layout\ns-collapse.gif" path="images\layout" />
+ <file name="images\layout\ns-expand.gif" path="images\layout" />
+ <file name="images\layout\panel-close.gif" path="images\layout" />
+ <file name="images\layout\panel-title-bg.gif" path="images\layout" />
+ <file name="images\layout\panel-title-light-bg.gif" path="images\layout" />
+ <file name="images\layout\tab-close-on.gif" path="images\layout" />
+ <file name="images\layout\tab-close.gif" path="images\layout" />
+ <file name="images\sizer\gray\e-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\e-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\ne-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\ne-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\nw-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\nw-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\s-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\s-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\se-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\se-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\sw-handle-dark.gif" path="images\sizer\gray" />
+ <file name="images\sizer\gray\sw-handle.gif" path="images\sizer\gray" />
+ <file name="images\sizer\e-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\e-handle.gif" path="images\sizer" />
+ <file name="images\sizer\ne-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\ne-handle.gif" path="images\sizer" />
+ <file name="images\sizer\nw-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\nw-handle.gif" path="images\sizer" />
+ <file name="images\sizer\s-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\s-handle.gif" path="images\sizer" />
+ <file name="images\sizer\se-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\se-handle.gif" path="images\sizer" />
+ <file name="images\sizer\square.gif" path="images\sizer" />
+ <file name="images\sizer\sw-handle-dark.gif" path="images\sizer" />
+ <file name="images\sizer\sw-handle.gif" path="images\sizer" />
+ <file name="images\tabs\gray\tab-btm-inactive-left-bg.gif" path="images\tabs\gray" />
+ <file name="images\tabs\gray\tab-btm-inactive-right-bg.gif" path="images\tabs\gray" />
+ <file name="images\tabs\gray\tab-btm-left-bg.gif" path="images\tabs\gray" />
+ <file name="images\tabs\gray\tab-btm-right-bg.gif" path="images\tabs\gray" />
+ <file name="images\tabs\gray\tab-sprite.gif" path="images\tabs\gray" />
+ <file name="images\tabs\tab-btm-inactive-left-bg.gif" path="images\tabs" />
+ <file name="images\tabs\tab-btm-inactive-right-bg.gif" path="images\tabs" />
+ <file name="images\tabs\tab-btm-left-bg.gif" path="images\tabs" />
+ <file name="images\tabs\tab-btm-right-bg.gif" path="images\tabs" />
+ <file name="images\tabs\tab-sprite.gif" path="images\tabs" />
+ <file name="images\toolbar\gray-bg.gif" path="images\toolbar" />
+ <file name="images\gradient-bg.gif" path="images" />
+ <file name="images\s.gif" path="images" />
+ <file name="images\toolbar\btn-over-bg.gif" path="images\toolbar" />
+ <file name="images\dd\drop-add.gif" path="images\dd" />
+ <file name="images\dd\drop-no.gif" path="images\dd" />
+ <file name="images\dd\drop-yes.gif" path="images\dd" />
+ <file name="images\qtip\bg.gif" path="images\qtip" />
+ <file name="images\tree\drop-add.gif" path="images\tree" />
+ <file name="images\tree\drop-between.gif" path="images\tree" />
+ <file name="images\tree\drop-no.gif" path="images\tree" />
+ <file name="images\tree\drop-over.gif" path="images\tree" />
+ <file name="images\tree\drop-under.gif" path="images\tree" />
+ <file name="images\tree\drop-yes.gif" path="images\tree" />
+ <file name="images\tree\elbow-end-minus-nl.gif" path="images\tree" />
+ <file name="images\tree\elbow-end-minus.gif" path="images\tree" />
+ <file name="images\tree\elbow-end-plus-nl.gif" path="images\tree" />
+ <file name="images\tree\elbow-end-plus.gif" path="images\tree" />
+ <file name="images\tree\elbow-end.gif" path="images\tree" />
+ <file name="images\tree\elbow-line.gif" path="images\tree" />
+ <file name="images\tree\elbow-minus-nl.gif" path="images\tree" />
+ <file name="images\tree\elbow-minus.gif" path="images\tree" />
+ <file name="images\tree\elbow-plus-nl.gif" path="images\tree" />
+ <file name="images\tree\elbow-plus.gif" path="images\tree" />
+ <file name="images\tree\elbow.gif" path="images\tree" />
+ <file name="images\tree\folder-open.gif" path="images\tree" />
+ <file name="images\tree\folder.gif" path="images\tree" />
+ <file name="images\tree\leaf.gif" path="images\tree" />
+ <file name="images\tree\s.gif" path="images\tree" />
+ <file name="images\qtip\gray\bg.gif" path="images\qtip\gray" />
+ <file name="css\aero.css" path="css" />
+ <file name="images\grid\grid-hrow.gif" path="images\grid" />
+ <file name="images\aero\toolbar\gray-bg.gif" path="images\aero\toolbar" />
+ <file name="css\basic-dialog.css" path="css" />
+ <file name="css\button.css" path="css" />
+ <file name="css\core.css" path="css" />
+ <file name="css\dd.css" path="css" />
+ <file name="css\grid.css" path="css" />
+ <file name="css\inline-editor.css" path="css" />
+ <file name="css\layout.css" path="css" />
+ <file name="css\qtips.css" path="css" />
+ <file name="css\reset-min.css" path="css" />
+ <file name="css\resizable.css" path="css" />
+ <file name="css\tabs.css" path="css" />
+ <file name="css\toolbar.css" path="css" />
+ <file name="css\tree.css" path="css" />
+ <file name="css\ytheme-aero.css" path="css" />
+ <file name="css\ytheme-gray.css" path="css" />
+ <file name="css\ytheme-vista.css" path="css" />
+ <file name="images\aero\basic-dialog\aero-close-over.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\aero-close.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\bg-center.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\bg-left.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\bg-right.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\close.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\dlg-bg.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\e-handle.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\hd-sprite.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\s-handle.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\se-handle.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\w-handle.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\grid\grid-blue-split.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\grid-hrow.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\grid-split.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\grid-vista-hd.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\sort-col-bg.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\sort_asc.gif" path="images\aero\grid" />
+ <file name="images\aero\grid\sort_desc.gif" path="images\aero\grid" />
+ <file name="images\aero\layout\collapse.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\expand.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\gradient-bg.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\ns-collapse.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\ns-expand.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\panel-close.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\panel-title-bg.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\panel-title-light-bg.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\tab-close-on.gif" path="images\aero\layout" />
+ <file name="images\aero\layout\tab-close.gif" path="images\aero\layout" />
+ <file name="images\aero\qtip\bg.gif" path="images\aero\qtip" />
+ <file name="images\aero\sizer\e-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\e-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\ne-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\ne-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\nw-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\nw-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\s-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\s-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\se-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\se-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\sw-handle-dark.gif" path="images\aero\sizer" />
+ <file name="images\aero\sizer\sw-handle.gif" path="images\aero\sizer" />
+ <file name="images\aero\tabs\tab-btm-inactive-left-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-btm-inactive-right-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-btm-left-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-btm-right-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-sprite.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-strip-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-strip-bg.png" path="images\aero\tabs" />
+ <file name="images\aero\tabs\tab-strip-btm-bg.gif" path="images\aero\tabs" />
+ <file name="images\aero\toolbar\bg.gif" path="images\aero\toolbar" />
+ <file name="images\aero\gradient-bg.gif" path="images\aero" />
+ <file name="images\aero\s.gif" path="images\aero" />
+ <file name="images\default\basic-dialog\btn-sprite.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\close.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\e-handle.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\hd-sprite.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\progress.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\progress2.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\s-handle.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\se-handle.gif" path="images\default\basic-dialog" />
+ <file name="images\default\dd\drop-add.gif" path="images\default\dd" />
+ <file name="images\default\dd\drop-no.gif" path="images\default\dd" />
+ <file name="images\default\dd\drop-yes.gif" path="images\default\dd" />
+ <file name="images\default\grid\arrow-left-white.gif" path="images\default\grid" />
+ <file name="images\default\grid\arrow-right-white.gif" path="images\default\grid" />
+ <file name="images\default\grid\done.gif" path="images\default\grid" />
+ <file name="images\default\grid\drop-no.gif" path="images\default\grid" />
+ <file name="images\default\grid\drop-yes.gif" path="images\default\grid" />
+ <file name="images\default\grid\footer-bg.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-blue-hd.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-blue-split.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-hrow.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-loading.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-split.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid-vista-hd.gif" path="images\default\grid" />
+ <file name="images\default\grid\invalid_line.gif" path="images\default\grid" />
+ <file name="images\default\grid\loading.gif" path="images\default\grid" />
+ <file name="images\default\grid\mso-hd.gif" path="images\default\grid" />
+ <file name="images\default\grid\nowait.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-first-disabled.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-first.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-last-disabled.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-last.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-next-disabled.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-next.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-prev-disabled.gif" path="images\default\grid" />
+ <file name="images\default\grid\page-prev.gif" path="images\default\grid" />
+ <file name="images\default\grid\pick-button.gif" path="images\default\grid" />
+ <file name="images\default\grid\refresh.gif" path="images\default\grid" />
+ <file name="images\default\grid\sort_asc.gif" path="images\default\grid" />
+ <file name="images\default\grid\sort_desc.gif" path="images\default\grid" />
+ <file name="images\default\grid\wait.gif" path="images\default\grid" />
+ <file name="images\default\layout\collapse.gif" path="images\default\layout" />
+ <file name="images\default\layout\expand.gif" path="images\default\layout" />
+ <file name="images\default\layout\gradient-bg.gif" path="images\default\layout" />
+ <file name="images\default\layout\ns-collapse.gif" path="images\default\layout" />
+ <file name="images\default\layout\ns-expand.gif" path="images\default\layout" />
+ <file name="images\default\layout\panel-close.gif" path="images\default\layout" />
+ <file name="images\default\layout\panel-title-bg.gif" path="images\default\layout" />
+ <file name="images\default\layout\panel-title-light-bg.gif" path="images\default\layout" />
+ <file name="images\default\layout\tab-close-on.gif" path="images\default\layout" />
+ <file name="images\default\layout\tab-close.gif" path="images\default\layout" />
+ <file name="images\default\qtip\bg.gif" path="images\default\qtip" />
+ <file name="images\default\sizer\e-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\e-handle.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\ne-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\ne-handle.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\nw-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\nw-handle.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\s-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\s-handle.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\se-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\se-handle.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\square.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\sw-handle-dark.gif" path="images\default\sizer" />
+ <file name="images\default\sizer\sw-handle.gif" path="images\default\sizer" />
+ <file name="images\default\tabs\tab-btm-inactive-left-bg.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-btm-inactive-right-bg.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-btm-left-bg.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-btm-right-bg.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-sprite.gif" path="images\default\tabs" />
+ <file name="images\default\toolbar\btn-over-bg.gif" path="images\default\toolbar" />
+ <file name="images\default\toolbar\gray-bg.gif" path="images\default\toolbar" />
+ <file name="images\default\tree\drop-add.gif" path="images\default\tree" />
+ <file name="images\default\tree\drop-between.gif" path="images\default\tree" />
+ <file name="images\default\tree\drop-no.gif" path="images\default\tree" />
+ <file name="images\default\tree\drop-over.gif" path="images\default\tree" />
+ <file name="images\default\tree\drop-under.gif" path="images\default\tree" />
+ <file name="images\default\tree\drop-yes.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-end-minus-nl.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-end-minus.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-end-plus-nl.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-end-plus.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-end.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-line.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-minus-nl.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-minus.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-plus-nl.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow-plus.gif" path="images\default\tree" />
+ <file name="images\default\tree\elbow.gif" path="images\default\tree" />
+ <file name="images\default\tree\folder-open.gif" path="images\default\tree" />
+ <file name="images\default\tree\folder.gif" path="images\default\tree" />
+ <file name="images\default\tree\leaf.gif" path="images\default\tree" />
+ <file name="images\default\tree\loading.gif" path="images\default\tree" />
+ <file name="images\default\tree\s.gif" path="images\default\tree" />
+ <file name="images\default\gradient-bg.gif" path="images\default" />
+ <file name="images\default\s.gif" path="images\default" />
+ <file name="images\gray\basic-dialog\close.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\dlg-bg.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\e-handle.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\hd-sprite.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\s-handle.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\se-handle.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\layout\collapse.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\expand.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\gradient-bg.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\ns-collapse.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\ns-expand.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\panel-close.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\panel-title-bg.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\panel-title-light-bg.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\tab-close-on.gif" path="images\gray\layout" />
+ <file name="images\gray\layout\tab-close.gif" path="images\gray\layout" />
+ <file name="images\gray\qtip\bg.gif" path="images\gray\qtip" />
+ <file name="images\gray\sizer\e-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\e-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\ne-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\ne-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\nw-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\nw-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\s-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\s-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\se-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\se-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\sw-handle-dark.gif" path="images\gray\sizer" />
+ <file name="images\gray\sizer\sw-handle.gif" path="images\gray\sizer" />
+ <file name="images\gray\tabs\tab-btm-inactive-left-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-btm-inactive-right-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-btm-left-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-btm-right-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-sprite.gif" path="images\gray\tabs" />
+ <file name="images\gray\toolbar\gray-bg.gif" path="images\gray\toolbar" />
+ <file name="images\gray\gradient-bg.gif" path="images\gray" />
+ <file name="images\gray\s.gif" path="images\gray" />
+ <file name="images\vista\basic-dialog\bg-center.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\bg-left.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\bg-right.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\close.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\dlg-bg.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\e-handle.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\hd-sprite.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\s-handle.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\se-handle.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\w-handle.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\grid\grid-split.gif" path="images\vista\grid" />
+ <file name="images\vista\grid\grid-vista-hd.gif" path="images\vista\grid" />
+ <file name="images\vista\layout\collapse.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\expand.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\gradient-bg.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\ns-collapse.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\ns-expand.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\panel-close.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\panel-title-bg.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\panel-title-light-bg.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\tab-close-on.gif" path="images\vista\layout" />
+ <file name="images\vista\layout\tab-close.gif" path="images\vista\layout" />
+ <file name="images\vista\qtip\bg.gif" path="images\vista\qtip" />
+ <file name="images\vista\sizer\e-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\e-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\ne-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\ne-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\nw-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\nw-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\s-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\s-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\se-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\se-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\sw-handle-dark.gif" path="images\vista\sizer" />
+ <file name="images\vista\sizer\sw-handle.gif" path="images\vista\sizer" />
+ <file name="images\vista\tabs\tab-btm-inactive-left-bg.gif" path="images\vista\tabs" />
+ <file name="images\vista\tabs\tab-btm-inactive-right-bg.gif" path="images\vista\tabs" />
+ <file name="images\vista\tabs\tab-btm-left-bg.gif" path="images\vista\tabs" />
+ <file name="images\vista\tabs\tab-btm-right-bg.gif" path="images\vista\tabs" />
+ <file name="images\vista\tabs\tab-sprite.gif" path="images\vista\tabs" />
+ <file name="images\vista\toolbar\gray-bg.gif" path="images\vista\toolbar" />
+ <file name="images\vista\gradient-bg.gif" path="images\vista" />
+ <file name="images\vista\s.gif" path="images\vista" />
+ <file name="images\default\grid\col-move.gif" path="images\default\grid" />
+ <file name="images\default\grid\col-move-bottom.gif" path="images\default\grid" />
+ <file name="images\default\grid\col-move-top.gif" path="images\default\grid" />
+ <file name="images\default\basic-dialog\btn-arrow.gif" path="images\default\basic-dialog" />
+ <file name="images\default\toolbar\tb-btn-sprite.gif" path="images\default\toolbar" />
+ <file name="images\aero\toolbar\tb-btn-sprite.gif" path="images\aero\toolbar" />
+ <file name="images\vista\toolbar\tb-btn-sprite.gif" path="images\vista\toolbar" />
+ <file name="images\default\toolbar\btn-arrow.gif" path="images\default\toolbar" />
+ <file name="images\default\menu\menu.gif" path="images\default\menu" />
+ <file name="images\default\menu\unchecked.gif" path="images\default\menu" />
+ <file name="images\default\menu\checked.gif" path="images\default\menu" />
+ <file name="images\default\menu\menu-parent.gif" path="images\default\menu" />
+ <file name="images\default\menu\group-checked.gif" path="images\default\menu" />
+ <file name="css\menu.css" path="css" />
+ <file name="css\grid2.css" path="css" />
+ <file name="css\README.txt" path="css" />
+ <file name="images\default\grid\hmenu-asc.gif" path="images\default\grid" />
+ <file name="images\default\grid\hmenu-desc.gif" path="images\default\grid" />
+ <file name="images\default\grid\hmenu-lock.png" path="images\default\grid" />
+ <file name="images\default\grid\hmenu-unlock.png" path="images\default\grid" />
+ <file name="images\default\grid\Thumbs.db" path="images\default\grid" />
+ <file name="images\default\menu\shadow-lite.png" path="images\default\menu" />
+ <file name="images\default\menu\shadow.png" path="images\default\menu" />
+ <file name="license.txt" path="" />
+ <file name="css\date-picker.css" path="css" />
+ <file name="images\default\basic-dialog\collapse.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\expand.gif" path="images\default\basic-dialog" />
+ <file name="images\aero\basic-dialog\collapse.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\collapse-over.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\expand.gif" path="images\aero\basic-dialog" />
+ <file name="images\aero\basic-dialog\expand-over.gif" path="images\aero\basic-dialog" />
+ <file name="images\gray\basic-dialog\collapse.gif" path="images\gray\basic-dialog" />
+ <file name="images\gray\basic-dialog\expand.gif" path="images\gray\basic-dialog" />
+ <file name="images\vista\basic-dialog\collapse.gif" path="images\vista\basic-dialog" />
+ <file name="images\vista\basic-dialog\expand.gif" path="images\vista\basic-dialog" />
+ <file name="css\.DS_Store" path="css" />
+ <file name="images\default\grid\.DS_Store" path="images\default\grid" />
+ <file name="images\default\toolbar\btn-arrow-light.gif" path="images\default\toolbar" />
+ <file name="images\default\.DS_Store" path="images\default" />
+ <file name="images\default\shared\left-btn.gif" path="images\default\shared" />
+ <file name="images\default\shared\right-btn.gif" path="images\default\shared" />
+ <file name="images\default\shared\calendar.gif" path="images\default\shared" />
+ <file name="css\form.css" path="css" />
+ <file name="images\aero\grid\pspbrwse.jbf" path="images\aero\grid" />
+ <file name="images\default\bg.png" path="images\default" />
+ <file name="images\default\shadow.png" path="images\default" />
+ <file name="images\default\shadow-lr.png" path="images\default" />
+ <file name="images\.DS_Store" path="images" />
+ <file name=".DS_Store" path="" />
+ <file name="yui-ext-resources.jsb" path="" />
+ <file name="resources.jsb" path="" />
+ <file name="css\box.css" path="css" />
+ <file name="images\default\box\.DS_Store" path="images\default\box" />
+ <file name="images\default\box\corners-blue.gif" path="images\default\box" />
+ <file name="images\default\box\corners.gif" path="images\default\box" />
+ <file name="images\default\box\l-blue.gif" path="images\default\box" />
+ <file name="images\default\box\l.gif" path="images\default\box" />
+ <file name="images\default\box\r-blue.gif" path="images\default\box" />
+ <file name="images\default\box\r.gif" path="images\default\box" />
+ <file name="images\default\box\tb-blue.gif" path="images\default\box" />
+ <file name="images\default\box\tb.gif" path="images\default\box" />
+ <file name="raw-images\shadow.psd" path="raw-images" />
+ <file name="images\gray\menu\checked.gif" path="images\gray\menu" />
+ <file name="images\gray\menu\group-checked.gif" path="images\gray\menu" />
+ <file name="images\gray\menu\menu-parent.gif" path="images\gray\menu" />
+ <file name="images\gray\menu\menu.gif" path="images\gray\menu" />
+ <file name="images\gray\menu\unchecked.gif" path="images\gray\menu" />
+ <file name="images\default\layout\stick.gif" path="images\default\layout" />
+ <file name="images\default\layout\stuck.gif" path="images\default\layout" />
+ <file name="images\gray\layout\stick.gif" path="images\gray\layout" />
+ <file name="images\vista\layout\stick.gif" path="images\vista\layout" />
+ <file name="images\gray\grid\grid-hrow.gif" path="images\gray\grid" />
+ <file name="images\default\toolbar\tb-bg.gif" path="images\default\toolbar" />
+ <file name="images\gray\toolbar\tb-btn-sprite.gif" path="images\gray\toolbar" />
+ <file name="css\debug.css" path="css" />
+ <file name="images\default\form\trigger.gif" path="images\default\form" />
+ <file name="css\combo.css" path="css" />
+ <file name="images\default\form\date-trigger.gif" path="images\default\form" />
+ <file name="images\default\shared\warning.gif" path="images\default\shared" />
+ <file name="images\default\grid\dirty.gif" path="images\default\grid" />
+ <file name="images\default\grid\hmenu-lock.gif" path="images\default\grid" />
+ <file name="images\default\grid\hmenu-unlock.gif" path="images\default\grid" />
+ <file name="images\default\form\text-bg.gif" path="images\default\form" />
+ <file name="images\default\form\exclamation.png" path="images\default\form" />
+ <file name="images\default\form\exclamation.gif" path="images\default\form" />
+ <file name="images\default\form\error-tip-bg.gif" path="images\default\form" />
+ <file name="images\default\form\error-tip-corners.gif" path="images\default\form" />
+ <file name="images\default\qtip\tip-sprite.gif" path="images\default\qtip" />
+ <file name="images\default\qtip\close.gif" path="images\default\qtip" />
+ <file name="images\gray\qtip\tip-sprite.gif" path="images\gray\qtip" />
+ <file name="images\vista\qtip\tip-sprite.gif" path="images\vista\qtip" />
+ <file name="images\default\grid\hd-pop.gif" path="images\default\grid" />
+ <file name="css\panel.css" path="css" />
+ <file name="images\default\panel\panel-sprite.gif" path="images\default\panel" />
+ <file name="images\default\panel\panel-blue-sprite.gif" path="images\default\panel" />
+ <file name="images\default\panel\toggle-sprite.gif" path="images\default\panel" />
+ <file name="images\default\panel\close-sprite.gif" path="images\default\panel" />
+ <file name="images\default\window\corners-sprite.gif" path="images\default\window" />
+ <file name="images\default\window\left-right.gif" path="images\default\window" />
+ <file name="images\default\window\top-bottom.gif" path="images\default\window" />
+ <file name="css\window.css" path="css" />
+ <file name="images\default\window\corners-sprite.png" path="images\default\window" />
+ <file name="images\default\window\corners-sprite.psd" path="images\default\window" />
+ <file name="images\default\shadow-c.png" path="images\default" />
+ <file name="css\grid3.css" path="css" />
+ <file name="css\layout2.css" path="css" />
+ <file name="css\tabs2.css" path="css" />
+ <file name="images\default\panel\corners-sprite.gif" path="images\default\panel" />
+ <file name="images\default\panel\left-right.gif" path="images\default\panel" />
+ <file name="images\default\panel\tool-sprite-tpl.gif" path="images\default\panel" />
+ <file name="images\default\panel\tool-sprites.gif" path="images\default\panel" />
+ <file name="images\default\panel\top-bottom.gif" path="images\default\panel" />
+ <file name="images\default\panel\top-bottom.png" path="images\default\panel" />
+ <file name="images\default\panel\white-corners-sprite.gif" path="images\default\panel" />
+ <file name="images\default\panel\white-left-right.gif" path="images\default\panel" />
+ <file name="images\default\panel\white-top-bottom.gif" path="images\default\panel" />
+ <file name="images\default\window\left-corners.png" path="images\default\window" />
+ <file name="images\default\window\left-corners.psd" path="images\default\window" />
+ <file name="images\default\window\left-right.png" path="images\default\window" />
+ <file name="images\default\window\left-right.psd" path="images\default\window" />
+ <file name="images\default\window\right-corners.png" path="images\default\window" />
+ <file name="images\default\window\right-corners.psd" path="images\default\window" />
+ <file name="images\default\window\top-bottom.png" path="images\default\window" />
+ <file name="images\default\window\top-bottom.psd" path="images\default\window" />
+ <file name="images\default\._.DS_Store" path="images\default" />
+ <file name="images\._.DS_Store" path="images" />
+ <file name="._.DS_Store" path="" />
+ <file name="css\editor.css" path="css" />
+ <file name="images\default\editor\tb-sprite.gif" path="images\default\editor" />
+ <file name="css\borders.css" path="css" />
+ <file name="images\default\form\clear-trigger.gif" path="images\default\form" />
+ <file name="images\default\form\search-trigger.gif" path="images\default\form" />
+ <file name="images\default\form\trigger-tpl.gif" path="images\default\form" />
+ <file name="images\default\grid\row-over.gif" path="images\default\grid" />
+ <file name="images\default\grid\row-sel.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-hrow.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-hrow-over.gif" path="images\default\grid" />
+ <file name="images\default\grid\row-collapse.gif" path="images\default\grid" />
+ <file name="images\default\grid\row-expand.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-hd-btn.gif" path="images\default\grid" />
+ <file name="images\aero\menu\menu.gif" path="images\aero\menu" />
+ <file name="images\aero\menu\item-over.gif" path="images\aero\menu" />
+ <file name="images\aero\menu\checked.gif" path="images\aero\menu" />
+ <file name="images\aero\menu\unchecked.gif" path="images\aero\menu" />
+ <file name="images\default\grid\grid3-expander-b-bg.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-expander-c-bg.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-special-col-bg.gif" path="images\default\grid" />
+ <file name="images\default\grid\row-expand-sprite.gif" path="images\default\grid" />
+ <file name="images\default\grid\row-check-sprite.gif" path="images\default\grid" />
+ <file name="images\default\grid\grid3-special-col-sel-bg.gif" path="images\default\grid" />
+ <file name="images\default\shared\glass-bg.gif" path="images\default\shared" />
+ <file name="legacy\grid.css" path="legacy" />
+ <file name="css\xtheme-aero.css" path="css" />
+ <file name="css\xtheme-gray.css" path="css" />
+ <file name="css\xtheme-vista.css" path="css" />
+ <file name="legacy\basic-dialog.css" path="legacy" />
+ <file name="images\default\form\clear-trigger.psd" path="images\default\form" />
+ <file name="images\default\form\date-trigger.psd" path="images\default\form" />
+ <file name="images\default\form\search-trigger.psd" path="images\default\form" />
+ <file name="images\default\form\trigger.psd" path="images\default\form" />
+ <file name="images\aero\tabs\tab-close.gif" path="images\aero\tabs" />
+ <file name="images\default\panel\light-hd.gif" path="images\default\panel" />
+ <file name="images\default\panel\tools-sprites-trans.gif" path="images\default\panel" />
+ <file name="images\aero\tabs\scroller-bg.gif" path="images\aero\tabs" />
+ <file name="images\default\tabs\scroller-bg.gif" path="images\default\tabs" />
+ <file name="images\default\grid\group-expand-sprite.gif" path="images\default\grid" />
+ <file name="images\default\grid\group-by.gif" path="images\default\grid" />
+ <file name="images\default\grid\columns.gif" path="images\default\grid" />
+ <file name="css\dialog.css" path="css" />
+ <file name="images\default\basic-dialog\icon-error.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\icon-info.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\icon-question.gif" path="images\default\basic-dialog" />
+ <file name="images\default\basic-dialog\icon-warning.gif" path="images\default\basic-dialog" />
+ <file name="css\progress.css" path="css" />
+ <file name="images\default\widgets\progress-bg.gif" path="images\default\widgets" />
+ <file name="images\default\progress\progress-bg.gif" path="images\default\progress" />
+ <file name="images\default\layout\mini-bottom.gif" path="images\default\layout" />
+ <file name="images\default\layout\mini-left.gif" path="images\default\layout" />
+ <file name="images\default\layout\mini-right.gif" path="images\default\layout" />
+ <file name="images\default\layout\mini-top.gif" path="images\default\layout" />
+ <file name="images\default\shared\blue-loading.gif" path="images\default\shared" />
+ <file name="images\default\shared\large-loading.gif" path="images\default\shared" />
+ <file name="images\default\menu\item-over.gif" path="images\default\menu" />
+ <file name="images\default\tabs\tab-close.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-strip-bg.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-strip-bg.png" path="images\default\tabs" />
+ <file name="images\default\tabs\tab-strip-btm-bg.gif" path="images\default\tabs" />
+ <file name="images\default\toolbar\bg.gif" path="images\default\toolbar" />
+ <file name="images\default\button\btn-arrow.gif" path="images\default\button" />
+ <file name="images\default\button\btn-sprite.gif" path="images\default\button" />
+ <file name="images\default\shared\hd-sprite.gif" path="images\default\shared" />
+ <file name="images\default\window\icon-error.gif" path="images\default\window" />
+ <file name="images\default\window\icon-info.gif" path="images\default\window" />
+ <file name="images\default\window\icon-question.gif" path="images\default\window" />
+ <file name="images\default\window\icon-warning.gif" path="images\default\window" />
+ <file name="images\gray\panel\corners-sprite.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\left-right.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\light-hd.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\tool-sprite-tpl.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\tool-sprites.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\tools-sprites-trans.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\top-bottom.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\top-bottom.png" path="images\gray\panel" />
+ <file name="images\gray\panel\white-corners-sprite.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\white-left-right.gif" path="images\gray\panel" />
+ <file name="images\gray\panel\white-top-bottom.gif" path="images\gray\panel" />
+ <file name="images\gray\qtip\close.gif" path="images\gray\qtip" />
+ <file name="images\gray\toolbar\bg.gif" path="images\gray\toolbar" />
+ <file name="images\gray\toolbar\btn-arrow-light.gif" path="images\gray\toolbar" />
+ <file name="images\gray\toolbar\btn-arrow.gif" path="images\gray\toolbar" />
+ <file name="images\gray\toolbar\btn-over-bg.gif" path="images\gray\toolbar" />
+ <file name="images\gray\toolbar\tb-bg.gif" path="images\gray\toolbar" />
+ <file name="images\gray\tabs\scroller-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-close.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-strip-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-strip-bg.png" path="images\gray\tabs" />
+ <file name="images\gray\tabs\tab-strip-btm-bg.gif" path="images\gray\tabs" />
+ <file name="images\gray\window\icon-error.gif" path="images\gray\window" />
+ <file name="images\gray\window\icon-info.gif" path="images\gray\window" />
+ <file name="images\gray\window\icon-question.gif" path="images\gray\window" />
+ <file name="images\gray\window\icon-warning.gif" path="images\gray\window" />
+ <file name="images\gray\window\left-corners.png" path="images\gray\window" />
+ <file name="images\gray\window\left-corners.psd" path="images\gray\window" />
+ <file name="images\gray\window\left-right.png" path="images\gray\window" />
+ <file name="images\gray\window\left-right.psd" path="images\gray\window" />
+ <file name="images\gray\window\right-corners.png" path="images\gray\window" />
+ <file name="images\gray\window\right-corners.psd" path="images\gray\window" />
+ <file name="images\gray\window\top-bottom.png" path="images\gray\window" />
+ <file name="images\gray\window\top-bottom.psd" path="images\gray\window" />
+ <file name="images\gray\button\btn-arrow.gif" path="images\gray\button" />
+ <file name="images\gray\button\btn-sprite.gif" path="images\gray\button" />
+ <file name="css\xtheme-gray-blue.css" path="css" />
+ <file name="images\gray\window\left-corners.pspimage" path="images\gray\window" />
+ <file name="images\gray\window\right-corners.pspimage" path="images\gray\window" />
+ <file name="images\default\tabs\tabs-sprite.gif" path="images\default\tabs" />
+ <file name="images\gray\tabs\tabs-sprite.gif" path="images\gray\tabs" />
+ <file name="css\xtheme-dark.css" path="css" />
+ <file name="images\dark\button\btn-arrow.gif" path="images\dark\button" />
+ <file name="images\dark\button\btn-sprite.gif" path="images\dark\button" />
+ <file name="images\dark\panel\corners-sprite.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\left-right.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\light-hd.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\tool-sprite-tpl.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\tool-sprites.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\tools-sprites-trans.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\top-bottom.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\top-bottom.png" path="images\dark\panel" />
+ <file name="images\dark\panel\white-corners-sprite.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\white-left-right.gif" path="images\dark\panel" />
+ <file name="images\dark\panel\white-top-bottom.gif" path="images\dark\panel" />
+ <file name="images\dark\qtip\bg.gif" path="images\dark\qtip" />
+ <file name="images\dark\qtip\close.gif" path="images\dark\qtip" />
+ <file name="images\dark\qtip\tip-sprite.gif" path="images\dark\qtip" />
+ <file name="images\dark\tabs\scroller-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-btm-inactive-left-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-btm-inactive-right-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-btm-left-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-btm-right-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-close.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-strip-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-strip-bg.png" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tab-strip-btm-bg.gif" path="images\dark\tabs" />
+ <file name="images\dark\tabs\tabs-sprite.gif" path="images\dark\tabs" />
+ <file name="images\dark\toolbar\bg.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\btn-arrow-light.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\btn-arrow.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\btn-over-bg.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\gray-bg.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\tb-bg.gif" path="images\dark\toolbar" />
+ <file name="images\dark\toolbar\tb-btn-sprite.gif" path="images\dark\toolbar" />
+ <file name="images\dark\window\icon-error.gif" path="images\dark\window" />
+ <file name="images\dark\window\icon-info.gif" path="images\dark\window" />
+ <file name="images\dark\window\icon-question.gif" path="images\dark\window" />
+ <file name="images\dark\window\icon-warning.gif" path="images\dark\window" />
+ <file name="images\dark\window\left-corners.png" path="images\dark\window" />
+ <file name="images\dark\window\left-corners.pspimage" path="images\dark\window" />
+ <file name="images\dark\window\left-right.png" path="images\dark\window" />
+ <file name="images\dark\window\right-corners.png" path="images\dark\window" />
+ <file name="images\dark\window\top-bottom.png" path="images\dark\window" />
+ <file name="images\dark\gradient-bg.gif" path="images\dark" />
+ <file name="images\dark\s.gif" path="images\dark" />
+ <file name="images\default\tabs\scroll-left.gif" path="images\default\tabs" />
+ <file name="images\default\tabs\scroll-right.gif" path="images\default\tabs" />
+ <file name="css\reset.css" path="css" />
+ <file name="images\gray\tabs\scroll-left.gif" path="images\gray\tabs" />
+ <file name="images\gray\tabs\scroll-right.gif" path="images\gray\tabs" />
+</project>
\ No newline at end of file
17 years, 2 months