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. - * [email protected] - * - * 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. - * [email protected] - * - * 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. + * [email protected] + * + * 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. + * [email protected] + * + * 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("[email protected]", ""); + 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; - -@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; - -@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/ded86... - // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCo... - 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; - -@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/ded86... + // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeCo... + 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); - } -}