[kune-commits] r813 - in trunk: script
src/main/java/org/ourproject/kune/app
src/main/java/org/ourproject/kune/app/public
src/main/java/org/ourproject/kune/app/public/css
src/main/java/org/ourproject/kune/chat/client
src/main/java/org/ourproject/kune/chat/client/actions
src/main/java/org/ourproject/kune/docs/client
src/main/java/org/ourproject/kune/docs/client/actions
src/main/java/org/ourproject/kune/docs/client/ctx/admin
src/main/java/org/ourproject/kune/docs/client/ui
src/main/java/org/ourproject/kune/platf/client/app
src/main/java/org/ourproject/kune/platf/client/services
src/main/java/org/ourproject/kune/platf/client/state
src/main/java/org/ourproject/kune/workspace/client
src/main/java/org/ourproject/kune/workspace/client/actions
src/main/java/org/ourproject/kune/workspace/client/presence/ui
src/main/java/org/ourproject/kune/workspace/client/sitebar
src/main/java/org/ourproject/kune/workspace/client/sitebar/bar
src/main/java/org/ourproject/kune/workspace/client/sitebar/login
src/main/java/org/ourproject/kune/workspace/client/sitebar/msg
src/main/java/org/ourproject/kune/workspace/client/socialnet
src/main/java/org/ourproject/kune/workspace/client/socialnet/ui
src/main/java/org/ourproject/kune/workspace/client/tags
src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign
src/test/java/org/ourproject/kune/platf/client/state
src/test/java/org/ourproject/kune/sitebar/client/ui
vjrj
vjrj at ourproject.org
Wed Jul 23 06:12:39 CEST 2008
Author: vjrj
Date: 2008-07-23 06:11:58 +0200 (Wed, 23 Jul 2008)
New Revision: 813
Added:
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java
Removed:
trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java
trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java
trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java
trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java
Modified:
trunk/script/css-compact-and-tidy.css
trunk/script/deploy_gwt.sh
trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java
trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java
trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java
trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java
trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java
Log:
Workspace refactorization
Modified: trunk/script/css-compact-and-tidy.css
===================================================================
--- trunk/script/css-compact-and-tidy.css 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/script/css-compact-and-tidy.css 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,10 +1,11 @@
#!/bin/bash
+#!/bin/bash
ORIG=src/main/java/org/ourproject/kune/app/public/
CATTMPFILE=`mktemp -t css.1.XXX` || exit 1
CSSTMPFILE=`mktemp -t css.2.XXX` || exit 1
DEST=src/main/java/org/ourproject/kune/app/public/css/all.css
DEST2=src/main/java/org/ourproject/kune/app/public/css/richtext.css
-CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css'
+CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css css/kune-new.css'
CSS2='css/reset.css css/fonts-min.css css/base-min.css css/rte.css'
function concat {
@@ -16,13 +17,19 @@
}
function tidy {
-# Dependency csstidy (apt-get install csstidy)
-csstidy $CATTMPFILE \
- --template=highest \
- --optimise_shorthands=2 \
- --preserve_css=true \
- --silent=true \
- $CSSTMPFILE
+ls `which csstidy | cut -d " " -f 1` 2> /dev/null
+if [[ $? -eq 0 ]]
+then
+ csstidy $CATTMPFILE \
+ --template=highest \
+ --optimise_shorthands=2 \
+ --preserve_css=true \
+ --silent=true \
+ $CSSTMPFILE
+else
+ echo Waring: Dependency csstidy, in debian: apt-get install csstidy
+ cp $CATTMPFILE $CSSTMPFILE
+fi
cat $CSSTMPFILE | sed 's/\.\.\/images/\.\.\/js\/ext\/resources\/images/g' > $1
}
Modified: trunk/script/deploy_gwt.sh
===================================================================
--- trunk/script/deploy_gwt.sh 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/script/deploy_gwt.sh 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,9 @@
#!/bin/bash
find target/kune-0.0.4/org.ourproject.kune.app.Kune/ -name .DS_Store -exec rm {} \;
-#script/css-compact-and-tidy.css
+script/css-compact-and-tidy.css
script/css-update.sh
+cp target/kune-0.0.4/org.ourproject.kune.app.Kune/js/ext/ext-all-debug.js target/kune-0.0.4/org.ourproject.kune.app.Kune/js/ext/ext-all.js
unison -silent -batch -auto -ui text target/kune-0.0.4/org.ourproject.kune.app.Kune src/main/webapp/gwt/org.ourproject.kune.app.Kune
+
Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-07-23 04:11:58 UTC (rev 813)
@@ -3,34 +3,21 @@
<inherits name='com.google.gwt.user.User' />
<inherits name="org.cafesip.gwtcomp.GWTComponents" />
+ <inherits name="com.calclab.suco.Suco" />
+ <inherits name='org.ourproject.kune.platf.Kune-Platform' />
+ <inherits name='org.ourproject.kune.docs.Kune-Docs' />
+ <inherits name='org.ourproject.kune.chat.Kune-Chat' />
+
<!-- gwt-ext -->
<inherits name='com.gwtext.GwtExt' />
<script src="js/ext/adapter/ext/ext-base.js" />
<script src="js/ext/ext-all.js" />
<!-- kune css -->
- <!-- when build a unique css with csstidy use all.css -->
- <!-- <stylesheet src="css/all.css" /> -->
-
- <stylesheet src="css/reset.css" />
- <stylesheet src="css/fonts-min.css" />
- <stylesheet src="js/ext/resources/css/ext-all.css" />
- <stylesheet src="js/ext/resources/css/xtheme-gray.css" />
- <stylesheet src="css/workspace.css" />
- <stylesheet src="css/chat.css" />
- <stylesheet src="css/docs.css" />
- <stylesheet src="css/kune.css" />
- <stylesheet src="css/kune-new.css" />
+ <stylesheet src="css/all.css" />
- <inherits name="com.calclab.suco.Suco" />
-
- <inherits name='org.ourproject.kune.platf.Kune-Platform' />
- <inherits name='org.ourproject.kune.docs.Kune-Docs' />
- <inherits name='org.ourproject.kune.chat.Kune-Chat' />
-
<inherits name="com.allen_sauer.gwt.log.gwt-log" />
-
<extend-property name="log_level" values="DEBUG" />
<set-property name="log_level" value="DEBUG" />
<set-property name="log_DivLogger" value="DISABLED" />
@@ -44,9 +31,8 @@
<!-- Specify the app entry point class. -->
<entry-point class='org.ourproject.kune.app.client.KuneEntryPoint' />
- <!-- <script src="js/ext/ext-custom.js" /> -->
-
<!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
- <!-- <set-property name="user.agent" value="gecko" /> -->
+ <!-- <set-property name="user.agent" value="gecko" /> -->
+
</module>
Modified: trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/Kune.html 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/Kune.html 2008-07-23 04:11:58 UTC (rev 813)
@@ -14,7 +14,6 @@
<link rel="stylesheet" type="text/css" href="css/workspace.css">
<link rel="stylesheet" type="text/css" href="css/chat.css">
<link rel="stylesheet" type="text/css" href="css/docs.css">
-<link rel="stylesheet" type="text/css" href="css/kune.css">
-->
<link rel="shortcut icon" href="images/favicon.ico" />
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-07-23 04:11:58 UTC (rev 813)
@@ -3,25 +3,2131 @@
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.3.1
-*/body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}/*
+*/
+body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input, textarea, select{font-family:inherit;font-size:inherit;font-weight:inherit;}
+
+/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.3.1
-*/body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}/*
- * Ext JS Library 2.0.2
- * Copyright(c) 2006-2008, Ext JS, LLC.
- * licensing at 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:400;}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:.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(../js/ext/resources/images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}.ext-el-mask-msg div{padding: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);}.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url(../js/ext/resources/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(../js/ext/resources/images/default/shadow-c.png);}.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}.x-shadow .xsml{background:transparent url(../js/ext/resources/images/default/shadow-lr.png) repeat-y 0 0;}.x-shadow .xsmr{background:transparent url(../js/ext/resources/images/default/shadow-lr.png) repeat-y -6px 0;}.x-shadow .xstl{background:transparent url(../js/ext/resources/images/default/shadow.png) no-repeat 0 0;}.x-shadow .xstc{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -30px;}.x-shadow .xstr{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -18px;}.x-shadow .xsbl{background:transparent url(../js/ext/resources/images/default/shadow.png) no-repeat 0 -12px;}.x-shadow .xsbc{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -36px;}.x-shadow .xsbr{background:transparent url(../js/ext/resources/images/default/shadow.png) repeat-x 0 -6px;}.loading-indicator{font-size:11px;background-image:url(../js/ext/resources/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(../js/ext/resources/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:.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(../js/ext/resources/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(../js/ext/resources/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:700;}.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(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}.x-tab-strip-top .x-tab-left{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}.x-tab-strip-bottom .x-tab-left{background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-border-layout-ct .x-tab-panel{background:#FFF;}.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(../js/ext/resources/images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}textarea.x-form-field{padding:2px 3px;}.x-form-text{height:22px;line-height:18px;vertical-align:middle;}.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}.ext-ie textarea.x-form-field{margin:-1px 0;}.ext-strict .x-form-text{height:18px;}.ext-safari .x-form-text{height:20px;padding:0 3px;}.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}textarea{resize:none;}.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(../js/ext/resources/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:21px;}.x-form-field-wrap .x-form-date-trigger{background-image:url(../js/ext/resources/images/default/form/date-trigger.gif);cursor:pointer;}.x-form-field-wrap .x-form-clear-trigger{background-image:url(../js/ext/resources/images/default/form/clear-trigger.gif);cursor:pointer;}.x-form-field-wrap .x-form-search-trigger{background-image:url(../js/ext/resources/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(../js/ext/resources/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:0;white-space:0;white-space:0;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(../js/ext/resources/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-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(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 0 2px;}.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}.ext-ie .x-fieldset legend{margin-bottom:10px;}.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}.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!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;}.x-fieldset-noborder{border:0 none transparent;}.x-fieldset-noborder legend{margin-left:-3px;}.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}.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-fieldset{overflow:hidden;}.x-fieldset-bwrap{overflow:hidden;zoom:1;}.x-fieldset-body{overflow:hidden;}.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:400;}.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(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 0;}.x-btn-right{width:3px;height:21px;background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}.x-btn-pressed .x-btn-left{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -63px;}.x-btn-pressed .x-btn-right{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -84px;}.x-btn-pressed .x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -126px;}.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px;display:block;padding:2px;background:#d0def0 url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}.x-toolbar .x-btn-over .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}.x-toolbar .x-btn-over .x-btn-center{background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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;border:0;}.x-toolbar .ytb-spacer{width:2px;}.x-tbar-page-number{width:24px;height:14px;}.x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first.gif)!important;}.x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/done.gif)!important;}.x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last.gif)!important;}.x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next.gif)!important;}.x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev.gif)!important;}.x-item-disabled .x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/loading.gif)!important;}.x-item-disabled .x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first-disabled.gif)!important;}.x-item-disabled .x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last-disabled.gif)!important;}.x-item-disabled .x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next-disabled.gif)!important;}.x-item-disabled .x-tbar-page-prev{background-image:url(../js/ext/resources/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:#FFF;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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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:#FFF;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-grid-row-loading{background:#fff url(../js/ext/resources/images/default/shared/loading-balls.gif) no-repeat center center;}.x-grid-page{overflow:hidden;}.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}.x-grid3-row-alt{background-color:#fafafa;}.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../js/ext/resources/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(../js/ext/resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;padding:1px 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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/sort_asc.gif);display:inline;}.sort-desc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_desc.gif);display:inline;}.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}.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;-moz-user-select:none;-khtml-user-select:none;color:#000;}.x-grid3-split{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/col-move-top.gif) no-repeat left top;}.col-move-bottom{background:transparent url(../js/ext/resources/images/default/grid/col-move-bottom.gif) no-repeat left top;}.x-grid3-row-selected{background:#DFE8F6!important;border:1px dotted #a3bae9;}.x-grid3-cell-selected{background-color:#B8CFEE!important;color:#000;}.x-grid3-cell-selected span{color:#000!important;}.x-grid3-cell-selected .x-grid3-cell-text{color:#000;}.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../js/ext/resources/images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:#000;padding:0;border-top:1px solid #FFF;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(../js/ext/resources/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(../js/ext/resources/images/default/grid/grid3-special-col-bg.gif) repeat-y -16px!important;padding-left:12px;color:#000!important;}.x-props-grid .x-grid3-body .x-grid3-td-name{padding:1px;padding-right:0;background:#FFF!important;border:0 none;border-right:1px solid #eee;}.xg-hmenu-sort-asc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-asc.gif);}.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-desc.gif);}.xg-hmenu-lock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-lock.gif);}.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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!important;}.x-grid3-check-col{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/group-by.gif);}.x-cols-icon{background-image:url(../js/ext/resources/images/default/grid/columns.gif);}.x-show-groups-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}.x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}.x-dd-drag-ghost{color:#000;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:.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:#FFF;white-space:nowrap;}.x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:.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(../js/ext/resources/images/default/dd/drop-no.gif);}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-yes.gif);}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../js/ext/resources/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-expanded .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder-open.gif);}.x-tree-node-leaf .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/leaf.gif);}.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder.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(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow.gif);}.x-tree-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus.gif);}.x-tree-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus.gif);}.x-tree-lines .x-tree-elbow-end{background-image:url(../js/ext/resources/images/default/tree/elbow-end.gif);}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus.gif);}.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus.gif);}.x-tree-lines .x-tree-elbow-line{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow-end-plus-nl.gif);}.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus-nl.gif);}.x-tree-no-lines .x-tree-elbow-line{background:transparent;}.x-tree-arrows .x-tree-elbow{background:transparent;}.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-end{background:transparent;}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}.x-tree-arrows .x-tree-elbow-line{background:transparent;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}.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:#000;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}.x-tree-node-el{line-height:18px;cursor:pointer;}.x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:#000;-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:#000;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:.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-node-over{background-color:#eee;}.x-tree-node .x-tree-selected{background-color:#d9e8fb;}.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(../js/ext/resources/images/default/tree/drop-add.gif);}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-over.gif);}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-under.gif);}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-between.gif);}.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(../js/ext/resources/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(../js/ext/resources/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:.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(../js/ext/resources/images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}.x-date-left a{background-image:url(../js/ext/resources/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(../js/ext/resources/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:#000;text-align:right;zoom:1;}.x-date-inner .x-date-active{cursor:pointer;color:#000;}.x-date-inner .x-date-selected a{background:#dfecfb url(../js/ext/resources/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 #8B0000;padding:1px 4px;}.x-date-inner .x-date-selected span{font-weight:700;}.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(../js/ext/resources/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:#000;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:#FFF;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:#FFF;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}.x-date-mp-btns{background:#dfecfb url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}.x-tip .x-tip-close{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}.x-tip .x-tip-bl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}.x-tip .x-tip-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}.x-tip .x-tip-mr{background:transparent url(../js/ext/resources/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;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-tip .x-tip-body .loading-indicator{margin:0;}.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}.x-form-invalid-tip .x-tip-tc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}.x-form-invalid-tip .x-tip-tl{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-tr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-bc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}.x-form-invalid-tip .x-tip-bl{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}.x-form-invalid-tip .x-tip-br{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat right -6px;}.x-form-invalid-tip .x-tip-ml{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-mr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}.x-form-invalid-tip .x-tip-body{padding:2px;}.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 2px 2px;}.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../js/ext/resources/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(../js/ext/resources/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;overflow:hidden;}.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(../js/ext/resources/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(../js/ext/resources/images/default/menu/unchecked.gif) no-repeat center;}.x-menu-item-checked .x-menu-item-icon{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 0;zoom:1;}.x-box-tc{height:8px;background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}.x-box-tr{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -8px;}.x-box-ml{background:transparent url(../js/ext/resources/images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}.x-box-mc{background:#eee url(../js/ext/resources/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:700;margin:0 0 4px;zoom:1;}.x-box-mr{background:transparent url(../js/ext/resources/images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}.x-box-bl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}.x-box-bc{background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}.x-box-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/box/l-blue.gif);}.x-box-blue .x-box-mr{background-image:url(../js/ext/resources/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:#FFF;position:relative;zoom:1;overflow-x:hidden;}.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../js/ext/resources/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(../js/ext/resources/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:#FFF;position:relative;}.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;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(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}.x-panel-tl{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}.x-panel-bc{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-panel-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}.x-panel-mr{background:transparent url(../js/ext/resources/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(../js/ext/resources/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-tool-print{background-position:0 -315px;}.x-tool-print-over{background-position:-15px -315px;}.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;}.x-window-header-text{cursor:pointer;}.x-window-tc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}.x-window-tl{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}.x-window-bc{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}.x-window-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}.x-window-mr{background:transparent url(../js/ext/resources/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:#FFF;}.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:.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:#FFF;}.x-html-editor-tb .x-btn-text{background:transparent url(../js/ext/resources/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:400;background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/s.gif);background-position:left;}.x-layout-split-v{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/layout/mini-left.gif);}.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/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;}.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}.x-progress-inner{height:18px;background:#e0e8f3 url(../js/ext/resources/images/default/qtip/bg.gif) repeat-x;position:relative;}.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url(../js/ext/resources/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:700;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(../js/ext/resources/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(../js/ext/resources/images/default/window/icon-info.gif) no-repeat top left;}.x-window-dlg .ext-mb-warning{background:transparent url(../js/ext/resources/images/default/window/icon-warning.gif) no-repeat top left;}.x-window-dlg .ext-mb-question{background:transparent url(../js/ext/resources/images/default/window/icon-question.gif) no-repeat top left;}.x-window-dlg .ext-mb-error{background:transparent url(../js/ext/resources/images/default/window/icon-error.gif) no-repeat top left;}/*
- * Ext JS Library 2.0.2
- * Copyright(c) 2006-2008, Ext JS, LLC.
- * licensing at 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(../js/ext/resources/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(../js/ext/resources/images/gray/panel/top-bottom.gif);}.x-panel-tl{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);border-color:#d0d0d0;}.x-panel-tr{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);}.x-panel-bc{background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);}.x-panel-bl{background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);}.x-panel-br{background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/panel/left-right.gif);}.x-panel-mr{background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);}/* Tools */.x-tool{background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/button/btn-sprite.gif);}.x-btn-right{background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);}.x-btn-center{background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);}/* Layout classes */.x-border-layout-ct{background:#f0f0f0;}.x-accordion-hd{background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-top-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-top-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-ft-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-bd-left{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}.x-tip .x-tip-bd-right{background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);}/* Toolbars */.x-toolbar{border-color:#d0d0d0;background:#f0f4f5 url(../js/ext/resources/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(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);}.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button{background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);}.x-toolbar .x-btn-over .x-btn-left{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-over .x-btn-right{background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .x-btn-over .x-btn-center{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);}.x-toolbar .ytb-sep{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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:#AAA;}.x-tab-strip-top .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-top .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-top .x-tab-strip-inner{background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);}.x-tab-strip-bottom .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif);}.x-tab-strip-bottom .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-right{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-right-bg.gif);}.x-tab-strip-bottom .x-tab-strip-active .x-tab-left{background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-left-bg.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close{background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);}.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/tabs/scroll-left.gif);border-color:#aeaeae;}.x-tab-scroller-right{background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/window/top-bottom.png);}.x-window-tl{background-image:url(../js/ext/resources/images/gray/window/left-corners.png);}.x-window-tr{background-image:url(../js/ext/resources/images/gray/window/right-corners.png);}.x-window-bc{background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);}.x-window-bl{background-image:url(../js/ext/resources/images/gray/window/left-corners.png);}.x-window-br{background-image:url(../js/ext/resources/images/gray/window/right-corners.png);}.x-window-mc{border:1px solid #d0d0d0;background:#e8e8e8;}.x-window-ml{background-image:url(../js/ext/resources/images/gray/window/left-right.png);}.x-window-mr{background-image:url(../js/ext/resources/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;}.kunebody{background-color:#FFF;color:#000;font-family:arial, sans;margin:5px;}#kuneinitialcurtain{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#FFF;z-index:9999;}/* Global styles */.gwt-HorizontalSplitPanel .hsplitter{cursor:e-resize;width:6px;}.gwt-DialogBox{border:8px solid #C3D9FF;border:2px outset;background-color:#FFF;}.gwt-DialogBox .Caption{background-color:#C3D9FF;font-size:85%;font-weight:700;padding:3px;margin:2px;cursor:default;}.gwt-MenuBar{background-color:#F2F2F2;border:1px solid #999;vertical-align:middle;padding:5px 0;}.gwt-MenuBar .gwt-MenuItem{cursor:pointer;padding:1px 10px;white-space:nowrap;}.gwt-MenuBar .gwt-MenuItem img{vertical-align:middle;margin-right:3px;}.gwt-MenuBar .gwt-MenuItem{background-color:#F2F2F2;}.gwt-MenuBar .gwt-MenuItem-selected{background-color:#FFB958;}.kune-MenuBar .gwt-MenuItem{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;cursor:hand;white-space:nowrap;padding:0 10px;}.kune-MenuBar .gwt-MenuItem-selected{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#963;}.kune-expandHoriz{width:100%;}.kune-expandVert{height:100%;}.kune-floatleft{float:left;}.kune-floatright{float:right;}/* Deprecated */.kune-Default-Form{margin:10px;}.kune-valignmiddle{vertical-align:middle;}fieldset{border:1px solid #B5B8C8;/* margin-bottom:10px; */padding:10px 10px 5px;}legend{color:#15428B;font-size:85%;font-size-adjust:none;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;}.gwt-RadioButton input{margin:0 3px;vertical-align:middle;}.gwt-RadioButton label{margin:0 3px;vertical-align:middle;}.kune-pointer{cursor:pointer;}.kuneLabelPre{white-space:pre!important;}/* Buttons */.kune-CustomPushButton-space{margin-top:3px;margin-bottom:3px;}.kune-CustomPushButton{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;white-space:nowrap;padding:0 12px;}.kune-CustomPushButton-up{color:#161616;}.kune-CustomPushButton-down{color:#000;}.kune-CustomPushButton-up-hovering{color:#161616;background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;}.kune-CustomPushButton-down-hovering{color:#000;}.kune-CustomPushButton-up-disabled{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#E0E0E0;cursor:normal;}.kune-CustomPushButton-down-disabled{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#E0E0E0;cursor:normal;}.kune-Button-Large-lrSpace{margin-left:12px;margin-right:12px;}.kune-Button-Large-rSpace{margin-right:12px;}.kune-Button-Large-lSpace{margin-left:12px;}.kune-Button-Large-tbSpace{margin-top:12px;margin-bottom:12px;}.kune-Button-Small-lrSpace{margin-left:10px;margin-right:10px;}.kune-Button-Small-rSpace{margin-right:10px;}.kune-Button-Small-lSpace{margin-left:10px;}.kune-Button-Small-tbSpace{margin-top:10px;margin-bottom:10px;}.kune-Button-Mini-lSpace{margin-left:8px;}.kune-Button-Mini-lrSpace{margin-left:8px;margin-right:8px;}.kune-Button-Mini-rSpace{margin-right:8px;}.kune-Button-Mini-tbSpace{margin-top:8px;margin-bottom:8px;}.kune-IconHyperlink{}.kune-IconHyperlink a:link{/* text-decoration: underline; */color:green;}.kune-IconHyperlink a:hover{text-decoration:underline;}.kune-IconHyperlink a:visited{color:olive;}.kune-IconHyperlink img{margin-right:4px;vertical-align:middle;}.kune-IconLabel{}.kune-IconLabel img{margin-right:4px;vertical-align:middle;}.kune-link{text-decoration:underline;color:green;cursor:pointer;}/* DropDowns */.kune-DropDownOuter{background-color:green;}.kune-DropDownInner{margin:0 3px 1px;background:green;background-color:#FFF;padding:3px;}.kune-DropDownLabel{color:#FFF;cursor:pointer;}.kune-DropDownLabel .gwt-Label{margin:0 5px 0 0;width:100%;}.kune-DropDownLabel img{margin:0 3px 0 1px;}.kune-IconLabel{color:green;}.kune-IconLabel img{margin-right:4px;vertical-align:middle;}/* Used in multi chat panel status change */.x-menu-item img{margin-right:4px;vertical-align:middle;}/* Margins */.kune-Margin-40-trbl{margin:40px;}.kune-Margin-40-lr{margin-left:40px;margin-right:40px;}.kune-Margin-40-tl{margin-top:40px;margin-left:40px;}.kune-Margin-40-tb{margin-top:40px;margin-bottom:40px;}.kune-Margin-40-t{margin-top:40px;}.kune-Margin-40-r{margin-right:40px;}.kune-Margin-40-l{margin-left:40px;}.kune-Margin-20-trbl{margin:20px;}.kune-Margin-20-lr{margin-left:20px;margin-right:20px;}.kune-Margin-20-tl{margin-top:20px;margin-left:20px;}.kune-Margin-20-tb{margin-top:20px;margin-bottom:20px;}.kune-Margin-20-t{margin-top:20px;}.kune-Margin-20-r{margin-right:20px;}.kune-Margin-20-l{margin-left:20px;}.kune-Margin-Large-trbl{margin:10px;}.kune-Margin-Large-lr{margin-left:10px;margin-right:10px;}.kune-Margin-Large-tl{margin-top:10px;margin-left:10px;}.kune-Margin-Large-tb{margin-top:10px;margin-bottom:: 10px;}.kune-Margin-Large-t{margin-top:10px;}.kune-Margin-Large-r{margin-right:10px;}.kune-Margin-Large-l{margin-left:10px;}.kune-Margin-Medium-trbl{margin:5px;}.kune-Margin-Medium-lr{margin-left:5px;margin-right:5px;}.kune-Margin-Medium-tl{margin-top:5px;margin-left:5px;}.kune-Margin-Medium-tb{margin-top:5px;margin-bottom:5px;}.kune-Margin-Medium-t{margin-top:5px;}.kune-Margin-Medium-r{margin-right:5px;}.kune-Margin-Medium-b{margin-bottom:5px;}.kune-Margin-Medium-l{margin-left:5px;}.kune-Margin-Small-trbl{margin:3px;}.kune-Margin-Small-lr{margin-left:3px;margin-right:3px;}.kune-Margin-Small-tl{margin-top:3px;margin-left:3px;}.kune-Margin-Small-tb{margin-top:3px;margin-bottom:3px;}.kune-Margin-Small-t{margin-top:3px;}.kune-Margin-Mini-trbl{margin:1px;}.kune-Margin-Mini-lr{margin-left:1px;margin-right:1px;}.kune-Margin-Mini-tl{margin-top:1px;margin-left:1px;}.kune-Margin-Mini-tb{margin-top:1px;margin-bottom:1px;}.kune-Margin-Mini-t{margin-top:1px;}.kune-Margin-Mini-r{margin-right:1px;}.kune-Margin-Mini-l{margin-left:1px;}/* Fonts
-see: http://developer.yahoo.com/yui/fonts/ */.kune-ft10px{font-size:77%;}.kune-ft11px{font-size:85%;}.kune-ft12px{font-size:93%;}.kune-ft13px{font-size:100%;}.kune-ft14px{font-size:108%;}.kune-ft15px{font-size:116%;}.kune-ft16px{font-size:123.099998%;}.kune-ft17px{font-size:131%;}.kune-ft18px{font-size:138.5%;}.kune-ft19px{font-size:146.5%;}.kune-ft20px{font-size:153.899994%;}.kune-ft21px{font-size:161.600006%;}.kune-ft22px{font-size:167%;}.kune-ft23px{font-size:174%;}.kune-ft24px{font-size:182%;}.kune-ft25px{font-size:189%;}.kune-ft26px{font-size:197px %;}/* Sitebar */#kuneprogresspanel{position:absolute;top:2px;left:2px;z-index:30000;}.kune-Progress{background:#E5FF80;border:1px solid #E5FF80;white-space:nowrap;height:16px;padding:0 3px;}.kune-SiteBarPanel .kune-IconHyperlink{white-space:nowrap;}.kune-SiteBarPanel .kune-IconHyperlink a:link{cursor:pointer;text-decoration:underline;color:#B3B3B3;}.kune-SiteBarPanel .kune-IconHyperlink a:hover{text-decoration:underline;}.kune-SiteBarPanel .kune-IconHyperlink a:visited{color:#B3B3B3;}.kune-SiteBarPanel{margin-right:10px;height:16px;}.kune-SiteBarPanel .gwt-TextBox{border:1px solid #E4A374;margin:0 15px 0 3px;padding-left:3px;color:#B3B3B3;}.kune-SiteBarPanel .gwt-Hyperlink a{white-space:nowrap;color:#B3B3B3;text-decoration:underline;cursor:pointer;}.kune-SiteBarPanel .gwt-PushButton{cursor:pointer;}.kune-SiteBarPanel-Separator{color:#E4A374;margin:0 5px;}.kune-SiteBarPanel-SpaceSeparator{width:10px;}.kune-SiteBarPanel-LabelLink{white-space:nowrap;color:#B3B3B3;margin-left:3px;cursor:pointer;text-decoration:underline;}.kune-SiteMessagePanel{color:#250;position:absolute;z-index:10000;vertical-align:middle;}.kune-SiteMessagePanel .gwt-HTML{margin:15px 5px 15px 2px;}.kune-SiteMessagePanel .gwt-Image{margin:5px;}.kune-SiteMessagePanel-error{background-color:#FFB380;border:1px solid #F06;}.kune-SiteMessagePanel-veryimp{background-color:#FFD4AA;border:1px solid #F59;}.kune-SiteMessagePanel-imp{background-color:#FFE6D5;border:1px solid #DE87AA;}.kune-SiteMessagePanel-info{background-color:#E5FF80;border:1px solid #87DE87;}/* Workspace styles */.kune-WorkspacePanel{width:100%;background-color:#FFF;}.kune-WokspacePanel .Tab{}.kune-WorkspacePanel .GeneralHP{}.kune-WorkspacePanel .ContextPanel{width:100%;border-right:3px solid #DD8A3D;}.kune-EntityTextLogo{border:2px solid #F2F2F2;height:60px;margin-bottom:4px;overflow:hidden;width:468px;}.kune-EntityTextLogo .gwt-Label{color:#A40;font-size:167%;font-weight:700;margin:5px;height:27px;}.kune-EntityTextLogo .gwt-Hyperlink a{color:#CCC;font-size:85%;margin:5px;text-decoration:underline;white-space:nowrap;background-color:#FFF;}.kune-GroupSummaryPanel{margin:5px 0 0 5px;width:100%;}.kune-GroupToolsBar{width:150px;}.kune-GroupToolsBar-itemSelected{margin-bottom:5px;}.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a{color:#FFF;padding:0 9px;text-decoration:none;}.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a:hover{text-decoration:none;}.kune-GroupToolsBar-itemNotSelected{margin-bottom:5px;}.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a{color:green;padding:0 9px;text-decoration:none;}.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a:hover{text-decoration:none;}/* Content titles */.kune-ContentTitleBar{border-left:2px solid #DD8A3D;width:100%;height:25px;vertical-align:middle;}.kune-ContentTitleBar .gwt-Label{width:100%;}.kune-ContentTitleBar-l{float:left;}.kune-ContentTitleBar-r{float:right;}.kune-ContentSubTitleBar{vertical-align:middle;font-weight:700;width:100%;height:23px;}.kune-ContentSubTitleBar .gwt-Label{width:100%;white-space:nowrap;}.kune-ContentSubTitleBar-l{float:left;}.kune-ContentSubTitleBar-r{float:right;}.kune-ContentToolBarPanel{background-color:#F2F2F2;padding:2px;height:24px;vertical-align:middle;}.kune-ContentBottomBar{vertical-align:middle;height:24px;}.kune-ContentBottomBar .gwt-Image{margin-left:5px;cursor:pointer;float:left;}.kune-ContentBottomBar .gwt-Label a{}.kune-LicensePanel-licensetext{cursor:pointer;margin-left:5px;text-decoration:underline;}/* Main Content & Context */.kune-WorkspacePanel-Content{background-color:#FCFCFC;width:100%;height:100%;}.kune-WorkspacePanel-Content .main-content{margin:7px 5px 5px 10px;}.kune-WorkspacePanel-Context{background-color:#CFA;width:100%;height:100%;}.kune-NavigationBar{width:100%;}.kune-NavigationBar .topBar{background-color:#ececec;background:#ececec;border-bottom:1px solid #e3dbdb;vertical-align:middle;}.kune-NavigationBar .topBar .gwt-PushButton{margin:1px 3px 1px 0;}.kune-NavigationBar .topBar .gwt-Label{vertical-align:middle;}.kune-NavigationBar .kune-topBar-iconBar{margin:2px 0 2px 5px;}.kune-NavigationBar .kune-ContextItemsPanel-LabelLink{/* text-decoration: underline; */color:green;cursor:pointer;margin-left:3px;}/*
+*/
+body {font:13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:99%;}
+
+
+/*
+ * Ext JS Library 2.0.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing at 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(../js/ext/resources/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);}
+.ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}
+.x-mask-loading div{padding:5px 10px 5px 25px;background:#fbfbfb url( '../js/ext/resources/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( ../js/ext/resources/images/default/shadow-c.png );}
+.x-shadow .xst,.x-shadow .xsb{height:6px;overflow:hidden;width:100%;}
+.x-shadow .xsml{background:transparent url( ../js/ext/resources/images/default/shadow-lr.png ) repeat-y 0 0;}
+.x-shadow .xsmr{background:transparent url( ../js/ext/resources/images/default/shadow-lr.png ) repeat-y -6px 0;}
+.x-shadow .xstl{background:transparent url( ../js/ext/resources/images/default/shadow.png ) no-repeat 0 0;}
+.x-shadow .xstc{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -30px;}
+.x-shadow .xstr{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -18px;}
+.x-shadow .xsbl{background:transparent url( ../js/ext/resources/images/default/shadow.png ) no-repeat 0 -12px;}
+.x-shadow .xsbc{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -36px;}
+.x-shadow .xsbr{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -6px;}
+.loading-indicator{font-size:11px;background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat 0 -51px;padding-left:10px;}
+.x-tab-strip-top .x-tab-left{background:transparent url(../js/ext/resources/images/default/tabs/tabs-sprite.gif) no-repeat right -351px;padding-right:10px;}
+.x-tab-strip-top .x-tab-strip-inner{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;}
+.x-tab-strip-bottom .x-tab-left{background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-border-layout-ct .x-tab-panel{background:white;}
+
+ .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(../js/ext/resources/images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
+textarea.x-form-field{padding:2px 3px;}
+.x-form-text{height:22px;line-height:18px;vertical-align:middle;}
+.ext-ie .x-form-text{margin:-1px 0;height:22px;line-height:18px;}
+.ext-ie textarea.x-form-field{margin:-1px 0;}
+.ext-strict .x-form-text{height:18px;}
+.ext-safari .x-form-text{height:20px;padding:0 3px;}
+.ext-safari.ext-mac textarea.x-form-field{margin-bottom:-2px;}
+.ext-gecko .x-form-text{padding-top:2px;padding-bottom:0;}
+textarea{resize:none;}
+.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(../js/ext/resources/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:21px;}
+.x-form-field-wrap .x-form-date-trigger{background-image:url(../js/ext/resources/images/default/form/date-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-clear-trigger{background-image:url(../js/ext/resources/images/default/form/clear-trigger.gif);cursor:pointer;}
+.x-form-field-wrap .x-form-search-trigger{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-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(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 0 2px;}
+.x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}
+.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
+.ext-ie .x-fieldset legend{margin-bottom:10px;}
+.ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}
+.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;}
+.x-fieldset-noborder{border:0 none transparent;}
+.x-fieldset-noborder legend{margin-left:-3px;}
+.ext-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px;}
+.ext-ie .x-fieldset-noborder legend span{position:absolute;left:-5px;}
+.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-fieldset{overflow:hidden;}
+.x-fieldset-bwrap{overflow:hidden;zoom:1;}
+.x-fieldset-body{overflow:hidden;}
+
+.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(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 0;}
+.x-btn-right{width:3px;height:21px;background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/toolbar/btn-arrow.gif) no-repeat right 3px;padding-right:10px;}
+.x-btn-pressed .x-btn-left{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -63px;}
+.x-btn-pressed .x-btn-right{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) no-repeat 0 -84px;}
+.x-btn-pressed .x-btn-center{background:url(../js/ext/resources/images/default/button/btn-sprite.gif) repeat-x 0 -126px;}
+
+.x-toolbar{border-color:#a9bfd3;border-style:solid;border-width:0 0 1px 0;display:block;padding:2px;background:#d0def0 url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0;}
+.x-toolbar .x-btn-over .x-btn-right{background:url(../js/ext/resources/images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px;}
+.x-toolbar .x-btn-over .x-btn-center{background:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/page-first.gif)!important;}
+.x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/done.gif)!important;}
+.x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last.gif)!important;}
+.x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next.gif)!important;}
+.x-tbar-page-prev{background-image:url(../js/ext/resources/images/default/grid/page-prev.gif)!important;}
+.x-item-disabled .x-tbar-loading{background-image:url(../js/ext/resources/images/default/grid/loading.gif)!important;}
+.x-item-disabled .x-tbar-page-first{background-image:url(../js/ext/resources/images/default/grid/page-first-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-last{background-image:url(../js/ext/resources/images/default/grid/page-last-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-next{background-image:url(../js/ext/resources/images/default/grid/page-next-disabled.gif)!important;}
+.x-item-disabled .x-tbar-page-prev{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-grid-row-loading{background:#fff url(../js/ext/resources/images/default/shared/loading-balls.gif) no-repeat center center;}
+.x-grid-page{overflow:hidden;}
+.x-grid3-row{cursor:default;border:1px solid #ededed;border-top-color:#fff;width:100%;}
+.x-grid3-row-alt{background-color:#fafafa;}
+.x-grid3-row-over{border:1px solid #ddd;background:#efefef url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/sort_asc.gif);display:inline;}
+.sort-desc .x-grid3-sort-icon{background-image:url(../js/ext/resources/images/default/grid/sort_desc.gif);display:inline;}
+.ext-strict .ext-ie .x-grid3-header-inner{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd{position:relative;}
+.ext-strict .ext-ie6 .x-grid3-hd-inner{position:static;}
+.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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/col-move-top.gif) no-repeat left top;}
+.col-move-bottom{background:transparent url(../js/ext/resources/images/default/grid/col-move-bottom.gif) no-repeat left top;}
+.x-grid3-row-selected{background:#DFE8F6!important;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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/hmenu-asc.gif);}
+.xg-hmenu-sort-desc .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-desc.gif);}
+.xg-hmenu-lock .x-menu-item-icon{background-image:url(../js/ext/resources/images/default/grid/hmenu-lock.gif);}
+.xg-hmenu-unlock .x-menu-item-icon{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/grid/group-by.gif);}
+.x-cols-icon{background-image:url(../js/ext/resources/images/default/grid/columns.gif);}
+.x-show-groups-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}
+.ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
+.ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}
+.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}
+
+.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(../js/ext/resources/images/default/dd/drop-no.gif);}
+.x-dd-drop-ok .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/dd/drop-yes.gif);}
+.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(../js/ext/resources/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-expanded .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder-open.gif);}
+.x-tree-node-leaf .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/leaf.gif);}
+.x-tree-node-collapsed .x-tree-node-icon{background-image:url(../js/ext/resources/images/default/tree/folder.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(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow.gif);}
+.x-tree-lines .x-tree-elbow-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-plus.gif);}
+.x-tree-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-minus.gif);}
+.x-tree-lines .x-tree-elbow-end{background-image:url(../js/ext/resources/images/default/tree/elbow-end.gif);}
+.x-tree-lines .x-tree-elbow-end-plus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-plus.gif);}
+.x-tree-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus.gif);}
+.x-tree-lines .x-tree-elbow-line{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-minus{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/tree/elbow-end-plus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-end-minus{background-image:url(../js/ext/resources/images/default/tree/elbow-end-minus-nl.gif);}
+.x-tree-no-lines .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-elbow{background:transparent;}
+.x-tree-arrows .x-tree-elbow-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-end{background:transparent;}
+.x-tree-arrows .x-tree-elbow-end-plus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat 0 0;}
+.x-tree-arrows .x-tree-elbow-end-minus{background:transparent url(../js/ext/resources/images/default/tree/arrows.gif) no-repeat -16px 0;}
+.x-tree-arrows .x-tree-elbow-line{background:transparent;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-minus{background-position:-48px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-plus{background-position:-32px 0;}
+.x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}
+.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;cursor:pointer;}
+.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-node-over{background-color:#eee;}
+.x-tree-node .x-tree-selected{background-color:#d9e8fb;}
+.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(../js/ext/resources/images/default/tree/drop-add.gif);}
+.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-over.gif);}
+.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-under.gif);}
+.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(../js/ext/resources/images/default/tree/drop-between.gif);}
+
+.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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/shared/right-btn.gif);margin-right:2px;text-decoration:none!important;}
+.x-date-left a{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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-tip{position:absolute;top:0;left:0;visibility:hidden;z-index:20000;border:0 none;}
+.x-tip .x-tip-close{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
+.x-tip .x-tip-bl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
+.x-tip .x-tip-mr{background:transparent url(../js/ext/resources/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-tip .x-tip-body .loading-indicator{margin:0;}
+.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}
+.x-form-invalid-tip .x-tip-tc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}
+.x-form-invalid-tip .x-tip-tl{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-tr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-bc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -18px;height:6px;}
+.x-form-invalid-tip .x-tip-bl{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat 0 -6px;}
+.x-form-invalid-tip .x-tip-br{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) no-repeat right -6px;}
+.x-form-invalid-tip .x-tip-ml{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-mr{background-image:url(../js/ext/resources/images/default/form/error-tip-corners.gif);}
+.x-form-invalid-tip .x-tip-body{padding:2px;}
+.x-form-invalid-tip .x-tip-body{padding-left:24px;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 2px 2px;}
+
+.x-menu{border:1px solid #718bb7;z-index:15000;zoom:1;background:#f0f0f0 url(../js/ext/resources/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(../js/ext/resources/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;overflow:hidden;}
+.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(../js/ext/resources/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(../js/ext/resources/images/default/menu/unchecked.gif) no-repeat center;}
+.x-menu-item-checked .x-menu-item-icon{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 0;zoom:1;}
+.x-box-tc{height:8px;background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
+.x-box-tr{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -8px;}
+.x-box-ml{background:transparent url(../js/ext/resources/images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
+.x-box-mc{background:#eee url(../js/ext/resources/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(../js/ext/resources/images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
+.x-box-bl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
+.x-box-bc{background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -8px;height:8px;overflow:hidden;}
+.x-box-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/box/l-blue.gif);}
+.x-box-blue .x-box-mr{background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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;position:relative;}
+.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(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
+.ext-strict .ext-ie7 .x-panel-tc{overflow:visible;}
+.x-panel-tl{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right 0;zoom:1;padding-right:6px;}
+.x-panel-bc{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-panel-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-panel-mr{background:transparent url(../js/ext/resources/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(../js/ext/resources/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-tool-print{background-position:0 -315px;}
+.x-tool-print-over{background-position:-15px -315px;}
+.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(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
+.x-window-tl{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/right-corners.png) no-repeat right 0;padding-right:6px;}
+.x-window-bc{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
+.x-window-br{background:transparent url(../js/ext/resources/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(../js/ext/resources/images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
+.x-window-mr{background:transparent url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/s.gif);background-position:left;}
+.x-layout-split-v{background-image:url(../js/ext/resources/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(../js/ext/resources/images/default/layout/mini-left.gif);}
+.x-layout-split-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}
+.x-layout-split-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-top.gif);}
+.x-layout-split-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-west .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-right.gif);}
+.x-layout-cmini-east .x-layout-mini{top:48%;background-image:url(../js/ext/resources/images/default/layout/mini-left.gif);}
+.x-layout-cmini-north .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/images/default/layout/mini-bottom.gif);}
+.x-layout-cmini-south .x-layout-mini{left:48%;height:5px;width:35px;background-image:url(../js/ext/resources/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;}
+.ext-ie input.x-abs-layout-item,.ext-ie textarea.x-abs-layout-item{margin:0;}
+
+.x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
+.x-progress-inner{height:18px;background:#e0e8f3 url(../js/ext/resources/images/default/qtip/bg.gif) repeat-x;position:relative;}
+.x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/default/window/icon-info.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-warning{background:transparent url(../js/ext/resources/images/default/window/icon-warning.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-question{background:transparent url(../js/ext/resources/images/default/window/icon-question.gif) no-repeat top left;}
+.x-window-dlg .ext-mb-error{background:transparent url(../js/ext/resources/images/default/window/icon-error.gif) no-repeat top left;}
+
+
+
+/*
+ * Ext JS Library 2.0.2
+ * Copyright(c) 2006-2008, Ext JS, LLC.
+ * licensing at 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(../js/ext/resources/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(../js/ext/resources/images/gray/panel/top-bottom.gif);
+}
+.x-panel-tl {
+ background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+ border-color:#d0d0d0;
+}
+.x-panel-tr {
+ background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+}
+.x-panel-bc {
+ background-image:url(../js/ext/resources/images/gray/panel/top-bottom.gif);
+}
+.x-panel-bl {
+ background-image:url(../js/ext/resources/images/gray/panel/corners-sprite.gif);
+}
+.x-panel-br {
+ background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/panel/left-right.gif);
+}
+.x-panel-mr {
+ background-image:url(../js/ext/resources/images/gray/panel/left-right.gif);
+}
+
+/* Tools */
+.x-tool {
+ background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+.x-btn-right{
+ background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+.x-btn-center{
+ background-image:url(../js/ext/resources/images/gray/button/btn-sprite.gif);
+}
+
+/* Layout classes */
+
+.x-border-layout-ct {
+ background:#f0f0f0;
+}
+
+.x-accordion-hd {
+ background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-left {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-top-right {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-left {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-ft-right {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-left {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+.x-tip .x-tip-bd-right {
+ background-image:url(../js/ext/resources/images/gray/qtip/tip-sprite.gif);
+}
+
+/* Toolbars */
+
+.x-toolbar{
+ border-color:#d0d0d0;
+ background:#f0f4f5 url(../js/ext/resources/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(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button {
+ background-image:url(../js/ext/resources/images/gray/toolbar/btn-arrow.gif);
+}
+.x-toolbar .x-btn-over .x-btn-left{
+ background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-right{
+ background-image:url(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .x-btn-over .x-btn-center{
+ background-image:url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/gray/toolbar/tb-btn-sprite.gif);
+}
+.x-toolbar .ytb-sep {
+ background-image: url(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/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(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-top .x-tab-left {
+ background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+.x-tab-strip-top .x-tab-strip-inner {
+ background-image:url(../js/ext/resources/images/gray/tabs/tabs-sprite.gif);
+}
+
+.x-tab-strip-bottom .x-tab-right {
+ background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-left {
+ background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
+ background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-right-bg.gif);
+}
+
+.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
+ background-image:url(../js/ext/resources/images/gray/tabs/tab-btm-left-bg.gif);
+}
+
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
+ background-image:url(../js/ext/resources/images/gray/tabs/tab-close.gif);
+}
+.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
+ background-image:url(../js/ext/resources/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(../js/ext/resources/images/gray/tabs/scroll-left.gif);
+ border-color:#aeaeae;
+}
+.x-tab-scroller-right {
+ background-image: url(../js/ext/resources/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(../js/ext/resources/images/gray/window/top-bottom.png);
+}
+.x-window-tl {
+ background-image:url(../js/ext/resources/images/gray/window/left-corners.png);
+}
+.x-window-tr {
+ background-image:url(../js/ext/resources/images/gray/window/right-corners.png);
+}
+.x-window-bc {
+ background-image:url(../js/ext/resources/images/gray/window/top-bottom.png);
+}
+.x-window-bl {
+ background-image:url(../js/ext/resources/images/gray/window/left-corners.png);
+}
+.x-window-br {
+ background-image:url(../js/ext/resources/images/gray/window/right-corners.png);
+}
+.x-window-mc {
+ border:1px solid #d0d0d0;
+ background:#e8e8e8;
+}
+
+.x-window-ml {
+ background-image:url(../js/ext/resources/images/gray/window/left-right.png);
+}
+.x-window-mr {
+ background-image:url(../js/ext/resources/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;
+}
+
+.kunebody {
+ background-color: #FFF;
+ color: #000;
+ font-family: arial, sans;
+ margin: 5px 5px 5px 5px;
+}
+
+#kuneinitialcurtain {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #FFF;
+ z-index: 9999;
+}
+
+/* Global styles */
+
+.gwt-HorizontalSplitPanel .hsplitter {
+ cursor: e-resize;
+ width: 6px;
+}
+
+.gwt-DialogBox {
+ border: 8px solid #C3D9FF;
+ border: 2px outset;
+ background-color: white;
+}
+
+.gwt-DialogBox .Caption {
+ background-color: #C3D9FF;
+ font-size: 85%;
+ font-weight: 700;
+ padding: 3px;
+ margin: 2px;
+ cursor: default;
+}
+
+.gwt-MenuBar {
+ background-color: #F2F2F2;
+ border: 1px solid #999;
+ vertical-align: middle;
+ padding: 5px 0;
+}
+
+.gwt-MenuBar .gwt-MenuItem {
+ cursor: pointer;
+ padding: 1px 10px;
+ white-space: nowrap;
+}
+
+.gwt-MenuBar .gwt-MenuItem img {
+ vertical-align: middle;
+ margin-right: 3px;
+}
+
+.gwt-MenuBar .gwt-MenuItem {
+ background-color: #F2F2F2;
+}
+
+.gwt-MenuBar .gwt-MenuItem-selected {
+ background-color: #FFB958;
+}
+
+.kune-MenuBar .gwt-MenuItem {
+ background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+ border-left: 1px solid #AAA;
+ border-right: 1px solid #AAA;
+ color: #999;
+ cursor: pointer;
+ cursor: hand;
+ white-space: nowrap;
+ padding: 0 10px;
+}
+
+.kune-MenuBar .gwt-MenuItem-selected {
+ background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+ color: #996633;
+}
+
+.kune-expandHoriz {
+ width: 100%;
+}
+
+.kune-expandVert {
+ height: 100%;
+}
+
+.kune-floatleft {
+ float: left;
+}
+
+.kune-floatright {
+ float: right;
+}
+
+/* Deprecated */
+.kune-Default-Form {
+ margin: 10px;
+}
+
+.kune-valignmiddle {
+ vertical-align: middle;
+}
+
+fieldset {
+ border:1px solid #B5B8C8;
+ /* margin-bottom:10px; */
+ padding:10px 10px 5px;
+}
+
+legend {
+ color:#15428B;
+ font-size: 85%;
+ font-size-adjust:none;
+ font-style:normal;
+ font-variant:normal;
+ font-weight:bold;
+ line-height:normal;
+}
+
+.gwt-RadioButton input {
+ margin: 0 3px;
+ vertical-align:middle;
+}
+
+.gwt-RadioButton label {
+ margin: 0 3px;
+ vertical-align:middle;
+}
+
+.kune-pointer {
+ cursor: pointer;
+}
+
+.kuneLabelPre {
+ white-space: pre !important;
+}
+
+/* Buttons */
+
+.kune-CustomPushButton-space {
+ margin-top: 3px;
+ margin-bottom: 3px;
+}
+
+.kune-CustomPushButton {
+ background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+ border-left: 1px solid #AAA;
+ border-right: 1px solid #AAA;
+ color: #999;
+ cursor: pointer;
+ white-space: nowrap;
+ padding: 0px 12px;
+}
+
+.kune-CustomPushButton-up {
+ color: #161616;
+}
+
+.kune-CustomPushButton-down {
+ color: black;
+}
+
+.kune-CustomPushButton-up-hovering {
+ color: #161616;
+ background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+}
+
+.kune-CustomPushButton-down-hovering {
+ color: black;
+}
+
+.kune-CustomPushButton-up-disabled {
+ background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+ color: #E0E0E0;
+ cursor: default;
+}
+
+.kune-CustomPushButton-down-disabled {
+ background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+ color: #E0E0E0;
+ cursor: default;
+}
+
+.kune-Button-Large-lrSpace {
+ margin-left: 12px;
+ margin-right: 12px;
+}
+
+.kune-Button-Large-rSpace {
+ margin-right: 12px;
+}
+
+.kune-Button-Large-lSpace {
+ margin-left: 12px;
+}
+
+.kune-Button-Large-tbSpace {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+
+.kune-Button-Small-lrSpace {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.kune-Button-Small-rSpace {
+ margin-right: 10px;
+}
+
+.kune-Button-Small-lSpace {
+ margin-left: 10px;
+}
+
+.kune-Button-Small-tbSpace {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.kune-Button-Mini-lSpace {
+ margin-left: 8px;
+}
+
+.kune-Button-Mini-lrSpace {
+ margin-left: 8px;
+ margin-right: 8px;
+}
+
+.kune-Button-Mini-rSpace {
+ margin-right: 8px;
+}
+
+.kune-Button-Mini-tbSpace {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.kune-IconHyperlink {
+}
+
+.kune-IconHyperlink a:link {
+ /* text-decoration: underline; */
+ color: green;
+}
+
+.kune-IconHyperlink a:hover {
+ text-decoration: underline;
+}
+
+.kune-IconHyperlink a:visited {
+ color: #808000;
+}
+
+.kune-IconHyperlink img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+.kune-IconLabel {
+
+}
+
+.kune-IconLabel img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+.kune-link {
+ text-decoration: underline;
+ color: green;
+ cursor: pointer;
+}
+
+/* DropDowns */
+
+.kune-DropDownOuter {
+ background-color: green;
+}
+
+.kune-DropDownInner {
+ margin: 0 3px 1px 3px;
+ background: green;
+ background-color: #FFF;
+ padding: 3px;
+}
+
+.kune-DropDownLabel {
+ color: #FFF;
+ cursor: pointer;
+}
+
+.kune-DropDownLabel .gwt-Label {
+ margin: 0 5px 0 0;
+ width: 100%;
+}
+
+.kune-DropDownLabel img {
+ margin: 0 3px 0 1px;
+}
+
+.kune-IconLabel {
+ color: green;
+}
+
+.kune-IconLabel img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+/* Used in multi chat panel status change */
+.x-menu-item img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+/* Margins */
+
+.kune-Margin-40-trbl {
+ margin: 40px;
+}
+
+.kune-Margin-40-lr {
+ margin-left: 40px;
+ margin-right: 40px;
+}
+
+.kune-Margin-40-tl {
+ margin-top: 40px;
+ margin-left: 40px;
+}
+
+.kune-Margin-40-tb {
+ margin-top: 40px;
+ margin-bottom: 40px;
+}
+
+.kune-Margin-40-t {
+ margin-top: 40px;
+}
+
+.kune-Margin-40-r {
+ margin-right: 40px;
+}
+
+.kune-Margin-40-l {
+ margin-left: 40px;
+}
+
+.kune-Margin-20-trbl {
+ margin: 20px;
+}
+
+.kune-Margin-20-lr {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+.kune-Margin-20-tl {
+ margin-top: 20px;
+ margin-left: 20px;
+}
+
+.kune-Margin-20-tb {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+.kune-Margin-20-t {
+ margin-top: 20px;
+}
+
+.kune-Margin-20-r {
+ margin-right: 20px;
+}
+
+.kune-Margin-20-l {
+ margin-left: 20px;
+}
+
+.kune-Margin-Large-trbl {
+ margin: 10px;
+}
+
+.kune-Margin-Large-lr {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.kune-Margin-Large-tl {
+ margin-top: 10px;
+ margin-left: 10px;
+}
+
+.kune-Margin-Large-tb {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.kune-Margin-Large-t {
+ margin-top: 10px;
+}
+
+.kune-Margin-Large-r {
+ margin-right: 10px;
+}
+
+.kune-Margin-Large-l {
+ margin-left: 10px;
+}
+
+.kune-Margin-Medium-trbl {
+ margin: 5px;
+}
+
+.kune-Margin-Medium-lr {
+ margin-left: 5px;
+ margin-right: 5px;
+}
+
+.kune-Margin-Medium-tl {
+ margin-top: 5px;
+ margin-left: 5px;
+}
+
+.kune-Margin-Medium-tb {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-t {
+ margin-top: 5px;
+}
+
+.kune-Margin-Medium-r {
+ margin-right: 5px;
+}
+
+.kune-Margin-Medium-b {
+ margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-l {
+ margin-left: 5px;
+}
+
+.kune-Margin-Small-trbl {
+ margin: 3px;
+}
+
+.kune-Margin-Small-lr {
+ margin-left: 3px;
+ margin-right: 3px;
+}
+
+.kune-Margin-Small-tl {
+ margin-top: 3px;
+ margin-left: 3px;
+}
+
+.kune-Margin-Small-tb {
+ margin-top: 3px;
+ margin-bottom: 3px;
+}
+
+.kune-Margin-Small-t {
+ margin-top: 3px;
+}
+
+.kune-Margin-Mini-trbl {
+ margin: 1px;
+}
+
+.kune-Margin-Mini-lr {
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+.kune-Margin-Mini-tl {
+ margin-top: 1px;
+ margin-left: 1px;
+}
+
+.kune-Margin-Mini-tb {
+ margin-top: 1px;
+ margin-bottom: 1px;
+}
+
+.kune-Margin-Mini-t {
+ margin-top: 1px;
+}
+
+.kune-Margin-Mini-r {
+ margin-right: 1px;
+}
+
+.kune-Margin-Mini-l {
+ margin-left: 1px;
+}
+
+/* Fonts
+see: http://developer.yahoo.com/yui/fonts/ */
+
+.kune-ft10px {
+ font-size: 77%
+}
+
+.kune-ft11px {
+ font-size: 85%
+}
+
+.kune-ft12px {
+ font-size: 93%
+}
+
+.kune-ft13px {
+ font-size: 100%
+}
+
+.kune-ft14px {
+ font-size: 108%
+}
+
+.kune-ft15px {
+ font-size: 116%
+}
+
+.kune-ft16px {
+ font-size: 123.1%
+}
+
+.kune-ft17px {
+ font-size: 131%
+}
+
+.kune-ft18px {
+ font-size: 138.5%
+}
+
+.kune-ft19px {
+ font-size: 146.5%
+}
+
+.kune-ft20px {
+ font-size: 153.9%
+}
+
+.kune-ft21px {
+ font-size: 161.6%
+}
+
+.kune-ft22px {
+ font-size: 167%
+}
+
+.kune-ft23px {
+ font-size: 174%
+}
+
+.kune-ft24px {
+ font-size: 182%
+}
+
+.kune-ft25px {
+ font-size: 189%
+}
+
+.kune-ft26px {
+ font-size: 197%
+}
+
+
+/* Sitebar */
+
+#kuneprogresspanel {
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ z-index: 30000;
+}
+
+.kune-Progress {
+ background: #E5FF80;
+ border: 1px solid #E5FF80;
+ white-space: nowrap;
+ height: 16px;
+ padding: 0 3px;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink {
+ white-space: nowrap;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:link {
+ cursor: pointer;
+ text-decoration: underline;
+ color: #B3B3B3;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:hover {
+ text-decoration: underline;
+}
+
+.kune-SiteBarPanel .kune-IconHyperlink a:visited {
+ color: #B3B3B3;
+}
+
+.kune-SiteBarPanel {
+ margin-right: 10px;
+ height: 16px;
+}
+
+.kune-SiteBarPanel .gwt-TextBox {
+ border: 1px solid #E4A374;
+ margin: 0 15px 0 3px;
+ padding-left: 3px;
+ color: #B3B3B3;
+}
+
+.kune-SiteBarPanel .gwt-Hyperlink a {
+ white-space: nowrap;
+ color: #B3B3B3;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.kune-SiteBarPanel .gwt-PushButton {
+ cursor: pointer;
+}
+
+.kune-SiteBarPanel-Separator {
+ color: #E4A374;
+ margin: 0 5px;
+}
+
+.kune-SiteBarPanel-SpaceSeparator {
+ width: 10px;
+}
+
+.kune-SiteBarPanel-LabelLink {
+ white-space: nowrap;
+ color: #B3B3B3;
+ margin-left: 3px;
+ cursor: pointer;
+ text-decoration: underline;
+}
+
+.kune-SiteMessagePanel {
+ color: #250;
+ position: absolute;
+ z-index: 10000;
+ vertical-align: middle;
+}
+
+.kune-SiteMessagePanel .gwt-HTML {
+ margin: 15px 5px 15px 2px;
+}
+
+.kune-SiteMessagePanel .gwt-Image {
+ margin: 5px;
+}
+
+.kune-SiteMessagePanel-error {
+ background-color: #FFB380;
+ border: 1px solid #FF0066;
+}
+
+.kune-SiteMessagePanel-veryimp {
+ background-color: #FFD4AA;
+ border: 1px solid #FF5599;
+}
+
+.kune-SiteMessagePanel-imp {
+ background-color: #FFE6D5;
+ border: 1px solid #DE87AA;
+}
+
+.kune-SiteMessagePanel-info {
+ background-color: #E5FF80;
+ border: 1px solid #87DE87;
+}
+
+/* Workspace styles */
+.kune-WorkspacePanel {
+ width: 100%;
+ background-color: #FFF;
+}
+
+.kune-WokspacePanel .Tab {
+
+}
+
+.kune-WorkspacePanel .GeneralHP {
+
+}
+
+.kune-WorkspacePanel .ContextPanel {
+ width: 100%;
+ border-right: 3px solid #DD8A3D;
+}
+
+.kune-GroupSummaryPanel {
+ margin: 5px 0 0 5px;
+ width: 100%;
+}
+
+.kune-GroupToolsBar {
+ width: 150px;
+}
+
+.kune-GroupToolsBar-itemSelected {
+ margin-bottom: 5px;
+}
+
+.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a {
+ color: #FFF;
+ padding: 0 9px;
+ text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemSelected .gwt-Hyperlink a:hover {
+ text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemNotSelected {
+ margin-bottom: 5px;
+}
+
+.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a {
+ color: green;
+ padding: 0 9px;
+ text-decoration: none;
+}
+
+.kune-GroupToolsBar-itemNotSelected .gwt-Hyperlink a:hover {
+ text-decoration: none;
+}
+
+/* Content titles */
+
+.kune-ContentToolBarPanel {
+ background-color: #F2F2F2;
+ padding: 2px;
+ height: 24px;
+ vertical-align: middle;
+}
+
+.kune-ContentBottomBar {
+ vertical-align: middle;
+ height: 24px;
+}
+
+.kune-ContentBottomBar .gwt-Image {
+ margin-left: 5px;
+ cursor: pointer;
+ float: left;
+}
+
+.kune-ContentBottomBar .gwt-Label a {
+
+}
+
+/* Main Content & Context */
+.kune-WorkspacePanel-Content {
+ background-color: #FCFCFC;
+ width: 100%;
+ height: 100%;
+}
+
+.kune-WorkspacePanel-Content .main-content {
+ margin: 7px 5px 5px 10px;
+}
+
+.kune-WorkspacePanel-Context {
+ background-color: #CFA;
+ width: 100%;
+ height: 100%;
+}
+
+.kune-NavigationBar {
+ width: 100%;
+}
+
+.kune-NavigationBar .topBar {
+ background-color: #ececec;
+ background: #ececec;
+ border-bottom: 1px solid #e3dbdb;
+ vertical-align: middle;
+}
+
+.kune-NavigationBar .topBar .gwt-PushButton {
+ margin: 1px 3px 1px 0;
+}
+
+.kune-NavigationBar .topBar .gwt-Label {
+ vertical-align: middle;
+}
+
+.kune-NavigationBar .kune-topBar-iconBar {
+ margin: 2px 0 2px 5px;
+}
+
+.kune-NavigationBar .kune-ContextItemsPanel-LabelLink {
+ /* text-decoration: underline; */
+ color: green;
+ cursor: pointer;
+ margin-left: 3px;
+}
+
+/*
.topBar .gwt-PushButton-up-disabled {
filter: alpha(opacity = 20);
-moz-opacity: 0.2;
@@ -33,6 +2139,1052 @@
-moz-opacity: 0.2;
opacity: 0.2;
}
-*/.kune-NavigationBar .topBar .gwt-Image{margin:0 2px 0 5px;}.kune-NavigationBar .Items{margin:2px 0;}.kune-NavigationBar .Items .gwt-Image{margin:2px 0;vertical-align:middle;}.kune-NavigationBar .Items .gwt-Hyperlink a{color:green;/* FIXME: other color */}.kune-NavigationBar .topBar .topBar-margin{margin-left:5px;}.kune-NavigationBar .pathMenu{vertical-align:middle;}.kune-NavigationBar .pathMenu .gwt-MenuItem{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;white-space:nowrap;padding:3px 6px;}.kune-NavigationBar .pathMenu .gwt-MenuItem-selected{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#000;}.kune-NavigationBar .kune-IconHyperlink{vertical-align:middle;margin-left:5px;}.kune-NavigationBar .kune-IconHyperlink a{color:green;text-decoration:none;}.kune-NavigationBar .kune-IconHyperlink .gwt-Image{margin-right:3px;vertical-align:middle;}/* Social Network */.kune-StackedDropDownPanel{}.kune-StackedDropDownPanel .gwt-StackPanelItem{border-top:1px solid #CCC;border-bottom:1px solid #CCC;background-color:#EFA;cursor:pointer;padding:1px 3px 0 6px;overflow:hidden;}.kune-StackedDropDownPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-StackedDropDownPanel .kune-DropDownInner table{width:100%;}.kune-StackedDropDownPanel .gwt-StackPanelItem-selected{}.kune-StackedDropDownPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/* white-space: nowrap; */cursor:pointer;}.kune-StackedDropDownPanel .kune-DropDownInner{padding:0;}/* StackedDropDownPanel Members */.kune-StackSubItemLabel{overflow:hidden;}.kune-StackSubItemLabel .gwt-MenuItem{white-space:nowrap;cursor:pointer;border-bottom:1px solid #F2F2F2;}.kune-StackSubItemLabel table{width:100%;}.kune-StackSubItemLabel .gwt-MenuItem img{vertical-align:middle;margin-top:1px;margin-bottom:1px;margin-left:5px;margin-right:3px;}.kune-StackSubItemLabel .gwt-MenuItem-selected{background-color:#FFE6D5;}.kune-StackSubItemActions{background-color:#F2F2F2;border:1px solid #999;vertical-align:middle;padding:5px 0;margin-left:-120px;margin-top:-2px;}.kune-StackSubItemActions .gwt-MenuItem{cursor:pointer;padding:1px 10px;white-space:nowrap;}.kune-StackSubItemActions .gwt-MenuItem img{vertical-align:middle;margin-right:3px;}.kune-StackSubItemActions .gwt-MenuItem-selected{background-color:#FFB958;}/* AccessList */.kune-AccessListSubLabel{font-style:italic;}.kune-AccessList{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel-open{width:100%;}.kune-AccessList .gwt-DisclosurePanel-closed{width:100%;}.kune-AccessList .header{margin:0 0 3px;text-decoration:none;width:100%;background-color:#8DD35F;}.kune-AccessList .header table{margin:0 5px 0 0;width:100%;color:#FFF;}.kune-AccessList .header img{margin:0 3px 0 0;}.kune-AccessList .content{margin:0 0 0 7px;width:100%;}.kune-AccessList .content table{margin-bottom:5px;width:100%;}/* Rate */.kune-RatePanel-Label{white-space:nowrap;vertical-align:middle;}.kune-RatePanel-Stars{margin-left:5px;vertical-align:middle;}.kune-RatePanel-Stars-RateIt{cursor:pointer;}/* Licenses */.kune-License-CC-Header{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}.kune-License-CC-Header .gwt-Label{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}/* Theme */.kune-IconBottomPanel .gwt-MenuItem{cursor:pointer;background-color:#FFF;margin:2px 2px 2px 5px;}.kune-IconBottomPanel .gwt-MenuItem-selected{background-color:#F2F2F2;}.gwt-MenuBar-bottomMenu{margin-left:-60px;margin-top:-120px;}/* i18n */.kune-I18nTranslatorCell{white-space:normal;}.kune-i18nTranslator-recommend{margin:10px;}.kune-i18nTranslator-recommend h1{font-size:131%;font-weight:700;}.kune-i18nTranslator-recommend h2{font-size:116%;font-weight:700;}.kune-i18nTranslator-recommend h3{font-size:108%;font-weight:700;font-style:italic;}.kune-i18nTranslator-recommend em{font-weight:700;}.kune-i18nTranslator-recommend strong{font-weight:700;}/* Admin Context */.kune-AdminContextPanel{margin:6px;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem{background:transparent url(img/arrow-right-white.gif) no-repeat scroll 3px 2px;cursor:pointer;padding:3px 10px 1px 20px;owerflow:hidden;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-AdminContextPanel .gwt-StackPanelItem-selected{background:transparent url(img/arrow-down-white.gif) no-repeat scroll 3px 2px;background-color:#DEE3DB;}.kune-AdminContextPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/* white-space: nowrap; */cursor:pointer;}.kune-AdminContextPanel-inner{background-color:#FFF;}.kune-AdminContextPanel-inner-wrap{margin:5px;}.kune-EditableLabel{}.kune-EditableLabel .kune-EditableLabel-editable{}.kune-EditableLabel-high{background-color:#FFFBC1;cursor:pointer;}.kune-EditableLabel-high span{background-color:#FFFBC1;}.kune-EditableLabel a{margin-left:5px;}.kune-EditableLabel a:link{color:green;}.kune-EditableLabel a:hover{text-decoration:underline;}.kune-EditableLabel a:visited{color:olive;}.kune-EditableLabel img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable span{margin:3px;}.kune-EditableLabel span{margin:3px;}.kune-BottomIconsTrayPanel{width:165px;height:21px;vertical-align:middle;background-color:#EFEFEF;}.kune-TagsPanel-tag{float:left;margin-right:5px;cursor:pointer;}.kune-Content-Main{margin:5px;}/* Yahoo ui base.css */.kune-Content-Main h1{font-size:138.5%;}.kune-Content-Main h2{font-size:123.099998%;}.kune-Content-Main h3{font-size:108%;}.kune-Content-Main h1{margin:1em 0;}.kune-Content-Main h2{margin:1em 0;}.kune-Content-Main h3{margin:1em 0;}.kune-Content-Main h1{font-weight:700;}.kune-Content-Main h2{font-weight:700;}.kune-Content-Main h3{font-weight:700;}.kune-Content-Main h4{font-weight:700;}.kune-Content-Main h5{font-weight:700;}.kune-Content-Main h6{font-weight:700;}.kune-Content-Main strong{font-weight:700;}.kune-Content-Main abbr{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main acronym{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main em{font-style:italic;}.kune-Content-Main blockquote{margin:1em;}.kune-Content-Main ul{margin:1em;}.kune-Content-Main ol{margin:1em;}.kune-Content-Main dl{margin:1em;}.kune-Content-Main ol{margin-left:2em;}.kune-Content-Main ul{margin-left:2em;}.kune-Content-Main dl{margin-left:2em;}.kune-Content-Main ol{list-style:decimal outside;}.kune-Content-Main li{list-style:decimal outside;}.kune-Content-Main li{list-style:disc outside;}.kune-Content-Main ul{list-style:disc outside;}.kune-Content-Main dl{margin-left:1em;}.kune-Content-Main dd{margin-left:1em;}.kune-Content-Main th{border:1px solid #000;padding:.5em;font-weight:700;text-align:center;}.kune-Content-Main td{border:1px solid #000;padding:.5em;}.kune-Content-Main caption{margin-bottom:.5em;text-align:center;}.kune-Content-Main p{margin-bottom:1em;}.kune-Content-Main fieldset{margin-bottom:1em;}.kune-Content-Main table{margin-bottom:1em;}.kune-Content-Main pre{margin-bottom:1em;}.kune-Content-Main input[type=text]{width:12.25em;width:11.9em;}.kune-Content-Main input[type=password]{width:12.25em;width:11.9em;}.kune-Content-Main textarea{width:12.25em;width:11.9em;}.search-icon{background-image:url(img/search.gif)!important;}.i18n-icon{background-image:url(img/language.gif)!important;}.chat-icon{background-image:url(img/chat.gif)!important;}.group-icon{background-image:url(img/group.gif)!important;}.user-icon{background-image:url(img/user.gif)!important;}.userf-icon{background-image:url(img/userf.gif)!important;}.kune-RoomPanel-HorizDelimiter{white-space:nowrap;color:#B3B3B3;}.kune-MultiRoomPanel-Subject{font-size:108%;color:#2E5492;}.kune-MultiRoomPanel-User{}.kune-MultiRoomPanel-User .kune-IconLabel{overflow:hidden;white-space:nowrap;}.kune-RoomPanel-Conversation{}.kune-RoomPanel-Message{margin:0 7px;}.kune-RoomPanel-EventMessage{font-style:italic;color:#69C;margin:0 5px;}.kune-MultiRoomPanel-EmoticonPalette{background-color:#FFF;border:1px solid #AAA;margin:1px solid red;z-index:10000;position:absolute;}.kune-MultiRoomPanel-EmoticonPalette td{width:30px;height:30px;}/* RTE Text editor */.kune-TexEditorPanel-TextArea{margin:3px;}.gwt-RichTextArea{/* border: 1px solid #000;
- background-color: #FFF; */border:1px solid #4D4D4D;background-color:#FFF;margin:5px 0 5px 10px;}.gwt-RichTextToolbar{/* background-color: #F2F2F2;
- padding: 5px; */height:24px;vertical-align:middle;}.gwt-RichTextToolbar table{vertical-align:middle;}.gwt-RichTextToolbar .gwt-ToggleButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-PushButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-PushButton-down{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-PushButton-down-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-ToggleButton-down{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .x-btn{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lSpace{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lrSpace{float:left;}.RichTextToolbar-menu{float:left;margin-top:2px;}.RichTextToolbar-menu table{border-collapse:collapse;border-spacing:0;margin:0;}.RichTextToolbar-menu .gwt-MenuItem{margin-right:2px;border:1px solid #F2F2F2;}.RichTextToolbar-menu .gwt-MenuItem-selected{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.RichTextToolbar-submenu{background-color:#FFFCD5;border:1px solid #D38D5F;cursor:default;}.RichTextToolbar-submenu .gwt-MenuItem{cursor:default;white-space:nowrap;border:1px solid #FFFCD5;padding:0 4px;}.RichTextToolbar-submenu .gwt-MenuItem-selected{background-color:#FFB958;border:1px solid #C83737;}.kune-WebSafePalette{background-color:#FFF;border:1px solid #AAA;margin:1px solid red;}.kune-WebSafePalette td{width:12px;height:10px;}
\ No newline at end of file
+*/
+.kune-NavigationBar .topBar .gwt-Image {
+ margin: 0 2px 0 5px;
+}
+
+.kune-NavigationBar .Items {
+ margin: 2px 0;
+}
+
+.kune-NavigationBar .Items .gwt-Image {
+ margin: 2px 0;
+ vertical-align: middle;
+}
+
+.kune-NavigationBar .Items .gwt-Hyperlink a {
+ color: green; /* FIXME: other color */
+}
+
+.kune-NavigationBar .topBar .topBar-margin {
+ margin-left: 5px;
+}
+
+.kune-NavigationBar .pathMenu {
+ vertical-align: middle;
+}
+
+.kune-NavigationBar .pathMenu .gwt-MenuItem {
+ background: transparent url(img/button-bg-hard.gif) repeat-x 0 0;
+ border-left: 1px solid #AAA;
+ border-right: 1px solid #AAA;
+ color: #999;
+ cursor: pointer;
+ white-space: nowrap;
+ padding: 3px 6px;
+}
+
+.kune-NavigationBar .pathMenu .gwt-MenuItem-selected {
+ background: transparent url(img/button-bg-soft.gif) repeat-x 0 0;
+ color: #000;
+}
+
+.kune-NavigationBar .kune-IconHyperlink {
+ vertical-align: middle;
+ margin-left: 5px;
+}
+
+.kune-NavigationBar .kune-IconHyperlink a {
+ color: green;
+ text-decoration: none;
+}
+
+.kune-NavigationBar .kune-IconHyperlink .gwt-Image {
+ margin-right: 3px;
+ vertical-align: middle;
+}
+
+/* Social Network */
+.kune-StackedDropDownPanel {
+
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem {
+ border-top: 1px solid #CCC;
+ border-bottom: 1px solid #CCC;
+ background-color: #EEFFAA;
+ cursor: pointer;
+ padding: 1px 3px 0 6px;
+ overflow: hidden;
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem img {
+ margin: 0 0 0 3px;
+ vertical-align: middle;
+}
+
+.kune-StackedDropDownPanel .kune-DropDownInner table {
+ width: 100%;
+}
+
+.kune-StackedDropDownPanel .gwt-StackPanelItem-selected {
+
+}
+
+.kune-StackedDropDownPanelLink {
+ background-color: #E6E6E6;
+ border-top: 1px solid #CCC;
+ border-bottom: 1px solid #F2F2F2;
+/* white-space: nowrap; */
+ cursor: pointer;
+}
+
+.kune-StackedDropDownPanel .kune-DropDownInner {
+ padding: 0px;
+}
+
+/* StackedDropDownPanel Members */
+.kune-StackSubItemLabel {
+ overflow: hidden;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem {
+ white-space: nowrap;
+ cursor: pointer;
+ border-bottom: 1px solid #F2F2F2;
+}
+
+.kune-StackSubItemLabel table {
+ width: 100%;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem img {
+ vertical-align: middle;
+ margin-top: 1px;
+ margin-bottom: 1px;
+ margin-left: 5px;
+ margin-right: 3px;
+}
+
+.kune-StackSubItemLabel .gwt-MenuItem-selected {
+ background-color: #FFE6D5;
+}
+
+.kune-StackSubItemActions {
+ background-color: #F2F2F2;
+ border: 1px solid #999;
+ vertical-align: middle;
+ padding: 5px 0;
+ margin-left: -120px;
+ margin-top: -2px;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem {
+ cursor: pointer;
+ padding: 1px 10px;
+ white-space: nowrap;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem img {
+ vertical-align: middle;
+ margin-right: 3px;
+}
+
+.kune-StackSubItemActions .gwt-MenuItem-selected {
+ background-color: #FFB958;
+}
+
+/* AccessList */
+.kune-AccessListSubLabel {
+ font-style: italic;
+}
+
+.kune-AccessList {
+ margin: 5px;
+ width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel {
+ margin: 5px;
+ width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel-open {
+ width: 100%;
+}
+
+.kune-AccessList .gwt-DisclosurePanel-closed {
+ width: 100%;
+}
+
+.kune-AccessList .header {
+ margin: 0 0 3px 0;
+ text-decoration: none;
+ width: 100%;
+ background-color: #8DD35F;
+}
+
+.kune-AccessList .header table {
+ margin: 0 5px 0 0;
+ width: 100%;
+ color: #FFF;
+}
+
+.kune-AccessList .header img {
+ margin: 0 3px 0 0;
+}
+
+.kune-AccessList .content {
+ margin: 0 0 0 7px;
+ width: 100%;
+}
+
+.kune-AccessList .content table {
+ margin-bottom: 5px;
+ width: 100%;
+}
+
+/* Rate */
+.kune-RatePanel-Label {
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.kune-RatePanel-Stars {
+ margin-left: 5px;
+ vertical-align: middle;
+}
+
+.kune-RatePanel-Stars-RateIt {
+ cursor: pointer;
+}
+
+/* Licenses */
+.kune-License-CC-Header {
+ color: #15428B;
+ font-weight: bold;
+ font-size: 85%;
+ margin-top: 5px;
+}
+
+.kune-License-CC-Header .gwt-Label {
+ color: #15428B;
+ font-weight: bold;
+ font-size: 85%;
+ margin-top: 5px;
+}
+
+/* Theme */
+.kune-IconBottomPanel .gwt-MenuItem {
+ cursor: pointer;
+ background-color: #FFF;
+ margin: 2px 2px 2px 5px;
+}
+
+.kune-IconBottomPanel .gwt-MenuItem-selected {
+ background-color: #F2F2F2;
+}
+
+.gwt-MenuBar-bottomMenu {
+ margin-left: -60px;
+ margin-top: -120px;
+}
+
+/* i18n */
+.kune-I18nTranslatorCell {
+ white-space: normal;
+}
+
+.kune-i18nTranslator-recommend {
+ margin: 10px;
+}
+
+.kune-i18nTranslator-recommend h1 {
+ font-size: 131%;
+ font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend h2 {
+ font-size: 116%;
+ font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend h3 {
+ font-size: 108%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.kune-i18nTranslator-recommend em {
+ font-weight: bold;
+}
+
+.kune-i18nTranslator-recommend strong {
+ font-weight: bold;
+}
+
+/* Admin Context */
+.kune-AdminContextPanel {
+ margin: 6px;
+ width: 100%;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem {
+ background: transparent url(img/arrow-right-white.gif) no-repeat scroll 3px 2px;
+ cursor: pointer;
+ padding: 3px 10px 1px 20px;
+ overflow: hidden;
+ width: 100%;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem img {
+ margin: 0 0 0 3px;
+ vertical-align: middle;
+}
+
+.kune-AdminContextPanel .gwt-StackPanelItem-selected {
+ background: transparent url(img/arrow-down-white.gif) no-repeat scroll 3px 2px;
+ background-color: #DEE3DB;
+}
+
+.kune-AdminContextPanelLink {
+ background-color: #E6E6E6;
+ border-top: 1px solid #CCC;
+ border-bottom: 1px solid #F2F2F2;
+ /* white-space: nowrap; */
+ cursor: pointer;
+}
+
+.kune-AdminContextPanel-inner {
+ background-color: #FFF;
+}
+
+.kune-AdminContextPanel-inner-wrap {
+ margin: 5px;
+}
+
+.kune-EditableLabel {
+
+}
+
+.kune-EditableLabel .kune-EditableLabel-editable {
+
+}
+
+.kune-EditableLabel-high {
+ background-color: #FFFBC1;
+ cursor: pointer;
+}
+
+.kune-EditableLabel-high span {
+ background-color: #FFFBC1;
+}
+
+.kune-EditableLabel a {
+ margin-left: 5px;
+}
+
+.kune-EditableLabel a:link {
+ color: green;
+}
+
+.kune-EditableLabel a:hover {
+ text-decoration: underline;
+}
+
+.kune-EditableLabel a:visited {
+ color: #808000;
+}
+
+.kune-EditableLabel img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+.kune-EditableLabel-editable img {
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+.kune-EditableLabel-editable span {
+ margin: 3px;
+}
+
+.kune-EditableLabel span {
+ margin: 3px;
+}
+
+.kune-BottomIconsTrayPanel {
+ width: 165px;
+ height: 21px;
+ vertical-align: middle;
+ background-color: #EFEFEF;
+}
+
+.kune-TagsPanel-tag {
+ float: left;
+ margin-right: 5px;
+ cursor: pointer;
+}
+
+.kune-Content-Main {
+ margin: 5px;
+}
+
+/* Yahoo ui base.css */
+
+.kune-Content-Main h1 {
+ font-size: 138.5%;
+}
+
+.kune-Content-Main h2 {
+ font-size: 123.1%;
+}
+
+.kune-Content-Main h3 {
+ font-size: 108%;
+}
+
+.kune-Content-Main h1 {
+ margin: 1em 0;
+}
+
+.kune-Content-Main h2 {
+ margin: 1em 0;
+}
+
+.kune-Content-Main h3 {
+ margin: 1em 0;
+}
+
+.kune-Content-Main h1 {
+ font-weight: bold;
+}
+
+.kune-Content-Main h2 {
+ font-weight: bold;
+}
+
+.kune-Content-Main h3 {
+ font-weight: bold;
+}
+
+.kune-Content-Main h4 {
+ font-weight: bold;
+}
+
+.kune-Content-Main h5 {
+ font-weight: bold;
+}
+
+.kune-Content-Main h6 {
+ font-weight: bold;
+}
+
+.kune-Content-Main strong {
+ font-weight: bold;
+}
+
+.kune-Content-Main abbr {
+ border-bottom: 1px dotted #000;
+ cursor: help;
+}
+
+.kune-Content-Main acronym {
+ border-bottom: 1px dotted #000;
+ cursor: help;
+}
+
+.kune-Content-Main em {
+ font-style: italic;
+}
+
+.kune-Content-Main blockquote {
+ margin: 1em;
+}
+
+.kune-Content-Main ul {
+ margin: 1em;
+}
+
+.kune-Content-Main ol {
+ margin: 1em;
+}
+
+.kune-Content-Main dl {
+ margin: 1em;
+}
+
+.kune-Content-Main ol {
+ margin-left: 2em;
+}
+
+.kune-Content-Main ul {
+ margin-left: 2em;
+}
+
+.kune-Content-Main dl {
+ margin-left: 2em;
+}
+
+.kune-Content-Main ol {
+ list-style: decimal outside;
+}
+
+.kune-Content-Main li {
+ list-style: decimal outside;
+}
+
+.kune-Content-Main li {
+ list-style: disc outside;
+}
+
+.kune-Content-Main ul {
+ list-style: disc outside;
+}
+
+
+.kune-Content-Main dl {
+ margin-left: 1em;
+}
+
+.kune-Content-Main dd {
+ margin-left: 1em;
+}
+
+.kune-Content-Main th {
+ border: 1px solid #000;
+ padding: .5em;
+ font-weight: bold;
+ text-align: center;
+}
+
+.kune-Content-Main td {
+ border: 1px solid #000;
+ padding: .5em;
+}
+
+.kune-Content-Main caption {
+ margin-bottom: .5em;
+ text-align: center;
+}
+
+.kune-Content-Main p {
+ margin-bottom: 1em;
+}
+
+.kune-Content-Main fieldset {
+ margin-bottom: 1em;
+}
+.kune-Content-Main table {
+ margin-bottom: 1em;
+}
+
+.kune-Content-Main pre {
+ margin-bottom: 1em;
+}
+
+.kune-Content-Main input[type=text] {
+ width: 12.25em;*width: 11.9em;}
+
+.kune-Content-Main input[type=password] {
+ width: 12.25em;*width: 11.9em;}
+
+.kune-Content-Main textarea {width: 12.25em;*width: 11.9em;}
+
+.search-icon {
+ background-image: url(img/search.gif) !important;
+}
+
+.i18n-icon {
+ background-image: url(img/language.gif) !important;
+}
+
+.chat-icon {
+ background-image: url(img/chat.gif) !important;
+}
+
+.group-icon {
+ background-image: url(img/group.gif) !important;
+}
+
+.user-icon {
+ background-image: url(img/user.gif) !important;
+}
+
+.userf-icon {
+ background-image: url(img/userf.gif) !important;
+}
+
+
+
+
+/* RTE Text editor */
+.kune-TexEditorPanel-TextArea {
+ margin: 3px;
+}
+
+.gwt-RichTextArea { /* border: 1px solid #000;
+ background-color: #FFF; */
+ border: 1px solid #4D4D4D;
+ background-color: #FFF;
+ margin: 5px 0px 5px 10px;
+}
+
+.gwt-RichTextToolbar {
+ /* background-color: #F2F2F2;
+ padding: 5px; */
+ height: 24px;
+ vertical-align: middle;
+}
+
+.gwt-RichTextToolbar table {
+ vertical-align: middle;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton {
+ float: left;
+ margin-top: 2px;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton {
+ float: left;
+ margin-top: 2px;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-up {
+ margin-right: 2px;
+ border: 1px solid #F2F2F2;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-up-hovering {
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #E8F1FF #9daecd #9daecd #e8f1ff;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-down {
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-PushButton-down-hovering {
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-up {
+ margin-right: 2px;
+ border: 1px solid #F2F2F2;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering {
+ margin-right: 2px;
+ border: 1px solid #C3D9FF;
+ border-color: #E8F1FF #9daecd #9daecd #e8f1ff;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-down {
+ margin-right: 2px;
+ background-color: #E8F1FF;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering {
+ margin-right: 2px;
+ background-color: #E8F1FF;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.gwt-RichTextToolbar .x-btn {
+ float: left;
+}
+
+.gwt-RichTextToolbar .kune-Button-Large-lSpace {
+ float: left;
+}
+
+.gwt-RichTextToolbar .kune-Button-Large-lrSpace {
+ float: left;
+}
+
+.RichTextToolbar-menu {
+ float: left;
+ margin-top: 2px;
+}
+
+.RichTextToolbar-menu table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ margin: 0;
+}
+
+.RichTextToolbar-menu .gwt-MenuItem {
+ margin-right: 2px;
+ border: 1px solid #F2F2F2;
+}
+
+.RichTextToolbar-menu .gwt-MenuItem-selected {
+ margin-right: 2px;
+ background-color: #E8F1FF;
+ border: 1px solid #C3D9FF;
+ border-color: #9DAECD #e8f1ff #e8f1ff #9daecd;
+}
+
+.RichTextToolbar-submenu {
+ background-color: #FFFCD5;
+ border: 1px solid #D38D5F;
+ cursor: default;
+}
+
+.RichTextToolbar-submenu .gwt-MenuItem {
+ cursor: default;
+ white-space: nowrap;
+ border: 1px solid #FFFCD5;
+ padding: 0 4px;
+}
+
+.RichTextToolbar-submenu .gwt-MenuItem-selected {
+ background-color: #FFB958;
+ border: 1px solid #C83737;
+}
+
+.kune-WebSafePalette {
+ background-color: #FFF;
+ border: 1px solid #AAA;
+ margin: 1px;
+}
+
+.kune-WebSafePalette td {
+ width: 12px;
+ height: 10px;
+}
+
+
+.k-site-traybar {
+ background: #FFF none repeat scroll 0% 50%;
+}
+
+.k-sitebar .kune-IconHyperlink {
+ white-space: nowrap;
+}
+
+.k-sitebar .kune-IconHyperlink a:link {
+ cursor: pointer;
+ text-decoration: underline;
+ color: #B3B3B3;
+}
+
+.k-sitebar .kune-IconHyperlink a:hover {
+ text-decoration: underline;
+}
+
+.k-sitebar .kune-IconHyperlink a:visited {
+ color: #B3B3B3;
+}
+
+.k-sitebar {
+ margin-right: 10px;
+ height: 16px;
+}
+
+.k-sitebar .gwt-TextBox {
+ border: 1px solid #E4A374;
+ margin: 0 15px 0 3px;
+ padding-left: 3px;
+ color: #B3B3B3;
+}
+
+.k-sitebar .gwt-Hyperlink a {
+ white-space: nowrap;
+ color: #B3B3B3;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.k-sitebar .gwt-PushButton {
+ cursor: pointer;
+}
+
+.k-sitebar-LabelLink {
+ white-space: nowrap;
+ color: #B3B3B3;
+ margin-left: 3px;
+ cursor: pointer;
+ text-decoration: underline;
+}
+
+.k-entity-summary {
+ border-left-color: #FFF;
+ border-left-width: 5px;
+}
+
+.k-EntityTextLogo {
+ border: 2px solid #F2F2F2;
+ height: 60px;
+ margin: 0 0 4px -1px;
+ overflow: hidden;
+ width: 468px;
+}
+
+.k-entitytextlogo .gwt-Label {
+ font-size: 167%;
+ font-weight: 700;
+ margin: 5px;
+ height: 27px;
+}
+
+.k-entitytextlogo-def .gwt-Label {
+ color: #69312F;
+}
+
+.k-entitytextlogo-green .gwt-Label {
+ color: #000080;
+}
+
+.k-entitytextlogo .gwt-Hyperlink a {
+ color: #CCC;
+ font-size: 85%;
+ margin: 5px;
+ text-decoration: underline;
+ white-space: nowrap;
+ background-color: #FFF;
+}
+
+.k-entity-def .x-layout-split {
+ background: #DD8A3D none repeat scroll 0% 50%;
+}
+
+.k-entity-green .x-layout-split {
+ background: #5FD35F none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace .x-layout-split {
+ background: transparent none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace-def .x-layout-split {
+ background: #DEAA87 none repeat scroll 0% 50%;
+}
+
+.k-entityworkspace-green .x-layout-split {
+ background: #DCE8AB none repeat scroll 0% 50%;
+}
+
+.k-entity-title {
+ border-left-style: solid;
+ border-left-width: 2px;
+}
+
+.k-entity-title div {
+ line-height: 22px;
+ white-space: nowrap;
+}
+
+.k-entity-subtitle {
+}
+
+.k-entity-subtitle div {
+ line-height: 22px;
+ white-space: nowrap;
+}
+
+.k-entity-title-rd-def {
+ background: #DD8A3D;
+}
+
+.k-entity-title-rd-green {
+ background: #5FD35F;
+}
+
+.k-entity-title-def {
+ background: #F1BB59 none repeat scroll 0% 50%;
+ border-left-color: #DD8A3D;
+}
+
+.k-entity-title-def div {
+ color: #69312F;
+}
+
+.k-entity-title-green {
+ background: #AFA none repeat scroll 0% 50%;
+ border-left-color: #5FD35F;
+}
+
+.k-entity-title-green div {
+ color: #250;
+}
+
+.k-entity-subtitle-def {
+ background: #DD8A3D none repeat scroll 0% 50%;
+}
+
+.k-entity-subtitle-def div {
+ color: #FFF;
+}
+
+.k-entity-subtitle-green {
+ background: #5FD35F none repeat scroll 0% 50%;
+}
+
+.k-entity-subtitle-green div {
+ color: #FFF;
+}
+
+.k-entity-bottom-rd-def {
+ background: #DD8A3D;
+}
+
+.k-entity-bottom-rd-green {
+ background: #5FD35F;
+}
+
+.k-entitylicensepanel-licensetext {
+ cursor: pointer;
+ margin-left: 5px;
+ text-decoration: underline;
+}
+
+.k-entity-container-def div {
+ background: #FFD09D none repeat scroll 0% 50%;
+}
+
+.k-entity-container-green div {
+ background: #CFA none repeat scroll 0% 50%;
+}
+
+.k-entity-bottom div {
+ line-height: 2em;
+}
+
+.k-entity-bottom-def {
+ background: #DD8A3D;
+}
+
+.k-entity-bottom-def div {
+ color: #FFF;
+}
+
+.k-entity-bottom-green {
+ background: #5FD35F;
+}
+
+.k-entity-bottom-green div {
+ color: #FFF;
+}
+
+.k-toolbar-top-line {
+ border-top-color: rgb( 208, 208, 208 );
+ border-top-style: solid;
+ border-top-width: 1px;
+}
+
+.k-toolbar-bottom-line {
+ border-bottom-color: rgb( 208, 208, 208 );
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+}
+
+.x-toolbar td, .x-toolbar span, .x-toolbar input, .x-toolbar div, .x-toolbar select, .x-toolbar label {
+ white-space: nowrap;
+ font: normal 13px arial, sans;
+ line-height: 19px;
+}
+
+.k-toolbar-sep {
+ padding-top: 4px;
+}
+
+/* Custom gwt-ext styles */
+
+.ytb-sep {
+ background-image: url(../js/ext/resources/images/default/grid/grid-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;
+}
+
+.ytb-spacer {
+ width: 2px;
+}
+
+.x-grid-group-hd {
+ border-bottom: 2px solid grey;
+ cursor: pointer;
+ padding-top: 3px;
+}
+
+/* Drop down */
+
+.k-dropdownouter {
+ background-color: gray;
+}
+
+.k-dropdownouter-members {
+}
+
+.k-dropdownouter-members-def {
+ background-color: #DF5244;
+}
+
+.k-dropdownouter-members-green {
+ background-color: #008000;
+}
+
+.k-dropdownouter-part {
+}
+
+.k-dropdownouter-part-def {
+ background-color: #CA5842;
+}
+
+.k-dropdownouter-part-green {
+ background-color: #00AA00;
+}
+
+.k-dropdownouter-tags {
+}
+
+.k-dropdownouter-tags-def {
+ background-color: #87501E;
+}
+
+.k-dropdownouter-tags-green {
+ background-color: #00D400;
+}
+
+.k-dropdownouter-summary {
+}
+
+.k-dropdownouter-summary-def {
+ background-color: #9F734B;
+}
+
+.k-dropdownouter-summary-green {
+ background-color: #4CE14C;
+}
+
+.k-dropdowninner {
+ margin: 0 3px 1px 3px;
+ background: green;
+ background-color: #FFF;
+ /* padding: 3px; */
+}
+
+.k-dropdownlabel {
+ color: #FFF;
+ cursor: pointer;
+}
+
+.k-dropdownlabel .gwt-Label {
+ margin: 0 5px 0 0;
+ width: 100%;
+}
+
+.k-dropdownlabel img {
+ margin: 0 3px 0 1px;
+}
+
+
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-07-23 04:11:58 UTC (rev 813)
@@ -232,6 +232,8 @@
padding-top: 4px;
}
+/* Custom gwt-ext styles */
+
.ytb-sep {
background-image: url(../js/ext/resources/images/default/grid/grid-split.gif);
background-position: center;
@@ -249,7 +251,15 @@
.ytb-spacer {
width: 2px;
}
+
+.x-grid-group-hd {
+ border-bottom: 2px solid grey;
+ cursor: pointer;
+ padding-top: 3px;
+}
+
/* Drop down */
+
.k-dropdownouter {
background-color: gray;
}
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/richtext.css 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,3 +1,4 @@
+
/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
@@ -3,13 +4,28 @@
http://developer.yahoo.net/yui/license.txt
version: 2.3.1
-*/body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}/*
+*/
+body{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input, textarea, select{font-family:inherit;font-size:inherit;font-weight:inherit;}
+
+/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.3.1
-*/body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}/*
+*/
+body {font:13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:99%;}
+
+
+/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.4.1
-*/h1{font-size:138.5%;}h2{font-size:123.099998%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:700;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:700;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;width:11.9em;}body{font-family:arial, sans;margin:5px;}
\ No newline at end of file
+*/
+h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:bold;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;} em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;*width:11.9em;}
+
+
+body {
+ font-family: arial, sans;
+ margin: 5px;
+}
+
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -21,33 +21,22 @@
package org.ourproject.kune.chat.client;
import org.ourproject.kune.chat.client.actions.AddRoomAction;
-import org.ourproject.kune.chat.client.actions.ChatLoginAction;
-import org.ourproject.kune.chat.client.actions.ChatLogoutAction;
-import org.ourproject.kune.chat.client.actions.InitChatEngineAction;
import org.ourproject.kune.platf.client.extend.ClientModule;
import org.ourproject.kune.platf.client.extend.Register;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
public class ChatClientModule implements ClientModule {
private final Session session;
private final StateManager stateManager;
- private final ChatClientTool chatTool;
public ChatClientModule(final Session session, final StateManager stateManager, final ChatClientTool chatTool) {
- this.session = session;
- this.stateManager = stateManager;
- this.chatTool = chatTool;
+ this.session = session;
+ this.stateManager = stateManager;
}
public void configure(final Register register) {
- register.addAction(WorkspaceEvents.INIT_DATA_RECEIVED, new InitChatEngineAction(chatTool));
- register.addAction(WorkspaceEvents.USER_LOGGED_IN, new ChatLoginAction(chatTool));
- ChatLogoutAction logoutAction = new ChatLogoutAction(chatTool);
- register.addAction(WorkspaceEvents.USER_LOGGED_OUT, logoutAction);
- register.addAction(WorkspaceEvents.STOP_APP, logoutAction);
- register.addAction(ChatEvents.ADD_ROOM, new AddRoomAction(session, stateManager));
+ register.addAction(ChatEvents.ADD_ROOM, new AddRoomAction(session, stateManager));
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,9 +1,11 @@
package org.ourproject.kune.chat.client;
import org.ourproject.kune.platf.client.KunePlatform;
+import org.ourproject.kune.platf.client.app.Application;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import com.calclab.emiteuimodule.client.EmiteUIDialog;
import com.calclab.suco.client.container.Container;
@@ -24,17 +26,16 @@
public void onLoad(final ModuleBuilder builder) {
builder.registerProvider(ChatClientTool.class, new Provider<ChatClientTool>() {
public ChatClientTool get() {
- return new ChatClientTool(builder.getInstance(I18nUITranslationService.class), builder
- .getInstance(EmiteUIDialog.class));
+ return new ChatClientTool(builder.getInstance(Session.class), builder.getInstance(Application.class),
+ builder.getInstance(I18nUITranslationService.class), builder.getInstance(EmiteUIDialog.class),
+ builder.getInstance(WorkspaceSkeleton.class));
}
}, SingletonScope.class);
- final KunePlatform platform = builder.getInstance(KunePlatform.class);
final ChatClientTool chatClientTool = getChatClientTool(builder);
- platform.addTool(chatClientTool);
-
- final Session session = builder.getInstance(Session.class);
- final StateManager stateManager = builder.getInstance(StateManager.class);
- platform.install(new ChatClientModule(session, stateManager, chatClientTool));
+ builder.getInstance(KunePlatform.class).addTool(chatClientTool);
+ builder.getInstance(KunePlatform.class).install(
+ new ChatClientModule(builder.getInstance(Session.class), builder.getInstance(StateManager.class),
+ chatClientTool));
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -20,57 +20,77 @@
package org.ourproject.kune.chat.client;
+import org.ourproject.kune.platf.client.app.Application;
+import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.tool.AbstractClientTool;
import org.ourproject.kune.workspace.client.component.WorkspaceComponent;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import com.calclab.emiteuimodule.client.EmiteUIDialog;
+import com.calclab.suco.client.signal.Slot;
public class ChatClientTool extends AbstractClientTool implements ChatProvider {
public static final String NAME = "chats";
public static final String TYPE_ROOT = "chat.root";
public static final String TYPE_ROOM = "chat.room";
public static final String TYPE_CHAT = "chat.chat";
-
private final ChatToolComponents components;
private ChatEngine chat;
- private final EmiteUIDialog emiteUIDialog;
- private final I18nTranslationService i18n;
- public ChatClientTool(final I18nTranslationService i18n, final EmiteUIDialog emiteUIDialog) {
- super(i18n.t("chat rooms"));
- this.i18n = i18n;
- this.emiteUIDialog = emiteUIDialog;
- components = new ChatToolComponents(emiteUIDialog, i18n);
+ public ChatClientTool(final Session session, final Application application, final I18nTranslationService i18n,
+ final EmiteUIDialog emiteUIDialog, final WorkspaceSkeleton ws) {
+ super(i18n.t("chat rooms"));
+ components = new ChatToolComponents(emiteUIDialog, i18n);
+ session.onInitDataReceived(new Slot<InitDataDTO>() {
+ public void onEvent(final InitDataDTO initData) {
+ final ChatOptions chatOptions = new ChatOptions(initData.getChatHttpBase(), initData.getChatDomain(),
+ initData.getChatRoomHost());
+ chat = new ChatEngineXmpp(emiteUIDialog, chatOptions, i18n, ws);
+ }
+ });
+ application.onApplicationStop(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ chat.logout();
+ }
+ });
+ session.onUserSignOut(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ chat.logout();
+ }
+ });
+ session.onUserSignIn(new Slot<UserInfoDTO>() {
+ public void onEvent(final UserInfoDTO user) {
+ chat.login(user.getChatName(), user.getChatPassword());
+ }
+ });
}
public ChatEngine getChat() {
- return chat;
+ return chat;
}
public WorkspaceComponent getContent() {
- return components.getContent();
+ return components.getContent();
}
public WorkspaceComponent getContext() {
- return components.getContext();
+ return components.getContext();
}
public String getName() {
- return NAME;
+ return NAME;
}
- public void initEngine(final ChatOptions options) {
- this.chat = new ChatEngineXmpp(emiteUIDialog, options, i18n);
- }
-
public void setContent(final StateDTO state) {
- components.getContent().setState(state);
+ components.getContent().setState(state);
}
public void setContext(final StateDTO state) {
- components.getContext().setState(state);
+ components.getContext().setState(state);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -24,7 +24,7 @@
void joinRoom(String roomName, String userAlias);
- void login(String chatName, String chatPassword);
+ void login(String jid, String passwd);
void logout();
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -22,6 +22,7 @@
import java.util.Date;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
import com.calclab.emite.client.xmpp.stanzas.XmppURI;
@@ -31,17 +32,24 @@
import com.calclab.emiteuimodule.client.status.OwnPresence.OwnStatus;
import com.calclab.suco.client.signal.Slot;
import com.google.gwt.user.client.Window;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
class ChatEngineXmpp implements ChatEngine {
private final ChatOptions chatOptions;
private final EmiteUIDialog emiteDialog;
private final I18nTranslationService i18n;
+ private final WorkspaceSkeleton ws;
+ private ToolbarButton traybarButton;
public ChatEngineXmpp(final EmiteUIDialog emiteUIDialog, final ChatOptions chatOptions,
- final I18nTranslationService i18n) {
+ final I18nTranslationService i18n, final WorkspaceSkeleton ws) {
this.emiteDialog = emiteUIDialog;
this.chatOptions = chatOptions;
this.i18n = i18n;
+ this.ws = ws;
}
public ChatOptions getChatOptions() {
@@ -54,24 +62,36 @@
emiteDialog.joinRoom(roomURI);
}
- public void login(final String chatName, final String chatPassword) {
- final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
- // getGwtMetaProperty(GWT_PROPERTY_RELEASE);
- // FIXME, get this from user profile
- final UserChatOptions userChatOptions = new UserChatOptions(chatName + "@" + chatOptions.domain, chatPassword,
- resource, "blue", SubscriptionMode.autoAcceptAll, true);
+ public void login(final String jid, final String passwd) {
+ final UserChatOptions userChatOptions = getUserChatOptions(jid, passwd);
// FIXME: Avatar provider
final AvatarProvider avatarProvider = new AvatarProvider() {
public String getAvatarURL(XmppURI userURI) {
return "images/person-def.gif";
}
};
-
final String initialWindowTitle = Window.getTitle();
chatOptions.userOptions = userChatOptions;
emiteDialog.start(userChatOptions, chatOptions.httpBase, chatOptions.roomHost, avatarProvider, i18n.t("Chat"));
emiteDialog.show(OwnStatus.online);
- // emiteDialog.hide();
+ if (traybarButton == null) {
+ traybarButton = new ToolbarButton();
+ traybarButton.setTooltip(i18n.t("Show/hide the chat window"));
+ traybarButton.setIcon("images/emite-chat.gif");
+ traybarButton.addListener(new ButtonListenerAdapter() {
+ @Override
+ public void onClick(final Button button, final EventObject e) {
+ if (emiteDialog.isVisible()) {
+ emiteDialog.hide();
+ } else {
+ emiteDialog.show();
+ }
+ }
+
+ });
+ ws.getSiteTraybar().addButton(traybarButton);
+ }
+ emiteDialog.hide();
emiteDialog.onChatAttended(new Slot<String>() {
public void onEvent(final String parameter) {
Window.setTitle(initialWindowTitle);
@@ -88,6 +108,17 @@
if (!emiteDialog.isDialogNotStarted()) {
emiteDialog.closeAllChats(false);
emiteDialog.setOwnPresence(OwnStatus.offline);
+ final UserChatOptions userChatOptions = getUserChatOptions("reset at example.com", "");
+ emiteDialog.refreshUserInfo(userChatOptions);
+ chatOptions.userOptions = userChatOptions;
}
}
+
+ private UserChatOptions getUserChatOptions(final String jid, final String passwd) {
+ final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
+ // getGwtMetaProperty(GWT_PROPERTY_RELEASE);
+ // FIXME, get this from user profile
+ return new UserChatOptions(jid + "@" + chatOptions.domain, passwd, resource, "blue",
+ SubscriptionMode.autoAcceptAll, true);
+ }
}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLoginAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatProvider;
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-
-public class ChatLoginAction implements Action<UserInfoDTO> {
- private final ChatProvider provider;
-
- public ChatLoginAction(final ChatProvider provider) {
- this.provider = provider;
- }
-
- public void execute(final UserInfoDTO value) {
- login(value);
- }
-
- private void login(final UserInfoDTO user) {
- provider.getChat().login(user.getChatName(), user.getChatPassword());
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/ChatLogoutAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,37 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatProvider;
-import org.ourproject.kune.platf.client.dispatch.Action;
-
- at SuppressWarnings("unchecked")
-public class ChatLogoutAction implements Action {
- private final ChatProvider provider;
-
- public ChatLogoutAction(final ChatProvider provider) {
- this.provider = provider;
- }
-
- public void execute(final Object value) {
- provider.getChat().logout();
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/actions/InitChatEngineAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.chat.client.actions;
-
-import org.ourproject.kune.chat.client.ChatClientTool;
-import org.ourproject.kune.chat.client.ChatOptions;
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.InitDataDTO;
-
-public class InitChatEngineAction implements Action<InitDataDTO> {
-
- private final ChatClientTool chatTool;
-
- public InitChatEngineAction(final ChatClientTool chatTool) {
- this.chatTool = chatTool;
- }
-
- public void execute(final InitDataDTO value) {
- InitDataDTO initData = value;
- ChatOptions chatOptions = new ChatOptions(initData.getChatHttpBase(), initData.getChatDomain(), initData
- .getChatRoomHost());
- chatTool.initEngine(chatOptions);
- }
-
-}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -28,7 +28,7 @@
builder.registerProvider(DocumentFactory.class, new Provider<DocumentFactory>() {
public DocumentFactory get() {
return new DocumentFactory(builder.getInstance(I18nUITranslationService.class), builder
- .getInstance(Session.class), builder.getInstance(TagsSummary.class), builder
+ .getInstance(Session.class), builder.getProvider(TagsSummary.class), builder
.getInstance(WorkspaceSkeleton.class));
}
}, SingletonScope.class);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/actions/SaveDocumentAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -38,43 +38,44 @@
private final I18nTranslationService i18n;
public SaveDocumentAction(final Session session, final I18nTranslationService i18n) {
- this.session = session;
- this.i18n = i18n;
+ this.session = session;
+ this.i18n = i18n;
}
public void execute(final SaveDocumentActionParams params) {
- save(params);
+ save(params);
}
private void save(final SaveDocumentActionParams params) {
- Site.showProgressSaving();
- ContentServiceAsync server = ContentService.App.getInstance();
- server.save(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), params.getStateDTO()
- .getDocumentId(), params.getStateDTO().getContent(), new AsyncCallback<Integer>() {
- public void onFailure(final Throwable caught) {
- Site.hideProgress();
- try {
- throw caught;
- } catch (final SessionExpiredException e) {
- Site.doLogout();
- MessageBox.alert(i18n.t("Alert"), i18n.t("Your session has expired. Please login again."),
- new AlertCallback() {
- public void execute() {
- Site.doLogin(null);
- }
- });
- } catch (final Throwable e) {
- Site.error(i18n.t("Error saving document. Retrying..."));
- params.getDocumentContent().onSaveFailed();
- }
- }
+ Site.showProgressSaving();
+ final ContentServiceAsync server = ContentService.App.getInstance();
+ server.save(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), params.getStateDTO()
+ .getDocumentId(), params.getStateDTO().getContent(), new AsyncCallback<Integer>() {
+ public void onFailure(final Throwable caught) {
+ // User error codes and KuneErrorHandler
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final SessionExpiredException e) {
+ // FIXME Logout ???
+ MessageBox.alert(i18n.t("Alert"), i18n.t("Your session has expired. Please login again."),
+ new AlertCallback() {
+ public void execute() {
+ // FIXME Login ???
+ }
+ });
+ } catch (final Throwable e) {
+ Site.error(i18n.t("Error saving document. Retrying..."));
+ params.getDocumentContent().onSaveFailed();
+ }
+ }
- public void onSuccess(final Integer result) {
- Site.hideProgress();
- params.getDocumentContent().onSaved();
- }
+ public void onSuccess(final Integer result) {
+ Site.hideProgress();
+ params.getDocumentContent().onSaved();
+ }
- });
+ });
}
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/admin/AdminContextPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -39,15 +39,17 @@
import org.ourproject.kune.workspace.client.sitebar.Site;
import org.ourproject.kune.workspace.client.workspace.TagsSummary;
+import com.calclab.suco.client.container.Provider;
+
public class AdminContextPresenter extends AbstractPresenter implements AdminContext {
private AdminContextView view;
private final Session session;
- private final TagsSummary tags;
+ private final Provider<TagsSummary> tagsSummaryProvider;
- public AdminContextPresenter(final Session session, final TagsSummary tags) {
+ public AdminContextPresenter(final Session session, final Provider<TagsSummary> tagsSummaryProvider) {
this.session = session;
- this.tags = tags;
+ this.tagsSummaryProvider = tagsSummaryProvider;
}
public void doChangeLanguage(final String langCode) {
@@ -110,7 +112,7 @@
server.setTags(session.getUserHash(), currentState.getGroup().getShortName(), currentState.getDocumentId(),
tagsString, new AsyncCallbackSimple<List<TagResultDTO>>() {
public void onSuccess(final List<TagResultDTO> result) {
- tags.setGroupTags(result);
+ tagsSummaryProvider.get().setGroupTags(result);
Site.hideProgress();
}
});
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ui/DocumentFactory.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -55,23 +55,25 @@
import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import org.ourproject.kune.workspace.client.workspace.TagsSummary;
+import com.calclab.suco.client.container.Provider;
+
public class DocumentFactory {
private final I18nTranslationService i18n;
private final Session session;
- private final TagsSummary tags;
+ private final Provider<TagsSummary> tagsSummaryProvider;
private final WorkspaceSkeleton ws;
- public DocumentFactory(final I18nTranslationService i18n, final Session session, final TagsSummary tags,
- final WorkspaceSkeleton ws) {
+ public DocumentFactory(final I18nTranslationService i18n, final Session session,
+ final Provider<TagsSummary> tagsSummaryProvider, final WorkspaceSkeleton ws) {
this.i18n = i18n;
this.session = session;
- this.tags = tags;
+ this.tagsSummaryProvider = tagsSummaryProvider;
this.ws = ws;
}
public AdminContext createAdminContext() {
- final AdminContextPresenter presenter = new AdminContextPresenter(session, tags);
+ final AdminContextPresenter presenter = new AdminContextPresenter(session, tagsSummaryProvider);
final AdminContextView view = new AdminContextPanel(presenter, i18n);
presenter.init(view);
return presenter;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -27,6 +27,8 @@
import org.ourproject.kune.platf.client.tool.ClientTool;
import org.ourproject.kune.workspace.client.workspace.Workspace;
+import com.calclab.suco.client.signal.Slot;
+
public interface Application {
ClientTool getTool(String toolName);
@@ -35,11 +37,10 @@
void init(DefaultDispatcher dispatcher, StateManager stateManager, HashMap<String, ClientTool> tools);
- /**
- * Communicates to every tool the current group
- *
- * @param group
- */
+ void onApplicationStart(Slot<Object> slot);
+
+ void onApplicationStop(Slot<Object> slot);
+
void setGroupState(String groupShortName);
void start();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -25,40 +25,47 @@
import java.util.Map;
import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dispatch.Dispatcher;
+import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.extend.ExtensibleWidgetsManager;
+import org.ourproject.kune.platf.client.rpc.SiteService;
+import org.ourproject.kune.platf.client.rpc.SiteServiceAsync;
import org.ourproject.kune.platf.client.services.ColorTheme;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.services.KuneErrorHandler;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.tool.ClientTool;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
+import org.ourproject.kune.platf.client.ui.WindowUtils;
+import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
import org.ourproject.kune.workspace.client.WorkspaceFactory;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import org.ourproject.kune.workspace.client.workspace.Workspace;
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.signal.Signal;
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
public class ApplicationDefault implements Application {
private final Workspace workspace;
private Map<String, ClientTool> tools;
- private Dispatcher dispatcher;
+ private final Session session;
+ private final Signal<Object> onApplicationStart;
+ private final Signal<Object> onApplicationStop;
+ private final WorkspaceSkeleton ws;
private StateManager stateManager;
public ApplicationDefault(final Session session, final ExtensibleWidgetsManager extensionPointManager,
- final I18nTranslationService i18n, final ColorTheme colorTheme, final KuneErrorHandler errorHandler) {
+ final I18nTranslationService i18n, final ColorTheme colorTheme, final KuneErrorHandler errorHandler,
+ final WorkspaceSkeleton ws) {
+ this.session = session;
+ this.ws = ws;
workspace = WorkspaceFactory.createWorkspace(session, extensionPointManager, i18n, colorTheme, errorHandler);
tools = new HashMap<String, ClientTool>();
- // DesktopView desktop = WorkspaceFactory.createDesktop(workspace, new
- // SiteBarListener() {
- // public void onChangeState(StateToken token) {
- // stateManager.setState(token);
- // }
- //
- // public void onUserLoggedOut() {
- // dispatcher.fire(WorkspaceEvents.USER_LOGGED_OUT, null);
- // }
- // }, session);
- // desktop.attach();
-
+ this.onApplicationStart = new Signal<Object>("onApplicationStart");
+ this.onApplicationStop = new Signal<Object>("onApplicationStop");
}
public ClientTool getTool(final String toolName) {
@@ -71,12 +78,19 @@
public void init(final DefaultDispatcher dispatcher, final StateManager stateManager,
final HashMap<String, ClientTool> tools) {
- this.dispatcher = dispatcher;
this.stateManager = stateManager;
this.tools = tools;
workspace.attachTools(tools.values().iterator());
}
+ public void onApplicationStart(final Slot<Object> slot) {
+ onApplicationStart.add(slot);
+ }
+
+ public void onApplicationStop(final Slot<Object> slot) {
+ onApplicationStop.add(slot);
+ }
+
public void setGroupState(final String groupShortName) {
final Iterator<ClientTool> iterator = tools.values().iterator();
while (iterator.hasNext()) {
@@ -86,10 +100,46 @@
}
public void start() {
- dispatcher.fireDeferred(WorkspaceEvents.START_APP, null);
+ onApplicationStart.fire(null);
+ PrefetchUtilities.preFetchImpImages();
+ getInitData();
+ final Timer prefetchTimer = new Timer() {
+ public void run() {
+ PrefetchUtilities.doTasksDeferred(workspace);
+ }
+ };
+ prefetchTimer.schedule(20000);
}
public void stop() {
- dispatcher.fire(WorkspaceEvents.STOP_APP, null);
+ onApplicationStop.fire(null);
}
+
+ private void getInitData() {
+ final SiteServiceAsync server = SiteService.App.getInstance();
+ server.getInitData(session.getUserHash(), new AsyncCallback<InitDataDTO>() {
+ public void onFailure(final Throwable error) {
+ Site.error("Error fetching initial data");
+ Log.debug(error.getMessage());
+ ws.unMask();
+ }
+
+ public void onSuccess(final InitDataDTO initData) {
+ checkChatDomain(initData.getChatDomain());
+ session.setInitData(initData);
+ session.setCurrentUserInfo(initData.getUserInfo());
+ stateManager.reload();
+ ws.unMask();
+ }
+
+ private void checkChatDomain(final String chatDomain) {
+ final String httpDomain = WindowUtils.getLocation().getHostName();
+ if (!chatDomain.equals(httpDomain)) {
+ Log.error("Your http domain (" + httpDomain + ") is different from the chat domain (" + chatDomain
+ + "). This will produce problems with the chat functionality. "
+ + "Check kune.properties on the server.");
+ }
+ }
+ });
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -34,24 +34,32 @@
import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import com.calclab.suco.client.container.Provider;
+import com.calclab.suco.client.signal.Signal;
+import com.calclab.suco.client.signal.Slot;
import com.google.gwt.core.client.GWT;
public class KuneErrorHandler {
private final Session session;
private final I18nTranslationService i18n;
private final Provider<WorkspaceSkeleton> wsProvider;
+ private final Signal<Object> onSessionExpired;
public KuneErrorHandler(final Session session, final I18nTranslationService i18n,
final Provider<WorkspaceSkeleton> wsProvider) {
this.session = session;
this.i18n = i18n;
this.wsProvider = wsProvider;
+ this.onSessionExpired = new Signal<Object>("onSessionExpired");
}
public WorkspaceSkeleton getWorkspaceSkeleton() {
return wsProvider.get();
}
+ public void onSessionExpired(final Slot<Object> slot) {
+ onSessionExpired.add(slot);
+ }
+
public void process(final Throwable caught) {
Site.hideProgress();
try {
@@ -89,7 +97,7 @@
}
private void doSessionExpired() {
- Site.doLogout();
+ onSessionExpired.fire(null);
getWorkspaceSkeleton().showAlertMessage(i18n.t("Session expired"),
i18n.t("Your session has expired. Please login again."));
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -5,9 +5,9 @@
import org.ourproject.kune.platf.client.KunePlatform;
import org.ourproject.kune.platf.client.app.Application;
import org.ourproject.kune.platf.client.app.ApplicationDefault;
-import org.ourproject.kune.platf.client.app.HistoryWrapper;
import org.ourproject.kune.platf.client.app.HistoryWrapperImpl;
import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.extend.ExtensibleWidgetsManager;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.ContentService;
@@ -18,16 +18,24 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.state.StateManagerDefault;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.NewGroup;
+import org.ourproject.kune.workspace.client.newgroup.NewGroupPresenter;
+import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
import org.ourproject.kune.workspace.client.presence.ui.GroupSummaryPanel;
import org.ourproject.kune.workspace.client.search.SiteSearcher;
import org.ourproject.kune.workspace.client.search.SiteSearcherPanel;
import org.ourproject.kune.workspace.client.search.SiteSearcherPresenter;
import org.ourproject.kune.workspace.client.search.SiteSearcherView;
import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
+import org.ourproject.kune.workspace.client.sitebar.login.SignIn;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPanel;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPresenter;
import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessage;
import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessagePanel;
import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessagePresenter;
import org.ourproject.kune.workspace.client.sitebar.msg.SiteMessageView;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryPanelNew;
import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryPresenterNew;
import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummaryViewNew;
@@ -83,6 +91,7 @@
import com.calclab.suco.client.modules.Module;
import com.calclab.suco.client.modules.ModuleBuilder;
import com.calclab.suco.client.scopes.SingletonScope;
+import com.calclab.suco.client.signal.Slot;
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.History;
@@ -117,7 +126,7 @@
builder.registerProvider(Session.class, new Provider<Session>() {
public Session get() {
- return new SessionImpl(Cookies.getCookie("userHash"), initialLang);
+ return new SessionImpl(Cookies.getCookie(Site.USERHASH), initialLang);
}
}, SingletonScope.class);
@@ -168,19 +177,19 @@
}
}, SingletonScope.class);
+ final WorkspaceSkeleton ws = builder.getInstance(WorkspaceSkeleton.class);
+ final Images images = builder.getInstance(Images.class);
+
builder.registerProvider(Application.class, new Provider<Application>() {
public Application get() {
final Session session = builder.getInstance(Session.class);
final ExtensibleWidgetsManager extensionPointManager = builder
.getInstance(ExtensibleWidgetsManager.class);
return new ApplicationDefault(session, extensionPointManager, i18n, builder
- .getInstance(ColorTheme.class), builder.getInstance(KuneErrorHandler.class));
+ .getInstance(ColorTheme.class), builder.getInstance(KuneErrorHandler.class), ws);
}
}, SingletonScope.class);
- final WorkspaceSkeleton ws = builder.getInstance(WorkspaceSkeleton.class);
- final Images images = builder.getInstance(Images.class);
-
builder.registerProvider(SitePublicSpaceLink.class, new Provider<SitePublicSpaceLink>() {
public SitePublicSpaceLink get() {
final SitePublicSpaceLinkPresenter presenter = new SitePublicSpaceLinkPresenter();
@@ -220,8 +229,9 @@
builder.registerProvider(SiteSignInLink.class, new Provider<SiteSignInLink>() {
public SiteSignInLink get() {
- final SiteSignInLinkPresenter presenter = new SiteSignInLinkPresenter();
- final SiteSignInLinkPanel panel = new SiteSignInLinkPanel(presenter, ws);
+ final SiteSignInLinkPresenter presenter = new SiteSignInLinkPresenter(builder
+ .getInstance(Session.class));
+ final SiteSignInLinkPanel panel = new SiteSignInLinkPanel(presenter, i18n, ws);
presenter.init(panel);
return presenter;
}
@@ -229,8 +239,10 @@
builder.registerProvider(SiteSignOutLink.class, new Provider<SiteSignOutLink>() {
public SiteSignOutLink get() {
- final SiteSignOutLinkPresenter presenter = new SiteSignOutLinkPresenter();
- final SiteSignOutLinkPanel panel = new SiteSignOutLinkPanel(presenter, ws);
+ final SiteSignOutLinkPresenter presenter = new SiteSignOutLinkPresenter(builder
+ .getInstance(Session.class), UserService.App.getInstance(), builder
+ .getInstance(KuneErrorHandler.class));
+ final SiteSignOutLinkPanel panel = new SiteSignOutLinkPanel(presenter, i18n, ws);
presenter.init(panel);
return presenter;
}
@@ -281,9 +293,27 @@
}
}, SingletonScope.class);
+ builder.registerProvider(SignIn.class, new Provider<SignIn>() {
+ public SignIn get() {
+ final SignInPresenter presenter = new SignInPresenter(builder.getInstance(Session.class), builder
+ .getInstance(StateManager.class), i18n, UserService.App.getInstance());
+ final SignInPanel view = new SignInPanel(presenter, i18n, ws);
+ presenter.init(view);
+ return presenter;
+ }
+ }, SingletonScope.class);
+
+ builder.registerProvider(NewGroup.class, new Provider<NewGroup>() {
+ public NewGroup get() {
+ final NewGroupPresenter presenter = new NewGroupPresenter(null, i18n);
+ final NewGroupPanel view = new NewGroupPanel(presenter, i18n);
+ presenter.init(view);
+ return presenter;
+ }
+ }, SingletonScope.class);
+
builder.getInstance(SitePublicSpaceLink.class);
builder.getInstance(SiteSignInLink.class);
-
builder.getInstance(SiteSignOutLink.class);
builder.getInstance(SiteNewGroupLink.class);
builder.getInstance(SiteSearch.class);
@@ -346,6 +376,16 @@
}
}, SingletonScope.class);
+ builder.registerProvider(StateManager.class, new Provider<StateManager>() {
+ public StateManager get() {
+ final StateManagerDefault stateManager = new StateManagerDefault(new ContentProviderImpl(
+ ContentService.App.getInstance()), builder.getInstance(Session.class),
+ new HistoryWrapperImpl(), builder.getInstance(WorkspaceManager.class));
+ History.addHistoryListener(stateManager);
+ return stateManager;
+ }
+ }, SingletonScope.class);
+
builder.registerProvider(GroupMembersSummary.class, new Provider<GroupMembersSummary>() {
public GroupMembersSummary get() {
final GroupMembersSummaryPresenterNew presenter = new GroupMembersSummaryPresenterNew(i18n, builder
@@ -387,23 +427,16 @@
}
}, SingletonScope.class);
+ // Register of tokens like "signin", "newgroup", "translate" etcetera
+ builder.getInstance(StateManager.class).addSiteToken(SiteToken.signin.toString(), new Slot<StateToken>() {
+ public void onEvent(final StateToken previousStateToken) {
+ builder.getInstance(SignIn.class).doSignIn(previousStateToken);
+ }
+ });
+
// builder.registerProvider(type, new Provider<>() {},
- // SingletonScope.class);
+ // SingletonScope.class)
- builder.registerProvider(StateManager.class, new Provider<StateManager>() {
- public StateManager get() {
- final Session session = builder.getInstance(Session.class);
- final ContentProviderImpl provider = new ContentProviderImpl(ContentService.App.getInstance());
- final HistoryWrapper historyWrapper = new HistoryWrapperImpl();
- final Application application = builder.getInstance(Application.class);
- final WorkspaceManager wm = builder.getInstance(WorkspaceManager.class);
- final StateManagerDefault stateManager = new StateManagerDefault(provider, application, session,
- historyWrapper, wm);
- History.addHistoryListener(stateManager);
- return stateManager;
- }
- }, SingletonScope.class);
-
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,7 @@
/*
*
+ * This file is part of kune.
* Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -27,6 +27,7 @@
import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.dto.LicenseDTO;
import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import com.calclab.suco.client.signal.Slot;
@@ -67,6 +68,12 @@
void onInitDataReceived(Slot<InitDataDTO> slot);
+ void onUserSignIn(Slot<UserInfoDTO> slot);
+
+ void onUserSignOut(Slot<Object> slot);
+
+ void setCurrentUserInfo(UserInfoDTO currentUserInfo);
+
void setUserHash(String userHash);
}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionImpl.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -29,32 +29,31 @@
import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.dto.LicenseDTO;
import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import com.calclab.suco.client.signal.Signal;
import com.calclab.suco.client.signal.Slot;
-/**
- * RESPONSABILITIES: - Store the user's application state - Generates URLable's
- * historyTokens
- *
- * @author danigb
- *
- */
public class SessionImpl implements Session {
private String userHash;
+ private InitDataDTO initData;
+ private UserInfoDTO currentUserInfo;
private Object[][] languagesArray;
private Object[][] countriesArray;
private Object[][] timezonesArray;
private StateDTO currentState;
private I18nLanguageDTO currentLanguage;
- private InitDataDTO initData;
private final Signal<InitDataDTO> onInitDataReceived;
+ private final Signal<UserInfoDTO> onUserSignIn;
+ private final Signal<Object> onUserSignOut;
public SessionImpl(final String userHash, final I18nLanguageDTO initialLanguage) {
this.userHash = userHash;
currentLanguage = initialLanguage;
languagesArray = null;
this.onInitDataReceived = new Signal<InitDataDTO>("initDataReceived");
+ this.onUserSignIn = new Signal<UserInfoDTO>("onUserSignIn");
+ this.onUserSignOut = new Signal<Object>("onUserSignOut");
}
public List<I18nCountryDTO> getCountries() {
@@ -76,6 +75,10 @@
return currentState;
}
+ public UserInfoDTO getCurrentUserInfo() {
+ return currentUserInfo;
+ }
+
public List<I18nLanguageSimpleDTO> getLanguages() {
return initData.getLanguages();
}
@@ -110,6 +113,14 @@
onInitDataReceived.add(slot);
}
+ public void onUserSignIn(final Slot<UserInfoDTO> slot) {
+ onUserSignIn.add(slot);
+ }
+
+ public void onUserSignOut(final Slot<Object> slot) {
+ onUserSignOut.add(slot);
+ }
+
public void setCurrent(final StateDTO currentState) {
this.currentState = currentState;
}
@@ -122,6 +133,15 @@
this.currentState = currentState;
}
+ public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) {
+ this.currentUserInfo = currentUserInfo;
+ if (currentUserInfo != null) {
+ onUserSignIn.fire(currentUserInfo);
+ } else {
+ onUserSignOut.fire(null);
+ }
+ }
+
public void setInitData(final InitDataDTO initData) {
this.initData = initData;
onInitDataReceived.fire(initData);
@@ -132,9 +152,9 @@
}
private Object[][] mapCountries() {
- final Object[][] objs = new Object[getCountries().size()][1];
+ final Object[][] objs = new Object[initData.getCountries().size()][1];
int i = 0;
- for (final Iterator<I18nCountryDTO> iterator = getCountries().iterator(); iterator.hasNext();) {
+ for (final Iterator<I18nCountryDTO> iterator = initData.getCountries().iterator(); iterator.hasNext();) {
final I18nCountryDTO country = iterator.next();
final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
objs[i++] = obj;
@@ -143,9 +163,9 @@
}
private Object[][] mapLangs() {
- final Object[][] objs = new Object[getLanguages().size()][1];
+ final Object[][] objs = new Object[initData.getLanguages().size()][1];
int i = 0;
- for (final Iterator<I18nLanguageSimpleDTO> iterator = getLanguages().iterator(); iterator.hasNext();) {
+ for (final Iterator<I18nLanguageSimpleDTO> iterator = initData.getLanguages().iterator(); iterator.hasNext();) {
final I18nLanguageSimpleDTO language = iterator.next();
final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
objs[i++] = obj;
@@ -154,9 +174,9 @@
}
private void mapTimezones() {
- timezonesArray = new Object[getTimezones().length][1];
+ timezonesArray = new Object[initData.getTimezones().length][1];
for (int i = 0; i < getTimezones().length; i++) {
- final Object[] obj = new Object[] { getTimezones()[i] };
+ final Object[] obj = new Object[] { initData.getTimezones()[i] };
timezonesArray[i] = obj;
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -24,16 +24,21 @@
import org.ourproject.kune.platf.client.dto.StateDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
+import com.calclab.suco.client.signal.Slot;
import com.google.gwt.user.client.HistoryListener;
public interface StateManager extends HistoryListener {
+ void addSiteToken(String token, Slot<StateToken> whenToken);
+
void gotoToken(String token);
void reload();
void reloadContextAndTitles();
+ void removeSiteToken(String token);
+
void setRetrievedState(StateDTO content);
void setSocialNetwork(SocialNetworkResultDTO socialNet);
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -20,65 +20,73 @@
package org.ourproject.kune.platf.client.state;
-import org.ourproject.kune.platf.client.app.Application;
+import java.util.HashMap;
+
import org.ourproject.kune.platf.client.app.HistoryWrapper;
-import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dto.GroupDTO;
import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
import org.ourproject.kune.platf.client.dto.StateDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
-import org.ourproject.kune.platf.client.tool.ClientTool;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
import org.ourproject.kune.workspace.client.sitebar.Site;
import org.ourproject.kune.workspace.client.ui.newtmp.WorkspaceManager;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.signal.Slot;
+
public class StateManagerDefault implements StateManager {
- private final Application app;
- private final ContentProvider provider;
- private final Workspace workspace;
+ private final ContentProvider contentProvider;
private StateDTO oldState;
private final Session session;
private final HistoryWrapper history;
- private final WorkspaceManager ws;
+ private final WorkspaceManager workspaceManager;
+ private final HashMap<String, Slot<StateToken>> siteTokens;
- public StateManagerDefault(final ContentProvider provider, final Application app, final Session session,
- final HistoryWrapper history, final WorkspaceManager ws) {
- this.provider = provider;
- this.app = app;
+ public StateManagerDefault(final ContentProvider contentProvider, final Session session,
+ final HistoryWrapper history, final WorkspaceManager workspaceManager) {
+ this.contentProvider = contentProvider;
this.session = session;
this.history = history;
- this.ws = ws;
- this.workspace = app.getWorkspace();
+ this.workspaceManager = workspaceManager;
this.oldState = null;
+ session.onUserSignIn(new Slot<UserInfoDTO>() {
+ public void onEvent(final UserInfoDTO parameter) {
+ restorePreviousState();
+ }
+ });
+ session.onUserSignOut(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ reload();
+ }
+ });
+ siteTokens = new HashMap<String, Slot<StateToken>>();
}
+ public void addSiteToken(final String token, final Slot<StateToken> slot) {
+ siteTokens.put(token, slot);
+ }
+
public void gotoToken(final String token) {
setState(new StateToken(token));
}
public void onHistoryChanged(final String historyToken) {
- String oldStateEncoded = "";
- if (oldState != null) {
- oldStateEncoded = oldState.getStateToken().getEncoded();
- }
- if (historyToken.equals(Site.NEWGROUP_TOKEN)) {
- Site.doNewGroup(oldStateEncoded);
- } else if (historyToken.equals(Site.LOGIN_TOKEN)) {
- Site.doLogin(oldStateEncoded);
- } else if (historyToken.equals(Site.TRANSLATE_TOKEN)) {
- DefaultDispatcher.getInstance().fire(WorkspaceEvents.SHOW_TRANSLATOR, null);
- } else if (historyToken.equals(Site.FIXME_TOKEN)) {
+ final Slot<StateToken> tokenSlot = siteTokens.get(historyToken);
+ Log.debug("history token: " + historyToken);
+ if (tokenSlot == null) {
+ onHistoryChanged(new StateToken(historyToken));
+ } else {
+ StateToken stateToken;
if (oldState == null) {
- onHistoryChanged(new StateToken());
+ // Starting with some token like "signin": load defContent also
+ stateToken = new StateToken();
+ onHistoryChanged(stateToken);
} else {
- loadContent(oldState);
+ stateToken = oldState.getStateToken();
}
- } else {
- onHistoryChanged(new StateToken(historyToken));
+ tokenSlot.onEvent(stateToken);
}
}
@@ -92,21 +100,25 @@
}
public void reloadContextAndTitles() {
- provider.getContent(session.getUserHash(), new StateToken(history.getToken()),
+ contentProvider.getContent(session.getUserHash(), new StateToken(history.getToken()),
new AsyncCallbackSimple<StateDTO>() {
public void onSuccess(final StateDTO newStateDTO) {
loadContextOnly(newStateDTO);
oldState = newStateDTO;
- workspace.getContentTitleComponent().setState(oldState);
- workspace.getContentSubTitleComponent().setState(oldState);
+ // workspace.getContentTitleComponent().setState(oldState);
+ // workspace.getContentSubTitleComponent().setState(oldState);
Site.hideProgress();
}
});
}
+ public void removeSiteToken(final String token) {
+ siteTokens.remove(token);
+ }
+
public void setRetrievedState(final StateDTO content) {
final StateToken state = content.getStateToken();
- provider.cache(state, content);
+ contentProvider.cache(state, content);
setState(state);
}
@@ -120,7 +132,7 @@
final ParticipationDataDTO userParticipation = socialNet.getUserParticipation();
state.setGroupMembers(groupMembers);
state.setParticipation(userParticipation);
- ws.setSocialNetwork(state);
+ workspaceManager.setSocialNetwork(state);
}
}
@@ -130,46 +142,55 @@
private void loadContent(final StateDTO state) {
session.setCurrent(state);
- final GroupDTO group = state.getGroup();
- app.setGroupState(group.getShortName());
- final boolean isAdmin = state.getGroupRights().isAdministrable();
- if (isAdmin) {
- workspace.getThemeMenuComponent().setVisible(true);
- } else {
- workspace.getThemeMenuComponent().setVisible(false);
- }
- workspace.showGroup(group, isAdmin);
+ workspaceManager.setState(state);
+ // final GroupDTO group = state.getGroup();
+ // app.setGroupState(group.getShortName());
+ // final boolean isAdmin = state.getGroupRights().isAdministrable();
+ // if (isAdmin) {
+ // workspace.getThemeMenuComponent().setVisible(true);
+ // } else {
+ // workspace.getThemeMenuComponent().setVisible(false);
+ // }
+ // workspace.showGroup(group, isAdmin);
- final String toolName = state.getToolName();
- workspace.setTool(toolName);
+ // final String toolName = state.getToolName();
+ // workspace.setTool(toolName);
- final ClientTool clientTool = app.getTool(toolName);
- clientTool.setContent(state);
- clientTool.setContext(state);
- ws.setState(state);
- workspace.getContentTitleComponent().setState(state);
- workspace.getContentSubTitleComponent().setState(state);
- workspace.getContentBottomToolBarComponent().setRate(state, session.isLogged());
- workspace.setContent(clientTool.getContent());
- workspace.setContext(clientTool.getContext());
- workspace.getLicenseComponent().setLicense(state);
+ // final ClientTool clientTool = app.getTool(toolName);
+ // clientTool.setContent(state);
+ // clientTool.setContext(state);
+ // workspace.getContentTitleComponent().setState(state);
+ // workspace.getContentSubTitleComponent().setState(state);
+ // workspace.getContentBottomToolBarComponent().setRate(state,
+ // session.isLogged());
+ // workspace.setContent(clientTool.getContent());
+ // workspace.setContext(clientTool.getContext());
+ // workspace.getLicenseComponent().setLicense(state);
Site.hideProgress();
}
private void loadContextOnly(final StateDTO state) {
session.setCurrent(state);
- final String toolName = state.getToolName();
- final ClientTool clientTool = app.getTool(toolName);
- clientTool.setContext(state);
- workspace.setContext(clientTool.getContext());
+ // /final String toolName = state.getToolName();
+ // /final ClientTool clientTool = app.getTool(toolName);
+ // /clientTool.setContext(state);
+ // /workspace.setContext(clientTool.getContext());
}
private void onHistoryChanged(final StateToken newState) {
- provider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() {
+ contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() {
public void onSuccess(final StateDTO newStateDTO) {
loadContent(newStateDTO);
oldState = newStateDTO;
}
});
}
+
+ private void restorePreviousState() {
+ if (oldState == null) {
+ onHistoryChanged(new StateToken());
+ } else {
+ loadContent(oldState);
+ }
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceClientModule.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -35,17 +35,10 @@
import org.ourproject.kune.workspace.client.actions.DetachFromExtensibleWidgetAction;
import org.ourproject.kune.workspace.client.actions.DisableRateItAction;
import org.ourproject.kune.workspace.client.actions.EnableRateItAction;
-import org.ourproject.kune.workspace.client.actions.InitAction;
-import org.ourproject.kune.workspace.client.actions.LoggedInAction;
-import org.ourproject.kune.workspace.client.actions.LoggedOutAction;
import org.ourproject.kune.workspace.client.actions.OnlyCheckUserSessionAction;
import org.ourproject.kune.workspace.client.actions.RateContentAction;
import org.ourproject.kune.workspace.client.actions.RecalculateWorkspaceAction;
import org.ourproject.kune.workspace.client.actions.ReloadContextAction;
-import org.ourproject.kune.workspace.client.actions.StopAction;
-import org.ourproject.kune.workspace.client.actions.UserLoginAction;
-import org.ourproject.kune.workspace.client.actions.UserLogoutAction;
-import org.ourproject.kune.workspace.client.actions.UserRegisterAction;
import org.ourproject.kune.workspace.client.actions.i18n.DoTranslationAction;
import org.ourproject.kune.workspace.client.actions.i18n.GetLexiconAction;
import org.ourproject.kune.workspace.client.actions.i18n.GetTranslationAction;
@@ -81,10 +74,6 @@
}
public void configure(final Register register) {
- register.addAction(WorkspaceEvents.START_APP, new InitAction(session, dispacher, workspace));
- register.addAction(WorkspaceEvents.STOP_APP, new StopAction(workspace));
- register.addAction(WorkspaceEvents.USER_LOGGED_IN, new LoggedInAction(session, stateManager, i18n));
- register.addAction(WorkspaceEvents.USER_LOGGED_OUT, new LoggedOutAction(session, stateManager));
register.addAction(WorkspaceEvents.ONLY_CHECK_USER_SESSION, new OnlyCheckUserSessionAction(session));
register.addAction(PlatformEvents.ATTACH_TO_EXTENSIBLE_WIDGET, new AttachToExtensibleWidgetAction(workspace));
register.addAction(PlatformEvents.DETACH_FROM_EXTENSIBLE_WIDGET,
@@ -115,9 +104,6 @@
register.addAction(WorkspaceEvents.SHOW_TRANSLATOR, new ShowTranslatorAction(session, workspace, i18n));
register.addAction(WorkspaceEvents.DO_TRANSLATION, new DoTranslationAction(session, i18n));
register.addAction(WorkspaceEvents.GET_LEXICON, new GetLexiconAction(i18n));
- register.addAction(WorkspaceEvents.USER_LOGIN, new UserLoginAction());
- register.addAction(WorkspaceEvents.USER_LOGOUT, new UserLogoutAction(session));
- register.addAction(WorkspaceEvents.USER_REGISTER, new UserRegisterAction());
register.addAction(WorkspaceEvents.CREATE_NEW_GROUP, new CreateNewGroupAction(session));
register.addAction(WorkspaceEvents.RELOAD_CONTEXT, new ReloadContextAction(stateManager));
register.addAction(WorkspaceEvents.RECALCULATE_WORKSPACE_SIZE, new RecalculateWorkspaceAction(workspace));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceEvents.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -21,12 +21,7 @@
package org.ourproject.kune.workspace.client;
public interface WorkspaceEvents {
- public static final String START_APP = "platf.StartApplication";
- public static final String STOP_APP = "platf.StopApplication";
- public static final String USER_LOGGED_IN = "ws.UserLoggedIn";
- public static final String USER_LOGGED_OUT = "ws.UserLoggedOut";
public static final String ONLY_CHECK_USER_SESSION = "ws_OnlyCheckUserSession";
- public static final String INIT_DATA_RECEIVED = "ws.InitDataReceived";
public static final String REQ_JOIN_GROUP = "ws.RequestJoinGroup";
public static final String DEL_MEMBER = "ws.DeleteMember";
public static final String DENY_JOIN_GROUP = "ws.DenyJoinGroup";
@@ -48,9 +43,6 @@
public static final String SHOW_SEARCHER = "ws.ShowSearcher";
public static final String GET_TRANSLATION = "i18n.GetTranslation";
public static final String DO_TRANSLATION = "i18n.doTranslation";
- public static final String USER_LOGIN = "ws.UserLogin";
- public static final String USER_LOGOUT = "ws.UserLogout";
- public static final String USER_REGISTER = "ws.UserRegister";
public static final String CREATE_NEW_GROUP = "ws.CreateNewGroup";
public static final String RELOAD_CONTEXT = "ws.ReoloadContext";
public static final String WS_SPLITTER_STARTRESIZING = "ws.SplitterStartResizing";
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/InitAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,94 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dispatch.Dispatcher;
-import org.ourproject.kune.platf.client.dto.InitDataDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.SiteService;
-import org.ourproject.kune.platf.client.rpc.SiteServiceAsync;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.ui.WindowUtils;
-import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class InitAction implements Action<Object> {
- private final Session session;
- private final Dispatcher dispatcher;
- private final Workspace workspace;
-
- public InitAction(final Session session, final Dispatcher dispatcher, final Workspace workspace) {
- this.session = session;
- this.dispatcher = dispatcher;
- this.workspace = workspace;
- }
-
- public void execute(final Object value) {
- PrefetchUtilities.preFetchImpImages();
- getInitData();
- dispatcher.fire(WorkspaceEvents.RECALCULATE_WORKSPACE_SIZE, null);
- final Timer prefetchTimer = new Timer() {
- public void run() {
- PrefetchUtilities.doTasksDeferred(workspace);
- }
- };
- prefetchTimer.schedule(20000);
- }
-
- private void getInitData() {
- final SiteServiceAsync server = SiteService.App.getInstance();
- server.getInitData(session.getUserHash(), new AsyncCallback<InitDataDTO>() {
- public void onFailure(final Throwable error) {
- Site.error("Error fetching initial data");
- Log.debug(error.getMessage());
- }
-
- public void onSuccess(final InitDataDTO initData) {
- checkChatDomain(initData.getChatDomain());
- session.setInitData(initData);
- final UserInfoDTO currentUser = initData.getUserInfo();
- // use signals:
- dispatcher.fire(WorkspaceEvents.INIT_DATA_RECEIVED, initData);
- if (currentUser == null) {
- dispatcher.fire(WorkspaceEvents.USER_LOGGED_OUT, null);
- } else {
- dispatcher.fire(WorkspaceEvents.USER_LOGGED_IN, currentUser);
- }
- }
-
- private void checkChatDomain(final String chatDomain) {
- final String httpDomain = WindowUtils.getLocation().getHostName();
- if (!chatDomain.equals(httpDomain)) {
- Log.error("Your http domain (" + httpDomain + ") is different from the chat domain (" + chatDomain
- + "). This will produce problems with the chat functionality. "
- + "Check kune.properties on the server.");
- }
- }
- });
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedInAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,65 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
-
-import com.google.gwt.user.client.Cookies;
-
-public class LoggedInAction implements Action<UserInfoDTO> {
- private final Session session;
- private final StateManager stateManager;
- private final I18nUITranslationService i18n;
-
- public LoggedInAction(final Session session, final StateManager stateManager, final I18nUITranslationService i18n) {
- this.session = session;
- this.stateManager = stateManager;
- this.i18n = i18n;
- }
-
- public void execute(final UserInfoDTO value) {
- onLoggedIn(value);
- }
-
- private void onLoggedIn(final UserInfoDTO userInfoDTO) {
- setCookie(userInfoDTO);
- session.setUserHash(userInfoDTO.getUserHash());
- // FIXME ite.sitebar.showLoggedUser(userInfoDTO);
- final I18nLanguageDTO language = userInfoDTO.getLanguage();
- stateManager.reload();
- i18n.changeCurrentLanguage(language.getCode());
- session.setCurrentLanguage(language);
- }
-
- private void setCookie(final UserInfoDTO userInfoDTO) {
- // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
- final String sessionId = userInfoDTO.getUserHash();
- final long duration = Session.SESSION_DURATION;
- final Date expires = new Date(System.currentTimeMillis() + duration);
- Cookies.setCookie("userHash", sessionId, expires, null, "/", false);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/LoggedOutAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,52 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-
-import com.google.gwt.user.client.Cookies;
-
- at SuppressWarnings("unchecked")
-public class LoggedOutAction implements Action {
-
- private final Session session;
- private final StateManager stateManager;
-
- public LoggedOutAction(final Session session, final StateManager stateManager) {
- this.session = session;
- this.stateManager = stateManager;
- }
-
- public void execute(final Object value) {
- // FIXME: Remove cookie doesn't works in all browsers, know issue:
- // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded86778ee56690/515dc513c7d085eb?lnk=st&q=remove+cookie#515dc513c7d085eb
- // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCookie
- Cookies.removeCookie("userHash");
- // Workaround:
- Cookies.setCookie("userHash", null, new Date(0), null, "/", false);
- session.setUserHash(null);
- // FIXME Site.sitebar.showLoggedUser(null);
- stateManager.reload();
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/StopAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.workspace.client.workspace.Workspace;
-
- at SuppressWarnings("unchecked")
-public class StopAction implements Action {
-
- private final Workspace workspace;
-
- public StopAction(final Workspace workspace) {
- this.workspace = workspace;
- }
-
- public void execute(final Object value) {
- onStop();
- }
-
- private void onStop() {
- workspace.setVisible(false);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLoginAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserLoginAction implements Action<ParamCallback<UserDTO, UserInfoDTO>> {
-
- public void execute(final ParamCallback<UserDTO, UserInfoDTO> paramCall) {
- onLogin(paramCall.getParam(), paramCall.getCallback());
- }
-
- private void onLogin(final UserDTO user, final AsyncCallback<UserInfoDTO> callback) {
- UserServiceAsync siteBarService = UserService.App.getInstance();
- siteBarService.login(user.getShortName(), user.getPassword(), callback);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserLogoutAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserLogoutAction implements Action<AsyncCallback<Object>> {
-
- private final Session session;
-
- public UserLogoutAction(final Session session) {
- this.session = session;
- }
-
- @SuppressWarnings("unchecked")
- public void execute(final AsyncCallback<Object> value) {
- onLogout(value);
- }
-
- private void onLogout(final AsyncCallback<Object> callback) {
- UserServiceAsync userService = UserService.App.getInstance();
- userService.logout(session.getUserHash(), callback);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/actions/UserRegisterAction.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.actions;
-
-import org.ourproject.kune.platf.client.dispatch.Action;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
-import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class UserRegisterAction implements Action<ParamCallback<UserDTO, UserInfoDTO>> {
-
- @SuppressWarnings("unchecked")
- public void execute(final ParamCallback<UserDTO, UserInfoDTO> paramCall) {
- onRegister(paramCall.getParam(), paramCall.getCallback());
- }
-
- private void onRegister(final UserDTO user, final AsyncCallback<UserInfoDTO> callback) {
- final UserServiceAsync userService = UserService.App.getInstance();
- userService.createUser(user, callback);
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/presence/ui/GroupSummaryPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -42,9 +42,8 @@
super.setContent(vp);
super.setContentVisible(true);
super.setBorderStylePrimaryName("k-dropdownouter-summary");
- addStyleName("kune-Margin-Medium-tl");
+ addStyleName("kune-Margin-Medium-t");
ws.getEntitySummary().addInSummary(this);
- ws.unMask();
}
public void setComment(final String comment) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/Site.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -28,26 +28,13 @@
import com.calclab.suco.client.container.Provider;
public class Site {
- public static final String LOGIN_TOKEN = "login";
- public static final String NEWGROUP_TOKEN = "newgroup";
- public static final String FIXME_TOKEN = "fixme";
- public static final String TRANSLATE_TOKEN = "translate";
+ public static final String USERHASH = "userHash";
public static final String IN_DEVELOPMENT = " (in development)";
private static I18nTranslationService i18n;
private static SiteProgress progress;
private static Provider<SiteMessage> siteMessageProvider;
@Deprecated
- public static void doLogin(final String returnToken) {
- // sitebar.doLogin(returnToken);
- }
-
- @Deprecated
- public static void doLogout() {
- // sitebar.doLogout();
- }
-
- @Deprecated
public static void doNewGroup(final String returnToken) {
// sitebar.doNewGroup(returnToken);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteBarFactory.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -33,13 +33,10 @@
import org.ourproject.kune.workspace.client.newgroup.NewGroupListener;
import org.ourproject.kune.workspace.client.newgroup.NewGroupPresenter;
import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
-import org.ourproject.kune.workspace.client.sitebar.login.Login;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPanel;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPresenter;
+import org.ourproject.kune.workspace.client.sitebar.login.SignIn;
public class SiteBarFactory {
- private static Login login;
+ private static SignIn login;
private static NewGroup newGroup;
private static Session session;
private static I18nUITranslationService i18n;
@@ -60,16 +57,6 @@
return presenter;
}
- public static Login getLoginForm(final LoginListener listener) {
- if (login == null) {
- final LoginPresenter presenter = new LoginPresenter(session, listener, i18n);
- final LoginPanel view = new LoginPanel(presenter, i18n);
- presenter.init(view);
- login = presenter;
- }
- return login;
- }
-
public static NewGroup getNewGroupForm(final NewGroupListener listener) {
if (newGroup == null) {
final NewGroupPresenter presenter = new NewGroupPresenter(listener, i18n);
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/SiteToken.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.workspace.client.sitebar;
+
+public enum SiteToken {
+ signin, newgroup, translate
+}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -31,8 +31,8 @@
import org.ourproject.kune.workspace.client.newgroup.ui.NewGroupPanel;
import org.ourproject.kune.workspace.client.sitebar.Site;
import org.ourproject.kune.workspace.client.sitebar.SiteBarFactory;
-import org.ourproject.kune.workspace.client.sitebar.login.Login;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPanel;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
+import org.ourproject.kune.workspace.client.sitebar.login.SignInPanel;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
@@ -75,7 +75,7 @@
private TextBox searchTextBox;
private final Label logoutLabel;
- private LoginPanel loginPanel;
+ private SignInPanel signInPanel;
private final Images img;
private final MenuBar optionsSubmenu;
private MenuItem linkHelpInTrans;
@@ -157,14 +157,14 @@
gotoPublic.addStyleName("kune-SiteBarPanel-LabelLink");
contentNoPublic.addStyleName("kune-Margin-Medium-r");
newGroupHyperlink.setText(i18n.t("Create New Group"));
- newGroupHyperlink.setTargetHistoryToken(Site.NEWGROUP_TOKEN);
+ newGroupHyperlink.setTargetHistoryToken(SiteToken.newgroup.toString());
loggedUserHyperlink.setVisible(false);
pipeSeparatorHtml.setHTML("|");
pipeSeparatorHtml.setStyleName("kune-SiteBarPanel-Separator");
pipeSeparatorHtml2.setHTML("|");
pipeSeparatorHtml2.setStyleName("kune-SiteBarPanel-Separator");
loginHyperlink.setText(i18n.t("Sign in to collaborate"));
- loginHyperlink.setTargetHistoryToken(Site.LOGIN_TOKEN);
+ loginHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
logoutLabel.setText(i18n.t("Sign out"));
logoutLabel.addStyleName("kune-SiteBarPanel-LabelLink");
options.addItem(i18n.t("Options"), true, optionsSubmenu);
@@ -186,7 +186,7 @@
}
public void centerLoginDialog() {
- loginPanel.center();
+ signInPanel.center();
}
public void centerNewGroupDialog() {
@@ -206,7 +206,7 @@
}
public void hideLoginDialog() {
- loginPanel.hide();
+ signInPanel.hide();
}
public void hideNewGroupDialog() {
@@ -235,7 +235,7 @@
public void restoreLoginLink() {
loginHyperlink.setVisible(true);
loggedUserHyperlink.setVisible(false);
- loginHyperlink.setTargetHistoryToken(Site.LOGIN_TOKEN);
+ loginHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
}
public void setContentGotoPublicUrl(final String publicUrl) {
@@ -308,9 +308,9 @@
}
public void showLoginDialog() {
- final Login login = SiteBarFactory.getLoginForm(presenter);
- loginPanel = (LoginPanel) login.getView();
- loginPanel.show();
+ // final SignIn login = SiteBarFactory.getLoginForm(presenter);
+ // signInPanel = (SignInPanel) login.getView();
+ // signInPanel.show();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/bar/SiteBarPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -33,14 +33,13 @@
import org.ourproject.kune.workspace.client.WorkspaceEvents;
import org.ourproject.kune.workspace.client.newgroup.NewGroupListener;
import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
import org.ourproject.kune.workspace.client.sitebar.rpc.UserService;
import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
-public class SiteBarPresenter implements SiteBar, LoginListener, NewGroupListener {
+public class SiteBarPresenter implements SiteBar, NewGroupListener {
private SiteBarView view;
private final SiteBarListener listener;
@@ -94,8 +93,7 @@
listener.onUserLoggedOut();
}
};
-
- DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGOUT, callback);
+ UserService.App.getInstance().logout(session.getUserHash(), callback);
}
public void doNewGroup(final String previousTokenOrig) {
@@ -218,12 +216,6 @@
view.unMask();
}
- public void userLoggedIn(final UserInfoDTO userInfoDTO) {
- DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGGED_IN, userInfoDTO);
- view.hideLoginDialog();
- returnToPreviousState();
- }
-
protected void onSearchFocus() {
view.setTextSearchBig();
view.clearSearchText();
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,33 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-
-public interface Login {
-
- public void onCancel();
-
- public void doLogin();
-
- public View getView();
-
- public void doRegister();
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +0,0 @@
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
-
-import com.gwtext.client.widgets.form.TextField;
-
-public class LoginForm extends DefaultForm {
- private static final String NICKOREMAIL_FIELD = "nickOrEmail";
- private static final String PASSWORD_FIELD = "password";
-
- private final TextField loginNickOrEmailField;
- private final TextField loginPassField;
-
- public LoginForm(final I18nTranslationService i18n) {
- loginNickOrEmailField = new TextField();
- loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
- loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
- loginNickOrEmailField.setWidth(DEF_FIELD_WIDTH);
- loginNickOrEmailField.setAllowBlank(false);
- loginNickOrEmailField.setValidationEvent(false);
- super.add(loginNickOrEmailField);
-
- loginPassField = new TextField();
- loginPassField.setFieldLabel(i18n.t("Password"));
- loginPassField.setName(PASSWORD_FIELD);
- loginPassField.setWidth(DEF_FIELD_WIDTH);
- loginPassField.setPassword(true);
- loginPassField.setAllowBlank(false);
- loginPassField.setValidationEvent(false);
- super.add(loginPassField);
- }
-
- public void focusLogin() {
- loginNickOrEmailField.focus();
- }
-
- public String getLoginPassword() {
- return loginPassField.getValueAsString();
- }
-
- public String getNickOrEmail() {
- return loginNickOrEmailField.getValueAsString();
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginListener.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,30 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-
-public interface LoginListener {
- void userLoggedIn(UserInfoDTO user);
-
- void onLoginCancelled();
-
- void onLoginClose();
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,344 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
-import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.sitebar.msg.SimpleMessagePanel;
-
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Widget;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.core.RegionPosition;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.Component;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.TabPanel;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.event.PanelListenerAdapter;
-import com.gwtext.client.widgets.event.WindowListenerAdapter;
-import com.gwtext.client.widgets.form.Field;
-import com.gwtext.client.widgets.layout.BorderLayout;
-import com.gwtext.client.widgets.layout.BorderLayoutData;
-import com.gwtext.client.widgets.layout.FitLayout;
-
-public class LoginPanel implements LoginView, View {
- private class MessagePanel extends Panel {
- private final SimpleMessagePanel messagesPanel;
-
- public MessagePanel() {
- setPaddings(10);
- setBorder(false);
- setHeight(60);
- messagesPanel = new SimpleMessagePanel();
- messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error);
- add(messagesPanel);
- }
-
- public void hide() {
- messagesPanel.hide();
- super.hide();
- }
-
- public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) {
- messagesPanel.setMessage(message, lastMessageType, type);
- }
-
- public void show() {
- messagesPanel.show();
- super.show();
- }
- }
-
- private BasicDialog dialog;
- private final LoginPresenter presenter;
- private LoginForm signInForm;
- private RegisterForm registerForm;
- private MessagePanel messagesSignInPanel;
- private InfoDialog welcomeDialog;
- private TabPanel centerPanel;
- private MessagePanel messagesRegisterPanel;
- private final I18nTranslationService i18n;
-
- public LoginPanel(final LoginPresenter initialPresenter, final I18nTranslationService i18n) {
- this.i18n = i18n;
- Field.setMsgTarget("side");
- this.presenter = initialPresenter;
- createPanel();
- }
-
- public void center() {
- dialog.center();
- }
-
- public String getCountry() {
- return registerForm.getCountry();
- }
-
- public String getEmail() {
- return registerForm.getEmail();
- }
-
- public String getLanguage() {
- return registerForm.getLanguage();
- }
-
- public String getLoginPassword() {
- return signInForm.getLoginPassword();
- }
-
- public String getLongName() {
- return registerForm.getLongName();
- }
-
- public String getNickOrEmail() {
- return signInForm.getNickOrEmail();
- }
-
- public String getRegisterPassword() {
- return registerForm.getRegisterPassword();
- }
-
- public String getRegisterPasswordDup() {
- return registerForm.getRegisterPasswordDup();
- }
-
- public String getShortName() {
- return registerForm.getShortName();
- }
-
- public String getTimezone() {
- return registerForm.getTimezone();
- }
-
- public void hide() {
- dialog.hide();
- }
-
- public void hideMessages() {
- messagesSignInPanel.hide();
- if (messagesRegisterPanel != null) {
- messagesRegisterPanel.hide();
- }
- renderDialogIfNeeded();
- }
-
- public boolean isRegisterFormValid() {
- return registerForm.isValid();
- }
-
- public boolean isSignInFormValid() {
- return signInForm.isValid();
- }
-
- public void maskProcessing() {
- mask(i18n.t("Processing"));
- }
-
- public void reset() {
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- signInForm.reset();
- if (registerForm != null) {
- registerForm.reset();
- }
- }
- });
- }
-
- public void setRegisterMessage(final String message, final SiteErrorType type) {
- messagesRegisterPanel.setMessage(message, type, type);
- messagesRegisterPanel.show();
- renderDialogIfNeeded();
- }
-
- public void setSignInMessage(final String message, final SiteErrorType type) {
- messagesSignInPanel.setMessage(message, type, type);
- messagesSignInPanel.show();
- renderDialogIfNeeded();
- }
-
- public void show() {
- centerPanel.activate(0);
- dialog.setVisible(true);
- dialog.show();
- Site.hideProgress();
- dialog.focus();
- signInForm.focusLogin();
- }
-
- public void showWelcolmeDialog() {
- if (welcomeDialog == null) {
- welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n
- .t("Now you can participate more actively in this site with other people and groups. "
- + "You can also use your personal space to publish contents. "
- + "Your email is not verified, please follow the instructions you will receive by email."),
- i18n.t("Ok"), true, true, 400, 270);
- }
- welcomeDialog.show();
- }
-
- public void unMask() {
- dialog.enable();
- }
-
- private void confPanel(final Panel panel) {
- // panel.setLayout(new FormLayout());
- // panel.setAutoWidth(true);
- // anel.setAutoHeight(true);
- }
-
- private Panel createNoAccountRegister() {
- final Panel noAccRegisterPanel = new Panel();
- noAccRegisterPanel.setBorder(false);
- noAccRegisterPanel.setMargins(0, 90, 0, 0);
- final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?"));
- final Label registerLabel = new Label(i18n.t("Create one."));
- registerLabel.addClickListener(new ClickListener() {
- public void onClick(final Widget arg0) {
- centerPanel.activate(1);
- }
- });
- registerLabel.addStyleName("kune-Margin-Medium-l");
- registerLabel.addStyleName("kune-link");
- noAccRegisterPanel.add(dontHaveAccountLabel);
- noAccRegisterPanel.add(registerLabel);
- return noAccRegisterPanel;
- }
-
- private void createPanel() {
- dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400);
- dialog.setLayout(new FitLayout());
- final Panel dialogPanel = new Panel();
- dialogPanel.setLayout(new BorderLayout());
- // dialog.setAutoHeight(false);
- // dialog.setAutoWidth(false);
- // dialog.setAutoHeight(true);
- // dialog.setAutoWidth(true);
- dialogPanel.setHeight("100%");
- dialogPanel.setWidth("auto");
- // dialog.setCollapsible(false);
-
- centerPanel = new TabPanel();
- centerPanel.setActiveTab(0);
- // centerPanel.setAutoWidth(true);
- // centerPanel.setAutoHeight(true);
- centerPanel.setClosable(false);
-
- final Panel signInPanel = new Panel(i18n.t("Sign in"));
- confPanel(signInPanel);
- signInForm = new LoginForm(i18n);
- signInPanel.add(signInForm.getForm());
- signInPanel.add(createNoAccountRegister());
- messagesSignInPanel = new MessagePanel();
- signInPanel.add(messagesSignInPanel);
-
- final Panel registerPanel = new Panel(i18n.t("Register"));
- confPanel(registerPanel);
-
- centerPanel.add(signInPanel);
- centerPanel.add(registerPanel);
- dialogPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER));
- dialog.add(dialogPanel);
-
- final Button signInBtn = new Button(i18n.t("Sign in"));
- signInBtn.addListener(new ButtonListenerAdapter() {
- public void onClick(final Button button, final EventObject e) {
- signInForm.validate();
- if (signInForm.isValid()) {
- presenter.doLogin();
- }
- }
- });
- dialog.addButton(signInBtn);
-
- final Button registerBtn = new Button(i18n.t("Register"));
- registerBtn.addListener(new ButtonListenerAdapter() {
- public void onClick(final Button button, final EventObject e) {
- registerForm.validate();
- if (registerForm.isValid()) {
- presenter.doRegister();
- }
- }
- });
- dialog.addButton(registerBtn);
- registerBtn.hide();
-
- final Button cancel = new Button();
- dialog.addButton(cancel);
- cancel.setText(i18n.tWithNT("Cancel", "used in button"));
- cancel.addListener(new ButtonListenerAdapter() {
- public void onClick(final Button button, final EventObject e) {
- presenter.onCancel();
- }
- });
-
- signInPanel.addListener(new PanelListenerAdapter() {
- public void onActivate(final Panel panel) {
- dialog.setTitle(i18n.t("Sign in"));
- registerBtn.hide();
- signInBtn.show();
- }
- });
-
- registerPanel.addListener(new PanelListenerAdapter() {
- public void onActivate(final Panel panel) {
- if (registerForm == null) {
- maskProcessing();
- registerForm = new RegisterForm(presenter, i18n);
- registerPanel.add(registerForm.getForm());
- messagesRegisterPanel = new MessagePanel();
- registerPanel.add(messagesRegisterPanel);
- messagesRegisterPanel.hide();
- renderDialogIfNeeded();
- unMask();
- }
- dialog.setTitle(i18n.t("Register"));
- signInBtn.hide();
- registerBtn.show();
- }
- });
-
- dialog.addListener(new WindowListenerAdapter() {
- public void onHide(final Component component) {
- presenter.onClose();
- }
- });
- hideMessages();
- renderDialogIfNeeded();
- }
-
- private void mask(final String message) {
- dialog.disable();
- }
-
- private void renderDialogIfNeeded() {
- if (dialog.isRendered()) {
- dialog.doLayout();
- }
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,186 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.PlatformEvents;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dispatch.DefaultDispatcher;
-import org.ourproject.kune.platf.client.dto.I18nCountryDTO;
-import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
-import org.ourproject.kune.platf.client.dto.TimeZoneDTO;
-import org.ourproject.kune.platf.client.dto.UserDTO;
-import org.ourproject.kune.platf.client.dto.UserInfoDTO;
-import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
-import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
-import org.ourproject.kune.platf.client.errors.UserAuthException;
-import org.ourproject.kune.platf.client.rpc.ParamCallback;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.workspace.client.WorkspaceEvents;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-
-import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class LoginPresenter implements Login {
-
- LoginView view;
-
- final LoginListener listener;
-
- private final Session session;
-
- private final I18nTranslationService i18n;
-
- public LoginPresenter(final Session session, final LoginListener listener, final I18nTranslationService i18n) {
- this.session = session;
- this.listener = listener;
- this.i18n = i18n;
- }
-
- public void doLogin() {
- if (view.isSignInFormValid()) {
- view.maskProcessing();
-
- final String nickOrEmail = view.getNickOrEmail();
- final String passwd = view.getLoginPassword();
-
- final UserDTO user = new UserDTO();
- user.setShortName(nickOrEmail);
- user.setPassword(passwd);
-
- final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
- public void onFailure(final Throwable caught) {
- view.unMask();
- Site.hideProgress();
- try {
- throw caught;
- } catch (final UserAuthException e) {
- view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error);
- } catch (final Throwable e) {
- view.setSignInMessage("Error in login", SiteErrorType.error);
- GWT.log("Other kind of exception in LoginFormPresenter/doLogin", null);
- throw new RuntimeException();
- }
- }
-
- public void onSuccess(final UserInfoDTO response) {
- listener.userLoggedIn(response);
- view.unMask();
- }
- };
-
- DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_LOGIN,
- new ParamCallback<UserDTO, UserInfoDTO>(user, callback));
- }
- }
-
- public void doRegister() {
- if (view.isRegisterFormValid()) {
- view.maskProcessing();
-
- final I18nLanguageDTO language = new I18nLanguageDTO();
- language.setCode(view.getLanguage());
-
- final I18nCountryDTO country = new I18nCountryDTO();
- country.setCode(view.getCountry());
-
- final TimeZoneDTO timezone = new TimeZoneDTO();
- timezone.setId(view.getTimezone());
-
- final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view
- .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue");
- final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
- public void onFailure(final Throwable caught) {
- view.unMask();
- try {
- throw caught;
- } catch (final EmailAddressInUseException e) {
- view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."),
- SiteErrorType.error);
- } catch (final GroupNameInUseException e) {
- view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."),
- SiteErrorType.error);
- } catch (final Throwable e) {
- view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error);
- GWT.log("Other kind of exception in user registration", null);
- throw new RuntimeException();
- }
- }
-
- public void onSuccess(final UserInfoDTO userInfoDTO) {
- listener.userLoggedIn(userInfoDTO);
- view.unMask();
- view.showWelcolmeDialog();
- DefaultDispatcher.getInstance().fire(PlatformEvents.GOTO, userInfoDTO.getShortName());
- }
- };
- DefaultDispatcher.getInstance().fire(WorkspaceEvents.USER_REGISTER,
- new ParamCallback<UserDTO, UserInfoDTO>(user, callback));
- }
- }
-
- public Object[][] getCountries() {
- return session.getCountriesArray();
- }
-
- public I18nLanguageDTO getCurrentLanguage() {
- return session.getCurrentLanguage();
- }
-
- public Object[][] getLanguages() {
- return session.getLanguagesArray();
- }
-
- public Object[][] getTimezones() {
- return session.getTimezones();
- }
-
- public View getView() {
- return view;
- }
-
- public void init(final LoginView loginview) {
- this.view = loginview;
- }
-
- public void onCancel() {
- resetMessages();
- reset();
- listener.onLoginCancelled();
- }
-
- public void onClose() {
- reset();
- view.hideMessages();
- listener.onLoginClose();
- }
-
- private void reset() {
- view.reset();
- }
-
- private void resetMessages() {
- view.hideMessages();
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,65 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.sitebar.login;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
-
-public interface LoginView extends View {
-
- public String getCountry();
-
- public String getEmail();
-
- public String getLanguage();
-
- public String getLoginPassword();
-
- public String getLongName();
-
- public String getNickOrEmail();
-
- public String getRegisterPassword();
-
- public String getRegisterPasswordDup();
-
- public String getShortName();
-
- public String getTimezone();
-
- public void hideMessages();
-
- public boolean isRegisterFormValid();
-
- public boolean isSignInFormValid();
-
- public void maskProcessing();
-
- public void reset();
-
- public void showWelcolmeDialog();
-
- public void unMask();
-
- void setRegisterMessage(String message, SiteErrorType type);
-
- void setSignInMessage(String message, SiteErrorType type);
-
-}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/RegisterForm.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,7 +1,7 @@
package org.ourproject.kune.workspace.client.sitebar.login;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.gwtext.client.data.SimpleStore;
import com.gwtext.client.data.Store;
@@ -33,172 +33,172 @@
private final ComboBox countryCombo;
private final ComboBox timezoneCombo;
- public RegisterForm(final LoginPresenter presenter, final I18nTranslationService i18n) {
- shortNameRegField = new TextField();
- shortNameRegField.setFieldLabel(i18n.t("Nickname"));
- shortNameRegField.setName(NICK_FIELD);
- shortNameRegField.setWidth(DEF_FIELD_WIDTH);
- shortNameRegField.setAllowBlank(false);
- shortNameRegField.setMinLength(3);
- shortNameRegField.setMaxLength(15);
- shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
- shortNameRegField.setMinLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setMaxLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setRegexText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setValidationEvent(false);
- add(shortNameRegField);
+ public RegisterForm(final SignInPresenter presenter, final I18nUITranslationService i18n) {
+ shortNameRegField = new TextField();
+ shortNameRegField.setFieldLabel(i18n.t("Nickname"));
+ shortNameRegField.setName(NICK_FIELD);
+ shortNameRegField.setWidth(DEF_FIELD_WIDTH);
+ shortNameRegField.setAllowBlank(false);
+ shortNameRegField.setMinLength(3);
+ shortNameRegField.setMaxLength(15);
+ shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
+ shortNameRegField.setMinLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setMaxLengthText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setRegexText(i18n.t(MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setValidationEvent(false);
+ add(shortNameRegField);
- longNameRegField = new TextField();
- longNameRegField.setFieldLabel(i18n.t("Full Name"));
- longNameRegField.setName(LONGNAME_FIELD);
- longNameRegField.setWidth(DEF_FIELD_WIDTH);
- longNameRegField.setAllowBlank(false);
- longNameRegField.setMinLength(3);
- longNameRegField.setMaxLength(50);
- longNameRegField.setValidationEvent(false);
- add(longNameRegField);
+ longNameRegField = new TextField();
+ longNameRegField.setFieldLabel(i18n.t("Full Name"));
+ longNameRegField.setName(LONGNAME_FIELD);
+ longNameRegField.setWidth(DEF_FIELD_WIDTH);
+ longNameRegField.setAllowBlank(false);
+ longNameRegField.setMinLength(3);
+ longNameRegField.setMaxLength(50);
+ longNameRegField.setValidationEvent(false);
+ add(longNameRegField);
- passwdRegField = new TextField();
- passwdRegField.setFieldLabel(i18n.t("Password"));
- passwdRegField.setName(PASSWORD_FIELD);
- passwdRegField.setPassword(true);
- passwdRegField.setAllowBlank(false);
- passwdRegField.setMaxLength(40);
- passwdRegField.setWidth(DEF_FIELD_WIDTH);
- passwdRegField.setValidationEvent(false);
- add(passwdRegField);
+ passwdRegField = new TextField();
+ passwdRegField.setFieldLabel(i18n.t("Password"));
+ passwdRegField.setName(PASSWORD_FIELD);
+ passwdRegField.setPassword(true);
+ passwdRegField.setAllowBlank(false);
+ passwdRegField.setMaxLength(40);
+ passwdRegField.setWidth(DEF_FIELD_WIDTH);
+ passwdRegField.setValidationEvent(false);
+ add(passwdRegField);
- passwdRegFieldDup = new TextField();
- passwdRegFieldDup.setFieldLabel(i18n.t("Retype password"));
- passwdRegFieldDup.setName(PASSWORD_FIELD_DUP);
- passwdRegFieldDup.setPassword(true);
- passwdRegFieldDup.setAllowBlank(false);
- passwdRegFieldDup.setMinLength(6);
- passwdRegFieldDup.setMaxLength(40);
- passwdRegFieldDup.setWidth(DEF_FIELD_WIDTH);
- passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match"));
- passwdRegFieldDup.setValidator(new Validator() {
- public boolean validate(final String value) throws ValidationException {
- return passwdRegField.getValueAsString().equals(passwdRegFieldDup.getValueAsString());
- }
- });
- passwdRegFieldDup.setValidationEvent(false);
- add(passwdRegFieldDup);
+ passwdRegFieldDup = new TextField();
+ passwdRegFieldDup.setFieldLabel(i18n.t("Retype password"));
+ passwdRegFieldDup.setName(PASSWORD_FIELD_DUP);
+ passwdRegFieldDup.setPassword(true);
+ passwdRegFieldDup.setAllowBlank(false);
+ passwdRegFieldDup.setMinLength(6);
+ passwdRegFieldDup.setMaxLength(40);
+ passwdRegFieldDup.setWidth(DEF_FIELD_WIDTH);
+ passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match"));
+ passwdRegFieldDup.setValidator(new Validator() {
+ public boolean validate(final String value) throws ValidationException {
+ return passwdRegField.getValueAsString().equals(passwdRegFieldDup.getValueAsString());
+ }
+ });
+ passwdRegFieldDup.setValidationEvent(false);
+ add(passwdRegFieldDup);
- emailRegField = new TextField();
- emailRegField.setFieldLabel(i18n.t("Email"));
- emailRegField.setName(EMAIL_FIELD);
- emailRegField.setVtype(VType.EMAIL);
- emailRegField.setWidth(DEF_FIELD_WIDTH);
- emailRegField.setAllowBlank(false);
- emailRegField.setValidationEvent(false);
+ emailRegField = new TextField();
+ emailRegField.setFieldLabel(i18n.t("Email"));
+ emailRegField.setName(EMAIL_FIELD);
+ emailRegField.setVtype(VType.EMAIL);
+ emailRegField.setWidth(DEF_FIELD_WIDTH);
+ emailRegField.setAllowBlank(false);
+ emailRegField.setValidationEvent(false);
- add(emailRegField);
+ add(emailRegField);
- final Store langStore = new SimpleStore(new String[] { "abbr", "language" }, presenter.getLanguages());
- langStore.load();
+ final Store langStore = new SimpleStore(new String[] { "abbr", "language" }, presenter.getLanguages());
+ langStore.load();
- languageCombo = new ComboBox();
- languageCombo.setName(LANG_FIELD);
- languageCombo.setMinChars(1);
- languageCombo.setFieldLabel(i18n.t("Language"));
- languageCombo.setStore(langStore);
- languageCombo.setDisplayField("language");
- languageCombo.setMode(ComboBox.LOCAL);
- languageCombo.setTriggerAction(ComboBox.ALL);
- languageCombo.setEmptyText(i18n.t("Enter language"));
- languageCombo.setLoadingText(i18n.t("Searching..."));
- languageCombo.setTypeAhead(true);
- languageCombo.setTypeAheadDelay(1000);
- languageCombo.setSelectOnFocus(false);
- languageCombo.setWidth(186);
- languageCombo.setAllowBlank(false);
- languageCombo.setValueField("abbr");
- languageCombo.setValue(presenter.getCurrentLanguage().getCode());
- languageCombo.setPageSize(7);
- languageCombo.setForceSelection(true);
- languageCombo.setValidationEvent(false);
- add(languageCombo);
+ languageCombo = new ComboBox();
+ languageCombo.setName(LANG_FIELD);
+ languageCombo.setMinChars(1);
+ languageCombo.setFieldLabel(i18n.t("Language"));
+ languageCombo.setStore(langStore);
+ languageCombo.setDisplayField("language");
+ languageCombo.setMode(ComboBox.LOCAL);
+ languageCombo.setTriggerAction(ComboBox.ALL);
+ languageCombo.setEmptyText(i18n.t("Enter language"));
+ languageCombo.setLoadingText(i18n.t("Searching..."));
+ languageCombo.setTypeAhead(true);
+ languageCombo.setTypeAheadDelay(1000);
+ languageCombo.setSelectOnFocus(false);
+ languageCombo.setWidth(186);
+ languageCombo.setAllowBlank(false);
+ languageCombo.setValueField("abbr");
+ languageCombo.setValue(presenter.getCurrentLanguage().getCode());
+ languageCombo.setPageSize(7);
+ languageCombo.setForceSelection(true);
+ languageCombo.setValidationEvent(false);
+ add(languageCombo);
- final Store countryStore = new SimpleStore(new String[] { "abbr", "country" }, presenter.getCountries());
- countryStore.load();
+ final Store countryStore = new SimpleStore(new String[] { "abbr", "country" }, presenter.getCountries());
+ countryStore.load();
- countryCombo = new ComboBox();
- countryCombo.setName(COUNTRY_FIELD);
- countryCombo.setMinChars(1);
- countryCombo.setFieldLabel(i18n.t("Country"));
- countryCombo.setStore(countryStore);
- countryCombo.setDisplayField("country");
- countryCombo.setMode(ComboBox.LOCAL);
- countryCombo.setTriggerAction(ComboBox.ALL);
- countryCombo.setEmptyText(i18n.t("Enter your country"));
- countryCombo.setLoadingText(i18n.t("Searching..."));
- countryCombo.setTypeAhead(true);
- countryCombo.setTypeAheadDelay(1000);
- countryCombo.setSelectOnFocus(false);
- countryCombo.setWidth(186);
- countryCombo.setAllowBlank(false);
- countryCombo.setValueField("abbr");
- countryCombo.setPageSize(7);
- countryCombo.setForceSelection(true);
- countryCombo.setValidationEvent(false);
- add(countryCombo);
+ countryCombo = new ComboBox();
+ countryCombo.setName(COUNTRY_FIELD);
+ countryCombo.setMinChars(1);
+ countryCombo.setFieldLabel(i18n.t("Country"));
+ countryCombo.setStore(countryStore);
+ countryCombo.setDisplayField("country");
+ countryCombo.setMode(ComboBox.LOCAL);
+ countryCombo.setTriggerAction(ComboBox.ALL);
+ countryCombo.setEmptyText(i18n.t("Enter your country"));
+ countryCombo.setLoadingText(i18n.t("Searching..."));
+ countryCombo.setTypeAhead(true);
+ countryCombo.setTypeAheadDelay(1000);
+ countryCombo.setSelectOnFocus(false);
+ countryCombo.setWidth(186);
+ countryCombo.setAllowBlank(false);
+ countryCombo.setValueField("abbr");
+ countryCombo.setPageSize(7);
+ countryCombo.setForceSelection(true);
+ countryCombo.setValidationEvent(false);
+ add(countryCombo);
- final Store timezoneStore = new SimpleStore(new String[] { "id" }, presenter.getTimezones());
- timezoneStore.load();
+ final Store timezoneStore = new SimpleStore(new String[] { "id" }, presenter.getTimezones());
+ timezoneStore.load();
- timezoneCombo = new ComboBox();
- timezoneCombo.setName(TIMEZONE_FIELD);
- timezoneCombo.setMinChars(1);
- timezoneCombo.setFieldLabel(i18n.t("Timezone"));
- timezoneCombo.setStore(timezoneStore);
- timezoneCombo.setDisplayField("id");
- timezoneCombo.setMode(ComboBox.LOCAL);
- timezoneCombo.setTriggerAction(ComboBox.ALL);
- timezoneCombo.setEmptyText(i18n.t("Enter your timezone"));
- timezoneCombo.setLoadingText(i18n.t("Searching..."));
- timezoneCombo.setTypeAhead(true);
- timezoneCombo.setTypeAheadDelay(1000);
- timezoneCombo.setSelectOnFocus(false);
- timezoneCombo.setWidth(186);
- timezoneCombo.setAllowBlank(false);
- timezoneCombo.setValueField("id");
- timezoneCombo.setPageSize(7);
- timezoneCombo.setForceSelection(true);
- timezoneCombo.setValidationEvent(false);
- add(timezoneCombo);
+ timezoneCombo = new ComboBox();
+ timezoneCombo.setName(TIMEZONE_FIELD);
+ timezoneCombo.setMinChars(1);
+ timezoneCombo.setFieldLabel(i18n.t("Timezone"));
+ timezoneCombo.setStore(timezoneStore);
+ timezoneCombo.setDisplayField("id");
+ timezoneCombo.setMode(ComboBox.LOCAL);
+ timezoneCombo.setTriggerAction(ComboBox.ALL);
+ timezoneCombo.setEmptyText(i18n.t("Enter your timezone"));
+ timezoneCombo.setLoadingText(i18n.t("Searching..."));
+ timezoneCombo.setTypeAhead(true);
+ timezoneCombo.setTypeAheadDelay(1000);
+ timezoneCombo.setSelectOnFocus(false);
+ timezoneCombo.setWidth(186);
+ timezoneCombo.setAllowBlank(false);
+ timezoneCombo.setValueField("id");
+ timezoneCombo.setPageSize(7);
+ timezoneCombo.setForceSelection(true);
+ timezoneCombo.setValidationEvent(false);
+ add(timezoneCombo);
}
public String getCountry() {
- return countryCombo.getValueAsString();
+ return countryCombo.getValueAsString();
}
public String getEmail() {
- return emailRegField.getValueAsString();
+ return emailRegField.getValueAsString();
}
public String getLanguage() {
- return languageCombo.getValueAsString();
+ return languageCombo.getValueAsString();
}
public String getLongName() {
- return longNameRegField.getValueAsString();
+ return longNameRegField.getValueAsString();
}
public String getRegisterPassword() {
- return passwdRegField.getValueAsString();
+ return passwdRegField.getValueAsString();
}
public String getRegisterPasswordDup() {
- return passwdRegFieldDup.getValueAsString();
+ return passwdRegFieldDup.getValueAsString();
}
public String getShortName() {
- return shortNameRegField.getValueAsString();
+ return shortNameRegField.getValueAsString();
}
public String getTimezone() {
- return timezoneCombo.getValueAsString();
+ return timezoneCombo.getValueAsString();
}
}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/Login.java 2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignIn.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,28 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.dto.StateToken;
+
+public interface SignIn {
+
+ void doSignIn(StateToken previousStateToken);
+
+}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginForm.java 2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInForm.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,46 @@
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
+
+import com.gwtext.client.widgets.form.TextField;
+
+public class SignInForm extends DefaultForm {
+ private static final String NICKOREMAIL_FIELD = "nickOrEmail";
+ private static final String PASSWORD_FIELD = "password";
+
+ private final TextField loginNickOrEmailField;
+ private final TextField loginPassField;
+
+ public SignInForm(final I18nTranslationService i18n) {
+ loginNickOrEmailField = new TextField();
+ loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
+ loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
+ loginNickOrEmailField.setWidth(DEF_FIELD_WIDTH);
+ loginNickOrEmailField.setAllowBlank(false);
+ loginNickOrEmailField.setValidationEvent(false);
+ super.add(loginNickOrEmailField);
+
+ loginPassField = new TextField();
+ loginPassField.setFieldLabel(i18n.t("Password"));
+ loginPassField.setName(PASSWORD_FIELD);
+ loginPassField.setWidth(DEF_FIELD_WIDTH);
+ loginPassField.setPassword(true);
+ loginPassField.setAllowBlank(false);
+ loginPassField.setValidationEvent(false);
+ super.add(loginPassField);
+ }
+
+ public void focusLogin() {
+ loginNickOrEmailField.focus();
+ }
+
+ public String getLoginPassword() {
+ return loginPassField.getValueAsString();
+ }
+
+ public String getNickOrEmail() {
+ return loginNickOrEmailField.getValueAsString();
+ }
+
+}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPanel.java 2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,344 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
+import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.msg.SimpleMessagePanel;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.RegionPosition;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Component;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.TabPanel;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.event.WindowListenerAdapter;
+import com.gwtext.client.widgets.form.Field;
+import com.gwtext.client.widgets.layout.BorderLayout;
+import com.gwtext.client.widgets.layout.BorderLayoutData;
+import com.gwtext.client.widgets.layout.FitLayout;
+
+public class SignInPanel implements SignInView {
+ private class MessagePanel extends Panel {
+ private final SimpleMessagePanel messagesPanel;
+
+ public MessagePanel() {
+ setPaddings(10);
+ setBorder(false);
+ setHeight(60);
+ messagesPanel = new SimpleMessagePanel();
+ messagesPanel.setMessage("", SiteErrorType.info, SiteErrorType.error);
+ add(messagesPanel);
+ }
+
+ public void hide() {
+ messagesPanel.hide();
+ super.hide();
+ }
+
+ public void setMessage(final String message, final SiteErrorType lastMessageType, final SiteErrorType type) {
+ messagesPanel.setMessage(message, lastMessageType, type);
+ }
+
+ public void show() {
+ messagesPanel.show();
+ super.show();
+ }
+ }
+
+ private BasicDialog dialog;
+ private final SignInPresenter presenter;
+ private SignInForm signInForm;
+ private RegisterForm registerForm;
+ private MessagePanel messagesSignInPanel;
+ private InfoDialog welcomeDialog;
+ private TabPanel centerPanel;
+ private MessagePanel messagesRegisterPanel;
+ private final I18nUITranslationService i18n;
+
+ public SignInPanel(final SignInPresenter presenter, final I18nUITranslationService i18n, final WorkspaceSkeleton ws) {
+ this.i18n = i18n;
+ Field.setMsgTarget("side");
+ this.presenter = presenter;
+ createPanel();
+ }
+
+ public void center() {
+ dialog.center();
+ }
+
+ public String getCountry() {
+ return registerForm.getCountry();
+ }
+
+ public String getEmail() {
+ return registerForm.getEmail();
+ }
+
+ public String getLanguage() {
+ return registerForm.getLanguage();
+ }
+
+ public String getLoginPassword() {
+ return signInForm.getLoginPassword();
+ }
+
+ public String getLongName() {
+ return registerForm.getLongName();
+ }
+
+ public String getNickOrEmail() {
+ return signInForm.getNickOrEmail();
+ }
+
+ public String getRegisterPassword() {
+ return registerForm.getRegisterPassword();
+ }
+
+ public String getRegisterPasswordDup() {
+ return registerForm.getRegisterPasswordDup();
+ }
+
+ public String getShortName() {
+ return registerForm.getShortName();
+ }
+
+ public String getTimezone() {
+ return registerForm.getTimezone();
+ }
+
+ public void hide() {
+ dialog.hide();
+ }
+
+ public void hideMessages() {
+ messagesSignInPanel.hide();
+ if (messagesRegisterPanel != null) {
+ messagesRegisterPanel.hide();
+ }
+ renderDialogIfNeeded();
+ }
+
+ public boolean isRegisterFormValid() {
+ return registerForm.isValid();
+ }
+
+ public boolean isSignInFormValid() {
+ return signInForm.isValid();
+ }
+
+ public void mask(final String message) {
+ dialog.getEl().mask(message, "x-mask-loading");
+ }
+
+ public void maskProcessing() {
+ mask(i18n.t("Processing"));
+ }
+
+ public void reset() {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ signInForm.reset();
+ if (registerForm != null) {
+ registerForm.reset();
+ }
+ }
+ });
+ }
+
+ public void setRegisterMessage(final String message, final SiteErrorType type) {
+ messagesRegisterPanel.setMessage(message, type, type);
+ messagesRegisterPanel.show();
+ renderDialogIfNeeded();
+ }
+
+ public void setSignInMessage(final String message, final SiteErrorType type) {
+ messagesSignInPanel.setMessage(message, type, type);
+ messagesSignInPanel.show();
+ renderDialogIfNeeded();
+ }
+
+ public void show() {
+ centerPanel.activate(0);
+ dialog.setVisible(true);
+ dialog.show();
+ Site.hideProgress();
+ dialog.focus();
+ signInForm.focusLogin();
+ }
+
+ public void showWelcolmeDialog() {
+ if (welcomeDialog == null) {
+ welcomeDialog = new InfoDialog(i18n.t("Welcome"), i18n.t("Thanks for registering"), i18n
+ .t("Now you can participate more actively in this site with other people and groups. "
+ + "You can also use your personal space to publish contents. "
+ + "Your email is not verified, please follow the instructions you will receive by email."),
+ i18n.t("Ok"), true, true, 400, 270);
+ }
+ welcomeDialog.show();
+ }
+
+ public void unMask() {
+ dialog.getEl().unmask();
+ }
+
+ private void confPanel(final Panel panel) {
+ // panel.setLayout(new FormLayout());
+ // panel.setAutoWidth(true);
+ // anel.setAutoHeight(true);
+ }
+
+ private Panel createNoAccountRegister() {
+ final Panel noAccRegisterPanel = new Panel();
+ noAccRegisterPanel.setBorder(false);
+ noAccRegisterPanel.setMargins(0, 90, 0, 0);
+ final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?"));
+ final Label registerLabel = new Label(i18n.t("Create one."));
+ registerLabel.addClickListener(new ClickListener() {
+ public void onClick(final Widget arg0) {
+ centerPanel.activate(1);
+ }
+ });
+ registerLabel.addStyleName("kune-Margin-Medium-l");
+ registerLabel.addStyleName("kune-link");
+ noAccRegisterPanel.add(dontHaveAccountLabel);
+ noAccRegisterPanel.add(registerLabel);
+ return noAccRegisterPanel;
+ }
+
+ private void createPanel() {
+ dialog = new BasicDialog(i18n.t("Sign in"), true, false, 370, 400);
+ dialog.setLayout(new FitLayout());
+ final Panel dialogPanel = new Panel();
+ dialogPanel.setLayout(new BorderLayout());
+ // dialog.setAutoHeight(false);
+ // dialog.setAutoWidth(false);
+ // dialog.setAutoHeight(true);
+ // dialog.setAutoWidth(true);
+ dialogPanel.setHeight("100%");
+ dialogPanel.setWidth("auto");
+ // dialog.setCollapsible(false);
+
+ centerPanel = new TabPanel();
+ centerPanel.setActiveTab(0);
+ // centerPanel.setAutoWidth(true);
+ // centerPanel.setAutoHeight(true);
+ centerPanel.setClosable(false);
+
+ final Panel signInPanel = new Panel(i18n.t("Sign in"));
+ confPanel(signInPanel);
+ signInForm = new SignInForm(i18n);
+ signInPanel.add(signInForm.getForm());
+ signInPanel.add(createNoAccountRegister());
+ messagesSignInPanel = new MessagePanel();
+ signInPanel.add(messagesSignInPanel);
+
+ final Panel registerPanel = new Panel(i18n.t("Register"));
+ confPanel(registerPanel);
+
+ centerPanel.add(signInPanel);
+ centerPanel.add(registerPanel);
+ dialogPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER));
+ dialog.add(dialogPanel);
+
+ final Button signInBtn = new Button(i18n.t("Sign in"));
+ signInBtn.addListener(new ButtonListenerAdapter() {
+ public void onClick(final Button button, final EventObject e) {
+ signInForm.validate();
+ if (signInForm.isValid()) {
+ presenter.onFormSignIn();
+ }
+ }
+ });
+ dialog.addButton(signInBtn);
+
+ final Button registerBtn = new Button(i18n.t("Register"));
+ registerBtn.addListener(new ButtonListenerAdapter() {
+ public void onClick(final Button button, final EventObject e) {
+ registerForm.validate();
+ if (registerForm.isValid()) {
+ presenter.onFormRegister();
+ }
+ }
+ });
+ dialog.addButton(registerBtn);
+ registerBtn.hide();
+
+ final Button cancel = new Button();
+ dialog.addButton(cancel);
+ cancel.setText(i18n.tWithNT("Cancel", "used in button"));
+ cancel.addListener(new ButtonListenerAdapter() {
+ public void onClick(final Button button, final EventObject e) {
+ presenter.onCancel();
+ }
+ });
+
+ signInPanel.addListener(new PanelListenerAdapter() {
+ public void onActivate(final Panel panel) {
+ dialog.setTitle(i18n.t("Sign in"));
+ registerBtn.hide();
+ signInBtn.show();
+ }
+ });
+
+ registerPanel.addListener(new PanelListenerAdapter() {
+ public void onActivate(final Panel panel) {
+ if (registerForm == null) {
+ maskProcessing();
+ registerForm = new RegisterForm(presenter, i18n);
+ registerPanel.add(registerForm.getForm());
+ messagesRegisterPanel = new MessagePanel();
+ registerPanel.add(messagesRegisterPanel);
+ messagesRegisterPanel.hide();
+ renderDialogIfNeeded();
+ unMask();
+ }
+ dialog.setTitle(i18n.t("Register"));
+ signInBtn.hide();
+ registerBtn.show();
+ }
+ });
+
+ dialog.addListener(new WindowListenerAdapter() {
+ public void onHide(final Component component) {
+ presenter.onClose();
+ }
+ });
+ hideMessages();
+ renderDialogIfNeeded();
+ }
+
+ private void renderDialogIfNeeded() {
+ if (dialog.isRendered()) {
+ dialog.doLayout();
+ }
+ }
+}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginPresenter.java 2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,218 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import java.util.Date;
+
+import org.ourproject.kune.platf.client.dto.I18nCountryDTO;
+import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.TimeZoneDTO;
+import org.ourproject.kune.platf.client.dto.UserDTO;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
+import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
+import org.ourproject.kune.platf.client.errors.UserAuthException;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
+
+import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public class SignInPresenter implements SignIn {
+
+ SignInView view;
+ private final Session session;
+ private final I18nUITranslationService i18n;
+ private final UserServiceAsync userService;
+ private final StateManager stateManager;
+ private StateToken previousStateToken;
+
+ public SignInPresenter(final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
+ final UserServiceAsync userService) {
+ this.session = session;
+ this.stateManager = stateManager;
+ this.userService = userService;
+ this.i18n = i18n;
+ }
+
+ public void doSignIn(final StateToken previousStateToken) {
+ this.previousStateToken = previousStateToken;
+ if (!session.isLogged()) {
+ Site.showProgressProcessing();
+ view.show();
+ view.center();
+ Site.hideProgress();
+ } else {
+ stateManager.setState(previousStateToken);
+ }
+ }
+
+ public Object[][] getCountries() {
+ return session.getCountriesArray();
+ }
+
+ public I18nLanguageDTO getCurrentLanguage() {
+ return session.getCurrentLanguage();
+ }
+
+ public Object[][] getLanguages() {
+ return session.getLanguagesArray();
+ }
+
+ public Object[][] getTimezones() {
+ return session.getTimezones();
+ }
+
+ public void init(final SignInView loginview) {
+ this.view = loginview;
+ }
+
+ public void onCancel() {
+ resetMessages();
+ reset();
+ view.hide();
+ stateManager.setState(previousStateToken);
+ }
+
+ public void onClose() {
+ reset();
+ view.hideMessages();
+ if (!session.isLogged()) {
+ stateManager.setState(previousStateToken);
+ }
+ }
+
+ public void onFormRegister() {
+ if (view.isRegisterFormValid()) {
+ view.maskProcessing();
+
+ final I18nLanguageDTO language = new I18nLanguageDTO();
+ language.setCode(view.getLanguage());
+
+ final I18nCountryDTO country = new I18nCountryDTO();
+ country.setCode(view.getCountry());
+
+ final TimeZoneDTO timezone = new TimeZoneDTO();
+ timezone.setId(view.getTimezone());
+
+ final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(), view
+ .getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue");
+ final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+ public void onFailure(final Throwable caught) {
+ view.unMask();
+ try {
+ throw caught;
+ } catch (final EmailAddressInUseException e) {
+ view.setRegisterMessage(i18n.t("This email in in use by other person, try with another."),
+ SiteErrorType.error);
+ } catch (final GroupNameInUseException e) {
+ view.setRegisterMessage(i18n.t("This name in already in use, try with a different name."),
+ SiteErrorType.error);
+ } catch (final Throwable e) {
+ view.setRegisterMessage(i18n.t("Error during registration."), SiteErrorType.error);
+ GWT.log("Other kind of exception in user registration" + e.getMessage() + ", "
+ + e.getLocalizedMessage(), null);
+ e.printStackTrace();
+ throw new RuntimeException();
+ }
+ }
+
+ public void onSuccess(final UserInfoDTO userInfoDTO) {
+ stateManager.gotoToken(userInfoDTO.getHomePage());
+ onSignIn(userInfoDTO);
+ view.hide();
+ view.unMask();
+ view.showWelcolmeDialog();
+ }
+ };
+ userService.createUser(user, callback);
+ }
+ }
+
+ protected void onFormSignIn() {
+ if (view.isSignInFormValid()) {
+ view.maskProcessing();
+
+ final String nickOrEmail = view.getNickOrEmail();
+ final String passwd = view.getLoginPassword();
+
+ final UserDTO user = new UserDTO();
+ user.setShortName(nickOrEmail);
+ user.setPassword(passwd);
+
+ final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+ public void onFailure(final Throwable caught) {
+ view.unMask();
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final UserAuthException e) {
+ view.setSignInMessage(i18n.t("Incorrect nickname/email or password"), SiteErrorType.error);
+ } catch (final Throwable e) {
+ view.setSignInMessage("Error in login", SiteErrorType.error);
+ GWT.log("Other kind of exception in LoginFormPresenter/doLogin", null);
+ throw new RuntimeException();
+ }
+ }
+
+ public void onSuccess(final UserInfoDTO userInfoDTO) {
+ stateManager.setState(previousStateToken);
+ onSignIn(userInfoDTO);
+ view.hide();
+ view.unMask();
+ }
+ };
+ userService.login(user.getShortName(), user.getPassword(), callback);
+ }
+ }
+
+ private void onSignIn(final UserInfoDTO userInfoDTO) {
+ setCookie(userInfoDTO);
+ session.setUserHash(userInfoDTO.getUserHash());
+ session.setCurrentUserInfo(userInfoDTO);
+ final I18nLanguageDTO language = userInfoDTO.getLanguage();
+ i18n.changeCurrentLanguage(language.getCode());
+ session.setCurrentLanguage(language);
+ }
+
+ private void reset() {
+ view.reset();
+ }
+
+ private void resetMessages() {
+ view.hideMessages();
+ }
+
+ private void setCookie(final UserInfoDTO userInfoDTO) {
+ // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
+ final String sessionId = userInfoDTO.getUserHash();
+ final long duration = Session.SESSION_DURATION;
+ final Date expires = new Date(System.currentTimeMillis() + duration);
+ Cookies.setCookie(Site.USERHASH, sessionId, expires, null, "/", false);
+ }
+
+}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java (from rev 792, trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/LoginView.java 2008-07-06 13:51:18 UTC (rev 792)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -0,0 +1,71 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.workspace.client.sitebar.login;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.workspace.client.newgroup.ui.SiteErrorType;
+
+public interface SignInView extends View {
+
+ public void center();
+
+ public String getCountry();
+
+ public String getEmail();
+
+ public String getLanguage();
+
+ public String getLoginPassword();
+
+ public String getLongName();
+
+ public String getNickOrEmail();
+
+ public String getRegisterPassword();
+
+ public String getRegisterPasswordDup();
+
+ public String getShortName();
+
+ public String getTimezone();
+
+ public void hide();
+
+ public void hideMessages();
+
+ public boolean isRegisterFormValid();
+
+ public boolean isSignInFormValid();
+
+ public void maskProcessing();
+
+ public void reset();
+
+ public void show();
+
+ public void showWelcolmeDialog();
+
+ public void unMask();
+
+ void setRegisterMessage(String message, SiteErrorType type);
+
+ void setSignInMessage(String message, SiteErrorType type);
+
+}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/msg/SiteMessagePanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -79,8 +79,9 @@
adjustWidth(width);
}
});
+ super.reset();
+ super.show();
extElem.setVisible(false, false);
- hide();
RootPanel.get().add(this, calculateX(clientWidth), calculateY());
}
@@ -96,9 +97,7 @@
}
public void show() {
- if (!extElem.isVisible()) {
- extElem.show(true);
- }
+ extElem.show(false);
// super.show();
timer.schedule(TIMEVISIBLE);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanelNew.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -12,7 +12,6 @@
import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import org.ourproject.kune.workspace.client.ui.newtmp.themes.WsTheme;
-import com.allen_sauer.gwt.log.client.Log;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Button;
@@ -35,7 +34,7 @@
super.setHeaderText(i18n.t("Group members"));
super.setHeaderTitle(i18n.t("People and groups collaborating in this group"));
super.setBorderStylePrimaryName("k-dropdownouter-members");
- super.addStyleName("kune-Margin-Medium-tl");
+ super.addStyleName("kune-Margin-Medium-t");
gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This is an orphaned project, if you are interested "
+ "please request to join to work on it"), true, true, false, true, false);
final EntitySummary entitySummary = ws.getEntitySummary();
@@ -105,7 +104,6 @@
}
public void setVisible(final boolean visible) {
- Log.debug("Set visible: " + visible + " in GroupMembers");
super.setVisible(visible);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ui/ParticipationSummaryPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -42,7 +42,7 @@
super.setHeaderText(i18n.t("Participates as..."));
super.setHeaderTitle(i18n.t("Groups in which participates"));
super.setBorderStylePrimaryName("k-dropdownouter-part");
- super.addStyleName("kune-Margin-Medium-tl");
+ super.addStyleName("kune-Margin-Medium-t");
gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This user is not member of any group"), true, false, false,
false, false);
final EntitySummary entitySummary = ws.getEntitySummary();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -56,7 +56,7 @@
vp.setCellWidth(flowPanel, "100%");
super.setContent(vp);
super.setBorderStylePrimaryName("k-dropdownouter-tags");
- addStyleName("kune-Margin-Medium-tl");
+ addStyleName("kune-Margin-Medium-t");
flowPanel.addStyleName("kune-Margin-Small-trbl");
ws.getEntitySummary().addInSummary(this);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,5 +1,7 @@
package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
import com.google.gwt.user.client.ui.Hyperlink;
@@ -9,8 +11,26 @@
private final ToolbarButton loggedUserMenu;
private final Hyperlink signInHyperlink;
- public SiteSignInLinkPanel(final SiteSignInLinkPresenter presenter, final WorkspaceSkeleton ws) {
+ public SiteSignInLinkPanel(final SiteSignInLinkPresenter presenter, final I18nUITranslationService i18n,
+ final WorkspaceSkeleton ws) {
signInHyperlink = new Hyperlink();
- loggedUserMenu = new ToolbarButton();
+ signInHyperlink.setText(i18n.t("Sign in to collaborate"));
+ signInHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
+ loggedUserMenu = new ToolbarButton("user");
+ ws.getSiteBar().add(signInHyperlink);
+ // ws.getSiteBar().add(loggedUserMenu);
}
+
+ public void setLoggedUserMenuVisible(final boolean visible) {
+ loggedUserMenu.setVisible(visible);
+ }
+
+ public void setLoggedUserName(final String name, final String homePage) {
+ loggedUserMenu.setText(name);
+ }
+
+ public void setVisibleSignInLink(final boolean visible) {
+ signInHyperlink.setVisible(visible);
+ }
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,22 +1,50 @@
package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.state.Session;
+import com.calclab.suco.client.signal.Slot;
+
public class SiteSignInLinkPresenter implements SiteSignInLink {
-private SiteSignInLinkView view;
+ private SiteSignInLinkView view;
-public SiteSignInLinkPresenter() {
-}
+ public SiteSignInLinkPresenter(final Session session) {
+ session.onUserSignIn(new Slot<UserInfoDTO>() {
+ public void onEvent(final UserInfoDTO user) {
+ doAfterSignIn(user);
+ }
+ });
+ session.onUserSignOut(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ setLogged(false);
+ view.setLoggedUserName("", "");
+ }
+ });
+ }
-public void init(SiteSignInLinkView view) {
-this.view = view;
-}
+ public View getView() {
+ return view;
+ }
+ public void init(final SiteSignInLinkView view) {
+ this.view = view;
+ setLogged(false);
+ }
- public View getView() {
- return view;
+ private void doAfterSignIn(final UserInfoDTO user) {
+ if (user == null) {
+ setLogged(false);
+ } else {
+ setLogged(true);
+ view.setLoggedUserName(user.getShortName(), user.getHomePage());
+ }
}
+ private void setLogged(boolean logged) {
+ view.setVisibleSignInLink(!logged);
+ view.setLoggedUserMenuVisible(logged);
+ }
+
}
-
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignInLinkView.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -3,5 +3,11 @@
import org.ourproject.kune.platf.client.View;
public interface SiteSignInLinkView extends View {
+
+ void setLoggedUserMenuVisible(boolean visible);
+
+ void setLoggedUserName(String shortName, String homePage);
+
+ void setVisibleSignInLink(boolean visible);
+
}
-
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPanel.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,14 +1,32 @@
package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.sitebar.Site;
import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
public class SiteSignOutLinkPanel implements SiteSignOutLinkView {
private final Label signOutLabel;
- public SiteSignOutLinkPanel(final SiteSignOutLinkPresenter presenter, final WorkspaceSkeleton ws) {
+ public SiteSignOutLinkPanel(final SiteSignOutLinkPresenter presenter, final I18nUITranslationService i18n,
+ final WorkspaceSkeleton ws) {
signOutLabel = new Label();
+ signOutLabel.setText(i18n.t("Sign out"));
+ signOutLabel.addStyleName("kune-SiteBarPanel-LabelLink");
+ ws.getSiteBar().add(signOutLabel);
+ signOutLabel.addClickListener(new ClickListener() {
+ public void onClick(final Widget arg0) {
+ Site.showProgressProcessing();
+ presenter.doSignOut();
+ }
+ });
}
+
+ public void setVisible(final boolean visible) {
+ signOutLabel.setVisible(visible);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkPresenter.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,22 +1,92 @@
package org.ourproject.kune.workspace.client.ui.newtmp.sitebar.sitesign;
+import java.util.Date;
+
import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.errors.SessionExpiredException;
+import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.workspace.client.sitebar.rpc.UserServiceAsync;
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
public class SiteSignOutLinkPresenter implements SiteSignOutLink {
-private SiteSignOutLinkView view;
+ private SiteSignOutLinkView view;
+ private final Session session;
+ private final UserServiceAsync userService;
-public SiteSignOutLinkPresenter() {
-}
+ public SiteSignOutLinkPresenter(final Session session, final UserServiceAsync userService,
+ final KuneErrorHandler errorHandler) {
+ this.session = session;
+ this.userService = userService;
+ session.onUserSignIn(new Slot<UserInfoDTO>() {
+ public void onEvent(final UserInfoDTO parameter) {
+ view.setVisible(true);
+ }
+ });
+ session.onUserSignOut(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ view.setVisible(false);
+ }
+ });
+ errorHandler.onSessionExpired(new Slot<Object>() {
+ public void onEvent(final Object parameter) {
+ clientUIsignOut();
+ }
+ });
+ }
-public void init(SiteSignOutLinkView view) {
-this.view = view;
-}
+ public void doSignOut() {
+ final AsyncCallback<Object> callback = new AsyncCallback<Object>() {
+ public void onFailure(final Throwable caught) {
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final SessionExpiredException e) {
+ clientUIsignOut();
+ } catch (final UserMustBeLoggedException e) {
+ clientUIsignOut();
+ } catch (final Throwable e) {
+ GWT.log("Other kind of exception in doLogout", null);
+ throw new RuntimeException();
+ }
+ }
+ public void onSuccess(final Object arg0) {
+ Site.hideProgress();
+ clientUIsignOut();
+ }
+ };
+ userService.logout(session.getUserHash(), callback);
+ }
+
public View getView() {
- return view;
+ return view;
}
+ public void init(final SiteSignOutLinkView view) {
+ this.view = view;
+ view.setVisible(false);
+ }
+
+ private void clientUIsignOut() {
+ // FIXME: Remove cookie doesn't works in all browsers, know
+ // issue:
+ // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded86778ee56690/515dc513c7d085eb?lnk=st&q=remove+cookie#515dc513c7d085eb
+ // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCookie
+ Cookies.removeCookie(Site.USERHASH);
+ // Workaround:
+ Cookies.setCookie(Site.USERHASH, null, new Date(0), null, "/", false);
+ session.setUserHash(null);
+ session.setCurrentUserInfo(null);
+ }
+
}
-
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/sitebar/sitesign/SiteSignOutLinkView.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -3,5 +3,6 @@
import org.ourproject.kune.platf.client.View;
public interface SiteSignOutLinkView extends View {
+
+ void setVisible(boolean visible);
}
-
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/state/StateManagerTest.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,46 +1,64 @@
package org.ourproject.kune.platf.client.state;
-import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
-import org.ourproject.kune.platf.client.app.Application;
+import org.mockito.Mockito;
import org.ourproject.kune.platf.client.app.HistoryWrapper;
-import org.ourproject.kune.workspace.client.sitebar.Site;
+import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.workspace.client.sitebar.SiteToken;
import org.ourproject.kune.workspace.client.ui.newtmp.WorkspaceManager;
+import com.calclab.suco.client.signal.Slot;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
public class StateManagerTest {
- private StateManager stateManager;
+ private static final String HASH = "someUserHash";
+ private StateManagerDefault stateManager;
private HistoryWrapper history;
+ private ContentProvider contentProvider;
+ private Session session;
+ @SuppressWarnings("unchecked")
@Test
- public void fixmeToken() {
- stateManager.onHistoryChanged(Site.FIXME_TOKEN);
- }
-
- @Test
public void getDefGroup() {
stateManager.onHistoryChanged("site.docs");
+ Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
}
+ @SuppressWarnings("unchecked")
@Before
public void init() {
- final ContentProvider contentProvider = EasyMock.createStrictMock(ContentProvider.class);
- final Application application = EasyMock.createStrictMock(Application.class);
- final Session session = EasyMock.createStrictMock(Session.class);
- history = EasyMock.createStrictMock(HistoryWrapper.class);
- final WorkspaceManager ws = EasyMock.createStrictMock(WorkspaceManager.class);
- stateManager = new StateManagerDefault(contentProvider, application, session, history, ws);
+ contentProvider = Mockito.mock(ContentProvider.class);
+ session = Mockito.mock(Session.class);
+ history = Mockito.mock(HistoryWrapper.class);
+ final WorkspaceManager ws = Mockito.mock(WorkspaceManager.class);
+ stateManager = new StateManagerDefault(contentProvider, session, history, ws);
+ Mockito.stub(session.getUserHash()).toReturn(HASH);
}
+ @SuppressWarnings("unchecked")
@Test
public void normalStartLoggedUser() {
// When a user enter reload state, also if the application is starting
// (and the user was logged)
- EasyMock.expect(history.getToken()).andReturn("");
- EasyMock.replay(history);
+ Mockito.stub(history.getToken()).toReturn("");
stateManager.reload();
- EasyMock.verify(history);
+ Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
}
+ @SuppressWarnings("unchecked")
+ @Test
+ public void siteTokenFirstLoadDefContentAndFireSlot() {
+ final Slot slot = Mockito.mock(Slot.class);
+ final String token = SiteToken.signin.toString();
+ stateManager.addSiteToken(token, slot);
+ stateManager.onHistoryChanged(token);
+ Mockito.verify(slot, Mockito.times(1)).onEvent(Mockito.anyObject());
+ Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
+ (StateToken) Mockito.anyObject(), (AsyncCallback<StateDTO>) Mockito.anyObject());
+ }
}
Deleted: trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java 2008-07-21 14:30:36 UTC (rev 812)
+++ trunk/src/test/java/org/ourproject/kune/sitebar/client/ui/LoginPresenterTest.java 2008-07-23 04:11:58 UTC (rev 813)
@@ -1,52 +0,0 @@
-package org.ourproject.kune.sitebar.client.ui;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.ourproject.kune.platf.client.services.I18nTranslationServiceMocked;
-import org.ourproject.kune.platf.client.state.SessionImpl;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginListener;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginPresenter;
-import org.ourproject.kune.workspace.client.sitebar.login.LoginView;
-
-public class LoginPresenterTest {
- private LoginPresenter presenter;
- private LoginView view;
- private LoginListener listener;
-
- @Before
- public void createObjects() {
- listener = EasyMock.createStrictMock(LoginListener.class);
- presenter = new LoginPresenter(new SessionImpl("foo", null), listener, new I18nTranslationServiceMocked());
- view = EasyMock.createStrictMock(LoginView.class);
- }
-
- @Test
- public void nickPassTyped() {
- // view.setEnabledLoginButton(false);
- // view.setEnabledLoginButton(true);
- EasyMock.replay(view);
-
- presenter.init(view);
- // presenter.onDataChanged("luther.b", "somepass");
- EasyMock.verify(view);
- }
-
- @Test
- public void noUserInput() {
- // view.setEnabledLoginButton(false);
- EasyMock.replay(view);
-
- presenter.init(view);
- // presenter.onDataChanged("", "");
- EasyMock.verify(view);
- }
-
- @Test
- public void testViewInitialization() {
- // view.setEnabledLoginButton(false);
- EasyMock.replay(view);
- presenter.init(view);
- EasyMock.verify(view);
- }
-}
More information about the kune-commits
mailing list