diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..cf66d3b --- /dev/null +++ b/.classpath @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..e79d672 --- /dev/null +++ b/.project @@ -0,0 +1,59 @@ + + + vre-definition + vre-definition project + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.maven.ide.eclipse.maven2Nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + com.google.gwt.eclipse.core.gwtNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..ba3c245 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/.settings/com.google.appengine.eclipse.core.prefs b/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..a60576c --- /dev/null +++ b/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Thu Jun 16 10:18:26 CEST 2011 +eclipse.preferences.version=1 +filesCopiedToWebInfLib= diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..32254b6 --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= +lastWarOutDir=/Users/massi/Documents/workspace/vre-definition/target/vre-definition-3.0.0-SNAPSHOT +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..1cd91a7 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +entryPointModules=org.gcube.portlets.admin.vredefinition.VREDefinition +filesCopiedToWebInfLib=gwt-servlet.jar +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgc3JjL21haW4vd2ViYXBwXV0+PC9leHRyYS1hcmdzPjx2bS1hcmdzPjwhW0NEQVRBWy1YbXg1MTJtXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLmNvbXBhbnkuU29tZU1vZHVsZTwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+ diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..45a6e0e --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..c9844b7 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..7893960 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/.settings/org.maven.ide.eclipse.prefs b/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 0000000..dae95d4 --- /dev/null +++ b/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,9 @@ +#Thu Sep 02 10:42:12 CEST 2010 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\\:testResources +skipCompilerPlugin=true +version=1 diff --git a/VREDefinitionTest-dev.launch b/VREDefinitionTest-dev.launch new file mode 100644 index 0000000..f7bc9a8 --- /dev/null +++ b/VREDefinitionTest-dev.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/VREDefinitionTest-prod.launch b/VREDefinitionTest-prod.launch new file mode 100644 index 0000000..12b94f8 --- /dev/null +++ b/VREDefinitionTest-prod.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..cec66ec --- /dev/null +++ b/pom.xml @@ -0,0 +1,231 @@ + + + + 4.0.0 + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.portlets.admin + vre-definition + war + 3.0.0-SNAPSHOT + VRE Definition Portlet + + gCube VRE Definition Portlet shows a Wizard to create VREs. + + + scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId} + scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId} + http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId} + + + + 2.5.1 + distro + + 1.6 + 1.6 + ${project.build.directory}/${project.build.finalName} + + UTF-8 + UTF-8 + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + + + com.google.gwt + gwt-user + + provided + + + + xerces + xercesImpl + 2.9.1 + provided + + + org.gcube.portlets.user + gcube-widgets + provided + + + org.gcube.portal + custom-portal-handler + provided + + + org.gcube.core + common-scope-maps + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + org.gcube.vremanagement + vremodeler-client-library + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + org.gcube.applicationsupportlayer + aslcore + provided + + + org.gcube.applicationsupportlayer + aslvre + [5.0.0-SNAPSHOT, 6.0.0-SNAPSHOT) + + + com.sencha.gxt + gxt + 2.2.5 + provided + + + org.gcube.dvos + usermanagement-core + provided + + + com.liferay.portal + portal-service + 6.0.6 + provided + + + javax.portlet + portlet-api + provided + + + log4j + log4j + + + org.slf4j + slf4j-log4j12 + + + org.slf4j + slf4j-api + + + + + + ${webappDirectory}/WEB-INF/classes + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwtVersion} + + + + compile + + + + + + + VREDefinition.html + ${webappDirectory} + + + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + compile + + exploded + + + + + ${webappDirectory} + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.5 + 1.5 + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2 + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + + copy-profile + install + + copy-resources + + + target + + + ${distroDirectory} + true + + profile.xml + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/AppController.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/AppController.java new file mode 100644 index 0000000..3473400 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/AppController.java @@ -0,0 +1,371 @@ +package org.gcube.portlets.admin.vredefinition.client; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.portlets.admin.vredefinition.client.event.BackButtonEvent; +import org.gcube.portlets.admin.vredefinition.client.event.BackButtonEventHandler; +import org.gcube.portlets.admin.vredefinition.client.event.ExternalResourceSelectionEvent; +import org.gcube.portlets.admin.vredefinition.client.event.ExternalResourceSelectionEventHandler; +import org.gcube.portlets.admin.vredefinition.client.event.NextButtonEvent; +import org.gcube.portlets.admin.vredefinition.client.event.NextButtonEventHandler; +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeFunctionalityEvent; +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeFunctionalityEventHandler; +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeWizardMenuEvent; +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeWizardMenuEventHandler; +import org.gcube.portlets.admin.vredefinition.client.model.VREDefinitionModel; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.client.model.WizardStepType; +import org.gcube.portlets.admin.vredefinition.client.presenter.Presenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREDefinitionPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREDescriptionPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREFinishWizardPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREFunctionalitiesPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREInfoFunctionalitiesPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.WizardActionsPresenter; +import org.gcube.portlets.admin.vredefinition.client.presenter.WizardMenuViewPresenter; +import org.gcube.portlets.admin.vredefinition.client.view.VREDefinitionView; +import org.gcube.portlets.admin.vredefinition.client.view.VREDescriptionView; +import org.gcube.portlets.admin.vredefinition.client.view.VREFinishWizardView; +import org.gcube.portlets.admin.vredefinition.client.view.VREFunctionalitiesView; +import org.gcube.portlets.admin.vredefinition.client.view.VREInfoFunctionalitiesView; +import org.gcube.portlets.admin.vredefinition.client.view.WizardActionsView; +import org.gcube.portlets.admin.vredefinition.client.view.WizardMenuView; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.ResizeEvent; +import com.google.gwt.event.logical.shared.ResizeHandler; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.RootPanel; + + +public class AppController { + + private final VREDefinitionModel vreModel = new VREDefinitionModel(); + + private final HandlerManager eventBus; + + private VREDefinitionPresenter vreDefPresenter; + private Presenter upCenterPanelPresenter; + private WizardActionsPresenter wizardActionsPresenter; + private WizardMenuViewPresenter wizardMenuPresenter; + + private RootPanel container; + + private HashMap> funcToExternalResources = new HashMap>(); + + public List getExtResourcesFromApp(String funcId) { + return funcToExternalResources.get(funcId); + } + + public HandlerManager getBus() { + return eventBus; + } + + private static AppController singleton; + + public static AppController getAppController() { + return singleton; + } + + private final VREDefinitionServiceAsync rpcService; + + public AppController(VREDefinitionServiceAsync rpcService, HandlerManager eventBus) { + singleton = this; + this.rpcService = rpcService; + this.eventBus = eventBus; + bind(); + } + + public void go(RootPanel container) { + + this.container = container; + + final VREDefinitionView mainView = new VREDefinitionView(); + vreDefPresenter = new VREDefinitionPresenter(mainView); + mainView.mask("Loading data ...."); + vreDefPresenter.go(container); + updateSize(); + + rpcService.isEditMode(new AsyncCallback>() { + public void onFailure(Throwable arg0) { + // TODO Auto-generated method stub + + } + public void onSuccess(Map map) { + + if(map != null) { + vreModel.setEditMode(); + VREFunctionalityModel functionalities = (VREFunctionalityModel)map.get("functionalities"); + vreModel.setVREFunctionalities(functionalities.getChildren()); + } + + WizardActionsView bottomView = new WizardActionsView(mainView.getBottomCenterPanel()); + wizardActionsPresenter = new WizardActionsPresenter(eventBus, bottomView); + wizardActionsPresenter.go(mainView.getBottomCenterPanel()); + wizardActionsPresenter.setStepWizard(vreModel.getWizardStep()); + + mainView.unmask(); + goStepWizard(); + } + }); + + } + + public void bind() { + eventBus.addHandler(ExternalResourceSelectionEvent.TYPE, new ExternalResourceSelectionEventHandler() { + + public void onSelectedExternalResources(ExternalResourceSelectionEvent event) { + funcToExternalResources.put(event.getFunctionalityModel().getId(), event.getAssociatedExternalResources()); + GWT.log("PUT: " + event.getFunctionalityModel()+ " ID->" + event.getFunctionalityModel().getId()); + for (ExternalResourceModel extRes : event.getAssociatedExternalResources()) { + GWT.log(extRes.getName()+extRes.getId()+extRes.isSelected()); + } + } + }); + + eventBus.addHandler(NextButtonEvent.TYPE, new NextButtonEventHandler() { + + public void onNextButton(NextButtonEvent event) { + + if(vreModel.getWizardStep() == WizardStepType.VREDefinitionEnd) + showCreateVREConfirm(); + else + goNextStepWizard(); + } + }); + + eventBus.addHandler(BackButtonEvent.TYPE, new BackButtonEventHandler(){ + + public void onBackButton(BackButtonEvent event) { + goBackStepWizard(); + } + + }); + + eventBus.addHandler(TreeNodeWizardMenuEvent.TYPE, new TreeNodeWizardMenuEventHandler() { + + public void onClick(TreeNodeWizardMenuEvent event) { + + if(upCenterPanelPresenter.doSave()) + vreModel.setWizardStep(event.getStepModel().getType()); + goStepWizard(); + } + }); + + eventBus.addHandler(TreeNodeFunctionalityEvent.TYPE, new TreeNodeFunctionalityEventHandler() { + public void onClick(TreeNodeFunctionalityEvent event) { + VREFunctionalityModel functionality = event.getFunctionalityModel(); + vreDefPresenter.display.getEastPanel().setExpanded(true); + vreDefPresenter.display.getEastPanel().setVisible(true); + + + VREInfoFunctionalitiesPresenter infoPresenter = new VREInfoFunctionalitiesPresenter( + new VREInfoFunctionalitiesView(functionality, rpcService)); + + infoPresenter.go(vreDefPresenter.display.getEastPanel()); + + } + }); + + Window.addResizeHandler(new ResizeHandler() { + + public void onResize(ResizeEvent event) { + + updateSize(); + + WizardActionsView bottomView = new WizardActionsView(vreDefPresenter.display.getBottomCenterPanel()); + wizardActionsPresenter = new WizardActionsPresenter(eventBus, bottomView); + wizardActionsPresenter.go(vreDefPresenter.display.getBottomCenterPanel()); + + goStepWizard(); + } + }); + + } + + public void updateSize() { + + int topBorder = container.getAbsoluteTop(); + int leftBorder = container.getAbsoluteLeft(); + + int rootHeight = Window.getClientHeight() - topBorder; + int rootWidth = Window.getClientWidth() - 2* leftBorder; + vreDefPresenter.display.asWidget().setHeight(String.valueOf(rootHeight - 40)); + vreDefPresenter.display.asWidget().setWidth(String.valueOf(rootWidth - 20)); + vreDefPresenter.display.getUpContainer().setSize(rootWidth - 25, rootHeight - 80); + vreDefPresenter.display.getBottomCenterPanel().setSize(rootWidth - 25, 48); + + + } + + private void goNextStepWizard(){ + + if(upCenterPanelPresenter.doSave()) + vreModel.setNextStep(); + + goStepWizard(); + } + + private void goStepWizard() { + + WizardStepType step = vreModel.getWizardStep(); + vreDefPresenter.display.getEastPanel().setVisible(false); + + switch (step) { + case VREDescription: + upCenterPanelPresenter = new VREDescriptionPresenter(rpcService, + vreModel,new VREDescriptionView()); + + break; + case VREFunctionalities: { + upCenterPanelPresenter = new VREFunctionalitiesPresenter(rpcService, + vreModel, eventBus,new VREFunctionalitiesView()); + + + VREInfoFunctionalitiesPresenter infoPresenter = new VREInfoFunctionalitiesPresenter( + new VREInfoFunctionalitiesView()); + + infoPresenter.go(vreDefPresenter.display.getEastPanel()); + } + break; + case VREDefinitionEnd: + upCenterPanelPresenter = new VREFinishWizardPresenter(new VREFinishWizardView(vreModel.getVREDescriptionBean(), vreModel.getVREFunctionalities())); + break; + default: + break; + } + + upCenterPanelPresenter.go(vreDefPresenter.display.getUpCenterPanel()); + + wizardMenuPresenter = new WizardMenuViewPresenter(eventBus, + new WizardMenuView(vreModel.getWizardStepModel())); + wizardMenuPresenter.go(vreDefPresenter.display.getwestPanel()); + + wizardActionsPresenter.setStepWizard(step); + + } + + private void goBackStepWizard(){ + vreModel.setBackStep(); + goStepWizard(); + } + + private void showCreateVREConfirm() { + + MessageBox.confirm("Confirm", + " The current VRE Definition will be stored in the infrastructure waiting for approval",new Listener() { + public void handleEvent(MessageBoxEvent ce) { + Button btn = ce.getButtonClicked(); + if(btn.getText().equals("Yes")) + createVRE(); + } + }); + } + + private void createVRE() { + + if(!validateVREDescription()) + return; + + List items = validateVREFunctionalitiesSelected(); + if(items == null || items.isEmpty()) + return; + + List categoriesIDs = new ArrayList(); + List functionalitiesIDs = new ArrayList(); + for(ModelData item : items) { + VREFunctionalityModel func = (VREFunctionalityModel)item; + if(func.getChildCount() > 0) { + + categoriesIDs.add(func.getId()); + } else { + functionalitiesIDs.add(func.getId()); + } + } + String[] functionalities = functionalitiesIDs.toArray(new String[functionalitiesIDs.size()]); + + rpcService.setVRE(vreModel.getVREDescriptionBean(), functionalities, funcToExternalResources, new AsyncCallback() { + + public void onSuccess(String arg0) { + + MessageBox.info("VRE Definition", "The VRE is stored on Service for approving", null); + + vreDefPresenter.display.getBottomCenterPanel().setVisible(false); + vreDefPresenter.display.getwestPanel().setVisible(false); + + int topBorder = container.getAbsoluteTop(); + int leftBorder = container.getAbsoluteLeft(); + + int rootHeight = Window.getClientHeight() - topBorder; + int rootWidth = Window.getClientWidth() - 2* leftBorder; + vreDefPresenter.display.asWidget().setHeight(String.valueOf(rootHeight - 40)); + vreDefPresenter.display.asWidget().setWidth(String.valueOf(rootWidth - 20)); + vreDefPresenter.display.getUpContainer().setSize(rootWidth - 25, rootHeight - 40); + upCenterPanelPresenter.display().setSize(String.valueOf(rootWidth - 35), String.valueOf(rootHeight - 80)); + } + + public void onFailure(Throwable arg0) { + MessageBox.alert("VRE Definition", "Error ...", null); + } + }); + } + + private boolean validateVREDescription(){ + + VREDescriptionBean bean = vreModel.getVREDescriptionBean(); + boolean check = true; + if(bean.getName() == null || bean.getName().trim().isEmpty()) + check = false; + if(bean.getDescription() == null || bean.getDescription().trim().isEmpty()) + check = false; + if(bean.getDesigner() == null || bean.getDesigner().trim().isEmpty()) + check = false; + if(bean.getManager() == null || bean.getManager().trim().isEmpty()) + check = false; + if(bean.getStartTime() == null) + check = false; + if(bean.getEndTime() == null) + check = false; + + if(!check) { + vreModel.setWizardStep(WizardStepType.VREDescription); + goStepWizard(); + + + } + + return check; + } + + private List validateVREFunctionalitiesSelected() { + + List items = new ArrayList(); + List categories = vreModel.getVREFunctionalities(); + for(ModelData category : categories) { + for(ModelData func : ((VREFunctionalityModel)category).getChildren()) + if (((VREFunctionalityModel)func).isSelected()){ + items.add(func); + } + } + + if(items.isEmpty()) { + vreModel.setWizardStep(WizardStepType.VREFunctionalities); + goStepWizard(); + MessageBox.alert("Alert", "Please, select at least one Functionality", null); + } + return items; + } +} + diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinition.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinition.java new file mode 100644 index 0000000..54c10af --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinition.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.portlets.admin.vredefinition.client; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.ui.RootPanel; + +/** + * @author gioia + * + */ +public class VREDefinition implements EntryPoint { + + public static final String CONTAINER_DIV = "VREDefinitionDIV"; + + public void onModuleLoad() { + + HandlerManager eventBus = new HandlerManager(null); + VREDefinitionServiceAsync rpcService = GWT.create(VREDefinitionService.class); + AppController appController = new AppController(rpcService,eventBus); + + + appController.go(RootPanel.get(CONTAINER_DIV)); + + + // RootPanel.get(CONTAINER_DIV).add(view); + + //updateSize(); + } + + /** + * updateSize + */ + public void updateSize() { + + + + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionService.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionService.java new file mode 100644 index 0000000..843c317 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionService.java @@ -0,0 +1,44 @@ +package org.gcube.portlets.admin.vredefinition.client; + + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; +import org.gcube.portlets.admin.vredefinition.shared.exception.VREDefinitionException; + +import com.google.gwt.user.client.rpc.RemoteService; +import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; + +@RemoteServiceRelativePath("VREDefinitionServiceImpl") +public interface VREDefinitionService extends RemoteService { + ArrayList getResourceCategoryByFunctionality(String funcId); + /** + * @return VRE Existing Names + */ + String[] getExistingNames(); + + Map getVRE() throws VREDefinitionException; + + /** + * @param name VRE name + * @param description VRE description + * @param designer VRE designer + * @param manager VRE manager + * @param fromDate VRE start date + * @param toDate VRE end date + * @return OK string if the operation is performed correctly + * @throws VREDefinitionException + */ + String setVRE(VREDescriptionBean bean, String[] functionalityIDs, HashMap> funcToExternalResources) throws VREDefinitionException; + + + VREFunctionalityModel getFunctionality(boolean isEdit) throws VREDefinitionException; + + Map isEditMode(); + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionServiceAsync.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionServiceAsync.java new file mode 100644 index 0000000..d9480b7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/VREDefinitionServiceAsync.java @@ -0,0 +1,34 @@ +package org.gcube.portlets.admin.vredefinition.client; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +public interface VREDefinitionServiceAsync { + + void getExistingNames(AsyncCallback callback); + + void setVRE( + VREDescriptionBean bean, + String[] functionalityIDs, + HashMap> funcToExternalResources, + AsyncCallback callback); + + void getFunctionality(boolean isEdit, + AsyncCallback callback); + + void getVRE(AsyncCallback> callback); + + void isEditMode(AsyncCallback> callback); + + void getResourceCategoryByFunctionality(String funcId, + AsyncCallback> callback); + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEvent.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEvent.java new file mode 100644 index 0000000..c6140da --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEvent.java @@ -0,0 +1,22 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.GwtEvent; + + +public class BackButtonEvent extends GwtEvent { + public static GwtEvent.Type TYPE = new Type(); + + @Override + protected void dispatch(BackButtonEventHandler handler) { + // TODO Auto-generated method stub + System.out.println("Dispatch event"); + handler.onBackButton(this); + } + + @Override + public Type getAssociatedType() { + // TODO Auto-generated method stub + return TYPE; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEventHandler.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEventHandler.java new file mode 100644 index 0000000..b9431e4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/BackButtonEventHandler.java @@ -0,0 +1,7 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.EventHandler; + +public interface BackButtonEventHandler extends EventHandler { + void onBackButton(BackButtonEvent event); +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEvent.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEvent.java new file mode 100644 index 0000000..bf8938e --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEvent.java @@ -0,0 +1,46 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * + * @author Massimiliano Assante ISTI-CNR + * @version 0.2 Sep 2012 + * + */ +public class ExternalResourceSelectionEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + private VREFunctionalityModel functionality; + private List associatedExternalResources; + + public ExternalResourceSelectionEvent(VREFunctionalityModel functionality, List resources) { + this.functionality = functionality; + this.associatedExternalResources = resources; + } + + public List getAssociatedExternalResources() { + return associatedExternalResources; + } + + public VREFunctionalityModel getFunctionalityModel() { + return functionality; + } + + @Override + protected void dispatch(ExternalResourceSelectionEventHandler handler) { + handler.onSelectedExternalResources(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEventHandler.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEventHandler.java new file mode 100644 index 0000000..5ec2553 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/ExternalResourceSelectionEventHandler.java @@ -0,0 +1,13 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.EventHandler; +/** + * + * @author Massimiliano Assante ISTI-CNR + * @version 0.2 Sep 2012 + * + */ +public interface ExternalResourceSelectionEventHandler extends EventHandler { + + void onSelectedExternalResources(ExternalResourceSelectionEvent event); +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEvent.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEvent.java new file mode 100644 index 0000000..f6e9e26 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEvent.java @@ -0,0 +1,19 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.GwtEvent; + +public class NextButtonEvent extends GwtEvent { + public static Type TYPE = new Type(); + + @Override + protected void dispatch(NextButtonEventHandler handler) { + handler.onNextButton(this); + + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEventHandler.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEventHandler.java new file mode 100644 index 0000000..e26ea94 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/NextButtonEventHandler.java @@ -0,0 +1,8 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.EventHandler; + +public interface NextButtonEventHandler extends EventHandler { + void onNextButton(NextButtonEvent event); + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEvent.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEvent.java new file mode 100644 index 0000000..61f2de8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEvent.java @@ -0,0 +1,32 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; + +import com.google.gwt.event.shared.GwtEvent; + + +public class TreeNodeFunctionalityEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + private VREFunctionalityModel functionality; + + public TreeNodeFunctionalityEvent(VREFunctionalityModel functionality) { + this.functionality = functionality; + } + + public VREFunctionalityModel getFunctionalityModel() { + return functionality; + } + + @Override + protected void dispatch(TreeNodeFunctionalityEventHandler handler) { + handler.onClick(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEventHandler.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEventHandler.java new file mode 100644 index 0000000..10c0c03 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeFunctionalityEventHandler.java @@ -0,0 +1,8 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.EventHandler; + +public interface TreeNodeFunctionalityEventHandler extends EventHandler { + + void onClick(TreeNodeFunctionalityEvent event); +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEvent.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEvent.java new file mode 100644 index 0000000..c922906 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEvent.java @@ -0,0 +1,31 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import org.gcube.portlets.admin.vredefinition.client.model.WizardStepModel; + +import com.google.gwt.event.shared.GwtEvent; + + +public class TreeNodeWizardMenuEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + private WizardStepModel step; + + public TreeNodeWizardMenuEvent(WizardStepModel step) { + this.step = step; + } + + public WizardStepModel getStepModel() { + return step; + } + + @Override + protected void dispatch(TreeNodeWizardMenuEventHandler handler) { + handler.onClick(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEventHandler.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEventHandler.java new file mode 100644 index 0000000..6937136 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/event/TreeNodeWizardMenuEventHandler.java @@ -0,0 +1,8 @@ +package org.gcube.portlets.admin.vredefinition.client.event; + +import com.google.gwt.event.shared.EventHandler; + +public interface TreeNodeWizardMenuEventHandler extends EventHandler{ + + void onClick(TreeNodeWizardMenuEvent event); +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREDefinitionModel.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREDefinitionModel.java new file mode 100644 index 0000000..baf0a9d --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREDefinitionModel.java @@ -0,0 +1,91 @@ +package org.gcube.portlets.admin.vredefinition.client.model; + + +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.extjs.gxt.ui.client.data.ModelData; + + +public class VREDefinitionModel { + + private VREDescriptionBean VREDescription; + private List VREFunctionalitiesSelected; + private WizardStepModel steps; + private WizardStepType stepSelected; + + public VREDefinitionModel() { + steps = new WizardStepModel("root","info-icon",WizardStepType.VREDefinitionStart); + steps.add(new WizardStepModel("Info","info-icon",WizardStepType.VREDescription)); + + stepSelected = WizardStepType.VREDescription; + } + + public void setEditMode() { + steps.add(new WizardStepModel("Functionalities","functionality-icon",WizardStepType.VREFunctionalities)); + steps.add(new WizardStepModel("Summary","report-icon",WizardStepType.VREDefinitionEnd)); + } + + public void setVREDescription(VREDescriptionBean bean){ + this.VREDescription = bean; + } + + public VREDescriptionBean getVREDescriptionBean() { + return VREDescription; + } + + public void setVREFunctionalities(List list) { + this.VREFunctionalitiesSelected = list; + } + + public List getVREFunctionalities() { + return VREFunctionalitiesSelected; + } + + public void setNextStep() { + + int step = stepSelected.ordinal(); + step++; + addStep(step); + stepSelected = WizardStepType.values()[step]; + } + + private void addStep(int step) { + + if (steps.getChildren().size() >= step) + return; + + WizardStepType type = WizardStepType.values()[step]; + switch(type){ + case VREDescription: + steps.add(new WizardStepModel("Info","info-icon",WizardStepType.VREDescription)); + break; + case VREFunctionalities: + steps.add(new WizardStepModel("Functionalities","functionality-icon",WizardStepType.VREFunctionalities)); + break; + case VREDefinitionEnd: + steps.add(new WizardStepModel("Summary","report-icon",WizardStepType.VREDefinitionEnd)); + break; + default: + break; + } + + } + + public void setBackStep() { + stepSelected = WizardStepType.values()[stepSelected.ordinal() - 1]; + } + + public WizardStepModel getWizardStepModel() { + return steps; + } + + public WizardStepType getWizardStep() { + return stepSelected; + } + + public void setWizardStep(WizardStepType step) { + this.stepSelected = step; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREFunctionalityModel.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREFunctionalityModel.java new file mode 100644 index 0000000..153ecf8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/VREFunctionalityModel.java @@ -0,0 +1,65 @@ +package org.gcube.portlets.admin.vredefinition.client.model; + + +import com.extjs.gxt.ui.client.data.BaseTreeModel; + +@SuppressWarnings("serial") +public class VREFunctionalityModel extends BaseTreeModel{ + + + public VREFunctionalityModel() { + + } + /** + * @param node + * @param description + * @param icon + */ + public VREFunctionalityModel(String id, String node, String description, String icon, boolean isSelected) { + set("id",id); + set("node", node); + set("name", node); + set("description", description); + set("icon", icon); + set("isSelected", isSelected); + } + + /** + * + * @param children + */ + public void addChildren(VREFunctionalityModel[] children) { + for (int i = 0; i < children.length; i++) { + add(children[i]); + } + } + + public String getId() { + return (String) get("id"); + } + + public String getName() { + return (String) get("name"); + } + + public String getNode() { + return (String) get("node"); + } + + public String getDescription() { + return (String) get("description"); + } + + public String toString() { + return getName(); + } + + public boolean isSelected() { + return ((Boolean) get("isSelected")).booleanValue(); + } + + public void setSelected(boolean selected) { + set("isSelected", selected); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepModel.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepModel.java new file mode 100644 index 0000000..31eb577 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepModel.java @@ -0,0 +1,39 @@ +package org.gcube.portlets.admin.vredefinition.client.model; + +import com.extjs.gxt.ui.client.data.BaseTreeModel; + +public class WizardStepModel extends BaseTreeModel { + + private WizardStepType type; + public WizardStepModel(String name, String icon, WizardStepType type) { + + setName(name); + setType(type); + setIcon(icon); + } + + public String getName() { + return get("name"); + } + + public void setName(String name) { + set("name", name); + } + + public WizardStepType getType() { + return type; + } + + public void setType(WizardStepType type) { + this.type = type; + } + + public void setIcon(String icon) { + set("icon",icon); + } + + public String getIcon() { + return get("icon"); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepType.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepType.java new file mode 100644 index 0000000..cd39b2b --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/model/WizardStepType.java @@ -0,0 +1,9 @@ +package org.gcube.portlets.admin.vredefinition.client.model; + +public enum WizardStepType { + + VREDefinitionStart, + VREDescription, + VREFunctionalities, + VREDefinitionEnd; +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/Presenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/Presenter.java new file mode 100644 index 0000000..ffbfe84 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/Presenter.java @@ -0,0 +1,14 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.google.gwt.user.client.ui.Widget; + + + +public interface Presenter { + + public void go(LayoutContainer container); + public boolean doSave(); + public Widget display(); + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDefinitionPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDefinitionPresenter.java new file mode 100644 index 0000000..b6a2c69 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDefinitionPresenter.java @@ -0,0 +1,51 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import org.gcube.portlets.admin.vredefinition.client.VREDefinitionServiceAsync; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREDescriptionPresenter.Display; +import org.gcube.portlets.admin.vredefinition.client.view.WizardMenuView; +import org.gcube.portlets.user.gcubewidgets.client.GCubePanel; + +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.event.logical.shared.ResizeEvent; +import com.google.gwt.event.logical.shared.ResizeHandler; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.Widget; + +public class VREDefinitionPresenter { + + public interface Display { + LayoutContainer getUpCenterPanel(); + LayoutContainer getwestPanel(); + ToolBar getBottomCenterPanel(); + LayoutContainer getUpContainer(); + ContentPanel getEastPanel(); + Widget asWidget(); + } + + public final Display display; + private RootPanel container; + + public VREDefinitionPresenter(Display display) { + this.display = display; + + } + + + public void go(RootPanel container) { + this.container = container; + + container.clear(); + GCubePanel mainPanel = new GCubePanel("Defining the Virtual Research Environment", + "https://gcube.wiki.gcube-system.org/gcube/index.php/VRE_Administration#VRE_Definition"); + // updateSize(); + mainPanel.add(display.asWidget()); + container.add(mainPanel); + + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDescriptionPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDescriptionPresenter.java new file mode 100644 index 0000000..eab24a6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREDescriptionPresenter.java @@ -0,0 +1,139 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import java.util.Date; +import java.util.Map; + +import org.gcube.portlets.admin.vredefinition.client.VREDefinitionServiceAsync; +import org.gcube.portlets.admin.vredefinition.client.model.VREDefinitionModel; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.extjs.gxt.ui.client.data.BaseModel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.form.ComboBox; +import com.extjs.gxt.ui.client.widget.form.DateField; +import com.extjs.gxt.ui.client.widget.form.TextArea; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Widget; + + + +public class VREDescriptionPresenter implements Presenter { + + public interface Display { + TextField getVREName(); + TextField getVREDesigner(); + DateField getFromDate(); + DateField getToDate(); + ComboBox getVREManager(); + TextArea getVREDescription(); + void setData(Map result,VREDescriptionBean bean); + Widget asWidget(); + } + + private final VREDefinitionModel vreModel; + + private final Display display; + private final VREDefinitionServiceAsync rpcService; + private LayoutContainer container; + + + public VREDescriptionPresenter(VREDefinitionServiceAsync rpcService,VREDefinitionModel model, Display display) { + this.vreModel = model; + this.rpcService = rpcService; + this.display = display; + } + + public boolean doSave() { + + String description = display.getVREDescription().getValue(); + String designer = display.getVREDesigner().getValue(); + String name = display.getVREName().getValue(); + String manager = null; + if(display.getVREManager().getValue()!= null) + manager = (String)display.getVREManager().getValue().get("name"); + + Date fromDate = display.getFromDate().getValue(); + Date toDate = display.getToDate().getValue(); + + VREDescriptionBean bean = new VREDescriptionBean(name, description, + designer, manager, fromDate, toDate); + vreModel.setVREDescription(bean); + + return validateForm(); + } + + public void go(LayoutContainer container) { + // TODO Auto-generated method stub + this.container = container; + + container.removeAll(); + getVREInfo(); + container.add(display.asWidget()); + + container.mask("Loading data...", "loading-indicator"); + container.layout(); + + + } + + private void getVREInfo() { + + rpcService.getVRE(new AsyncCallback>() { + + + public void onFailure(Throwable arg0) { + // TODO Auto-generated method stub + MessageBox.alert("VRE Definition","We cannot find any VRE-Manager user for this environment." + + " There must be at least one.", null); + //container.unmask(); + } + + + public void onSuccess(Map result) { + // TODO Auto-generated method stub + VREDescriptionBean bean = vreModel.getVREDescriptionBean(); + if(bean == null && result.get("vreName") != null) { + bean = new VREDescriptionBean((String)result.get("vreName"),(String)result.get("vreDescription"), + (String)result.get("vreDesigner"),(String)result.get("vreManager"), + (Date)result.get("vreStartTime"),(Date)result.get("vreEndTime")); + } + display.setData(result,bean); + container.unmask(); + + } + + }); + + + + } + + private boolean validateForm(){ + + VREDescriptionBean bean = vreModel.getVREDescriptionBean(); + boolean check = true; + if(bean.getName() == null || bean.getName().trim().isEmpty() || bean.getName().contains(" ")) + check = false; + if(bean.getDescription() == null || bean.getDescription().trim().isEmpty()) + check = false; + if(bean.getDesigner() == null || bean.getDesigner().trim().isEmpty()) + check = false; + if(bean.getManager() == null || bean.getManager().trim().isEmpty()) + check = false; + if(bean.getStartTime() == null) + check = false; + if(bean.getEndTime() == null) + check = false; + + return check; + } + + + public Widget display() { + // TODO Auto-generated method stub + return display.asWidget(); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFinishWizardPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFinishWizardPresenter.java new file mode 100644 index 0000000..74265cb --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFinishWizardPresenter.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + + +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.google.gwt.user.client.ui.Widget; + +public class VREFinishWizardPresenter implements Presenter { + public interface Display { + Widget asWidget(); + } + + private final Display display; + + public VREFinishWizardPresenter(Display display){ + this.display = display; + } + + public void go(LayoutContainer container){ + container.removeAll(); + display.asWidget().setWidth(String.valueOf(container.getOffsetWidth())); + display.asWidget().setHeight(String.valueOf(container.getOffsetHeight())); + container.add(display.asWidget()); + container.layout(); + } + + public boolean doSave() { + // TODO Auto-generated method stub + return true; + } + + public Widget display() { + // TODO Auto-generated method stub + return display.asWidget(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFunctionalitiesPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFunctionalitiesPresenter.java new file mode 100644 index 0000000..f6801d0 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREFunctionalitiesPresenter.java @@ -0,0 +1,137 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.VREDefinitionServiceAsync; +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeFunctionalityEvent; +import org.gcube.portlets.admin.vredefinition.client.model.VREDefinitionModel; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.TreePanelEvent; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Widget; + +public class VREFunctionalitiesPresenter implements Presenter{ + + public interface Display { + TreePanel getTreeFunctionalities(); + void setData(List categories); + Widget asWidget(); + } + + private final VREDefinitionServiceAsync rpcService; + private final Display display; + private final VREDefinitionModel vreModel; + private LayoutContainer container; + private final HandlerManager eventBus; + + public VREFunctionalitiesPresenter(VREDefinitionServiceAsync rpcService,VREDefinitionModel vreModel, + HandlerManager eventBus, Display display) { + this.display = display; + this.rpcService = rpcService; + this.vreModel = vreModel; + this.eventBus = eventBus; + + } + + public void bind() { + display.getTreeFunctionalities().addListener(Events.OnClick, new Listener>() { + + public void handleEvent(TreePanelEvent be) { + if (be.getType() == Events.OnClick) { + VREFunctionalityModel selectedModel = (VREFunctionalityModel)be.getItem(); + eventBus.fireEvent(new TreeNodeFunctionalityEvent(selectedModel)); + } + } + }); + } + + + + public boolean doSave() { + + TreePanel items = display.getTreeFunctionalities(); + for(ModelData item : items.getStore().getAllItems()) { + item.set("isSelected", false); + } + + for(ModelData item : items.getCheckedSelection()) { + item.set("isSelected",true); + } + + vreModel.setVREFunctionalities(items.getStore().getRootItems()); + return validateVREFunctionalitiesSelected(); + } + + private boolean validateVREFunctionalitiesSelected() { + + List categories = vreModel.getVREFunctionalities(); + boolean check = false; + for(ModelData category : categories) { + for(ModelData func : ((VREFunctionalityModel)category).getChildren()) + if (((VREFunctionalityModel)func).isSelected()){ + check = true; + break; + } + } + + if(!check) + MessageBox.alert("Alert", "Please, select at least one Functionality", null); + + return check; + } + + + public void go(LayoutContainer container) { + this.container = container; + + container.removeAll(); + container.add(display.asWidget()); + container.layout(); + + if(vreModel.getVREFunctionalities() == null) { + fetchFunctionalities(); + container.mask("Loading data...","loading-indicator"); + } else { + display.setData(vreModel.getVREFunctionalities()); + bind(); + } + + } + + private void fetchFunctionalities() { + rpcService.getFunctionality(false, new AsyncCallback() { + + + public void onSuccess(VREFunctionalityModel result) { + container.unmask(); + if (result == null) { + MessageBox.info("Service Error", "There is no instance of the underlying service running, please try again in a short while", null); + } + else{ + display.setData(result.getChildren()); + bind(); + } + } + + + public void onFailure(Throwable caught) { + + } + }); + } + + + public Widget display() { + // TODO Auto-generated method stub + return display.asWidget(); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREInfoFunctionalitiesPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREInfoFunctionalitiesPresenter.java new file mode 100644 index 0000000..6c56858 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREInfoFunctionalitiesPresenter.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.google.gwt.user.client.ui.Widget; + +public class VREInfoFunctionalitiesPresenter { + + public interface Display { + Widget asWidget(); + } + + private final Display display; + + public VREInfoFunctionalitiesPresenter(Display display){ + this.display = display; + } + + public void go(LayoutContainer container){ + container.removeAll(); + container.add(display.asWidget()); + container.layout(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREStartWizardPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREStartWizardPresenter.java new file mode 100644 index 0000000..031a538 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/VREStartWizardPresenter.java @@ -0,0 +1,36 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + + +import com.extjs.gxt.ui.client.widget.LayoutContainer; + +import com.google.gwt.user.client.ui.Widget; + +public class VREStartWizardPresenter implements Presenter { + public interface Display { + Widget asWidget(); + } + + private final Display display; + + public VREStartWizardPresenter(Display display){ + this.display = display; + } + + public void go(LayoutContainer container){ + container.removeAll(); + container.add(display.asWidget()); + container.layout(); + } + + + public boolean doSave() { + // TODO Auto-generated method stub + return true; + } + + + public Widget display() { + // TODO Auto-generated method stub + return display.asWidget(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardActionsPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardActionsPresenter.java new file mode 100644 index 0000000..d910cb6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardActionsPresenter.java @@ -0,0 +1,97 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import org.gcube.portlets.admin.vredefinition.client.event.BackButtonEvent; +import org.gcube.portlets.admin.vredefinition.client.event.NextButtonEvent; +import org.gcube.portlets.admin.vredefinition.client.model.WizardStepType; + +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.ui.Button; + + + + +public class WizardActionsPresenter { + + public interface Display { + Button getNextButton(); + Button getBackButton(); + Label getLabel(); + HorizontalPanel getContainer(); + void setVisible(boolean visible); + Composite asComponent(); + } + + private final HandlerManager eventBus; + public final Display display; + + public WizardActionsPresenter(HandlerManager eventBus, Display view) { + + this.eventBus = eventBus; + this.display = view; + bind(); + + + } + + private void bind() { + + display.getNextButton().addClickHandler(new ClickHandler() { + + + public void onClick(ClickEvent arg0) { + eventBus.fireEvent(new NextButtonEvent()); + } + }); + + + display.getBackButton().addClickHandler(new ClickHandler() { + + + public void onClick(ClickEvent arg0) { + eventBus.fireEvent(new BackButtonEvent()); + } + }); + } + + + + public void go(final ToolBar container) { + + container.removeAll(); + display.asComponent().setSize(container.getAbsoluteLeft(), 44); + container.add(display.asComponent()); + container.layout(); + } + + public void setStepWizard(WizardStepType type) { + + display.getBackButton().setVisible(true); +// display.getNextButton().changeStyle("forward-icon"); +// display.getNextButton().setSize(48, 19); + + // display.getBackButton().setEnabled(true); + String string = "" + type.ordinal() + " of " + (WizardStepType.values().length - 1); + display.getLabel().setText(string); + switch(type){ + case VREDefinitionStart: + break; + case VREDescription: + display.getBackButton().setVisible(false); + break; + case VREDefinitionEnd: + display.getNextButton().setText("Upload"); + + break; + default: + display.getBackButton().setEnabled(true); + display.getNextButton().setEnabled(true); + break; + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardMenuViewPresenter.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardMenuViewPresenter.java new file mode 100644 index 0000000..1e293e4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/presenter/WizardMenuViewPresenter.java @@ -0,0 +1,50 @@ +package org.gcube.portlets.admin.vredefinition.client.presenter; + +import org.gcube.portlets.admin.vredefinition.client.event.TreeNodeWizardMenuEvent; +import org.gcube.portlets.admin.vredefinition.client.model.WizardStepModel; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.TreePanelEvent; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.ui.Widget; + +public class WizardMenuViewPresenter { + + public interface Display { + TreePanel getTreeMenu(); + Widget asWidget(); + } + + private final Display display; + private final HandlerManager eventBus; + + public WizardMenuViewPresenter(HandlerManager eventBus, Display display){ + this.display = display; + this.eventBus = eventBus; + bind(); + } + + public void bind() { + display.getTreeMenu().addListener(Events.OnClick, new Listener>() { + + public void handleEvent(TreePanelEvent be) { + if (be.getType() == Events.OnClick) { + WizardStepModel selectedModel = (WizardStepModel)be.getItem(); + eventBus.fireEvent(new TreeNodeWizardMenuEvent(selectedModel)); + + } + } + }); + } + + public void go(LayoutContainer container) { + container.removeAll(); + container.add(display.asWidget()); + container.layout(); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/NodeType.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/NodeType.java new file mode 100644 index 0000000..b39f08e --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/NodeType.java @@ -0,0 +1,33 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +public enum NodeType { + /** + * INFO + */ + INFO, + /** + * CONTENT + */ + CONTENT, + /** + * COLLECTION + */ + COLLECTION, + /** + * METADATA + */ + METADATA, + /** + * FUNCTIONALITY + */ + FUNCTIONALITY, + /** + * REPORT + */ + REPORT, + /** + * ARCHITECTURE + */ + ARCHITECTURE; + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/ResourcesGrid.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/ResourcesGrid.java new file mode 100644 index 0000000..922b1df --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/ResourcesGrid.java @@ -0,0 +1,158 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.AppController; +import org.gcube.portlets.admin.vredefinition.client.event.ExternalResourceSelectionEvent; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.core.XTemplate; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.ButtonEvent; +import com.extjs.gxt.ui.client.event.GridEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.store.GroupingStore; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.CheckBox; +import com.extjs.gxt.ui.client.widget.grid.CellEditor; +import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig; +import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; +import com.extjs.gxt.ui.client.widget.grid.ColumnModel; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.grid.GroupingView; +import com.extjs.gxt.ui.client.widget.grid.RowExpander; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.google.gwt.core.client.GWT; +/** + * + * @author Massimiliano Assante ISTI-CNR + * @version 0.2 Sep 2012 + * + */ +public class ResourcesGrid { + + private List myResourcesList; + private VREFunctionalityModel myFunc; + public ResourcesGrid(VREFunctionalityModel func, List list) { + myFunc = func; + myResourcesList = list; + } + public ContentPanel getGrid() { + + ArrayList configs = new ArrayList(); + + XTemplate tpl = XTemplate.create("
Resource name: {name}
Description: {description}
"); + + RowExpander expander = new RowExpander(); + expander.setTemplate(tpl); + + configs.add(expander); + + ColumnConfig column = new ColumnConfig(); + + column.setId("id"); + column.setHeader("ID"); + column.setWidth(50); + column.setHidden(true); + configs.add(column); + + column = new ColumnConfig(); + column.setId("name"); + column.setHeader("Name"); + column.setWidth(100); + configs.add(column); + + column = new ColumnConfig(); + column.setId("description"); + column.setHeader("Description"); + column.setWidth(200); + configs.add(column); + + column = new ColumnConfig(); + column.setId("category"); + column.setHeader("Type"); + column.setHidden(true); + column.setAlignment(HorizontalAlignment.CENTER); + column.setWidth(30); + configs.add(column); + + CheckColumnConfig checkColumn = new CheckColumnConfig("isSelected", "isSelected", 35) { + @Override + protected void onMouseDown(final GridEvent ge) { + super.onMouseDown(ge); + ExternalResourceModel bean = (ExternalResourceModel) ge.getModel(); + //TODO: + } + }; + checkColumn.setHeader("Select"); + checkColumn.setAlignment(HorizontalAlignment.CENTER); + + CheckBox checkbox = new CheckBox(); + + CellEditor checkBoxEditor = new CellEditor(checkbox); + + checkColumn.setEditor(checkBoxEditor); + configs.add(checkColumn); + + final ColumnModel cm = new ColumnModel(configs); + + /** + * load the grid data + */ + final GroupingStore store = new GroupingStore(); + store.groupBy("category"); + + //store.sort("isSelectable", SortDir.DESC); + store.add(myResourcesList); + + + Grid grid = new Grid(store, cm); + + GroupingView view = new GroupingView(); + view.setShowGroupedColumn(false); + view.setForceFit(true); + grid.setView(view); + grid.addPlugin(expander); + grid.addPlugin(checkColumn); + grid.setStyleAttribute("borderTop", "none"); + grid.setAutoExpandColumn("name"); + grid.setBorders(true); + grid.setStripeRows(true); + grid.getView().setForceFit(true); + + ContentPanel gridPanel = new ContentPanel(new FitLayout()); + gridPanel.setHeaderVisible(false); + gridPanel.add(grid); + gridPanel.setHeight(400); + + gridPanel.addButton(new Button("Reset", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + store.rejectChanges(); + } + })); + + + + gridPanel.addButton(new Button("Commit changes", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + List resources = store.getModels(); + store.commitChanges(); + AppController.getAppController().getBus().fireEvent(new ExternalResourceSelectionEvent(myFunc, resources)); + + } + })); + + return gridPanel; + } + + +} + diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDefinitionView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDefinitionView.java new file mode 100644 index 0000000..96f061b --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDefinitionView.java @@ -0,0 +1,129 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import org.gcube.portlets.admin.vredefinition.client.presenter.VREDefinitionPresenter; +import org.gcube.portlets.user.gcubewidgets.client.GCubePanel; + +import java.util.ArrayList; + +import com.extjs.gxt.ui.client.Style.LayoutRegion; +import com.extjs.gxt.ui.client.Style.Orientation; +import com.extjs.gxt.ui.client.util.Margins; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.VerticalPanel; +import com.extjs.gxt.ui.client.widget.layout.BorderLayout; +import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.LayoutData; +import com.extjs.gxt.ui.client.widget.layout.RowLayout; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.user.client.Window; + + + + +public class VREDefinitionView extends Composite implements VREDefinitionPresenter.Display { + + + private LayoutContainer upCenterPanel; + private ContentPanel westPanel; + private ToolBar bottomCenterPanel; + private ContentPanel eastPanel; + private LayoutContainer upContainer; + + + public VREDefinitionView() { + + LayoutContainer container = new LayoutContainer(); + container.setStyleAttribute("padding", "2px"); + + + upContainer = new LayoutContainer(); + upContainer.setLayout(new BorderLayout()); + + + westPanel = new ContentPanel(); + ContentPanel centerPanel = new ContentPanel(); + centerPanel.setFrame(true); + centerPanel.setBodyStyle("backgroundColor: white;"); + eastPanel = new ContentPanel(); + eastPanel.setVisible(false); + eastPanel.setCollapsible(false); + + + + BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 150); + westData.setSplit(false); + westData.setMargins(new Margins(0, 5, 0, 0)); + westData.setCollapsible(false); + + BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER, 500); + centerData.setSplit(true); + centerData.setCollapsible(false); + centerData.setMargins(new Margins(0,0,0,0)); + + BorderLayoutData eastData = new BorderLayoutData(LayoutRegion.EAST, 500); + eastData.setSplit(true); + eastData.setCollapsible(false); + eastData.setMargins(new Margins(0,0,0,5)); + + upContainer.add(westPanel, westData); + + upCenterPanel = new LayoutContainer(); + upCenterPanel.setSize("100%", "100%"); + centerPanel.add(upCenterPanel); + upContainer.add(centerPanel, centerData); + upContainer.add(eastPanel, eastData); + + container.add(upContainer); + + + bottomCenterPanel = new ToolBar(); + bottomCenterPanel.setSize("100%", "100%"); + //toolBar.add(bottomCenterPanel); + + container.add(bottomCenterPanel); + initComponent(container); + + setHeight(Window.getClientHeight()); + setWidth(Window.getClientWidth()); + + eastPanel.setCollapsible(false); + } + + + + public ToolBar getBottomCenterPanel() { + // TODO Auto-generated method stub + return bottomCenterPanel; + } + + + + public ContentPanel getEastPanel() { + return eastPanel; + } + + + + public LayoutContainer getUpCenterPanel() { + // TODO Auto-generated method stub + return upCenterPanel; + } + + + + public ContentPanel getwestPanel() { + // TODO Auto-generated method stub + return westPanel; + } + + public LayoutContainer getUpContainer() { + return upContainer; + } + + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDescriptionView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDescriptionView.java new file mode 100644 index 0000000..d604b93 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREDescriptionView.java @@ -0,0 +1,224 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.gcube.portlets.admin.vredefinition.client.presenter.VREDescriptionPresenter; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.data.BaseModel; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.VerticalPanel; +import com.extjs.gxt.ui.client.widget.form.ComboBox; +import com.extjs.gxt.ui.client.widget.form.DateField; +import com.extjs.gxt.ui.client.widget.form.Field; +import com.extjs.gxt.ui.client.widget.form.FieldSet; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.form.TextArea; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; +import com.extjs.gxt.ui.client.widget.form.Validator; +import com.extjs.gxt.ui.client.widget.layout.FillLayout; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.FlowLayout; +import com.extjs.gxt.ui.client.widget.layout.FormData; +import com.extjs.gxt.ui.client.widget.layout.FormLayout; +import com.extjs.gxt.ui.client.widget.layout.TableData; +import com.google.gwt.i18n.client.DateTimeFormat; +import com.google.gwt.user.client.ui.Widget; + + +public class VREDescriptionView extends Composite implements VREDescriptionPresenter.Display{ + + + private TextField vrename; + private TextField vredesigner; + private DateField fromDate; + private DateField toDate; + private ComboBox vremanager; + private TextArea vredescription; + + + public VREDescriptionView() { + + FormData formData = new FormData("-20"); + + VerticalPanel panel = new VerticalPanel(); + panel.setSize("100%", "100%"); + + panel.setStyleAttribute("padding", "10px"); + panel.setTableWidth("100%"); + + + FieldSet fieldSet = new FieldSet(); + fieldSet.setWidth("95%"); + fieldSet.setHeading("VRE Information"); + + FormLayout layout = new FormLayout(); + layout.setLabelWidth(100); + fieldSet.setLayout(layout); + + vrename = new TextField(); + vrename.setFieldLabel("Name"); + vrename.setAllowBlank(false); + vrename.setValidator(new Validator() { + public String validate (Field ticketField, String value){ + if (vrename.getRawValue().contains(" ")) + return "No blanks allowed, a VRE name must be a single word"; + else + return null; + } + }); + fieldSet.add(vrename,formData); + + vredesigner = new TextField(); + vredesigner.setFieldLabel("Designer"); + + vredesigner.setAllowBlank(false); + fieldSet.add(vredesigner,formData); + + + ListStore store = new ListStore(); + + BaseModel managerModel = new BaseModel(); + managerModel.set("name", "Manager"); + store.add(managerModel); + + vremanager = new ComboBox(); + vremanager.setFieldLabel("VRE Manager"); + vremanager.setDisplayField("name"); + vremanager.setTriggerAction(TriggerAction.ALL); + vremanager.setStore(store); + vremanager.setAllowBlank(false); + vremanager.setEditable(false); + fieldSet.add(vremanager,formData); + + vredescription = new TextArea(); + vredescription.setFieldLabel("Description"); + vredescription.setValue("Write the Virtual Research Environment description here"); + vredescription.setAllowBlank(false); + fieldSet.add(vredescription,formData); + + + panel.add(fieldSet); + + + fieldSet = new FieldSet(); + fieldSet.setWidth("95%"); + fieldSet.setHeading("Life time"); + + layout = new FormLayout(); + layout.setLabelWidth(100); + fieldSet.setLayout(layout); + + DateTimeFormat fmt = DateTimeFormat.getFormat("MMMM dd, yyyy"); + + fromDate = new DateField(); + fromDate.setName("date"); + fromDate.setFieldLabel("From"); + fromDate.getPropertyEditor().setFormat(fmt); + fromDate.setValue(new Date()); + + fromDate.setAllowBlank(false); + fromDate.setAutoValidate(true); + fieldSet.add(fromDate,formData); + + toDate = new DateField(); + toDate.setName("date"); + toDate.setFieldLabel("To"); + + Date date = new Date(); + date.setYear(date.getYear() + 1); + toDate.setValue(date); + toDate.getPropertyEditor().setFormat(fmt); + + toDate.setAllowBlank(false); + toDate.setAutoValidate(true); + fieldSet.add(toDate,formData); + + + panel.add(fieldSet); + + initComponent(panel); + + } + + + public void setData(Map result, VREDescriptionBean bean) { + + ListStore store = new ListStore(); + vremanager.setStore(store); + + if (result != null && result.get("Manager")!= null) { + for(String value : (List)result.get("Manager")){ + BaseModel managerModel = new BaseModel(); + managerModel.set("name", value); + store.add(managerModel); + vremanager.setValue(managerModel); + } + + } + + if(result != null && result.get("Designer") != null) + vredesigner.setValue((String)result.get("Designer")); + + if(bean == null) + return; + + ListStore list = vremanager.getStore(); + for(int i = 0; i < list.getCount(); i++) { + BaseModel manager = list.getAt(i); + if(manager.get("name").equals(bean.getManager())) { + vremanager.setValue(manager); + } + } + + vrename.setValue(bean.getName()); + vredesigner.setValue(bean.getDesigner()); + vredescription.setValue(bean.getDescription()); + fromDate.setValue(bean.getStartTime()); + toDate.setValue(bean.getEndTime()); + } + + public TextField getVREName() { + return vrename; + } + + public TextField getVREDesigner() { + return vredesigner; + } + + public ComboBox getVREManager() { + return vremanager; + } + + public TextArea getVREDescription() { + return vredescription; + } + + public Widget asWidget() { + return this; + } + + + public DateField getFromDate() { + + return fromDate; + } + + + public DateField getToDate() { + + return toDate; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFinishWizardView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFinishWizardView.java new file mode 100644 index 0000000..0baf5f9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFinishWizardView.java @@ -0,0 +1,134 @@ +package org.gcube.portlets.admin.vredefinition.client.view; +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.AppController; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREFinishWizardPresenter; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; +import org.gcube.portlets.admin.vredefinition.shared.VRECollectionBean; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; + +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.VerticalPanel; +import com.extjs.gxt.ui.client.widget.Viewport; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.MarginData; +import com.extjs.gxt.ui.client.widget.layout.TableData; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.i18n.client.DateTimeFormat; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Widget; + + +public class VREFinishWizardView extends Composite implements VREFinishWizardPresenter.Display{ + + public VREFinishWizardView(VREDescriptionBean vre, List categories) { + + + + + VerticalPanel container = new VerticalPanel(); + container.setScrollMode(Scroll.AUTO); + + + container.setStyleAttribute("padding", "10px"); + container.setTableWidth("100%"); + + TableData tableData = new TableData(); + tableData.setVerticalAlign(VerticalAlignment.MIDDLE); + + //STYLE=\"font-size:18px;\" + String vreDescription = "

Summary

"; + vreDescription+="
Name: " + vre.getName() +"
"; + vreDescription+="
VRE Designer: " + vre.getDesigner() +"
"; + vreDescription+="
VRE Manager: " + vre.getManager() +"
"; + DateTimeFormat fmt = DateTimeFormat.getFormat("MMMM dd, yyyy"); + vreDescription+="
From: " + + fmt.format(vre.getStartTime()) + + " To: " + + fmt.format(vre.getEndTime()) + + "
"; + + vreDescription+= "
"; + vreDescription+="
Description: " + vre.getDescription() +"
"; + vreDescription += "
"; + + container.add(new HTML(vreDescription, true )); + + List functionalitiesSelected = new ArrayList(); + for (ModelData category : categories) { + for(ModelData func : ((VREFunctionalityModel)category).getChildren()) { + if(((VREFunctionalityModel)func).isSelected()) + functionalitiesSelected.add(func); + } + } + + int sizeFunctionalities = functionalitiesSelected.size(); + + + + String table = ""; + table += ""; + + if (sizeFunctionalities > 0) { + table += ""; + table += ""; + } + + table += ""; + table += ""; + table += ""; + table += ""; + + + int maxSize = Math.max(0, sizeFunctionalities); + + for(int i = 0; i < maxSize; i++) { + + table += ""; + if (sizeFunctionalities > 0) { + table += ""; + } + + table += ""; + } + table += "
"; + table += "

Functionalities

"; + table += "
"; + table += ""; + table += "
"; + ModelData functionality = null; + if(i < sizeFunctionalities) { + functionality = functionalitiesSelected.get(i); + table +=" - " + functionality.get("name")+""; + List extResources = AppController.getAppController().getExtResourcesFromApp(functionality.get("id").toString()); + if (extResources != null) { + table += "
"; + for (ExternalResourceModel ext : extResources) { + if (ext.isSelected()) { + table += "" + ext.getName() + ""; + table += "
"; + } + } + table += "

"; + } + } + table += "
"; + + container.add(new HTML(table, true)); + + initComponent(container); + } + + @Override + public Widget asWidget() { + return this; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFunctionalitiesView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFunctionalitiesView.java new file mode 100644 index 0000000..26f5413 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREFunctionalitiesView.java @@ -0,0 +1,92 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREFunctionalitiesPresenter; + +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.Style.SelectionMode; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelIconProvider; +import com.extjs.gxt.ui.client.store.TreeStore; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.CheckCascade; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanelSelectionModel; +import com.google.gwt.user.client.ui.AbstractImagePrototype; +/** + * + * @author Massimiliano Assante ISTI-CNR + * + */ +public class VREFunctionalitiesView extends Composite implements VREFunctionalitiesPresenter.Display{ + + private TreePanel tree; + private LayoutContainer container; + + public VREFunctionalitiesView() { + + + container = new LayoutContainer(); + container.setScrollMode(Scroll.AUTO); + container.setSize("100%","100%"); + + initComponent(container); + } + + + public void setData(List categories) { + TreeStore store = new TreeStore(); + store.add(categories, true); + tree = new TreePanel(store); + + tree.setCheckable(true); + tree.setWidth(300); + tree.setDisplayProperty("name"); + + // Handles the selection + TreePanelSelectionModel sm = new TreePanelSelectionModel(); + tree.setSelectionModel(sm); + + tree.getSelectionModel().setSelectionMode(SelectionMode.MULTI); + tree.setCheckStyle(CheckCascade.CHILDREN); + + // The icon decorator + tree.setIconProvider( + new ModelIconProvider() { + public AbstractImagePrototype getIcon(final ModelData model) { + if (model.get("node") != null && model.get("icon") != null) { + return IconHelper.createStyle((String) model.get("icon")); + } + return IconHelper.createStyle("defaultleaf-icon"); + } + }); + + tree.expandAll(); + tree.setAutoExpand(true); + + + + container.removeAll(); + container.add(tree); + container.layout(); + + // Set node checked after layout + for(ModelData functionality : tree.getStore().getAllItems()) { + tree.setChecked(functionality,((VREFunctionalityModel)functionality).isSelected()); + + } + + } + + + public TreePanel getTreeFunctionalities() { + // TODO Auto-generated method stub + return tree; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREInfoFunctionalitiesView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREInfoFunctionalitiesView.java new file mode 100644 index 0000000..65b71d8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREInfoFunctionalitiesView.java @@ -0,0 +1,92 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.admin.vredefinition.client.AppController; +import org.gcube.portlets.admin.vredefinition.client.VREDefinitionServiceAsync; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.client.presenter.VREInfoFunctionalitiesPresenter; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; + +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.HTML; + +/** + * + * @author Massimiliano Assante ISTI-CNR + * @version 0.2 Sep 2012 + * + */ +public class VREInfoFunctionalitiesView extends ContentPanel implements VREInfoFunctionalitiesPresenter.Display{ + + private ContentPanel gridPanel; + private String toAdd = ""; + + private HTML info = new HTML(); + + public VREInfoFunctionalitiesView() { + setHeaderVisible(false); + setBodyBorder(true); + String toAdd = "

Select a functionality to show info

"; + add(new HTML(toAdd, true )); + setStyleAttribute("margin", "10px"); + } + + public VREInfoFunctionalitiesView(final VREFunctionalityModel functionality, VREDefinitionServiceAsync rpcService) { + mask("Loading available resources ...."); + setHeaderVisible(false); + setBodyBorder(false); + toAdd = "
" + functionality.getName() + "
"; + toAdd += "
" + functionality.getDescription()+"
"; + info.setHTML(toAdd); + add(info); + + setStyleAttribute("margin", "10px"); + + //get that from the server + rpcService.getResourceCategoryByFunctionality(functionality.getId(), new AsyncCallback>() { + + public void onSuccess(ArrayList cats) { + if (cats.size() == 0) { + unmask(); + toAdd += "
There are no external Resources to select for this functionality
"; + info.setHTML(toAdd); + } else { + //TODO: REMOVE THIS BUT IT DOESNT RENDER OK OTHERWISE, Have no time to investigate it + //if i loaded them yet + toAdd += "
Available Resources for " + functionality.getName() + "
"; + info.setHTML(toAdd); + if (AppController.getAppController().getExtResourcesFromApp(functionality.getId()) != null) { + List categs = AppController.getAppController().getExtResourcesFromApp(functionality.getId()); + addGridPanel(functionality, categs); + } + else { + addGridPanel(functionality, cats); + } + } + } + + public void onFailure(Throwable arg0) { + // TODO Auto-generated method stub + + } + }); + + + } + + private void addGridPanel(VREFunctionalityModel func, List cats) { + ResourcesGrid grid = new ResourcesGrid(func, cats); + gridPanel = grid.getGrid(); + gridPanel.setHeight(260); + add(gridPanel); + gridPanel.layout(true); + layout(true); + setLayout(new FitLayout()); + unmask(); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREStartWizardView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREStartWizardView.java new file mode 100644 index 0000000..0022381 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/VREStartWizardView.java @@ -0,0 +1,44 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import com.extjs.gxt.ui.client.Style; +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.VerticalPanel; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.TableData; +import com.google.gwt.user.client.ui.HTML; + + + + +import org.gcube.portlets.admin.vredefinition.client.presenter.VREStartWizardPresenter; + +public class VREStartWizardView extends Composite implements VREStartWizardPresenter.Display { + + public VREStartWizardView() { + + VerticalPanel container = new VerticalPanel(); + container.setSize("100%", "100%"); + container.setTableHeight("50%"); + container.setTableWidth("100%"); + + TableData tableData = new TableData(); + tableData.setVerticalAlign(VerticalAlignment.MIDDLE); + + LayoutContainer cp = new LayoutContainer(); + cp.setLayout(new FitLayout()); + cp.setStyleAttribute("margin", "10px"); + + String toAdd = "

This wizard will guide you on the VRE Creation

"; + toAdd += "
"; + toAdd += "
Click 'Next' to continue ...
"; + cp.add(new HTML(toAdd, true )); + + container.add(cp,tableData); + initComponent(container); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardActionsView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardActionsView.java new file mode 100644 index 0000000..91bde5f --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardActionsView.java @@ -0,0 +1,94 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import org.gcube.portlets.admin.vredefinition.client.presenter.WizardActionsPresenter; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.Style.VerticalAlignment; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.HorizontalPanel; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.button.IconButton; +import com.extjs.gxt.ui.client.widget.layout.TableData; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.ui.Button; + + +public class WizardActionsView extends Composite implements WizardActionsPresenter.Display{ + + private Button nextButton; + private Button backButton; + private HorizontalPanel panel; + private Label label; + + public WizardActionsView(ToolBar container) { + + panel = new HorizontalPanel(); + panel.setWidth("100%"); + panel.setTableWidth(""+container.getOffsetWidth()+"px"); + panel.setTableHeight("30px"); + + TableData backData = new TableData("45%","100%"); + backData.setHorizontalAlign(HorizontalAlignment.RIGHT); + backData.setVerticalAlign(VerticalAlignment.MIDDLE); + + TableData nextData = new TableData("45%","100%"); + nextData.setHorizontalAlign(HorizontalAlignment.LEFT); + nextData.setVerticalAlign(VerticalAlignment.MIDDLE); + + TableData labelData = new TableData("10%","100%"); + labelData.setHorizontalAlign(HorizontalAlignment.CENTER); + labelData.setVerticalAlign(VerticalAlignment.MIDDLE); + + + backButton = new Button("Back"); + backButton.setSize("100px", "25px"); + + label = new Label("1 of 3"); + label.setStyleName("label-wizard"); + label.getElement().getStyle().setFontSize(30, Unit.PX); + + nextButton = new Button("Next"); + nextButton.setSize("100px", "25px"); + + panel.add(backButton,backData); + panel.add(label, labelData); + panel.add(nextButton,nextData); + + + + initComponent(panel); + + } + + + + public Composite asComponent() { + return this; + } + + public Button getNextButton() { + return nextButton; + } + + + public Button getBackButton() { + return backButton; + } + + + + public Label getLabel() { + // TODO Auto-generated method stub + return label; + } + + + + public HorizontalPanel getContainer() { + // TODO Auto-generated method stub + return panel; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardMenuView.java b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardMenuView.java new file mode 100644 index 0000000..6a2590c --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/client/view/WizardMenuView.java @@ -0,0 +1,60 @@ +package org.gcube.portlets.admin.vredefinition.client.view; + +import java.util.ArrayList; + +import org.gcube.portlets.admin.vredefinition.client.model.WizardStepModel; +import org.gcube.portlets.admin.vredefinition.client.presenter.WizardMenuViewPresenter; + +import com.extjs.gxt.ui.client.Style.SelectionMode; +import com.extjs.gxt.ui.client.data.BaseTreeModel; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelIconProvider; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.TreePanelEvent; +import com.extjs.gxt.ui.client.store.TreeStore; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.Composite; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Layout; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +public class WizardMenuView extends Composite implements WizardMenuViewPresenter.Display{ + + private TreePanel tree; + private VREDefinitionView parentView; + + + public WizardMenuView(WizardStepModel treeModel) { + + TreeStore store = new TreeStore(); + // The root node will not be shown + store.add(treeModel.getChildren(), true); + tree = new TreePanel(store); + + tree.setWidth(300); + + tree.setDisplayProperty("name"); + // The icon decorator + tree.setIconProvider( + new ModelIconProvider() { + public AbstractImagePrototype getIcon(final ModelData model) { + if (model.get("icon") != null) { + return IconHelper.createStyle((String) model.get("icon")); + } + return IconHelper.createStyle("defaultleaf-icon"); + } + }); + tree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + initComponent(tree); + + } + + + public TreePanel getTreeMenu() { + // TODO Auto-generated method stub + return tree; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/server/VREDefinitionServiceImpl.java b/src/main/java/org/gcube/portlets/admin/vredefinition/server/VREDefinitionServiceImpl.java new file mode 100644 index 0000000..93a2aab --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/server/VREDefinitionServiceImpl.java @@ -0,0 +1,498 @@ +package org.gcube.portlets.admin.vredefinition.server; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.servlet.http.HttpSession; + +import org.gcube.application.framework.accesslogger.library.impl.AccessLogger; +import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.application.framework.vremanagement.vremanagement.impl.VREGeneratorEvo; +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; +import org.gcube.portlets.admin.vredefinition.client.VREDefinitionService; +import org.gcube.portlets.admin.vredefinition.client.model.VREFunctionalityModel; +import org.gcube.portlets.admin.vredefinition.server.loggers.CreatedVRELogEntry; +import org.gcube.portlets.admin.vredefinition.server.loggers.OpenVREWizardLogEntry; +import org.gcube.portlets.admin.vredefinition.shared.ExternalResourceModel; +import org.gcube.portlets.admin.vredefinition.shared.ResourceCategory; +import org.gcube.portlets.admin.vredefinition.shared.ResourceCategoryItem; +import org.gcube.portlets.admin.vredefinition.shared.VRECollectionBean; +import org.gcube.portlets.admin.vredefinition.shared.VREDescriptionBean; +import org.gcube.portlets.admin.vredefinition.shared.exception.VREDefinitionException; +import org.gcube.vomanagement.usermanagement.RoleManager; +import org.gcube.vomanagement.usermanagement.UserManager; +import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayRoleManager; +import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager; +import org.gcube.vomanagement.usermanagement.model.UserModel; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityItem; +import org.gcube.vremanagement.vremodel.cl.stubs.types.ResourceDescriptionItem; +import org.gcube.vremanagement.vremodel.cl.stubs.types.ResourceItem; +import org.gcube.vremanagement.vremodel.cl.stubs.types.SelectedResourceDescriptionType; +import org.gcube.vremanagement.vremodel.cl.stubs.types.VREDescription; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gwt.user.server.rpc.RemoteServiceServlet; + +public class VREDefinitionServiceImpl extends RemoteServiceServlet implements VREDefinitionService { + private static final long serialVersionUID = -7565518362225100485L; + + private static final Logger _log = LoggerFactory.getLogger(VREDefinitionServiceImpl.class); + + private static final String DESIGNER = "Designer"; + private static final String MANAGER = "Manager"; + private static final String DESCRIPTION = "DESCRIPTION"; + + + private static String VRE_MANAGER_STRING = "VRE-Manager"; + + + private static final String VRE_GENERATOR_ATTRIBUTE = "VREGenerator"; + private static final String VRE_DEFINER_GENERATOR_ATTRIBUTE = "VREDefinerGenerator"; + private static final String USERNAME_ATTRIBUTE = "username"; + + private static final String HARD_CODED_VO_NAME = "/gcube/devsec"; + private static final String REEDIT_TYPE_ATTRIBUTE = "reeditType"; + private static final String APPROVE_MODE = "approve"; + public static final String EDIT_MODE = "edit"; + + private static final String CATEGORIES = "CATEGORIES"; + + private boolean withinEclipse = false; + /** + * + * @return + */ + private ASLSession getASLSession() { + HttpSession session = this.getThreadLocalRequest().getSession(); + String username = (String) session.getAttribute(ScopeHelper.USERNAME_ATTRIBUTE); + + if (username == null) { + username = "massimiliano.assante"; + SessionManager.getInstance().getASLSession(session.getId(), username).setScope(HARD_CODED_VO_NAME); + SessionManager.getInstance().getASLSession(session.getId(), username).setAttribute(REEDIT_TYPE_ATTRIBUTE, APPROVE_MODE); + withinEclipse = true; + } + + return SessionManager.getInstance().getASLSession(session.getId(), username); + } + + private VREGeneratorEvo getVREGenerator(){ + ASLSession d4ScienceSession = getASLSession(); + VREGeneratorEvo vreGenerator = (VREGeneratorEvo) d4ScienceSession.getAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE); + if(vreGenerator==null){ + vreGenerator = new VREGeneratorEvo(d4ScienceSession); + d4ScienceSession.setAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE, vreGenerator); + } + + AccessLogger log = AccessLogger.getAccessLogger(); + OpenVREWizardLogEntry logEntry = new OpenVREWizardLogEntry(); + log.logEntry(getASLSession().getUsername(), getASLSession().getScopeName(), logEntry); + + return vreGenerator; + + } + + + + private void storeResourceCategoryInSession(HashMap> funcCategories) { + getASLSession().setAttribute(CATEGORIES, funcCategories); + } + + @SuppressWarnings("unchecked") + private HashMap> getResourceCategoryFromSession() { + return (HashMap>) getASLSession().getAttribute(CATEGORIES); + } + /** + * return the categories per functionality + * @param func + */ + public ArrayList getResourceCategoryByFunctionality(String id) { + ArrayList toReturn = new ArrayList(); + return (getResourceCategoryFromSession().containsKey(id) ? getExternaleResources(id) : toReturn); + } + /** + * + * @param id + * @return + */ + private ArrayList getExternaleResources(String id) { + ArrayList toReturn = new ArrayList(); + ArrayList cats = getResourceCategoryFromSession().get(id); + for (ResourceCategory rc : cats) + for(ResourceCategoryItem item : rc.getItems()) { + toReturn.add(new ExternalResourceModel(item.getId(), item.getName(), item.getDescription(), item.isSelected(), rc.getName(), rc.getId())); + } + return toReturn; + } + + + + public Map isEditMode() { + System.out.println("\n\n\n********************* isEditMode()"); + String reeditType = (String) getASLSession().getAttribute(REEDIT_TYPE_ATTRIBUTE); + ASLSession session = getASLSession(); + session.setAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE, null); + + if(reeditType != null && reeditType.equals(EDIT_MODE)) { + + String vreid = (String) session.getAttribute(VRE_GENERATOR_ATTRIBUTE); + if(vreid==null){ + session.setAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE, null); + } else { + VREGeneratorEvo vreGenerator = new VREGeneratorEvo(session, vreid); + session.setAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE, vreGenerator); + + } + session.setAttribute(REEDIT_TYPE_ATTRIBUTE, null); + + try { + List collections = getCollections(); + VREFunctionalityModel functionalities = getFunctionality(true); + Map map = new HashMap(); + map.put("collections", collections); + map.put("functionalities", functionalities); + return map; + } catch (VREDefinitionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + return null; + } + /** + * read the available functionality from the service through ASL extension + */ + + public VREFunctionalityModel getFunctionality(boolean isEdit) throws VREDefinitionException { + //if i am creating a new Vre I need to 'pretend' I already set the description to the service otherwise VREModeler won't return me the collections + //if is editing instead this is not necessary + if (! isEdit) { + Calendar cal= Calendar.getInstance(); + long startTime = cal.getTimeInMillis(); + cal.add(Calendar.MONTH, 5); + cal.add(Calendar.HOUR, 7); + long endTime = cal.getTimeInMillis(); + try { + //this is because Lucio is stupid + getVREGenerator().setVREModel("notCompletedVirtualResearchEnv.", UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString(), startTime, endTime); + Thread.sleep(1000); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + if (! getVREGenerator().isVreModelerServiceUp()) + return null; + VREFunctionalityModel toReturn = new VREFunctionalityModel("","selected functionality", "", "",false); + try{ + HashMap> funCategories = new HashMap>(); + + List list = getVREGenerator().getFunctionality(); + + if (list == null) { + _log.warn("FunctionalityList NULL"); + } + for (FunctionalityItem fi :list) { + System.out.println("id:"+fi.id()+" "+fi.name()); + VREFunctionalityModel toAdd = new VREFunctionalityModel(Integer.toString(fi.id()), + fi.name(), fi.description(), "",fi.selected()); + + if (fi.children() != null && !fi.children().isEmpty()) { + List children = fi.children(); + VREFunctionalityModel[] newchildrens = new VREFunctionalityModel[children.size() ]; + //creating node children + for (int i = 0; i < children.size(); i++) { + System.out.println(children.get(i).name() + " is " + children.get(i).selected()); + newchildrens[i] = new VREFunctionalityModel(Integer.toString(children.get(i).id()), + children.get(i).name(), children.get(i).description(), + "functionality-add-icon",children.get(i).selected()); + + ArrayList resCats = new ArrayList(); + if ( children.get(i).selectableResourcesDescription()!=null) { + for (ResourceDescriptionItem category: children.get(i).selectableResourcesDescription()) { + if (category.resources()!=null) { + ResourceCategory rc = new ResourceCategory(category.id(), category.description()); + for (ResourceItem resource : category.resources()) { + rc.addResourceItem(new ResourceCategoryItem(resource.id(), resource.name(), resource.description(), resource.selected())); + } + resCats.add(rc); + } + + } + funCategories.put(newchildrens[i].getId() , resCats); + } + } + toAdd.addChildren(newchildrens); + toReturn.add(toAdd); + } else { + System.out.println("id:"+fi.id()+" "+fi.name() + " has no children"); + } + + } + storeResourceCategoryInSession(funCategories); + for (String func : funCategories.keySet()) { + System.out.println("-"+func); + for(ResourceCategory category : funCategories.get(func)) { + System.out.println("--"+category.getName()); + for(ResourceCategoryItem rc: category.getItems()) { + System.out.println("----"+rc.getName()); + } + } + } + + + } catch (Exception e) { + e.printStackTrace(); + throw new VREDefinitionException("Set functionalities Error"); + } + return toReturn; + } + + + public Map getVRE() throws VREDefinitionException { + + HashMap toReturn = new HashMap(); + + HttpSession session = this.getThreadLocalRequest().getSession(); + String username = (String) session.getAttribute(USERNAME_ATTRIBUTE); + + List belongingUsers = new LinkedList(); + + if (withinEclipse) { + return getFakeBelongingUsers(); + } + else { + try { + UserManager um = new LiferayUserManager(); + long currOrgid = getASLSession().getGroupId(); + RoleManager rm = new LiferayRoleManager(); + + System.out.println("Trying to get roleid of " + VRE_MANAGER_STRING + " into " + getASLSession().getGroupName()); + + String roleId = "none"; + + roleId = rm.getRoleId(VRE_MANAGER_STRING, getASLSession().getGroupName()); + System.out.println("Trying to get VRE-Managers of " + currOrgid + " role id=" + roleId); + + + belongingUsers = um.listUsersByGroupAndRole(""+currOrgid, roleId); + + } catch (Exception e1) { + + e1.printStackTrace(); + throw new VREDefinitionException("We cannot find any VO-Admin user for this environment." + + " There must be at least one."); + } + + + if (belongingUsers == null || belongingUsers.size() == 0) + throw new VREDefinitionException("We cannot find any VO-Admin user for this environment." + + " There must be at least one."); + + try { + ArrayList managers = new ArrayList(); + for (int i = 0; i < belongingUsers.size(); i++) { + managers.add(belongingUsers.get(i).getScreenName()); + } + toReturn.put("Manager", managers); + + } catch (Exception e) { + + e.printStackTrace(); + throw new VREDefinitionException("We cannot find any VO-Admin user for this environment." + + " There must be at least one."); + + } + + toReturn.put("Designer", username); + + try { + VREDescriptionBean vre = getVREInSession(); + if(vre!= null) { + toReturn.put("vreName",vre.getName()); + toReturn.put("vreManager", vre.getManager()); + toReturn.put("vreDesigner", vre.getDesigner()); + toReturn.put("vreDescription", vre.getDescription()); + toReturn.put("vreStartTime", vre.getStartTime()); + toReturn.put("vreEndTime",vre.getEndTime()); + } + } catch (Exception e){ + + } + } + + return toReturn; + } + + private HashMap getFakeBelongingUsers() { + + HashMap ret = new HashMap(); + + ArrayList managers = new ArrayList(); + + managers.add("antonio.gioia"); + managers.add("andrea.manzi"); + managers.add("massimiliano.assante"); + ret.put("Manager",managers); + + ret.put("Designer", "antonio.gioia"); + try { + VREDescriptionBean vre = getVREInSession(); + if(vre!= null) { + System.out.println(" ########### VRE != NULL ##########"); + ret.put("vreName",vre.getName()); + ret.put("vreManager", vre.getManager()); + ret.put("vreDesigner", vre.getDesigner()); + ret.put("vreDescription", vre.getDescription()); + ret.put("vreStartTime", vre.getStartTime()); + ret.put("vreEndTime",vre.getEndTime()); + } + } catch (Exception e1){ + + } + return ret; + } + + public String setVRE(VREDescriptionBean bean, String[] functionalityIDs, HashMap> funcToExternalResources) + throws VREDefinitionException { + + setVREDescription(bean); + setFunctionality(functionalityIDs, funcToExternalResources); + try { + getVREGenerator().setVREtoPendingState(); + } catch (RemoteException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + getASLSession().setAttribute(VRE_DEFINER_GENERATOR_ATTRIBUTE, null); + + AccessLogger log = AccessLogger.getAccessLogger(); + CreatedVRELogEntry logEntry = new CreatedVRELogEntry(bean.getName(), "unknown", bean.getDesigner(), bean.getManager()); + log.logEntry(getASLSession().getUsername(), getASLSession().getScopeName(), logEntry); + return null; + } + + /** + * + * @param functionalityIDs + * @param funcToExternalResources + * @return + * @throws VREDefinitionException + */ + public String setFunctionality(String[] functionalityIDs, HashMap> funcToExternalResources) throws VREDefinitionException { + //fillling up + ArrayList toSend = new ArrayList(); + + //for each func + for (int i = 0; i < functionalityIDs.length; i++) { + if (funcToExternalResources.containsKey(functionalityIDs[i])) { //get the associated resources + String descriptionId = ""; + ArrayList resourceIds = new ArrayList(); + for (ExternalResourceModel extRes : funcToExternalResources.get(functionalityIDs[i])) { + _log.debug("resource: " + extRes.getName() + " Selected?" + extRes.isSelected()); + if (extRes.isSelected()) { + descriptionId = extRes.getCategoryId(); + resourceIds.add(extRes.getId()); + _log.debug("------> Added selected resource: " + extRes.getName() + " id=" + extRes.getId() + "\n"); + } + } + SelectedResourceDescriptionType toAdd = new SelectedResourceDescriptionType(); + toAdd.descriptionId(descriptionId); + toAdd.resourceIds(resourceIds); + toSend.add(toAdd); + } + } + Integer funcIdAsInts[] = new Integer[functionalityIDs.length]; + for (int i = 0; i < functionalityIDs.length; i++) { + try { + funcIdAsInts[i] = Integer.parseInt(functionalityIDs[i]); + } + catch (ClassCastException e) { + _log.error("Could not convert to int: " + functionalityIDs[i]); + } + } + SelectedResourceDescriptionType[] selres = toSend.toArray(new SelectedResourceDescriptionType[toSend.size()]); + System.out.println("SelectedResourceDescriptionType[] Sending to Service .... toSend size = " + toSend.size()); + for (int i = 0; i < selres.length; i++) { + System.out.println("SelectedResourceDescriptionType DESC: " + selres[i].getDescriptionId()); + for (int j = 0; j < selres[i].resourceIds().size(); j++) { + System.out.println("resid= " +selres[i].resourceIds().get(j)); + } + } + + VREGeneratorEvo vreGenerator = getVREGenerator(); + try { + vreGenerator.setFunctionality(funcIdAsInts, selres); + vreGenerator.setVREtoPendingState(); + } catch (RemoteException e) { + e.printStackTrace(); + throw new VREDefinitionException("Set functionalities Error"); + } + + return null; + } + + + + + private String setVREDescription(VREDescriptionBean bean) throws VREDefinitionException { + VREGeneratorEvo vreGenerator = getVREGenerator(); + ASLSession d4ScienceSession = getASLSession(); + d4ScienceSession.setAttribute("VREName", bean.getName()); + d4ScienceSession.setAttribute(DESCRIPTION, bean.getDescription()); + d4ScienceSession.setAttribute(DESIGNER, bean.getDesigner()); + d4ScienceSession.setAttribute(MANAGER, bean.getManager()); + try { + vreGenerator.setVREModel(bean.getName(), bean.getDescription(), bean.getDesigner(), + bean.getManager(), bean.getStartTime().getTime() , bean.getEndTime().getTime()); + } catch (RemoteException e) { + e.printStackTrace(); + throw new VREDefinitionException("Set Description Error"); + } + + return null; + } + + + + public List getCollections() throws VREDefinitionException { + List listToReturn = new ArrayList(); + return listToReturn; + } + + private VREDescriptionBean getVREInSession() throws VREDefinitionException { + VREGeneratorEvo vreGenerator = getVREGenerator(); + + VREDescriptionBean vreDescBean = null; + try { + VREDescription sd = vreGenerator.getVREModel(); + vreDescBean = new VREDescriptionBean(sd.name(), sd.description(), + sd.designer(), sd.manager(), sd.startTime().getTime(), sd.endTime().getTime()); + + } catch (RemoteException e) { + throw new VREDefinitionException("Fail retrieve VRE"); + } + + + System.out.println("Model: " + vreDescBean.getName()); + System.out.println("--- END Getting VRE Model ---"); + + return vreDescBean; + + } + + public String[] getExistingNames() { + return null; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/CreatedVRELogEntry.java b/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/CreatedVRELogEntry.java new file mode 100644 index 0000000..7d5fa49 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/CreatedVRELogEntry.java @@ -0,0 +1,30 @@ +package org.gcube.portlets.admin.vredefinition.server.loggers; + +import org.gcube.application.framework.accesslogger.model.AccessLogEntry; + +/** + * Represents an access log entry for creating a new Template + */ +public class CreatedVRELogEntry extends AccessLogEntry{ + + private String name; + private String id; + private String designer; + private String manager; + + public CreatedVRELogEntry(String name, String id, String designer, String manager) { + super("Created_VRE"); + this.name = replaceReservedChars(name); + this.id = replaceReservedChars(id); + this.designer = replaceReservedChars(designer); + this.manager = replaceReservedChars(manager); + + } + + @Override + public String getLogMessage() { + String message = "Name = " + name + "|ID = " + id + "|DESIGNER = " + designer+ "|MANAGER = " + manager; + return message; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/OpenVREWizardLogEntry.java b/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/OpenVREWizardLogEntry.java new file mode 100644 index 0000000..79441e7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/server/loggers/OpenVREWizardLogEntry.java @@ -0,0 +1,22 @@ +package org.gcube.portlets.admin.vredefinition.server.loggers; + +import org.gcube.application.framework.accesslogger.model.AccessLogEntry; + + +/** + * Represents an access log entry for OpenVREWizardLogEntry + */ +public class OpenVREWizardLogEntry extends AccessLogEntry{ + + + public OpenVREWizardLogEntry() { + super("VRE Definition Open"); + } + + @Override + public String getLogMessage() { + String message = "VRE Definition Open"; + return message; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/server/portlet/VREDefinitionPortlet.java b/src/main/java/org/gcube/portlets/admin/vredefinition/server/portlet/VREDefinitionPortlet.java new file mode 100644 index 0000000..8224622 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/server/portlet/VREDefinitionPortlet.java @@ -0,0 +1,30 @@ +package org.gcube.portlets.admin.vredefinition.server.portlet; + +import java.io.IOException; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.GenericPortlet; +import javax.portlet.PortletException; +import javax.portlet.PortletRequestDispatcher; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; + +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; + +public class VREDefinitionPortlet extends GenericPortlet { + + public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { + ScopeHelper.setContext(request); + PortletRequestDispatcher dispatcher = + getPortletContext().getRequestDispatcher("/WEB-INF/jsp/CollectionViewerPortlet_view.jsp"); + dispatcher.include(request, response); + } + + /** + * + */ + public void processAction(ActionRequest request, ActionResponse response) + throws PortletException, IOException { + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ExternalResourceModel.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ExternalResourceModel.java new file mode 100644 index 0000000..88a189a --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ExternalResourceModel.java @@ -0,0 +1,44 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +import com.extjs.gxt.ui.client.data.BaseModel; + +@SuppressWarnings("serial") +public class ExternalResourceModel extends BaseModel { + + public ExternalResourceModel() { + } + + public ExternalResourceModel(String id, String name, String description, boolean isSelected, String categoryName, String categoryId) { + set("id", id); + set("name", name); + set("description", description); + set("category", categoryName); + set("categoryId", categoryId); + set("isSelected", isSelected); + } + + + public String getId() { + return (String) get("id"); + } + + public String getName() { + return (String) get("name"); + } + + public String getDescription() { + return (String) get("description"); + } + + public String getCategoryName() { + return (String) get("category"); + } + + public String getCategoryId() { + return (String) get("categoryId"); + } + + public boolean isSelected() { + return ((Boolean) get("isSelected")).booleanValue(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/FieldVerifier.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/FieldVerifier.java new file mode 100644 index 0000000..ef509ac --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/FieldVerifier.java @@ -0,0 +1,42 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +/** + *

+ * FieldVerifier validates that the name the user enters is valid. + *

+ *

+ * This class is in the shared packing because we use it in both + * the client code and on the server. On the client, we verify that the name is + * valid before sending an RPC request so the user doesn't have to wait for a + * network round trip to get feedback. On the server, we verify that the name is + * correct to ensure that the input is correct regardless of where the RPC + * originates. + *

+ *

+ * When creating a class that is used on both the client and the server, be sure + * that all code is translatable and does not use native JavaScript. Code that + * is note translatable (such as code that interacts with a database or the file + * system) cannot be compiled into client side JavaScript. Code that uses native + * JavaScript (such as Widgets) cannot be run on the server. + *

+ */ +public class FieldVerifier { + + /** + * Verifies that the specified name is valid for our service. + * + * In this example, we only require that the name is at least four + * characters. In your application, you can use more complex checks to ensure + * that usernames, passwords, email addresses, URLs, and other fields have the + * proper syntax. + * + * @param name the name to validate + * @return true if valid, false if invalid + */ + public static boolean isValidName(String name) { + if (name == null) { + return false; + } + return name.length() > 3; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategory.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategory.java new file mode 100644 index 0000000..b391fa4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategory.java @@ -0,0 +1,57 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +import java.io.Serializable; +import java.util.ArrayList; + + +@SuppressWarnings("serial") +public class ResourceCategory implements Serializable { + + private String id; + private String name; + private ArrayList items; + + public ResourceCategory() { + super(); + } + + public ResourceCategory(String id, String name, + ArrayList items) { + super(); + this.id = id; + this.name = name; + this.items = items; + } + + public ResourceCategory(String id, String name) { + super(); + this.id = id; + this.name = name; + this.items = new ArrayList(); + } + + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public ArrayList getItems() { + return items; + } + public void setItems(ArrayList items) { + this.items = items; + } + + public void addResourceItem(ResourceCategoryItem item) { + items.add(item); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategoryItem.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategoryItem.java new file mode 100644 index 0000000..cf9c8eb --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/ResourceCategoryItem.java @@ -0,0 +1,60 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +import java.io.Serializable; + +@SuppressWarnings("serial") +public class ResourceCategoryItem implements Serializable { + + private String id; + private String name; + private String description; + private boolean isSelected; + + public ResourceCategoryItem() { + super(); + } + + public ResourceCategoryItem(String id, String name, String description, + boolean isSelected) { + super(); + this.id = id; + this.name = name; + this.description = description; + this.isSelected = isSelected; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isSelected() { + return isSelected; + } + + public void setSelected(boolean isSelected) { + this.isSelected = isSelected; + } + + + +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VRECollectionBean.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VRECollectionBean.java new file mode 100644 index 0000000..b092ccb --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VRECollectionBean.java @@ -0,0 +1,53 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +import java.util.Date; + +import com.extjs.gxt.ui.client.data.BaseModel; + +public class VRECollectionBean extends BaseModel { + private static final long serialVersionUID = 1L; + + public VRECollectionBean() { + } + + public VRECollectionBean(String id, String name, String description, int numberOfMembers, Date creationTime, Date lastUpdateTime, boolean isSelected) { + + set("name", name); + set("description", description); + set("numberOfMembers", numberOfMembers); + set("creationTime", creationTime); + set("lastUpdateTime", lastUpdateTime); + set("isSelected", isSelected); + set("id", id); + + } + + public String getId() { + return (String) get("id"); + } + + public String getName() { + return (String) get("name"); + } + + public String getDescription() { + return (String) get("description"); + } + + public int getNumberOfMembers() { + return ((Integer) get("numberOfMembers")).intValue(); + } + + public Date getCreationTime() { + return (Date) get("creationTime"); + } + + + public Date getLastUpdateTime() { + return (Date) get("lastUpdateTime"); + } + + public boolean isSelected() { + return ((Boolean) get("isSelected")).booleanValue(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VREDescriptionBean.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VREDescriptionBean.java new file mode 100644 index 0000000..5b2fe63 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/VREDescriptionBean.java @@ -0,0 +1,83 @@ +package org.gcube.portlets.admin.vredefinition.shared; + +import java.io.Serializable; +import java.util.Date; + +public class VREDescriptionBean implements Serializable { + + private String name; + + private String description; + + private String designer; + + private String manager; + + private Date startTime; + + private Date endTime; + + public VREDescriptionBean() { + super(); + // TODO Auto-generated constructor stub + } + + public VREDescriptionBean(String name, String description, String designer, + String manager, Date startTime, Date endTime) { + super(); + this.name = name; + this.description = description; + this.designer = designer; + this.manager = manager; + this.startTime = startTime; + this.endTime = endTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDesigner() { + return designer; + } + + public void setDesigner(String designer) { + this.designer = designer; + } + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/vredefinition/shared/exception/VREDefinitionException.java b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/exception/VREDefinitionException.java new file mode 100644 index 0000000..5a9d11c --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/vredefinition/shared/exception/VREDefinitionException.java @@ -0,0 +1,18 @@ +package org.gcube.portlets.admin.vredefinition.shared.exception; + +public class VREDefinitionException extends Exception { + + private String error; + public VREDefinitionException(){ + + error = "VRE Definition Error :"; + } + + public VREDefinitionException(String message){ + error += message; + } + + public String getError() { + return this.error; + } +} diff --git a/src/main/resources/org/gcube/portlets/admin/vredefinition/VREDefinition.gwt.xml b/src/main/resources/org/gcube/portlets/admin/vredefinition/VREDefinition.gwt.xml new file mode 100644 index 0000000..38f83a9 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/admin/vredefinition/VREDefinition.gwt.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/VREDefinition.css b/src/main/webapp/VREDefinition.css new file mode 100644 index 0000000..b6f741b --- /dev/null +++ b/src/main/webapp/VREDefinition.css @@ -0,0 +1,136 @@ +.info-icon { + background-image: url(images/icons/information.png) !important; +} + +.content-icon { + background-image: url(images/icons/content.png) !important; +} + +.collections-icon { + background-image: url(images/icons/collections.png) !important; +} + +.metadata-icon { + background-image: url(images/icons/metadata.png) !important; +} + +.functionality-icon { + background-image: url(images/icons/functionality.png) !important; +} + +.functionality-add-icon { + background-image: url(images/icons/functionality_add.png) !important; +} + +.architecture-icon { + background-image: url(images/icons/architecture.png) !important; +} + +.report-icon { + background-image: url(images/icons/report.png) !important; +} + +.play-icon { + background-image: url(images/icons/play.png) !important; +} + +.runninginstance-icon { + background-image: url(images/icons/runninginstance.png) !important; +} + +.forward-icon { + background-image: url(images/icons/forward.png) !important; +} + +.forward-icon-over { + opacity: 0.6; + filter: alpha(opacity = 60); +} + +.forward-icon-disabled { + background-image: url(images/icons/forward.png) !important; +} + +.backward-icon { + background-image: url(images/icons/backward.png) !important; +} + +.backward-icon-over { + opacity: 0.6; + filter: alpha(opacity = 60); +} + +.backward-icon-disabled { + background-image: url(images/icons/backward.png) !important; +} + +.upload-icon { + background-image: url(images/icons/upload.png) !important; +} + +.upload-icon-over { + opacity: 0.6; + filter: alpha(opacity = 60); +} + +.upload-icon-disabled { + background-image: url(images/icons/upload.png) !important; +} + +.label-wizard { + color: #15428B; + font-size: 20px ! important; + font-weight: bold ! important; + margin-top: 18px; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.23); +} + +.functionalityText { + color: #444; + font-family: 'Lucida Grande', Verdana, 'Bitstream Vera Sans', Arial, + sans-serif; + font-size: 12px; + padding-left: 5px; + padding-right: 10px; + text-align: justify; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.20); + line-height: 15px ! important; + padding-bottom: 10px; + overflow-y: auto; + height: 120px; +} + +.resourceText { + color: #444; + font-family: 'Lucida Grande', Verdana, 'Bitstream Vera Sans', Arial, sans-serif; + font-size: 10px; + padding-left: 5px; + text-align: justify; +} + +.theTitle { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 18px; + color: #333; + padding-bottom: 10px; + padding-top: 5px; +} + +.theResources { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 15px; + color: #333; + padding-bottom: 10px; + padding-top: 5px; + background-color: #fff; +} + +.extres { + background-image:url(images/ext_resource.png) !important; + background-repeat: no-repeat; + font-weight: bold; + color: #555; + font-size: 12px; + padding-left: 20px; + margin-left: 20px; +} \ No newline at end of file diff --git a/src/main/webapp/VREDefinition.html b/src/main/webapp/VREDefinition.html new file mode 100644 index 0000000..7d6cee5 --- /dev/null +++ b/src/main/webapp/VREDefinition.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + +Web Application Starter Project + + + + + +
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_edit.jsp b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_edit.jsp new file mode 100644 index 0000000..0a197a8 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_edit.jsp @@ -0,0 +1,13 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + EDIT MODE + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_help.jsp b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_help.jsp new file mode 100644 index 0000000..39ed5a1 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_help.jsp @@ -0,0 +1,13 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + HELP MODE + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_view.jsp b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_view.jsp new file mode 100644 index 0000000..c1b58ef --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/CollectionViewerPortlet_view.jsp @@ -0,0 +1,17 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + + + + +
+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-display.xml b/src/main/webapp/WEB-INF/liferay-display.xml new file mode 100644 index 0000000..d61d1b1 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-display.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/webapp/WEB-INF/liferay-plugin-package.properties b/src/main/webapp/WEB-INF/liferay-plugin-package.properties new file mode 100644 index 0000000..e12eda1 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-plugin-package.properties @@ -0,0 +1,9 @@ +name=VRE Definition Wizard +module-group-id=liferay +module-incremental-version=1 +tags= +short-description= +change-log= +page-url=http://www.liferay.com +author=Liferay, Inc. +licenses=MIT \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-portlet.xml b/src/main/webapp/WEB-INF/liferay-portlet.xml new file mode 100644 index 0000000..85ce08f --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-portlet.xml @@ -0,0 +1,17 @@ + + + + + + VREDefinition + false + false + false + + /Wizard.css + + + administrator + Administrator + + diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml new file mode 100644 index 0000000..181a224 --- /dev/null +++ b/src/main/webapp/WEB-INF/portlet.xml @@ -0,0 +1,24 @@ + + + + VREDefinition + VRE Definition Wizard + org.gcube.portlets.admin.vredefinition.server.portlet.VREDefinitionPortlet + + view-jsp + /WEB-INF/jsp/CollectionViewerPortlet_view.jsp + + 0 + + text/html + + + VRE Definition Wizard + VRE Definition Wizard + VRE Definition Wizard + + + administrator + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..5b84e78 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,23 @@ + + + + + + + VREDefinitionServiceImpl + org.gcube.portlets.admin.vredefinition.server.VREDefinitionServiceImpl + + + + VREDefinitionServiceImpl + /VREDefinition/VREDefinitionServiceImpl + + + + + VREDefinition.html + + + diff --git a/src/main/webapp/gxt/chart/open-flash-chart.swf b/src/main/webapp/gxt/chart/open-flash-chart.swf new file mode 100644 index 0000000..5ec4444 Binary files /dev/null and b/src/main/webapp/gxt/chart/open-flash-chart.swf differ diff --git a/src/main/webapp/gxt/css/gxt-all.css b/src/main/webapp/gxt/css/gxt-all.css new file mode 100644 index 0000000..1e8b8ef --- /dev/null +++ b/src/main/webapp/gxt/css/gxt-all.css @@ -0,0 +1,7454 @@ +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:'';} +.x-contrast-test { + background: url(../images/default/s.gif); + visibility: hidden; + position: relative; + left: -1000px; + top: -1000px; +} +.ext-el-mask { + z-index: 100; + position: absolute; + top: 0; + left: 0; + -moz-opacity: 0.5; + opacity: .50; + filter: alpha(opacity = 50); + width: 100%; + height: 100%; + zoom: 1; +} + +.ext-el-mask-msg { + z-index: 101; + position: absolute; + top: 0; + left: 0; + border: 1px solid; + background: repeat-x 0 -16px; + padding: 2px; +} + +.ext-el-mask-msg div { + padding: 5px 10px 5px 10px; + border: 1px solid; + cursor: wait; +} + +.ext-webkit *:focus { + outline: none !important; +} + +.ext-webkit .x-form-check-wrap input:focus { + outline: auto !important; +} + +.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: no-repeat 5px 5px; + line-height: 16px; +} + +.x-hidden,.x-hide-offsets { + position: absolute !important; + left: -10000px !important; + top: -10000px !important; + visibility: hidden !important; +} + +.x-hide-display { + display: none !important; +} + +.x-hide-visibility { + visibility: hidden !important; +} + +.x-masked { + overflow: hidden !important; +} + +.x-masked-relative { + position: relative !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; + -webkit-user-select: ignore; +} + +.x-unselectable-single { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} + +.x-selectable,.x-selectable * { + -moz-user-select: text !important; + -webkit-user-select: auto; +} + +.x-repaint { + zoom: 1; + background-color: transparent; + -moz-outline: none; + outline: 0 none; +} + +.x-item-disabled { + cursor: default; + opacity: .6; + -moz-opacity: .6; + filter: alpha(opacity = 60); +} + +.ext-ie .x-item-disabled { + filter: none !important; +} + +.x-item-disabled * { + cursor: default !important; +} + +.x-splitbar-proxy { + position: absolute; + visibility: hidden; + z-index: 20001; + 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; + -moz-outline: 0 none; + outline: 0 none; +} + +.x-color-palette a { + border: 1px solid; + float: left; + padding: 2px; + text-decoration: none; + -moz-outline: 0 none; + outline: 0 none; + cursor: pointer; +} + +.x-color-palette a.x-color-palette-hover,.x-color-palette a.x-color-palette-sel { + border: 1px solid; +} + +.x-color-palette em { + display: block; + border: 1px solid; +} + +.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; + 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; +} + +.x-shadow .xst,.x-shadow .xsb { + height: 6px; + overflow: hidden; + width: 100%; +} + +.x-shadow .xsml { + background: transparent repeat-y 0 0; +} + +.x-shadow .xsmr { + background: transparent repeat-y -6px 0; +} + +.x-shadow .xstl { + background: transparent no-repeat 0 0; +} + +.x-shadow .xstc { + background: transparent repeat-x 0 -30px; +} + +.x-shadow .xstr { + background: transparent repeat-x 0 -18px; +} + +.x-shadow .xsbl { + background: transparent no-repeat 0 -12px; +} + +.x-shadow .xsbc { + background: transparent repeat-x 0 -36px; +} + +.x-shadow .xsbr { + background: transparent repeat-x 0 -6px; +} + +.loading-indicator { + background: no-repeat left; + padding-left: 20px; + line-height: 16px; + margin: 3px; +} + +.x-text-resize { + position: absolute; + left: -1000px; + top: -1000px; + visibility: hidden; + zoom: 1; +} + +.x-drag-overlay { + width: 100%; + height: 100%; + display: none; + position: absolute; + left: 0; + top: 0; + background-image: url(../images/default/s.gif); + z-index: 20000; +} + +.x-clear { + clear: both; + 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); + width: 0; + height: 0; + zoom: 1; +} + +#x-history-frame { + position: absolute; + top: -1px; + left: 0; + width: 1px; + height: 1px; + visibility: hidden; +} + +#x-history-field { + position: absolute; + top: 0; + left: -1px; + width: 1px; + height: 1px; + visibility: hidden; +} + +.x-portlet { + margin-bottom: 10px; +} + +.x-portlet .x-panel-body { + background-color: white !important; +} + +.ext-ie .x-btn-icon .x-btn-center .x-btn-text { + height: auto; +} + +.x-portal-insert div { + height: 4px; + font-size: 0px; + border: 2px dotted blue; +} + +.icon-wait { + background: url(../images/gxt/icons/wait.gif) no-repeat !important; +} + +.x-panel-icon { + padding-left: 20px !important; +} + +.x-icon-btn { + width: 16px; + height: 16px; + overflow: hidden; + background-repeat: no-repeat; + cursor: pointer; +} + +.x-panel-inline-icon { + margin-top: 0; +} + +.x-modal { + position: absolute; + z-index: 10; + background-color: black; + filter: alpha(opacity = 10); + opacity: .1; + left: 0px; + top: 0px; +} + +.x-progress { + font-family: tahoma, arial, helvetica, sans-serif; +} + +.x-float-right { + float: right; +} + +.x-toolbar .x-float-right { + margin-right: 4px; +} + +.x-border { + border: 1px solid #99BBE8; +} + +.x-border-top { + border-top: 1px solid #99BBE8; +} + +.x-layout-popup { + background-color: #DFE8F6; + border: 1px solid #7CA4D9; +} + +.x-panel-popup-body { + border-top: 1px solid #99BBE8; +} + +.x-layout-collapsed .x-panel-header { + border-left: none; + border-right: none; + border-top: none; +} + +.x-layout-collapsed .x-panel-header .x-tool { + margin: 0 0 0 -4px; + padding: 0px; +} + +.x-layout-collapsed { + position: absolute; + 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-panel-toolbar { + float: right; +} + +.x-cursor-row-resize { + cursor: n-resize; + cursor: row-resize; +} + +.x-date-picker,.x-date-picker a { + font-size: 11px; +} + +.x-date-days { + table-layout: fixed; + width: 100%; +} + +.x-date-days td { + width: 25px; + border: none; +} + +.x-date-days td span { + display: block; + padding: 2px 7px 2px 2px; +} + +.x-date-days td { + background: #DFECFB url(../images/default/shared/glass-bg.gif) repeat-x scroll left top; + border-bottom: 1px solid #A3BAD9; + border-collapse: separate; + color: #233D6D; + cursor: default; + font-family: arial, helvetica, tahoma, sans-serif; + font-size: 10px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + padding: 0pt; + text-align: right !important; +} + +.x-date-picker .x-date-header { + background: url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px; + height: 22px; + left: 10px; + top: 10px; + width: 157px; +} + +.x-date-header .x-btn .x-btn-text { + color: #fff; +} + +.x-date-picker-footer { + width: 100%; +} + +.x-date-picker-footer td { + text-align: center; +} + +.x-date-left { + background: transparent url(../images/default/shared/hd-sprite.gif) repeat-x scroll 0pt -83px; + color: #FFFFFF; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 11px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + overflow: hidden; +} + +.x-modal { + position: absolute; + z-index: 10; + background-color: black; + filter: alpha(opacity = 10); + opacity: .1; + left: 0px; + top: 0px; +} + +.x-progress { + font-family: tahoma, arial, helvetica, sans-serif; +} + +.x-float-right { + float: right; +} + +.x-layout-popup { + background-color: #DFE8F6; + border: 1px solid #7CA4D9; +} + +.x-layout-collapsed .x-panel-header .x-tool { + margin: 0 0 0 -4px; + padding: 0px; +} + +.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-panel-toolbar { + float: right; +} + +.x-cursor-col-resize { + cursor: e-resize; + cursor: col-resize; +} + +.x-cursor-row-resize { + cursor: n-resize; + cursor: row-resize; +} + +.x-drag-proxy { + border: 1px dashed #3b5a82; + background-color: #EDEDED; + filter: alpha(opacity = 50); + opacity: .5; + background-color: #c3daf9; + z-index: 20000; + overflow: hidden; + position: absolute; + left: 0;; + top: 0; + cursor: move; +}.x-tab-panel { + overflow: hidden; + -moz-outline: none; + outline: 0 none; +} + +.x-tab-panel-header,.x-tab-panel-footer { + border: 1px solid; + overflow: hidden; + zoom: 1; +} + +.x-tab-panel-header { + border: 1px solid; + padding-bottom: 2px; +} + +.x-tab-panel-footer { + border: 1px solid; + padding-top: 2px; +} + +.x-tab-strip-wrap { + width: 100%; + overflow: hidden; + position: relative; + zoom: 1; +} + +ul.x-tab-strip { + display: block; + width: 7000px; + zoom: 1; +} + +ul.x-tab-strip-top { + padding-top: 1px; + background: repeat-x bottom; + border-bottom: 1px solid; +} + +ul.x-tab-strip-bottom { + padding-bottom: 1px; + background: repeat-x top; + border-top: 1px solid; + 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,.x-tab-panel-footer-plain .x-tab-strip-spacer + { + border: 1px solid; + height: 2px; + font-size: 1px; + line-height: 1px; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer { + border-top: 0 none; +} + +.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-bottom: 0 none; +} + +.x-tab-panel-footer-plain .x-tab-strip-bottom { + background: transparent !important; + padding-bottom: 0 !important; +} + +.x-tab-panel-footer-plain { + background: transparent !important; + border-width: 0 !important; + padding-top: 0 !important; +} + +.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer + { + height: 3px; +} + +ul.x-tab-strip li { + float: left; + position: relative; + 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 { + white-space: nowrap; + cursor: pointer; + padding: 4px 0; +} + +.x-tab-strip-top .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-active,.x-tab-strip-active a.x-tab-right { + cursor: default; +} + +.x-tab-strip-active span.x-tab-strip-text { + cursor: default; +} + +.x-tab-strip-disabled .x-tabs-text { + cursor: default; +} + +.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 no-repeat 0 -51px; + padding-left: 10px; +} + +.x-tab-strip-top .x-tab-left { + background: transparent no-repeat right -351px; + padding-right: 10px; +} + +.x-tab-strip-top .x-tab-strip-inner { + background: transparent 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: no-repeat bottom right; +} + +.x-tab-strip-bottom .x-tab-left { + background: no-repeat bottom left; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background: no-repeat bottom left; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background: 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 { + 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 { + opacity: 1; + -moz-opacity: 1; +} + +.x-tab-panel-body { + border: 1px solid; +} + +.x-tab-panel-body-top { + border-top: 0 none; +} + +.x-tab-panel-body-bottom { + border-bottom: 0 none; +} + +.x-tab-scroller-left { + background: transparent no-repeat -18px 0; + border-bottom: 1px solid; + 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 no-repeat 0 0; + border-bottom: 1px solid; + 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-bottom .x-tab-scroller-left,.x-tab-scrolling-bottom .x-tab-scroller-right + { + margin-top: 1px; +} + +.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; + border-top: 0 none; + overflow: hidden; + padding: 2px; +} + +.x-tab-panel-tbar .x-toolbar { + border: 1px solid; + border-top: 0 none; + overflow: hidden; + padding: 2px; +} + +.x-tab-strip li .x-tab-image { + position: absolute; + top: 3px; + left: 5px; +} + +.ext-ie8 .x-tab-strip li .x-tab-image,.ext-ie8-compatibility .x-tab-strip li .x-tab-image { + top: 4px; + left: 6px; +} + +.ext-ie8 .x-tab-strip-top .x-tab-right,.ext-ie8-compatibility .x-tab-strip-top .x-tab-right + { + top: 1px; +} + +.ext-strict .ext-ie8 .x-tab-strip-top .x-tab-right,.ext-ie8 .x-tab-panel-header-plain .x-tab-strip-top .x-tab-right,.ext-ie8-compatibility .x-tab-panel-header-plain .x-tab-strip-top .x-tab-right + { + top: 0; +} +.ext-strict .ext-ie7 .x-panel-body { + position: relative !important; +} + +.x-form-field { + margin: 0; +} + +.foo { + padding: 1px; +} + +.foo { + margin: 4px; +} + +.x-form-text,textarea.x-form-field { + padding: 1px 3px; + background: repeat-x 0 0; + border: 1px solid; +} + +.ext-gecko textarea.x-form-field { + padding: 0; +} + +.x-form-text,.ext-ie .x-form-file { + height: 22px; + line-height: 18px; + vertical-align: middle; +} + +.ext-ie6 .x-form-text,.ext-ie7 .x-form-text { + margin: -1px 0; + height: 22px; /* ie quirks */ + line-height: 18px; +} + +.ext-ie8-compatibility .x-form-text { + margin: 0; +} + +.ext-ie textarea.x-form-field { + margin: -1px 0; /* ie bogus margin bug */ +} + +.ext-strict .ext-ie8 textarea.x-form-field,.ext-strict .ext-ie8-compatibility textarea.x-form-field { + margin: 0; +} + +.x-form-field-wrap .x-form-text { + position: relative; +} + +.ext-strict .x-form-text { + height: 18px; +} + +.ext-safari.ext-mac textarea.x-form-field { + margin-bottom: -2px; +} + +.ext-gecko .x-form-text,.ext-ie8 .x-form-text { + padding-top: 2px; + padding-bottom: 0; +} + +textarea { + resize: none; +} + +.x-form-select-one { + height: 20px; + line-height: 18px; + vertical-align: middle; + border: 1px solid; +} + +.x-form-check-wrap { + line-height: 18px; + height: 22px; + white-space: nowrap; +} + +.x-editor .x-form-check-wrap { + border: 1px solid; + padding: 2px; + height: 14px; +} + +.x-editor .x-form-checkbox { + height: 13px; +} + +.x-form-check-group-label { + border-bottom: 1px solid; + margin-bottom: 5px; + padding-left: 3px !important; + float: none !important; +} + +.x-form-field-wrap .x-form-trigger { + width: 17px; + height: 21px; + border: 0; + background: transparent no-repeat 0 0; + cursor: pointer; + border-bottom: 1px solid; + position: absolute; + top: 0; +} + +.ext-safari .x-form-field-wrap .x-form-trigger { + height: 21px; +} + +.ext-strict .ext-safari .x-form-field-wrap .x-form-trigger { + height: 23px; +} + +.ext-strict .ext-safari .x-small-editor .x-form-field-wrap .x-form-trigger { + height: 19px; +} + +.ext-strict .ext-ie8 .x-small-editor .x-form-field-wrap .x-form-trigger { + height: 20px !important; +} + +.ext-strict .ext-gecko .x-small-editor .x-form-field-wrap .x-form-trigger { + height: 21px !important; +} + +.x-form-field-wrap .x-form-date-trigger,.x-form-field-wrap .x-form-clear-trigger,.x-form-field-wrap .x-form-search-trigger + { + cursor: pointer; +} + +.ext-safari .x-form-field-wrap .x-form-trigger,.ext-gecko .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 { + position: relative; + left: 0; + top: 0; + zoom: 1; + white-space: nowrap; + text-align: left; +} + +.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; +} + +.x-item-disabled .x-form-trigger-over { + background-position: 0 0 !important; + border-bottom: 1px solid; +} + +.x-item-disabled .x-form-trigger-click { + background-position: 0 0 !important; + border-bottom: 1px solid; +} + +.x-form-focus,textarea.x-form-focus { + border: 1px solid; +} + +.x-form-invalid,textarea.x-form-invalid { + background: repeat-x bottom; + border: 1px solid; +} + +.ext-safari .x-form-invalid { + border: 1px solid; +} + +.x-form-inner-invalid,textarea.x-form-inner-invalid { + background: repeat-x bottom; +} + +.x-editor { + padding: 0; + margin: 0; +} + +.x-form-grow-sizer { + 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 { + display: block; + margin-bottom: 4px; +} + +.x-form-item .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 { + padding: 2px; + padding-left: 18px; + background: transparent no-repeat 0 2px; + line-height: 16px; + width: 200px; +} + +.x-form-label-left .x-form-item-label { + text-align: left; +} + +.x-form-label-right .x-form-item-label { + text-align: right; +} + +.x-form-label-top .x-form-item .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-small-editor .x-form-text { + height: 20px; + line-height: 16px; + vertical-align: middle; +} + +.ext-ie6 .x-small-editor .x-form-text,.ext-ie7 .x-small-editor .x-form-text { + height: 20px !important; + line-height: 16px !important; +} + +.ext-strict .x-small-editor .x-form-text { + height: 16px !important; +} + +.ext-strict .ext-ie8 .x-small-editor .x-form-text { + height: 17px !important; +} + +.ext-strict .ext-webkit .x-small-editor .x-form-text { + height: 18px !important; + padding: 0px 3px; +} + +.ext-strict .ext-gecko .x-small-editor .x-form-text { + height: 18px !important; +} + +.ext-strict .ext-gecko .x-edit-grid .x-small-editor .x-form-text { + height:17px !important; +} + +.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; + overflow: hidden; + line-height: 0; + font-size: 0; + height: 0; +} + +.x-form-clear-left { + clear: left; + overflow: hidden; + line-height: 0; + font-size: 0; + height: 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; + position: absolute; + left: 0; + top: 0; + display: block; + background: transparent no-repeat 0 2px; +} + +.x-fieldset { + border: 1px solid; + padding: 10px; + margin-bottom: 10px; + display: block; +} + +.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 1px 0 1px !important; + border-left-color: transparent; + border-right-color: transparent; +} + +.ext-ie6 fieldset.x-panel-collapsed { + padding-bottom: 0 !important; + border-width: 1px 0 0 0 !important; + margin-left: 1px; + margin-right: 1px; +} + +fieldset.x-panel-collapsed .x-fieldset-bwrap { + visibility: hidden; + position: absolute; + left: -1000px; + top: -1000px; +} + +.ext-ie .x-fieldset-bwrap { + zoom: 1; +} + +.x-fieldset-noborder { + border: 0px 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: 16px; +} + +.ext-gecko .x-form-item { + -moz-outline: none; + outline: 0 none; +} + +.x-hide-label label.x-form-item-label { + display: none !important; +} + +.x-hide-label .x-form-element { + padding-left: 0 !important; +} + +.x-fieldset { + overflow: hidden; +} + +/* make top of checkbox/tools visible in webkit */ +.ext-webkit .x-fieldset-header, .ext-ie .x-fieldset-header { + padding-top: 1px; +} + +.x-fieldset-bwrap { + overflow: hidden; + zoom: 1; +} + +.x-fieldset-body { + overflow: hidden; +} + +.x-combo-list .x-combo-selected { + border-color: #a3bae9 !important; +} + +.x-combo-list { + background-color: white !important; +} + +.ext-gecko .x-form-file { + height: inherit !important; +} + +.x-form-check { + background: none !important +} + +.x-form-radio { + background: none !important +} + +.x-form-label { + padding: 2px 3px 3px 0px; + font-size: 12px; +} + +.x-form-label-top .x-form-item { + padding-bottom: 0px; + margin-bottom: 2px; +} + +.ext-safari .x-form-text { + height: 22px; /* safari always same size */ + padding: 0 3px; + /* remove extra top/bottom padding */ +} + +.ext-safari .x-small-editor .x-form-text { + height: 20px; +} + +.x-form-group-label,.x-form-cb-label { + font: normal 12px tahoma, arial, helvetica, sans-serif; + padding-right: 10px; +} + +.x-form-list { + background: #FFFFFF url(../images/default/form/text-bg.gif) repeat-x scroll 0 0; + border: 1px solid #B5B8C8; +} + +/* + * FileUploadField component styles + */ +.x-form-file-wrap { + height: 22px; +} + +.x-form-file-wrap .x-form-file { + position: absolute; + right: 0; + -moz-opacity: 0; + filter: alpha(opacity : 0); + opacity: 0; + z-index: 2; + height: 22px; + top: 0; +} + +.x-form-file-wrap .x-form-file-btn { + position: absolute; + right: 0; + z-index: 1; + top: 0; +} + +.x-form-file-wrap .x-form-file-text { + z-index: 3; + color: #777; +} + +.x-form-invalid-icon { + background-position: 0 0 !important; +} + +.x-triggerfield-noedit { + cursor: pointer; +} + +.ext-webkit .x-form-checkbox:focus { + outline: auto !important; +} + +.x-spinner-field .x-form-twin-triggers .x-form-spinner-up, .x-spinner-field .x-form-twin-triggers .x-form-spinner-down { + height: 10px; + position: absolute; +} + +.ext-strict .ext-safari .x-form-field-wrap .x-form-spinner-up { + height: 10px; +} + +.ext-strict .ext-safari .x-form-field-wrap .x-form-spinner-down { + height: 12px; +} + +.x-spinner-field .x-form-twin-triggers .x-form-spinner-up { + top:0px; +} + +.x-spinner-field .x-form-twin-triggers .x-form-spinner-down { + top:11px; +} + +.x-spinner-field .x-form-twin-triggers { + width: 17px; +} + +.x-spinner-field .x-form-spinner-down { + background-position:0 -12px; +} + +.x-trigger-wrap-focus .x-form-spinner-up { + background-position:-85px 0; +} + +.x-trigger-wrap-focus .x-form-spinner-down { + background-position:-85px -12px; +} + +.x-form-field-wrap .x-form-spinner-overup{ + background-position:-17px 0; +} +.x-form-field-wrap .x-form-spinner-clickup{ + background-position:-34px 0; +} + +.x-trigger-wrap-focus .x-form-spinner-overup{ + background-position:-102px 0; +} + +.x-trigger-wrap-focus .x-form-spinner-clickup{ + background-position:-119px 0; +} + +.x-form-field-wrap .x-form-spinner-overdown{ + background-position:-51px -12px; +} +.x-form-field-wrap .x-form-spinner-clickdown{ + background-position:-68px -12px; +} +.x-trigger-wrap-focus .x-form-spinner-overdown{ + background-position:-136px -12px; +} +.x-trigger-wrap-focus .x-form-spinner-clickdown{ + background-position:-153px -12px; +}.x-btn{ + cursor:pointer; + white-space: nowrap; +} +.x-btn button{ + border:0 none; + background:transparent; + padding-left:3px; + padding-right:3px; + cursor:pointer; + margin:0; + overflow:hidden; + width:auto; + -moz-outline:0 none; + outline:0 none; +} +* html .ext-ie .x-btn button { + width:1px; +} +.ext-ie .x-item-disabled .x-btn-mc img { + filter: alpha(opacity=60); +} +.ext-gecko .x-btn button,.ext-webkit .x-btn button { + padding-left:0; + padding-right:0; +} +.ext-gecko .x-btn button::-moz-focus-inner { + padding:0; +} +.ext-ie .x-btn button { + padding-top:2px; +} +.x-btn td { + padding:0 !important; +} +.x-btn-text { + cursor:pointer; + white-space: nowrap; + padding:0; +} +.x-btn-noicon .x-btn-small .x-btn-text{ + height: 16px; +} +.x-btn-noicon .x-btn-medium .x-btn-text{ + height: 24px; +} +.x-btn-noicon .x-btn-large .x-btn-text{ + height: 32px; +} +.x-btn-icon .x-btn-text{ + background-position: center; + background-repeat: no-repeat; +} +.x-btn-icon .x-btn-small .x-btn-text{ + height: 16px; + width: 16px; +} +.x-btn-icon .x-btn-medium .x-btn-text{ + height: 24px; + width: 24px; +} +.x-btn-icon .x-btn-large .x-btn-text{ + height: 32px; + width: 32px; +} +.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:18px; + height:16px; +} +.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:26px; + height:24px; +} +.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:34px; + height:32px; +} +.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:18px; +} +.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:26px; +} +.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:34px; +} +.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:18px; + height:16px; +} +.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:26px; + height:24px; +} +.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:34px; + height:32px; +} +.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:18px; +} +.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:26px; +} +.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:34px; +} +.x-btn-tr i, .x-btn-tl i, .x-btn-mr i, .x-btn-ml i, .x-btn-br i, .x-btn-bl i{ + font-size:1px; + line-height:1px; + width:3px; + display:block; + overflow:hidden; +} +.x-btn-tr i, .x-btn-tl i, .x-btn-br i, .x-btn-bl i{ + height:3px; +} +.x-btn-tl{ + width:3px; + height:3px; + background:no-repeat 0 0; +} +.x-btn-tr{ + width:3px; + height:3px; + background:no-repeat -3px 0; +} +.x-btn-tc{ + height:3px; + background:repeat-x 0 -6px; +} +.x-btn-ml{ + width:3px; + background:no-repeat 0 -24px; +} +.x-btn-mr{ + width:3px; + background:no-repeat -3px -24px; +} +.x-btn-mc{ + background:repeat-x 0 -1096px; + vertical-align: middle; + text-align:center; + padding:0 5px; + cursor:pointer; + white-space:nowrap; +} +.x-btn-bl{ + width:3px; + height:3px; + background:no-repeat 0 -3px; +} +.x-btn-br{ + width:3px; + height:3px; + background:no-repeat -3px -3px; +} +.x-btn-bc{ + height:3px; + background:repeat-x 0 -15px; +} +.x-btn-over .x-btn-tl{ + background-position: -6px 0; +} +.x-btn-over .x-btn-tr{ + background-position: -9px 0; +} +.x-btn-over .x-btn-tc{ + background-position: 0 -9px; +} +.x-btn-over .x-btn-ml{ + background-position: -6px -24px; +} +.x-btn-over .x-btn-mr{ + background-position: -9px -24px; +} +.x-btn-over .x-btn-mc{ + background-position: 0 -2168px; +} +.x-btn-over .x-btn-bl{ + background-position: -6px -3px; +} +.x-btn-over .x-btn-br{ + background-position: -9px -3px; +} +.x-btn-over .x-btn-bc{ + background-position: 0 -18px; +} +.ext-webkit .x-btn-focus .x-btn-tl{ + background-position: -6px 0; +} +.ext-webkit .x-btn-focus .x-btn-tr{ + background-position: -9px 0; +} +.ext-webkit .x-btn-focus .x-btn-tc{ + background-position: 0 -9px; +} +.ext-webkit .x-btn-focus .x-btn-ml{ + background-position: -6px -24px; +} +.ext-webkit .x-btn-focus .x-btn-mr{ + background-position: -9px -24px; +} +.ext-webkit .x-btn-focus .x-btn-mc{ + background-position: 0 -2168px; +} +.ext-webkit .x-btn-focus .x-btn-bl{ + background-position: -6px -3px; +} +.ext-webkit .x-btn-focus .x-btn-br{ + background-position: -9px -3px; +} +.ext-webkit .x-btn-focus .x-btn-bc{ + background-position: 0 -18px; +} +.x-btn-click .x-btn-tl, .x-btn-menu-active .x-btn-tl, .x-btn-pressed .x-btn-tl{ + background-position: -12px 0 !important; +} +.x-btn-click .x-btn-tr, .x-btn-menu-active .x-btn-tr, .x-btn-pressed .x-btn-tr{ + background-position: -15px 0 !important; +} +.x-btn-click .x-btn-tc, .x-btn-menu-active .x-btn-tc, .x-btn-pressed .x-btn-tc{ + background-position: 0 -12px !important; +} +.x-btn-click .x-btn-ml, .x-btn-menu-active .x-btn-ml, .x-btn-pressed .x-btn-ml{ + background-position: -12px -24px !important; +} +.x-btn-click .x-btn-mr, .x-btn-menu-active .x-btn-mr, .x-btn-pressed .x-btn-mr{ + background-position: -15px -24px !important; +} +.x-btn-click .x-btn-mc, .x-btn-menu-active .x-btn-mc, .x-btn-pressed .x-btn-mc{ + background-position: 0 -3240px !important; +} +.x-btn-click .x-btn-bl, .x-btn-menu-active .x-btn-bl, .x-btn-pressed .x-btn-bl{ + background-position: -12px -3px !important; +} +.x-btn-click .x-btn-br, .x-btn-menu-active .x-btn-br, .x-btn-pressed .x-btn-br{ + background-position: -15px -3px !important; +} +.x-btn-click .x-btn-bc, .x-btn-menu-active .x-btn-bc, .x-btn-pressed .x-btn-bc{ + background-position: 0 -21px !important; +} +.x-btn-disabled *{ + cursor:default !important; +} +.x-btn-mc em.x-btn-arrow { + display:block; + background:transparent no-repeat right center; + padding-right:10px; +} +.x-btn-mc em.x-btn-split { + display:block; + background:transparent no-repeat right center; + padding-right:14px; +} +.x-btn-mc em.x-btn-arrow-bottom { + display:block; + background:transparent no-repeat center bottom; + padding-bottom:14px; +} +.x-btn-mc em.x-btn-split-bottom { + display:block; + background:transparent no-repeat center bottom; + padding-bottom:14px; +} +.x-btn-as-arrow .x-btn-mc em { + display:block; + background:transparent; + padding-bottom:14px; +} +.x-btn-group { + padding:1px; +} +.x-btn-group-header { + padding:2px; + text-align:center; +} +.x-btn-group-tc { + background: transparent repeat-x 0 0; + overflow:hidden; +} +.x-btn-group-tl { + background: transparent no-repeat 0 0; + padding-left:3px; + zoom:1; +} +.x-btn-group-tr { + background: transparent no-repeat right 0; + zoom:1; + padding-right:3px; +} +.x-btn-group-bc { + background: transparent repeat-x 0 bottom; + zoom:1; +} +.x-btn-group-bc .x-panel-footer { + zoom:1; +} +.x-btn-group-bl { + background: transparent no-repeat 0 bottom; + padding-left:3px; + zoom:1; +} +.x-btn-group-br { + background: transparent no-repeat right bottom; + padding-right:3px; + zoom:1; +} +.x-btn-group-mc { + border:0 none; + padding:1px 0 0 0; + margin:0; +} +.x-btn-group-mc .x-btn-group-body { + background:transparent; + border: 0 none; +} +.x-btn-group-ml { + background: transparent repeat-y 0 0; + padding-left:3px; + zoom:1; +} +.x-btn-group-mr { + background: transparent repeat-y right 0; + padding-right:3px; + zoom:1; +} +.x-btn-group-bc .x-btn-group-footer { + padding-bottom:6px; +} +.x-panel-nofooter .x-btn-group-bc { + height:3px; + font-size:0; + line-height:0; +} +.x-btn-group-bwrap { + overflow:hidden; + zoom:1; +} +.x-btn-group-body { + overflow:hidden; + zoom:1; +} +.x-btn-group-notitle .x-btn-group-tc { + background: transparent repeat-x 0 0; + overflow:hidden; + height:2px; +} +.x-toolbar{ + border-style:solid; + border-width:0 0 1px 0; + display: block; + padding:2px; + background:repeat-x top left; + position:relative; + left:0; + top:0; + zoom:1; + overflow:hidden; +} +.x-toolbar .x-item-disabled .x-btn-icon { + opacity: .35; + -moz-opacity: .35; + filter: alpha(opacity=35); +} +.x-toolbar td { + vertical-align:middle; +} +.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ + white-space: nowrap; +} +.x-toolbar .x-item-disabled { + cursor:default; + opacity:.6; + -moz-opacity:.6; + filter:alpha(opacity=60); +} + +.x-toolbar .x-item-disabled *{ + cursor:default; +} + +.x-toolbar .x-toolbar-cell { + vertical-align:middle; +} +.x-toolbar .x-btn-tl, .x-toolbar .x-btn-tr, .x-toolbar .x-btn-tc, .x-toolbar .x-btn-ml, .x-toolbar .x-btn-mr, +.x-toolbar .x-btn-mc, .x-toolbar .x-btn-bl, .x-toolbar .x-btn-br, .x-toolbar .x-btn-bc +{ + background-position: 500px 500px; +} +.x-toolbar .x-btn-over .x-btn-tl{ + background-position: -6px 0; +} +.x-toolbar .x-btn-over .x-btn-tr{ + background-position: -9px 0; +} +.x-toolbar .x-btn-over .x-btn-tc{ + background-position: 0 -9px; +} +.x-toolbar .x-btn-over .x-btn-ml{ + background-position: -6px -24px; +} +.x-toolbar .x-btn-over .x-btn-mr{ + background-position: -9px -24px; +} +.x-toolbar .x-btn-over .x-btn-mc{ + background-position: 0 -2168px; +} +.x-toolbar .x-btn-over .x-btn-bl{ + background-position: -6px -3px; +} +.x-toolbar .x-btn-over .x-btn-br{ + background-position: -9px -3px; +} +.x-toolbar .x-btn-over .x-btn-bc{ + background-position: 0 -18px; +} +.x-toolbar .x-btn-click .x-btn-tl, .x-toolbar .x-btn-menu-active .x-btn-tl, .x-toolbar .x-btn-pressed .x-btn-tl{ + background-position: -12px 0; +} +.x-toolbar .x-btn-click .x-btn-tr, .x-toolbar .x-btn-menu-active .x-btn-tr, .x-toolbar .x-btn-pressed .x-btn-tr{ + background-position: -15px 0; +} +.x-toolbar .x-btn-click .x-btn-tc, .x-toolbar .x-btn-menu-active .x-btn-tc, .x-toolbar .x-btn-pressed .x-btn-tc{ + background-position: 0 -12px; +} +.x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-menu-active .x-btn-ml, .x-toolbar .x-btn-pressed .x-btn-ml{ + background-position: -12px -24px; +} +.x-toolbar .x-btn-click .x-btn-mr, .x-toolbar .x-btn-menu-active .x-btn-mr, .x-toolbar .x-btn-pressed .x-btn-mr{ + background-position: -15px -24px; +} +.x-toolbar .x-btn-click .x-btn-mc, .x-toolbar .x-btn-menu-active .x-btn-mc, .x-toolbar .x-btn-pressed .x-btn-mc{ + background-position: 0 -3240px; +} +.x-toolbar .x-btn-click .x-btn-bl, .x-toolbar .x-btn-menu-active .x-btn-bl, .x-toolbar .x-btn-pressed .x-btn-bl{ + background-position: -12px -3px; +} +.x-toolbar .x-btn-click .x-btn-br, .x-toolbar .x-btn-menu-active .x-btn-br, .x-toolbar .x-btn-pressed .x-btn-br{ + background-position: -15px -3px; +} +.x-toolbar .x-btn-click .x-btn-bc, .x-toolbar .x-btn-menu-active .x-btn-bc, .x-toolbar .x-btn-pressed .x-btn-bc{ + background-position: 0 -21px; +} +.x-toolbar div.xtb-text{ + padding:2px 2px 0; + line-height:16px; + display:block; +} +.x-toolbar .xtb-sep { + 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 .xtb-spacer { + width:2px; +} +.x-tbar-page-number{ + width:24px; + height:14px; +} +.x-paging-info { + position:absolute; + top:5px; + right: 8px; +} +.x-toolbar-ct { + width:100%; +} +.x-panel-tbar, .x-panel-bbar, .x-window-tbar, .x-window-bbar, .x-tab-panel-tbar, .x-tab-panel-bbar, .x-plain-tbar, .x-plain-bbar { + overflow:hidden; + zoom:1; +} +.x-toolbar-more .x-btn-small .x-btn-text{ + height: 16px; + width: 12px; +} +.x-toolbar-more em.x-btn-arrow { + display:inline; + background:transparent; + padding-right:0; +} +.x-toolbar-more .x-btn-mc em.x-btn-arrow { + background-image: none; +} +div.x-toolbar-no-items { + color:gray !important; + padding:5px 10px !important; +}.x-resizable-handle { + position:absolute; + z-index:100; + font-size:1px; + line-height:6px; + overflow:hidden; + 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, +.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west +{ + background-position: left; +} +.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north +{ + background-position: top; +} +.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ + background-position: top left; +} +.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ + background-position:bottom right; +} +.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ + background-position: bottom left; +} +.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ + background-position: top right; +} +.x-resizable-proxy{ + border: 1px dashed; + 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; + z-index:200000; + -moz-opacity: 0; + opacity:0; + filter: alpha(opacity=0); +} +.x-grid3 { + position: relative; + overflow: hidden; +} + +.x-grid-panel { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.x-grid-panel .x-panel-body { + overflow: hidden !important; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border: 1px solid; +} + +.x-grid3 .x-grid3-row-table, .x-grid3 .x-grid3-summary-table { + table-layout: fixed; +} + +.x-grid3-viewport { + overflow: hidden; +} + +.x-grid3-hd-row .x-grid3-hd,.x-grid3-row .x-grid3-hd,.x-grid3-summary-row .x-grid3-hd { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.x-grid3-summary-row { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; + outline: 0 none; +} + +.x-grid3-row td.x-grid3-cell,.x-grid3-summary-row td.x-grid3-cell { + line-height: 14px; + vertical-align: top; + padding-left: 1px; + padding-right: 1px; + -moz-outline: none; + outline: 0 none; +} + +.x-grid3-hd-row .x-grid3-hd { + line-height: 15px; + vertical-align: middle; + border-left: 1px solid; + border-right: 1px solid; +} + +.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; + vertical-align: middle; +} + +.x-grid3-row-body { + white-space: normal; + font-size: 11px; +} + +.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: no-repeat center center; +} + +.x-grid-page { + overflow: hidden; +} + +.x-grid3-row { + cursor: default; + border: 1px solid; + width: 100%; +} + +.x-grid3-row-over { + border: 1px solid; + background: repeat-x left top; +} + +.x-grid3-resize-proxy { + width: 1px; + left: 0; + 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; + position: absolute; + top: 0; + height: 100px; + overflow: hidden; + visibility: hidden; + border: 0 none; + z-index: 7; +} + +.x-grid3-focus { + position: absolute; + left: 0; + top: 0; + width: 1px; + height: 1px; + line-height: 1px; + font-size: 1px; + -moz-outline: 0 none; + outline: 0 none; + -moz-user-select: text; + -khtml-user-select: text; + -webkit-user-select: ignore; +} + +.x-grid3-header { + background: repeat-x 0 bottom; + cursor: default; + zoom: 1; + padding: 0px 0 0 0; +} + +.x-grid3-header-pop { + border-left: 1px solid; + float: right; + clear: none; +} + +.x-grid3-header-pop-inner { + border-left: 1px solid; + width: 14px; + height: 19px; + background: transparent 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; +} + +td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open { + border-left: 1px solid; + border-right: 1px solid; +} + +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: 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,.sort-desc .x-grid3-sort-icon { + display: inline; +} + +.ext-strict .ext-ie .x-grid3-header-inner,.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; +} + +.x-grid3-split { + 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-dd-drag-proxy .x-grid3-hd-inner { + background: repeat-x left bottom; + width: 120px; + padding: 3px; + border: 1px solid; + 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; + background: transparent no-repeat left top; +} + +.x-grid3-row-selected { + border: 1px dotted; +} + +.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker { + background: repeat-x 0 bottom !important; + vertical-align: middle !important; + padding: 0; + border-top: 1px solid; + border-bottom: none !important; + border-right: 1px solid !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; + text-align: center; +} + +.x-grid3-dirty-cell { + background: transparent no-repeat 0 0; +} + +.x-grid3-invalid-cell { + background: repeat-x bottom; +} + +.x-grid3-topbar,.x-grid3-bottombar { + 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; +} + +.x-props-grid .x-grid3-cell { + padding: 1px; +} + +.x-props-grid .x-grid3-td-name .x-grid3-cell-inner { + background: transparent repeat-y -16px !important; + padding-left: 12px; +} + +.x-props-grid .x-grid3-body .x-grid3-td-name { + padding: 1px; + padding-right: 0; + border: 0 none; + border-right: 1px solid; +} + +.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; + -khtml-user-select: none; + -webkit-user-select: ignore; +} + +.x-grid3-hd-btn { + display: none; + position: absolute; + width: 14px; + background: no-repeat left center; + right: 0; + top: 0; + z-index: 2; + cursor: pointer; + outline: none; +} + +.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 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; +} + +.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 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-group-checker { + float: left; +} + +.x-grid3-row-checker,.x-grid3-hd-checker { + width: 100%; + height: 18px; + background-position: 2px 2px; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid3-hd-checker { + padding-bottom: 0px !important; +} + +.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,.x-grid3-row-checked .x-grid3-row-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 repeat-y right; +} + +.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { + padding: 3px 5px 0 0 !important; + text-align: right; +} + +.x-grid3-body .x-grid3-td-row-icon { + background: transparent repeat-y right; + vertical-align: top; + text-align: center; +} + +.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner { + padding: 0 !important; + background-position: center center; + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin-left: 2px; + margin-top: 3px; +} + +.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 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; +} + +.x-grid3-check-col-on { + width: 100%; + height: 16px; + background-position: center center; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid-group,.x-grid-group-body,.x-grid-group-hd { + zoom: 1; +} + +.x-grid-group-hd { + border-bottom: 2px solid; + cursor: pointer; + padding-top: 6px; +} + +.x-grid-group-hd .x-grid-group-div { + background: transparent no-repeat 3px -47px; + padding: 4px 4px 4px 17px; +} + +.x-grid-group-collapsed .x-grid-group-hd .x-grid-group-div { + background-position: 3px 3px; +} + +.x-grid-group-collapsed .x-grid-group-body { + display: none; +} + +.x-grid-empty { + padding: 10px; +} + +.ext-ie7 .x-grid-panel .x-panel-bbar { + position: relative; +} + +.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { + padding-right: 0; + border-right: 1px solid; +} + +.ext-ie6 .x-grid3-header { + position: relative; +} + +.x-grid3-check-col-disabled { + width: 100%; + height: 16px; + background-position: center center; + background-repeat: no-repeat; +} + +.x-row-editor-header { + height: 2px; + overflow: hidden; +} + +.x-row-editor-footer { + height: 2px; + overflow: hidden; +} + +.ext-ie .x-row-editor-footer { + margin-top: -1px; +} + +.x-row-editor-body { + overflow: hidden; + zoom: 1; + padding-top: 2px; +} + +.x-row-editor .x-btns { + position: absolute; + top: 28px; + left: 20px; + padding-left: 5px; +} + +.x-row-editor .x-btns .x-plain-bwrap { + padding-right: 5px; +} + +.x-row-editor .x-btns .x-plain-body { + height: 31px; +} + +.x-row-editor .x-btns .x-table-layout-cell { + padding: 3px; +} + +.x-grid3-footer { + background: #f7f7f7 none repeat scroll 0 0; + border-top: 1px solid #DDDDDD; + border-bottom: 1px solid #DDDDDD; + display: block; + overflow: hidden; + position: relative; +} + +.x-grid3-footer-row { + border: 1px solid #EEEEEE; + background-color: #f7f7f7; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; + cursor: default; +} + +.x-grid3-footer-row td { + line-height: 13px; + vertical-align: top; + padding-left: 1px; + padding-right: 1px; + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.ext-ie6 .x-grid3 .x-editor .x-form-text,.ext-ie7 .x-grid3 .x-editor .x-form-text { + top: -1px; +} + +.ext-ie8-compatibility .x-grid3 .x-editor .x-form-text { + top: 0; +} + +.x-grid-panel .x-livegrid-scroller { + z-index: 1; + position: absolute; + right: 0px; + overflow-y: scroll; + overflow-x: hidden; +} + +.x-grid3-group-checker div { + width: 14px; + height: 18px; + background-position: -1 -2px; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid-group-hd .x-grid3-group-check { + background-image: url(../images/default/menu/checked.gif); +} + +.x-grid-group-hd .x-grid3-group-uncheck { + background-image: url(../images/default/menu/unchecked.gif); +} + +.x-grid3-hd-row .x-filtered-column { + font-style: italic !important; + font-weight: bold !important; +} + +.ext-strict .ext-gecko .x-inline-editor .x-small-editor .x-form-text { + height: 18px !important; +} +.x-dd-drag-proxy{ + position:absolute; + left:0; + top:0; + visibility:hidden; + z-index:15000; +} +.x-dd-drag-ghost{ + -moz-opacity: 0.85; + opacity:.85; + filter: alpha(opacity=85); + border: 1px solid; + padding:3px; + padding-left:20px; + 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-view-selector { + position:absolute; + left:0; + top:0; + width:0; + border:1px dotted; + opacity: .5; + -moz-opacity: .5; + filter:alpha(opacity=50); + zoom:1; +} + +.x-dd-cursor { + cursor: default !important; +} + +.x-insert-bar { + position: absolute; + + z-index: 99999; +} + +.x-insert-bar td { + line-height: 1px; + font-size: 1px; +} + +.x-insert-left { + background: url(../images/gxt/dd/insert-bg.gif) no-repeat; +} + +.x-insert-mid { + background: url(../images/gxt/dd/insert-bg.gif) repeat-x 0 -12px; +} + +.x-insert-right { + background: url(../images/gxt/dd/insert-bg.gif) no-repeat 0px -6px; +} +.tree-folder { + background: url(../images/gxt/icons/folder-closed.gif) no-repeat center + left !important; +} + +.tree-folder-open { + background: url(../images/gxt/icons/folder.gif) no-repeat center left + !important; +} + +.my-tree { + cursor: default; + font-size: 11px; + -moz-outline: none; + -moz-user-focus: none; +} + +.my-root-item { + padding: 4px; +} + +.my-tree-item,.my-tree-item table,.my-tree-item table td { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; + font-size: 11px; +} + +.my-tree-item td { + height: 19px; +} + +.my-tree-indent { + line-height: 1px; + font-size: 1px; +} + +.my-tree-joint div { + width: 15px; + height: 19px; + line-height: 1px; + font-size: 1px; +} + +.my-tree-left,.my-tree-left div,.my-tree-right { + line-height: 1px; + font-size: 1px; + width: 3px; +} + +.my-tree-left div,.my-tree-right div { + width: 3px; +} + +.my-tree-item,.my-treeitem-wrap { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tree-check div { + width: 17px; + height: 17px; + line-height: 1px; + font-size: 1px; +} + +.my-tree-icon div { + width: 16px; + height: 17px; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; +} + +.my-tree-item-text span { + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; + white-space: nowrap; + padding-left: 3px; + padding-right: 3px; + display: block; + height: 15px; + cursor: pointer; +} + +.my-tree-over .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + -57px; +} + +.my-tree-over .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -76px; +} + +.my-tree-over .my-tree-check,.my-tree-over .my-tree-icon,.my-tree-over .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -95px; +} + +.my-tree-sel .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + 0px; +} + +.my-tree-sel .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -19px; +} + +.my-tree-sel .my-tree-check,.my-tree-sel .my-tree-icon,.my-tree-sel .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-tree-drop .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + -115px; +} + +.my-tree-drop .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -133px; +} + +.my-tree-drop .my-tree-check,.my-tree-drop .my-tree-icon,.my-tree-drop .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -152px; +} + +.my-tree-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + 1px; +} + +.my-tree-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -32px; +} + +.my-tree-joint-over .my-tree-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -48px; +} + +.my-tree-joint-over .my-tree-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -15px; +} + +.my-tree-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 50%; +} + +.my-tree-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 50%; +} + +.my-tree-loading .tree-folder { + background: url(../images/gxt/icons/wait.gif) no-repeat 0px -1px + !important; +} + +.my-tree-loading .my-tree-item-text span { + font-style: italic; +} + +.x-ftree-selected .x-ftree-text { + background-color: #d9e8fb; +} + +.x-ftree-node-over .x-ftree-text { + background-color: #eee; +} + +.x-ftree-item { + line-height: 18px; +} + +.x-ftree-joint,.x-ftree-icon { + border: 0 none; + height: 18px; + margin: 0; + padding: 0; + vertical-align: top; + width: 16px; + background-position: center; + background-repeat: no-repeat; +} + +.x-ftree-text { + color: black; + font: normal 11px arial, tahoma, helvetica, sans-serif; + white-space: nowrap; + text-decoration: none; + color: black; + padding-left: 4px; + vertical-align: middle; + line-height: 18px; + padding: 2px 4px 4px 4px; +} + +/* some default icons for leaf/folder */ +.x-ftree-expanded .x-ftree-icon { + background-image: url(../images/default/tree/folder-open.gif); +} + +.x-ftree-leaf .x-ftree-icon { + background-image: url(../images/default/tree/leaf.gif); +} + +.x-ftree-collapsed .x-ftree-icon { + background-image: url(../images/gxt/icons/folder-closed.gif); +} + +/* Arrows */ +.x-ftree-arrows .x-ftree-joint { + background: transparent; +} + +.x-ftree-arrows .x-ftree-joint-plus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + 0 0; +} + +.x-ftree-arrows .x-ftree-joint-minus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + -16px 0; +} + +.x-ftree-arrows .x-ftree-ec-over .x-ftree-joint-plus { + background-position: -32px 0; +} + +.x-ftree-arrows .x-ftree-ec-over .x-ftree-joint-minus { + background-position: -48px 0; +} + +.x-ftree2-highlightrow { + border: 1px dotted #545352; +} + +.x-ftree2-selected { + background-color: #d9e8fb !important; +} + +.x-ftree2-node-over { + background-color: #eee; +} + +.x-ftree2-node-drop { + background-color: #defadc; +} + +.x-ftree2-joint,.x-ftree2-icon { + border: 0 none; + height: 18px; + margin: 0; + padding: 0; + vertical-align: top; + width: 16px; + background-position: center; + background-repeat: no-repeat; +} + +.x-ftree2-joint div { + width: 16px; +} + +.x-ftree2-el-ct { + display: none; +} + +.x-ftree2-node { + padding-bottom: 1px; +} + +.x-ftree2-text { + vertical-align: middle !important; + white-space: nowrap !important; +} + +.x-ftree2-text span { + color: black; + font: normal 11px arial, tahoma, helvetica, sans-serif; + white-space: nowrap; + text-decoration: none; + color: black; + padding: 2px 4px 2px 1px; + display: block; +} + +.ext-ie .x-ftree2-text span { + padding-left: 3px; +} + +.x-ftree2-check { + width: 17px; +} + +.x-ftree2-check div { + width: 17px; + height: 17px; +} + +/* some default icons for leaf/folder */ +.x-ftree2-expanded .x-ftree2-icon { + background-image: url(../images/default/tree/folder-open.gif); +} + +.x-ftree2-leaf .x-ftree2-icon { + background-image: url(../images/default/tree/leaf.gif); +} + +.x-ftree2-collapsed .x-ftree2-icon { + background-image: url(../images/gxt/icons/folder-closed.gif); +} + +/* Arrows */ +.x-ftree2-arrows .x-ftree2-joint { + background: transparent; +} + +.x-ftree2-arrows .x-ftree2-joint-plus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + 0 0; +} + +.x-ftree2-arrows .x-ftree2-joint-minus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + -16px 0; +} + +.x-ftree2-arrows .x-ftree2-ec-over .x-ftree2-joint-plus { + background-position: -32px 0; +} + +.x-ftree2-arrows .x-ftree2-ec-over .x-ftree2-joint-minus { + background-position: -48px 0; +} + +.x-treegrid { + -moz-outline: none; + -moz-user-focus: none; + outline: 0 none; +} + +.x-treegrid .x-treegrid-column .x-grid3-cell-inner { + padding: 0px !important; +} + +.x-tree3 { + cursor: default; + -moz-outline: none; + -moz-user-focus: none; + outline: 0 none; +} + +.ext-strict .ext-gecko .x-tree3, .ext-strict .ext-webkit .x-tree3 { + padding-bottom: 1px; +} + +.x-tree3-node { + cursor: default; +} + +.x-tree3-el { + white-space: nowrap; + height: 21px; + position: relative; +} + +.x-tree3-node-text { + white-space: nowrap; + line-height: 11px; + text-decoration: none; + padding: 0 0 0 3px; + position: relative; + top: -4px; +} + +.ext-ie9 .x-tree3-node-text-widget { + display: block; +} + +.x-tree3-node-ct { + display: none; +} + +.x-tree3-node-text-widget { + position: static !important; + padding: 0px !important; +}.x-date-picker { + border: 1px solid; + border-top:0 none; + position:relative; + -moz-outline:0 none; + outline:0 none; +} +.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: repeat-x 0 -83px; + overflow:hidden; +} +.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr, +.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr, +.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{ + background:transparent !important; + vertical-align:middle; +} +.x-date-middle .x-btn-mc em.x-btn-arrow { + background:transparent 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; + width:130px; +} +.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 { + margin-right:2px; + text-decoration:none !important; +} +.x-date-left a{ + 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: repeat-x left top; + text-align:right !important; + border-bottom: 1px solid; + 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; + text-align:right; + padding:0; +} +.x-date-inner a { + padding:2px 5px; + display:block; + text-decoration:none; + text-align:right; + zoom:1; +} +.x-date-inner .x-date-active{ + cursor:pointer; + color:black; +} +.x-date-inner .x-date-selected a{ + background: repeat-x left top; + border:1px solid; + padding:1px 4px; +} +.x-date-inner .x-date-today a{ + border: 1px solid; + padding:1px 4px; +} +.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { + text-decoration:none !important; +} +.x-date-bottom { + padding:4px; + border-top: 1px solid; + background: repeat-x left top; +} +.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ + text-decoration:none !important; +} +.x-date-inner .x-date-disabled a { + cursor:default; +} +.x-date-mmenu .x-menu-item { + padding:1px 24px 1px 4px; + white-space: nowrap; +} +.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; + 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; + border:1px solid; + padding:1px 3px 1px; + cursor:pointer; +} +.x-date-mp-btns { + background: repeat-x left top; +} +.x-date-mp-btns td { + border-top: 1px solid; + 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; +} +td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { + text-decoration:none; + cursor:pointer; +} +td.x-date-mp-sel a { + padding:1px 3px; + background: repeat-x left top; + border:1px solid; +} +.x-date-mp-ybtn a { + overflow:hidden; + width:15px; + height:15px; + cursor:pointer; + background:transparent 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; +} + +.x-date-picker, .x-date-picker a { + font-size: 11px; +} + +.x-date-right-icon { + background-image: url(../images/default/shared/right-btn.gif); + margin-right: 2px; + text-decoration: none !important; +} + +.x-date-left-icon { + background-image: url(../images/default/shared/left-btn.gif); + margin-left: 4px; + text-decoration: none !important; +} + +.x-date-days { + table-layout: fixed; + width: 100%; +} + +.x-date-days td { + width: 25px; + border: none; +} + +.x-date-days td span { + display: block; + padding: 2px 7px 2px 2px; +} + +.x-date-days td { + background: #DFECFB url(../images/default/shared/glass-bg.gif) repeat-x scroll left top; + border-bottom: 1px solid #A3BAD9; + border-collapse: separate; + color: #233D6D; + cursor: default; + font-family: arial, helvetica, tahoma, sans-serif; + font-size: 10px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + padding: 0pt; + text-align: right !important; +} + +.x-date-picker .x-date-header { + background: url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px; + height: 22px; + left: 10px; + top: 10px; + width: 157px; +} + +.x-date-header .x-btn .x-btn-text { + color: #fff; +} + +.x-date-picker-footer { + width: 100%; +} + +.x-date-picker-footer td { + text-align: center; +} + +.x-date-left { + background: transparent url(../images/default/shared/hd-sprite.gif) repeat-x scroll 0pt -83px; + color: #FFFFFF; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 11px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + overflow: hidden; +} + +.x-date-inner .x-date-active-hover { + background: #ddecfe !important; +}.x-tip{ + position: absolute; + top: 0; + left:0; + visibility: hidden; + z-index: 20000; + border:0 none; +} +.x-tip .x-tip-close{ + height: 15px; + float:right; + width: 15px; + margin:0 0 2px 2px; + cursor:pointer; + display:none; +} +.x-tip .x-tip-tc { + background: transparent no-repeat 0 -62px; + padding-top:3px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-tr { + background: transparent no-repeat right 0; + padding-right:6px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-bc { + background: transparent no-repeat 0 -121px; + height:3px; + overflow:hidden; +} +.x-tip .x-tip-bl { + background: transparent no-repeat 0 -59px; + padding-left:6px; + zoom:1; +} +.x-tip .x-tip-br { + background: transparent no-repeat right -59px; + padding-right:6px; + zoom:1; +} +.x-tip .x-tip-mc { + border:0 none; +} +.x-tip .x-tip-ml { + background: no-repeat 0 -124px; + padding-left:6px; + zoom:1; +} +.x-tip .x-tip-mr { + background: transparent 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; +} +.ext-border-box .x-tip .x-tip-header,.ext-border-box .ext-ie .x-tip .x-tip-tc { + line-height:1px; +} +.x-tip .x-tip-header-text { + padding:0; + margin:0 0 2px 0; +} +.x-tip .x-tip-body { + margin:0 !important; + line-height:14px; + 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: repeat-x 0 -12px; + padding-top:6px; +} +.x-form-invalid-tip .x-tip-bc { + background: repeat-x 0 -18px; + height:6px; +} +.x-form-invalid-tip .x-tip-bl { + background: no-repeat 0 -6px; +} +.x-form-invalid-tip .x-tip-br { + background: no-repeat right -6px; +} +.x-form-invalid-tip .x-tip-body { + padding:2px; +} +.x-form-invalid-tip .x-tip-body { + padding-left:24px; + background:transparent no-repeat 2px 2px; +} +.x-tip-anchor { + position: absolute; + width: 9px; + height: 10px; + overflow:hidden; + background: transparent no-repeat 0 0; + zoom:1; +} +.x-tip-anchor-bottom { + background-position: -9px 0; +} +.x-tip-anchor-right { + background-position: -18px 0; + width: 10px; +} +.x-tip-anchor-left { + background-position: -28px 0; + width: 10px; +} +.x-menu { + border: 1px solid; + z-index: 15000; + zoom: 1; + background: repeat-y; + -moz-outline: none; + outline: 0 none; +} + +.x-menu a { + text-decoration: none !important; +} + +.ext-ie .x-menu { + zoom: 1; + overflow: hidden; +} + +.x-menu-list { + padding: 2px; + background: transparent; + border: 0 none; + overflow: hidden; + overflow-y: hidden; +} + +.ext-strict .ext-ie .x-menu-list { + position: relative; +} + +.x-menu x-menu-sep-li { + font-size: 1px; + line-height: 1px; +} + +.x-menu-list-item { + white-space: nowrap; + display: block; + padding: 1px; +} + +.x-menu-item { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore +} + +.x-menu-item-arrow { + background: transparent no-repeat right; +} + +.x-menu-sep { + display: block; + font-size: 1px; + line-height: 1px; + margin: 2px 3px; + border-bottom: 1px solid; + overflow: hidden; +} + +.x-menu-focus { + position: absolute; + left: -1px; + top: -1px; + width: 1px; + height: 1px; + line-height: 1px; + font-size: 1px; + -moz-outline: 0 none; + outline: 0 none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore + overflow: hidden; + display: block; +} + +a.x-menu-item { + cursor: pointer; + display: block; + line-height: 16px; + outline-color: -moz-use-text-color; + outline-style: none; + outline-width: 0; + padding: 3px 21px 3px 27px; + position: relative; + text-decoration: none; + white-space: nowrap; +} + +.x-menu-item-active { + border-style: solid; + border-width: 1px; + padding: 0; +} + +.x-menu-item-icon { + border: 0 none; + height: 16px; + padding: 0; + vertical-align: top; + width: 16px; + position: absolute; + left: 3px; + top: 3px; + margin: 0; + background-position: center; +} + +.ext-ie .x-menu-item-icon { + left: -24px; +} + +.ext-strict .x-menu-item-icon { + left: 3px; +} + +.ext-ie6 .x-menu-item-icon { + left: -24px; +} + +.ext-ie .x-menu-item-icon { + vertical-align: middle; +} + +.x-date-menu .x-menu-list { + padding: 0; +} + +.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; + 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 !important; + padding: 0; +} + +.x-menu .x-menu-scroller { + width: 100%; + background-repeat: no-repeat; + background-position: center; + height: 8px; + line-height: 8px; + cursor: pointer; + margin: 0; + padding: 0; +} + +.x-menu .x-menu-scroller-active { + height: 6px; + line-height: 6px; +} + +.x-menu-list-item-indent { + padding-left: 27px !important; +} + +.x-menu-text { + + border-style: solid; + background: #D6E3F2; + border-color:#DAE6F4 #99bbe8 #99bbe8 #DAE6F4; + border-width: 1px; + margin:-2px -2px 0; + color:#15428b; + font:bold 10px tahoma,arial,verdana,sans-serif; + display:block; + padding:3px; +} + +.x-menubar { + padding: 3px; + border-style: solid; + border-width: 0 0 1px 0; + cursor: default; + border-color: #a9bfd3; + background-color: #d0def0; + padding: 3px; + background-image: url(../images/default/toolbar/bg.gif); +} + +.x-menubar-item { + padding: 1px 8px; + font: 12px arial, verdana, sans-serif; +} + +.x-menubar-item-over { + background-color: #98c5f5; +} + +.x-menubar-item-active { + background-color: #98c5f5; +}.x-box-tl { + background: transparent no-repeat 0 0; + zoom:1; +} +.x-box-tc { + height: 8px; + background: transparent repeat-x 0 0; + overflow: hidden; +} +.x-box-tr { + background: transparent no-repeat right -8px; +} +.x-box-ml { + background: transparent repeat-y 0; + padding-left: 4px; + overflow: hidden; + zoom:1; +} +.x-box-mc { + background: repeat-x 0 -16px; + padding: 4px 10px; +} +.x-box-mc h3 { + margin: 0 0 4px 0; + zoom:1; +} +.x-box-mr { + background: transparent repeat-y right; + padding-right: 4px; + overflow: hidden; +} +.x-box-bl { + background: transparent no-repeat 0 -16px; + zoom:1; +} +.x-box-bc { + background: transparent repeat-x 0 -8px; + height: 8px; + overflow: hidden; +} +.x-box-br { + background: transparent 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-combo-list { + border:1px solid; + zoom:1; + overflow:hidden; + position: absolute; +} +.x-combo-list-inner { + overflow:auto; + position:relative; + zoom:1; + overflow-x:hidden; +} +.x-combo-list-hd { + border-bottom:1px solid; + padding:3px; +} +.x-resizable-pinned .x-combo-list-inner { + border-bottom:1px solid; +} +.x-combo-list-item { + padding:2px; + border:1px solid; + white-space: nowrap; + overflow:hidden; + text-overflow: ellipsis; +} +.x-combo-list .x-combo-selected{ + border:1px dotted !important; + cursor:pointer; +} +.x-combo-list .x-toolbar { + border-top:1px solid; + border-bottom:0 none; +} +.x-panel { + border-style: solid; + border-width:0; + outline: 0 none; +} +.x-panel-header { + overflow:hidden; + zoom:1; + padding:5px 3px 4px 5px; + border:1px solid; + line-height: 15px; + background: transparent repeat-x 0 -1px; +} +.x-panel-body { + border:1px solid; + border-top:0 none; + overflow:hidden; + position: relative; +} +.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { + border:1px solid; + 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; + border-bottom: 0 none; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-top:1px solid; +} +.x-panel-header { + overflow:hidden; + zoom:1; +} +.x-panel-tl .x-panel-header { + padding:5px 0 4px 0; + border:0 none; + background:transparent; + line-height: 15px; +} +.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 repeat-x 0 0; + overflow:hidden; +} +.ext-strict .ext-ie7 .x-panel-tc { + overflow: visible; +} +.x-panel-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + zoom:1; + border-bottom:1px solid; +} +.x-panel-tr { + background: transparent no-repeat right 0; + zoom:1; + padding-right:6px; +} +.x-panel-bc { + background: transparent repeat-x 0 bottom; + zoom:1; +} +.x-panel-bc .x-panel-footer { + zoom:1; +} +.x-panel-bl { + background: transparent no-repeat 0 bottom; + padding-left:6px; + zoom:1; +} +.x-panel-br { + background: transparent no-repeat right bottom; + padding-right:6px; + zoom:1; +} +.x-panel-mc { + border:0 none; + padding:0; + margin:0; + padding-top:6px; +} +.x-panel-mc .x-panel-body { + background:transparent; + border: 0 none; +} +.x-panel-ml { + background: repeat-y 0 0; + padding-left:6px; + zoom:1; +} +.x-panel-mr { + background: transparent repeat-y right 0; + padding-right:6px; + zoom:1; +} +.x-panel-bc .x-panel-footer { + padding-bottom:6px; +} +.x-panel-nofooter .x-panel-bc, .x-panel-nofooter .x-window-bc { + height:6px; + font-size:0; + line-height:0; +} +.x-panel-bwrap { + overflow:hidden; + zoom:1; + left:0; + top:0; +} +.x-panel-body { + overflow:hidden; + zoom:1; +} +.x-panel-collapsed .x-resizable-handle{ + display:none; +} +.ext-gecko .x-panel-animated * { + 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 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 { + 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; + border-top:0 none; + display:block; +} +.x-panel-ghost * { + cursor:move !important; +} +.x-panel-dd-spacer { + border:2px dashed; +} +.x-panel-btns { + padding:5px; + overflow:hidden; +} +.x-panel-btns-left .x-buttonbar { + clear:none; +} +.x-panel-btns-center{ + text-align:center; +} +.x-panel-btns-center .x-toolbar-ct { + margin:0 auto; + text-align:left; + width:auto; +} +.x-panel-fbar td.x-toolbar-cell{ + padding:0px; +} +.x-panel-fbar { + display: block; + padding:2px; + position:relative; + left:0; + top:0; + zoom:1; + overflow:hidden; +} + +.x-panel-fbar .x-toolbar-cell { + vertical-align:middle; +} + +.x-panel-fbar td { + vertical-align:middle; +} +.x-panel-btns .x-btn-focus .x-btn-left{ + background-position:0 -147px; +} +.x-panel-btns .x-btn-focus .x-btn-right{ + background-position:0 -168px; +} +.x-panel-btns .x-btn-focus .x-btn-center{ + background-position:0 -189px; +} +.x-panel-btns .x-btn-over .x-btn-left{ + background-position:0 -63px; +} +.x-panel-btns .x-btn-over .x-btn-right{ + background-position:0 -84px; +} +.x-panel-btns .x-btn-over .x-btn-center{ + background-position:0 -105px; +} +.x-panel-btns .x-btn-click .x-btn-center{ + background-position:0 -126px; +} +.x-panel-btns .x-btn-click .x-btn-right{ + background-position:0 -84px; +} +.x-panel-btns .x-btn-click .x-btn-left{ + background-position:0 -63px; +} +.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ + white-space: nowrap; +} +.x-window { + zoom:1; + -moz-outline: none; + outline: 0 none; +} +.x-window .x-resizable-handle { + opacity:0; + -moz-opacity:0; + filter:alpha(opacity=0); +} +.x-window-proxy { + border:1px solid; + 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; + left:0;top:0; +} +.x-window-tl .x-window-header { + padding:5px 0 4px 0; +} +.x-window-header-text { + cursor:pointer; +} +.x-window-tc { + background: transparent repeat-x 0 0; + overflow:hidden; + zoom:1; +} +.x-window-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + zoom:1; + z-index:1; + position:relative; +} +.x-window-tr { + background: transparent no-repeat right 0; + padding-right:6px; +} +.x-window-bc { + background: transparent 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 no-repeat 0 bottom; + padding-left:6px; + zoom:1; +} +.x-window-br { + background: transparent no-repeat right bottom; + padding-right:6px; + zoom:1; +} +.x-window-mc { + border:1px solid; + padding:0; + margin:0; +} +.x-window-ml { + background: transparent repeat-y 0 0; + padding-left:6px; + zoom:1; +} +.x-window-mr { + background: transparent repeat-y right 0; + padding-right:6px; + zoom:1; +} +.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; +} +.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; + 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; +} +.x-panel-collapsed .x-window-tl { + border-bottom:1px solid; +} +.x-window-maximized-ct { + overflow:hidden; +} +.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); +} +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 { + border: 1px solid; +} +.x-window-plain .x-window-body { + border: 1px solid; + background:transparent !important; +} +.x-html-editor-wrap { + border:1px solid; +} + +.x-html-editor-tb .x-btn-text { + background:transparent no-repeat; +} + +.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 0 1px; + border-style:solid; +} +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-width:0 0 1px; + border-style:solid; +} +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-width:1px 0 0 0; + border-style:solid; +} +.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-width: 0 0 1px 0; +} +.x-tab-panel-noborder .x-tab-panel-footer-noborder { + border-width: 1px 0 0 0; +} +.x-tab-panel-bbar-noborder .x-toolbar { + border-width: 1px 0 0 0; + border-style:solid; +} +.x-tab-panel-tbar-noborder .x-toolbar { + border-width:0 0 1px; + border-style:solid; +} +.x-border-panel { + position:absolute !important; + 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 { + padding-top:4px; + padding-bottom:3px; + border-top:0 none; + background: transparent repeat-x 0 -9px; +} +.x-layout-collapsed{ + position:absolute; + left:-10000px; + top:-10000px; + visibility:hidden; + width:20px; + height:20px; + overflow:hidden; + border:1px solid; + z-index:20; +} +.ext-border-box .x-layout-collapsed{ + width:22px; + height:22px; +} +.x-layout-collapsed-over{ + cursor:pointer; +} +.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; +} +.ext-strict .ext-ie6 .x-layout-split{ + background-color: #fff !important; + filter: alpha(opacity=1); +} +.x-layout-split-h{ + background-image:url(../images/default/s.gif); + background-position: left; +} +.x-layout-split-v{ + background-image:url(../images/default/s.gif); + background-position: top; +} +.x-column-layout-ct { + overflow:hidden; + zoom:1; +} +.x-column { + float:left; + padding:0; + margin:0; + overflow:hidden; + zoom:1; +} +.x-column-inner { + 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%; +} +.x-layout-split-east .x-layout-mini { + top:48%; +} +.x-layout-split-north .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-split-south .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-cmini-west .x-layout-mini { + top:48%; +} +.x-layout-cmini-east .x-layout-mini { + top:48%; +} +.x-layout-cmini-north .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-cmini-south .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.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 !important; + left:0; + top:0; +} +.x-abs-layout-container { + position:relative; +} +.ext-ie input.x-abs-layout-item, .ext-ie textarea.x-abs-layout-item { + margin:0; +} +.x-box-layout-ct { + overflow:hidden; + zoom:1; +} +.x-box-inner { + overflow:hidden; + zoom:1; + position:relative; + left:0; + top:0; +} +.x-box-item { + position:absolute !important; + left:0; + top:0; +} +.x-border-layout-ct { + position: relative; +} +.x-progress-wrap { + border:1px solid; + overflow:hidden; +} +.x-progress-inner { + height:18px; + background:repeat-x; + position:relative; +} +.x-progress-bar { + height:18px; + float:left; + width:0; + background: repeat-x left center; + border-top:1px solid; + border-bottom:1px solid; + border-right:1px solid; +} +.x-progress-text { + padding:1px 5px; + overflow:hidden; + position:absolute; + left:0; + text-align:center; +} +.x-progress-text-back { + line-height:16px; +} +.ext-ie .x-progress-text-back { + line-height:15px; +} +.x-slider { + zoom:1; + -moz-outline: none; + outline: 0 none; +} +.x-slider-thumb { + line-height: 0px; + font-size: 0px; + position: absolute; + background:transparent no-repeat 0 0; +} +.x-slider-inner { + position:relative; + left:0; + top:0; + overflow:visible; + zoom:1; +} +.x-slider-focus { + position:absolute; + left:0; + top:0; + width:1px; + height:1px; + line-height:1px; + font-size:1px; + -moz-outline:0 none; + outline:0 none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore + display:block; + overflow:hidden; +} +.x-slider-horz { + padding-left:7px; + background:transparent no-repeat 0 -22px; +} +.x-slider-horz .x-slider-end { + padding-right:7px; + zoom:1; + background:transparent no-repeat right -44px; +} +.x-slider-horz .x-slider-inner { + background:transparent repeat-x 0 0; + height:22px; +} +.x-slider-horz .x-slider-thumb { + width:14px; + height:15px; + left:0; + top:3px; +} +.x-slider-horz .x-slider-thumb-over { + background-position: -14px -15px; +} +.x-slider-horz .x-slider-thumb-drag { + background-position: -28px -30px; +} +.x-slider-vert { + padding-top:7px; + background:transparent no-repeat -44px 0; + width:22px; +} +.x-slider-vert .x-slider-end { + padding-bottom:7px; + zoom:1; + background:transparent no-repeat -22px bottom; +} +.x-slider-vert .x-slider-inner { + background:transparent repeat-y 0 0; +} +.x-slider-vert .x-slider-thumb { + width:15px; + height:14px; + left:3px; + bottom:0; +} +.x-slider-vert .x-slider-thumb-over { + background-position: -15px -14px; +} +.x-slider-vert .x-slider-thumb-drag { + background-position: -30px -28px; +} +.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-input { + margin-top:4px; + width:95%; +} +.x-window-dlg .ext-mb-textarea { + margin-top:4px; +} +.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 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 .x-dlg-icon .ext-mb-content{ + zoom: 1; margin-left: 47px; +} +.x-window-dlg .ext-mb-info, .x-window-dlg .ext-mb-warning, .x-window-dlg .ext-mb-question, .x-window-dlg .ext-mb-error { + background:transparent no-repeat top left; +} +.ext-gecko2 .ext-mb-fix-cursor { + overflow:auto; +} +.arrow-top { + background: url(../images/gxt/icons/top2.gif) no-repeat center left !important; +} +.arrow-bottom { + background: url(../images/gxt/icons/bottom2.gif) no-repeat center left !important; +} +.arrow-up { + background: url(../images/gxt/icons/up2.gif) no-repeat center left !important; +} +.arrow-down { + background: url(../images/gxt/icons/down2.gif) no-repeat center left !important; +} +.arrow-left { + background: url(../images/gxt/icons/left2.gif) no-repeat center left !important; +} +.arrow-double-left { + background: url(../images/gxt/icons/doubleleft2.gif) no-repeat center left !important; +} +.arrow-right { + background: url(../images/gxt/icons/right2.gif) no-repeat center left !important; +} +.arrow-double-right { + background: url(../images/gxt/icons/doubleright2.gif) no-repeat center left !important; +} +.x-info { + border-style: solid; + border-color: #99bbe8; + border-width: 0; + z-index: 99999999; +} + +.x-info-header { + overflow: hidden; + zoom: 1; + color: black; + font: bold 13px tahoma, arial, verdana, sans-serif; + padding: 5px 3px 4px 5px; + line-height: 15px; + background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px; +} + +.x-info-body { + border-top: 0 none; + overflow: hidden; + background: white; + position: relative; /* added for item scroll positioning */ +} + +.x-info-header { + overflow: hidden; + zoom: 1; +} + +.x-info-tl .x-info-header { + color: #555555; + font-family: tahoma, arial, sans-serif; + font-size: 13px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + padding: 5px 0 4px 0; + border: 0 none; + background: transparent; +} + +.x-info-tl .x-info-icon,.x-window-tl .x-info-icon { + padding-left: 20px !important; + background-repeat: no-repeat; + background-position: 0 4px; + zoom: 1; +} + +.x-info-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-info-tc { + background: transparent url(../images/gxt/info/top-bottom.gif) repeat-x 0 0; + overflow: hidden; +} + +/* fix ie7 strict mode bug */ +.ext-ie7 .x-info-tc { + overflow: visible; +} + +.x-info-tl { + background: transparent url(../images/gxt/info/corners-sprite.gif) no-repeat 0 0; + padding-left: 6px; + zoom: 1; +} + +.x-info-tr { + background: transparent url(../images/gxt/info/corners-sprite.gif) no-repeat right 0; + zoom: 1; + padding-right: 6px; +} + +.x-info-bc { + background: transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom; + zoom: 1; + font-size: 0px; +} + +.x-info-bc .x-info-footer { + zoom: 1; +} + +.x-info-bl { + background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom; + padding-left: 6px; + zoom: 1; +} + +.x-info-br { + background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom; + padding-right: 6px; + zoom: 1; +} + +.x-info-mc { + border: 0 none; + padding: 0; + margin: 0; + font: normal 11px tahoma, arial, helvetica, sans-serif; + background: #dfe8f6; +} + +.x-info-mc .x-info-body { + background: transparent; + border: 0 none; +} + +.x-info-ml { + background: #fff url(../images/default/panel/left-right.gif) repeat-y 0 0; + padding-left: 6px; + zoom: 1; +} + +.x-info-mr { + background: transparent url(../images/default/panel/left-right.gif) repeat-y right 0; + padding-right: 6px; + zoom: 1; +} + +.x-info-bc .x-info-footer { + padding-bottom: 6px; +} + +.x-info-nofooter .x-info-bc,.x-panel-nofooter .x-info-bc { + height: 6px; + font-size: 0; + line-height: 0; +} + +.x-info-bwrap { + overflow: hidden; + zoom: 1; +} + +.x-info-body { + overflow: hidden; + zoom: 1; + color: #555555; + font-family: tahoma, arial, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-style: normal; + font-variant: normal; + font-weight: normal; +}.x-combo-over { + border: 1px dotted #B5B4B4 !important; + background: #F1F1F1; + cursor: pointer; +} + +.my-list { + border: 1px solid #99BBE8; + -moz-outline: none; + outline: 0 none; + -moz-user-focus: normal; + background-color: white; + font-family: "Myriad Pro", "Myriad Web", "Tahoma", "Helvetica", "Arial", sans-serif; +} + +.my-list-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 0px !important; + margin: 3px 0pt 0pt 0px; +} + +.my-list-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 0px !important; + margin: 3px 0pt 0pt 0px; +} + +.ext-ie .my-list-notchecked { + margin: 2px 0pt 0pt 0px; +} + +.ext-ie .my-list-checked { + margin: 2px 0pt 0pt 0px; +} + +.my-list-flat { + border: 1px solid #6593cf; + -moz-outline: none; + outline: 0 none; + -moz-user-focus: normal; + background-color: white; + cursor: default; +} + +.my-list-item { + cursor: pointer; + -moz-outline: none; + outline: 0 none; + -moz-user-focus: normal; +} + +.my-list-flat .my-list-item { + height: 19px; + border: 1px solid white; +} + +.my-list-flat .my-list-item-over { + background-color: #F1F1F1; + border: 1px dotted #B5B4B4; +} + +.my-list-flat .my-list-item-sel { + background-color: #DFE8F6; + border: 1px dotted #9EB8ED; +} + +.my-list-flat .my-list-item-over .my-list-item-l { + background: none; +} + +.my-list-flat .my-list-item-over .my-list-item-icon,.my-list-flat .my-list-item-over .my-list-item-ml,.my-list-flat .my-list-item-over .my-list-item-c + { + background: none; +} + +.my-list-flat .my-list-item-over .my-list-item-r { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-l { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-icon,.my-list-flat .my-list-item-sel .my-list-item-ml,.my-list-flat .my-list-item-sel .my-list-item-c + { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-r { + background: none; +} + +.my-list-item-text { + font-size: 11px; + padding-top: 3px; + padding-left: 2px; + white-space: nowrap; + overflow: hidden; + line-height: 19px; +} + +.my-list-item-l div { + width: 5px; +} + +.my-list-item-ml { + width: 18px; +} + +.my-list-item-c { + width: 100%; +} + +.my-list-item-r div { + width: 3px; +} + +.my-list-item-over .my-list-item-l { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left -57px; +} + +.my-list-item-over .my-list-item-icon,.my-list-item-over .my-list-item-check,.my-list-item-over .my-list-item-c + { + background: url(../images/gxt/shared/select-19-bg.gif) repeat-x left -95px; +} + +.my-list-item-over .my-list-item-r { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -76px; +} + +.my-list-item-sel .my-list-item-l { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left 0px; +} + +.my-list-item-sel .my-list-item-icon,.my-list-item-sel .my-list-item-check,.my-list-item-sel .my-list-item-c + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-list-item-sel .my-list-item-r { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -19px; +}.x-view { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; + background-color: white; + cursor: default; + border: 1px solid #98C0F4; + overflow: auto; + padding: 0px; + zoom: 1; +} + +.x-view-item { + border: 1px solid #FFFFFF; + font-family: tahoma, arial, helvetica, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + overflow: hidden; + padding: 2px; + white-space: nowrap; +} + +.x-view-highlightrow { + border: 1px dotted #545352 !important; +} + +.x-view-item-over { + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; + border: 1px dotted #dddddd !important; + cursor: pointer; +} + +.x-view-item-sel { + background: #DFE8F6 none repeat scroll 0%; + border: 1px dotted #A3BAE9 !important; + cursor: pointer; +} +.x-view-item-check { + padding: 0px; +} +.x-view-item-check td { + font-family: tahoma, arial, helvetica, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + padding-left: 1px; +} + +.x-splitbar-shim { + filter: alpha(opacity = 1); + opacity: 0; + position: absolute; + width: 100%; + height: 100%; + z-index: 10; + background-color: white; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.x-vsplitbar { + background: url(../images/default/s.gif); + position: absolute; + z-index: 3; + cursor: e-resize; + cursor: col-resize; +} + +.x-hsplitbar { + background: url(../images/default/s.gif); + position: absolute; + font-size: 1px; + line-height: 1px; + z-index: 3; + cursor: s-resize; + cursor: row-resize; +} + +.x-splitbar-proxy { + position: absolute; + background-color: #929090; + font-size: 1px; + line-height: 1px; + z-index: 200; +} + +.my-splitbar-shim { + filter: alpha(opacity = 1); + opacity: 0; + position: absolute; + width: 100%; + height: 100%; + z-index: 10; + background-color: white; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-splitbar-transparent { + background: none; + font-size: 1px; + line-height: 1px; + z-index: 2000; +} + +.my-splitbar-proxy { + position: absolute; + background-color: #929090; + font-size: 1px; + line-height: 1px; + z-index: 200; +}.x-status { + padding: 0 4px; + height: 21px; + line-height: 21px !important; + cursor: default; +} +.x-status .x-status-text{ + padding: 2px; + line-height: 21px !important; +} +.x-status-icon { + padding-left: 25px !important; + background: transparent no-repeat left center; +} +.x-status-busy { + background-image: url(../images/default/grid/loading.gif); +} +.x-status-text-panel { + border: 1px solid; + border-color: #99bbe8 #fff #fff #99bbe8; +} +.my-tbl { + border: 1px solid #99BBE8; + cursor: default; + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; + table-layout: fixed; +} + +.my-tbl-col-overflow { + overflow: hidden; +} + +.ext-ie .my-tbl-col-overflow { + +} + +.my-tbl-col-text { + color: black; + padding: 5px 4px 0 4px; + display: block; + white-space: nowrap; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; +} + +.my-tbl-col { + border-right: 1px solid #D5D5D5; + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x; +} + +.my-tbl-col-splitter { + position: absolute; + top: 0; + width: 6px; + z-index: 100; + height: 100%; + right: 0px; +} + +.my-tbl-col-over { + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x 0px -24px; +} + +.my-tbl-col-sort { + background-position: 0px -48px; +} + +.my-icon-asc { + background-image: url(../images/gxt/icons/hmenu-asc.gif) !important; +} + +.my-icon-desc { + background-image: url(../images/gxt/icons/hmenu-desc.gif) !important; +} + +.my-tbl-col-asc { + background: url(../images/gxt/table/vsort-asc.gif) no-repeat 50% top; +} + +.my-tbl-col-desc { + background: url(../images/gxt/table/vsort-desc.gif) no-repeat 50% top; +} + +.my-tbl-col-splitter { + background: none; +} + +.my-tbl-data { + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-item { + border-top: 1px solid white; + border-bottom: 1px solid white; + border-bottom: 1px solid #EDEDED; + cursor: default; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-item table { + -moz-outline: none; + -moz-user-focus: normal; + table-layout: fixed; + outline: 0 none; +} + +.my-tbl-data .my-tbl-item-cell { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-item td { + -moz-user-select: none; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-vlines .my-tbl-data .my-tbl-item-cell-overflow { + border-right: 1px solid #EDEDED; +} + +.my-tbl-data .my-tbl-item-cell-overflow { + white-space: nowrap; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-data .my-tbl-item-cell-text { + padding: 3px 4px; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-tbl-data .my-tbl-item-cell-widget { + padding: 1px 4px; +} + +.my-tbl-data tr { + overflow: hidden; +} + +.my-tbl-item-over { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; +} + +.my-tbl-item-sel { + background-image: none !important; + background-color: #D9E1ED !important; + border-top: 1px dotted #9EB8ED !important; + border-bottom: 1px dotted #9EB8ED !important; +} + +.ext-ie .my-tbl TD .x-form-text { + POSITION: static; + TOP: 0px; +}.tree-folder { + background: url(../images/gxt/icons/folder-closed.gif) no-repeat -1px -1px; +} + +.tree-folder-open { + background: url(../images/gxt/icons/folder.gif) no-repeat -1px -1px; +} + +.my-treetbl-tree { + cursor: default; +} + +.my-treetblitem,.my-treetblitem table,.my-treetblitem table td { + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-treetblitem td { + height: 19px; +} + +.my-treetbl-indent { + line-height: 1px; + font-size: 1px; +} + +.my-treetbl-joint div { + width: 15px; + height: 19px; + line-height: 1px; + font-size: 1px; +} + +.my-treetbl-left,.my-treetbl-left div,.my-treetbl-right { + line-height: 1px; + font-size: 1px; + width: 3px; +} + +.my-treetbl-left div,.my-treetbl-right div { + width: 3px; +} + +.my-treetbl-check div { + width: 17px; + height: 19px; + line-height: 1px; + font-size: 1px; + display: block; +} + +.my-treetbl-icon div { + width: 16px; + height: 16px; + margin-top: 1px; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; +} + +.my-ie .my-treetbl-icon { + padding-top: 2px; +} + +.my-ie .my-treetbl-icon div { + position: static; +} + +.my-treetbl-item-text span { + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; + white-space: nowrap; + padding-left: 3px; + padding-right: 3px; + display: block; + height: 15px; + cursor: pointer; +} + +.my-treetbl-over .my-treetbl-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left -57px; +} + +.my-treetbl-over .my-treetbl-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -76px; +} + +.my-treetbl-over .my-treetbl-check,.my-treetbl-over .my-treetbl-icon,.my-treetbl-over .my-treetbl-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -95px; +} + +.my-treetbl-sel .my-treetbl-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left 0px; +} + +.my-treetbl-sel .my-treetbl-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -19px; +} + +.my-treetbl-sel .my-treetbl-check,.my-treetbl-sel .my-treetbl-icon,.my-treetbl-sel .my-treetbl-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-treetbl-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px 1px; +} + +.my-treetbl-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -32px; +} + +.my-treetbl-joint-over .my-treetbl-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -48px; +} + +.my-treetbl-joint-over .my-treetbl-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -15px; +} + +.my-treetbl-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 50%; +} + +.my-treetbl-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 50%; +} + +.my-treetbl-loading .tree-folder { + background: url(../images/gxt/icons/wait.gif) no-repeat 0px -1px; +} + +.my-treetbl-loading .my-treetbl-item-text span { + font-style: italic; +} + +.my-treetbl { + border: 1px solid #99BBE8; + cursor: default; + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-treetbl-col-overflow { + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-treetbl-col-text { + color: black; + padding: 5px 4px 0 4px; + display: block; + white-space: nowrap; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; +} + +.my-treetbl-col { + border-right: 1px solid #D5D5D5; + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x; +} + +.my-treetbl-col-splitter { + position: absolute; + top: 0; + width: 6px; + z-index: 100; + height: 100%; + right: 0px; +} + +.my-treetbl-col-over { + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x 0px -24px; +} + +.my-treetbl-col-sort { + background-position: 0px -48px; +} + +.my-treetbl-col-asc { + background: url(../images/gxt/table/vsort-asc.gif) no-repeat 50% top; +} + +.my-treetbl-col-desc { + background: url(../images/gxt/table/vsort-desc.gif) no-repeat 50% top; +} + +.my-treetbl-col-splitter { + background: none; +} + +.my-treetbl-data { + background-color: white; + overflow: hidden; +} + +.my-treetbl-data .my-treetbl-cell { + height: 20px; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-treetbl-data .my-treetbl-cell-overflow { + white-space: nowrap; + overflow: hidden; +} + +.my-treetbl-data .my-treetbl-cell-text { + padding: 0px 0px; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; +} + +.my-treetbl-data tr { + overflow: hidden; +} + +.my-treetbl-item { + border-top: 1px solid white; + border-bottom: 1px solid white; + border-bottom: 1px solid #EDEDED; + cursor: default; + -moz-outline: none; + -moz-user-focus: normal; + outline: 0 none; +} + +.my-treetbl-item-over { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; +} + +.my-treetbl-item-sel { + background-image: none; + background-color: #D9E1ED; + border-top: 1px dotted #9EB8ED; + border-bottom: 1px dotted #9EB8ED; +} + +.my-treetbl .x-grid3-td-numberer { + background: transparent url(../images/gxt/tree/tree-table-special-col.gif) repeat-y + scroll left center; + height: 19px; + line-height: normal; + padding-left: 0px; + margin-left: 0px; +} + +.x-grid3-td-numberer div { + font-size: 11px; + font-family: "segoe ui", tahoma, arial, sans-serif; + color: #444444; + padding: 3px 0px 0 5px !important; +} + +.ext-ie .my-treetbl .x-grid3-td-numberer { + height: 20px; +} + +.my-treetbl-item-sel .x-grid3-td-numberer { + background: transparent url(../images/gxt/tree/tree-table-special-col-sel.gif) repeat-y + scroll left center; +}.ext-el-mask { + background-color: #ccc; +} +.ext-el-mask-msg { + border-color:#6593cf; + background-color:#c3daf9; + background-image:url(../images/default/box/tb-blue.gif); +} +.ext-el-mask-msg div { + background-color: white; + border-color:#a3bad9; + color:#222; + font:normal 11px tahoma, arial, helvetica, sans-serif; +} +.x-mask-loading div { + background-color:#fbfbfb; + background-image:url(../images/default/grid/loading.gif); +} +.x-item-disabled { + color: gray; +} +.x-item-disabled * { + color: gray !important; +} +.x-splitbar-proxy { + background-color: #aaa; +} +.x-color-palette a { + border-color:#fff; +} +.x-color-palette a.x-color-palette-hover, .x-color-palette a.x-color-palette-sel { + border-color:#8bb8f3; + background-color: #deecfd; +} +.x-color-palette em { + border-color:#aca899; +} +.x-ie-shadow { + background-color:#777; +} +.x-shadow .xsmc { + background-image: url(../images/default/shadow-c.png); +} +.x-shadow .xsml, .x-shadow .xsmr { + background-image: url(../images/default/shadow-lr.png); +} +.x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{ + background-image: url(../images/default/shadow.png); +} +.loading-indicator { + font-size: 11px; + background-image: url(../images/default/grid/loading.gif); +} +.x-spotlight { + background-color: #ccc; +} +.x-aria-focusframe-side { + background-color: #15428B; + line-height: 2px; + font-size: 2px; +} +.x-tab-panel-header, .x-tab-panel-footer { + background-color: #deecfd; + border-color:#8db2e3; + overflow:hidden; + zoom:1; +} +.x-tab-panel-header, .x-tab-panel-footer { + border-color:#8db2e3; +} +ul.x-tab-strip-top{ + background-color:#cedff5; + background-image: url(../images/default/tabs/tab-strip-bg.gif); + border-bottom-color:#8db2e3; +} +ul.x-tab-strip-bottom{ + background-color:#cedff5; + background-image: url(../images/default/tabs/tab-strip-btm-bg.gif); + border-top-color:#8db2e3; +} +.x-tab-panel-header-plain .x-tab-strip-spacer, +.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-color:#8db2e3; + background-color: #deecfd; +} +.x-tab-strip span.x-tab-strip-text { + font:normal 11px tahoma,arial,helvetica; + color:#416aa3; +} +.x-tab-strip-over span.x-tab-strip-text { + color:#15428b; +} +.x-tab-strip-active span.x-tab-strip-text { + color:#15428b; + font-weight:bold; +} +.x-tab-strip-disabled .x-tabs-text { + color:#aaaaaa; +} +.x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{ + background-image: url(../images/default/tabs/tabs-sprite.gif); +} +.x-tab-strip-bottom .x-tab-right { + background-image: url(../images/default/tabs/tab-btm-inactive-right-bg.gif); +} +.x-tab-strip-bottom .x-tab-left { + background-image: url(../images/default/tabs/tab-btm-inactive-left-bg.gif); +} +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image: url(../images/default/tabs/tab-btm-right-bg.gif); +} +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image: url(../images/default/tabs/tab-btm-left-bg.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image:url(../images/default/tabs/tab-close.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ + background-image:url(../images/default/tabs/tab-close.gif); +} +.x-tab-panel-body { + border-color:#8db2e3; + background-color:#fff; +} +.x-tab-panel-body-top { + border-top: 0 none; +} +.x-tab-panel-body-bottom { + border-bottom: 0 none; +} +.x-tab-scroller-left { + background-image:url(../images/default/tabs/scroll-left.gif); + border-bottom-color:#8db2e3; +} +.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-image:url(../images/default/tabs/scroll-right.gif); + border-bottom-color:#8db2e3; +} +.x-tab-panel-bbar .x-toolbar, .x-tab-panel-tbar .x-toolbar { + border-color:#99bbe8; +} +.x-form-field { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-text,textarea.x-form-field { + background-color: #fff; + background-image: url(../images/default/form/text-bg.gif); + border-color: #b5b8c8; +} + +.x-form-select-one { + background-color: #fff; + border-color: #b5b8c8; +} + +.x-form-check-group-label { + border-bottom: 1px solid #99bbe8; + color: #15428b; +} + +.x-editor .x-form-check-wrap { + background-color: #fff; +} + +.x-form-field-wrap .x-form-trigger { + background-image: url(../images/default/form/trigger.gif); + border-bottom-color: #b5b8c8; +} + +.x-form-field-wrap .x-form-date-trigger { + background-image: url(../images/default/form/date-trigger.gif); +} + +.x-form-field-wrap .x-form-clear-trigger { + background-image: url(../images/default/form/clear-trigger.gif); +} + +.x-form-field-wrap .x-form-search-trigger { + background-image: url(../images/default/form/search-trigger.gif); +} + +.x-trigger-wrap-focus .x-form-trigger { + border-bottom-color: #7eadd9; +} + +.x-item-disabled .x-form-trigger-over { + border-bottom-color: #b5b8c8; +} + +.x-item-disabled .x-form-trigger-click { + border-bottom-color: #b5b8c8; +} + +.x-form-focus,textarea.x-form-focus { + border-color: #7eadd9; +} + +.x-form-invalid,textarea.x-form-invalid { + background-color: #fff; + background-image: url(../images/default/grid/invalid_line.gif); + border-color: #c30; +} + +.ext-safari .x-form-invalid { + background-color: #fee; + border-color: #ff7870; +} + +.x-form-inner-invalid,textarea.x-form-inner-invalid { + background-color: #fff; + background-image: url(../images/default/grid/invalid_line.gif); +} + +.x-form-grow-sizer { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-item { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-invalid-msg { + color: #c0272b; + font: normal 11px tahoma, arial, helvetica, sans-serif; + background-image: url(../images/default/shared/warning.gif); +} + +.x-form-empty-field { + color: gray; +} + +.x-small-editor .x-form-field { + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.ext-safari .x-small-editor .x-form-field { + font: normal 12px arial, tahoma, helvetica, sans-serif; +} + +.x-form-invalid-icon { + background-image: url(../images/default/form/exclamation.gif); +} + +.x-fieldset { + border-color: #b5b8c8; +} + +.x-fieldset legend { + font: bold 11px tahoma, arial, helvetica, sans-serif; + color: #15428b; +} + +.x-editor .x-form-check-wrap { + border-color: #7eadd9; +} + +.x-spinner-field .x-form-spinner-up { + background-image: url('../images/default/form/spinner.gif'); +} +.x-spinner-field .x-form-spinner-down { + background-image: url('../images/default/form/spinner.gif'); +}.x-btn{ + font:normal 11px tahoma, verdana, helvetica; +} +.x-btn button{ + font:normal 11px arial,tahoma,verdana,helvetica; + color:#333; +} +.x-btn em { + font-style:normal; + font-weight:normal; +} +.x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{ + background-image:url(../images/default/button/btn.gif); +} +.x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{ + color:#000; +} +.x-btn-disabled *{ + color:gray !important; +} +.x-btn-mc em.x-btn-arrow { + background-image:url(../images/default/button/arrow.gif); +} +.x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow.gif); +} +.x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow-o.gif); +} +.x-btn-mc em.x-btn-arrow-bottom { + background-image:url(../images/default/button/s-arrow-b-noline.gif); +} +.x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-b.gif); +} +.x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-bo.gif); +} +.x-btn-group-header { + color: #3e6aaa; +} +.x-btn-group-tc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-btn-group-tl { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-tr { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-bc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-btn-group-bl { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-br { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-ml { + background-image: url(../images/default/button/group-lr.gif); +} +.x-btn-group-mr { + background-image: url(../images/default/button/group-lr.gif); +} +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-toolbar { + border-color: #a9bfd3; + background-color: #d0def0; + background-image: url(../images/default/toolbar/bg.gif); +} + +.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label { + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-toolbar .x-item-disabled { + color: gray; +} + +.x-toolbar .x-item-disabled * { + color: gray; +} + +.x-toolbar .x-btn-mc em.x-btn-split { + background-image: url(../images/default/button/s-arrow-noline.gif); +} + +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split + { + background-image: url(../images/default/button/s-arrow-o.gif); +} + +.x-toolbar .x-btn-mc em.x-btn-split-bottom { + background-image: url(../images/default/button/s-arrow-b-noline.gif); +} + +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom + { + background-image: url(../images/default/button/s-arrow-bo.gif); +} + +.x-toolbar .xtb-sep { + background-image: url(../images/default/grid/grid-blue-split.gif); +} + +.x-tbar-page-first { + background-image: url(../images/default/grid/page-first.gif) !important; +} + +.x-tbar-refresh { + background-image: url(../images/default/grid/refresh.gif) !important; +} + +.x-tbar-page-last { + background-image: url(../images/default/grid/page-last.gif) !important; +} + +.x-tbar-page-next { + background-image: url(../images/default/grid/page-next.gif) !important; +} + +.x-tbar-page-prev { + background-image: url(../images/default/grid/page-prev.gif) !important; +} + +.x-tbar-loading { + background-image: url(../images/default/grid/loading.gif) !important; +} + +.x-item-disabled .x-tbar-page-first { + background-image: url(../images/default/grid/page-first-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-last { + background-image: url(../images/default/grid/page-last-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-next { + background-image: url(../images/default/grid/page-next-disabled.gif) !important; +} + +.x-item-disabled .x-tbar-page-prev { + background-image: url(../images/default/grid/page-prev-disabled.gif) !important; +} + +.x-paging-info { + color: #444; +} + +.x-toolbar-more-icon { + background-image: url(../images/default/toolbar/more.gif) !important; +}.x-resizable-handle { + background-color:#fff; +} +.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west +{ + background-image:url(../images/default/sizer/e-handle.gif); +} +.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north +{ + background-image:url(../images/default/sizer/s-handle.gif); +} +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ + background-image:url(../images/default/sizer/s-handle.gif); +} +.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ + background-image:url(../images/default/sizer/se-handle.gif); +} +.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ + background-image:url(../images/default/sizer/nw-handle.gif); +} +.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ + background-image:url(../images/default/sizer/ne-handle.gif); +} +.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ + background-image:url(../images/default/sizer/sw-handle.gif); +} +.x-resizable-proxy{ + border-color:#3b5a82; +} +.x-resizable-overlay{ + background-color:#fff; +} +.x-grid3 { + background-color: #fff; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border-color: #99bbe8; +} + +.x-grid3-hd-row .x-grid3-hd,.x-grid3-row .x-grid3-cell,.x-grid3-summary-row .x-grid3-cell { + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-grid3-hd-row .x-grid3-hd { + border-left-color: #eee; + border-right-color: #d0d0d0; +} + +.x-grid-row-loading { + background-color: #fff; + background-image: url(../images/default/shared/loading-balls.gif); +} + +.x-grid3-row { + border-color: #ededed; + border-top-color: #fff; +} + +.x-grid3-row-alt { + background-color: #fafafa; +} + +.x-grid3-row-over { + border-color: #ddd; + background-color: #efefef; + background-image: url(../images/default/grid/row-over.gif); +} + +.x-grid3-resize-proxy { + background-color: #777; +} + +.x-grid3-resize-marker { + background-color: #777; +} + +.x-grid3-header { + background-color: #f9f9f9; + background-image: url(../images/default/grid/grid3-hrow.gif); +} + +.x-grid3-header-pop { + border-left-color: #d0d0d0; +} + +.x-grid3-header-pop-inner { + border-left-color: #eee; + background-image: url(../images/default/grid/hd-pop.gif); +} + +td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open { + border-left-color: #aaccf6; + border-right-color: #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-color: #ebf3fd; + background-image: url(../images/default/grid/grid3-hrow-over.gif); +} + +.sort-asc .x-grid3-sort-icon { + background-image: url(../images/default/grid/sort_asc.gif); +} + +.sort-desc .x-grid3-sort-icon { + background-image: url(../images/default/grid/sort_desc.gif); +} + +.x-grid3-cell-text,.x-grid3-hd-text { + color: #000; +} + +.x-grid3-split { + background-image: url(../images/default/grid/grid-split.gif); +} + +.x-grid3-hd-text { + color: #15428b; +} + +.x-dd-drag-proxy .x-grid3-hd-inner { + background-color: #ebf3fd; + background-image: url(../images/default/grid/grid3-hrow-over.gif); + border-color: #aaccf6; +} + +.col-move-top { + background-image: url(../images/default/grid/col-move-top.gif); +} + +.col-move-bottom { + background-image: url(../images/default/grid/col-move-bottom.gif); +} + +.x-grid3-highlightrow { + border: 1px dotted #545352; +} + +.x-grid3-row-selected { + background-image: none !important; + background-color: #dfe8f6 !important; + border-color: #a3bae9; +} + +.x-grid3-cell-selected { + background-color: #b8cfee !important; + color: #000; +} + +.x-grid3-group-selected { + background-color: #b8cfee !important; +} + +.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-color: #ebeadb !important; + background-image: url(../images/default/grid/grid-hrow.gif) !important; + color: #000; + border-top-color: #fff; + border-right-color: #6fa0df !important; +} + +.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div { + color: #15428b !important; +} + +.x-grid3-dirty-cell { + background-image: url(../images/default/grid/dirty.gif); +} + +.x-grid3-invalid-cell { + background-image: url(../images/default/grid/invalid_line.gif); +} + +.x-grid3-topbar,.x-grid3-bottombar { + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.x-grid3-bottombar .x-toolbar { + border-top-color: #a9bfd3; +} + +.x-props-grid .x-grid3-td-name .x-grid3-cell-inner { + background-image: url(../images/default/grid/grid3-special-col-bg.gif) !important; + color: #000 !important; +} + +.x-props-grid .x-grid3-body .x-grid3-td-name { + background-color: #fff !important; + border-right-color: #eee; +} + +.xg-hmenu-sort-asc .x-menu-item-icon { + background-image: url(../images/default/grid/hmenu-asc.gif); +} + +.xg-hmenu-sort-desc .x-menu-item-icon { + background-image: url(../images/default/grid/hmenu-desc.gif); +} + +.xg-hmenu-lock .x-menu-item-icon { + background-image: url(../images/default/grid/hmenu-lock.gif); +} + +.xg-hmenu-unlock .x-menu-item-icon { + background-image: url(../images/default/grid/hmenu-unlock.gif); +} + +.x-grid3-hd-btn { + background-color: #c3daf9; + background-image: url(../images/default/grid/grid3-hd-btn.gif); +} + +.x-grid3-body .x-grid3-td-expander { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-row-expander { + background-image: url(../images/default/grid/row-expand-sprite.gif); +} + +.x-grid3-body .x-grid3-td-checker { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-row-checker,.x-grid3-hd-checker { + background-image: url(../images/default/grid/row-check-sprite.gif); +} + +.x-grid3-body .x-grid3-td-numberer { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} + +.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { + color: #444; +} + +.x-grid3-body .x-grid3-td-row-icon { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} + +.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-image: url(../images/default/grid/grid3-special-col-sel-bg.gif); +} + +.x-grid3-check-col { + background-image: url(../images/default/menu/unchecked.gif); +} + +.x-grid3-check-col-on { + background-image: url(../images/default/menu/checked.gif); +} + +.x-grid-group,.x-grid-group-body,.x-grid-group-hd { + zoom: 1; +} + +.x-grid-group-hd { + border-bottom-color: #99bbe8; +} + +.x-grid-group-hd .x-grid-group-div { + background-image: url(../images/default/grid/group-expand-sprite.gif); + color: #3764a0; + font: bold 11px tahoma, arial, helvetica, sans-serif; +} + +.x-group-by-icon { + background-image: url(../images/default/grid/group-by.gif); +} + +.x-cols-icon { + background-image: url(../images/default/grid/columns.gif); +} + +.x-show-groups-icon { + background-image: url(../images/default/grid/group-by.gif); +} + +.x-grid-empty { + color: gray; + font: normal 11px tahoma, arial, helvetica, sans-serif; +} + +.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { + border-right-color: #ededed; +} + +.x-grid-with-col-lines .x-grid3-row-selected { + border-top-color: #a3bae9; +} + +.x-grid3-check-col-disabled { + background-color: transparent; + background-image: url(../images/gxt/menu/disabledcheck.gif); +} + +.x-row-editor-header { + background: transparent url(../images/gxt/grid/row-editor-bg.gif) repeat-x 0 0; +} + +.x-row-editor-footer { + background: transparent url(../images/gxt/grid/row-editor-bg.gif) repeat-x 0 -2px; +} + +.x-row-editor-body { + background: #ebf2fb; +} + +.x-row-editor .x-btns { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) no-repeat 0 0; +} + +.x-row-editor .x-btns .x-plain-bwrap { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) no-repeat right -31px; +} + +.x-row-editor .x-btns .x-plain-body { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) repeat-x 0 -62px; +} + +.x-inserted-row { + background-color: #f7f9cc +}.x-dd-drag-ghost{ + color:#000; + font: normal 11px arial, helvetica, sans-serif; + border-color: #ddd #bbb #bbb #ddd; + background-color:#fff; +} +.x-dd-drop-nodrop .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-no.gif); +} +.x-dd-drop-ok .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-yes.gif); +} +.x-dd-drop-ok-add .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-add.gif); +} +.x-view-selector { + background-color:#c3daf9; + border-color:#3399bb; +} +.x-tree-drop-ok-append .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-add.gif); +} + +.x-tree-drop-ok-above .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-over.gif); +} + +.x-tree-drop-ok-below .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-under.gif); +} + +.x-tree-drop-ok-between .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-between.gif); +} + +.x-tree3-loading { + background-image: url(../images/default/tree/loading.gif); +} + +.x-tree3-node-text { + font: normal 11px arial, tahoma, helvetica, sans-serif; + color: black; +}.x-date-picker { + border-color: #1b376c; + background-color:#fff; +} +.x-date-middle,.x-date-left,.x-date-right { + background-image: url(../images/default/shared/hd-sprite.gif); + color:#fff; + font:bold 11px "sans serif", tahoma, verdana, helvetica; +} +.x-date-middle .x-btn .x-btn-text { + color:#fff; +} +.x-date-middle .x-btn-mc em.x-btn-arrow { + background-image:url(../images/default/toolbar/btn-arrow-light.gif); +} +.x-date-right a { + background-image: url(../images/default/shared/right-btn.gif); +} +.x-date-left a{ + background-image: url(../images/default/shared/left-btn.gif); +} +.x-date-inner th { + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); + border-bottom-color:#a3bad9; + font:normal 10px arial, helvetica,tahoma,sans-serif; + color:#233d6d; +} +.x-date-inner td { + border-color:#fff; +} +.x-date-inner a { + font:normal 11px arial, helvetica,tahoma,sans-serif; + color:#000; +} +.x-date-inner .x-date-active{ + color:#000; +} +.x-date-inner .x-date-selected a{ + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); + border-color:#8db2e3; +} +.x-date-inner .x-date-today a{ + border-color:darkred; +} +.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; +} +.x-date-bottom { + border-top-color:#a3bad9; + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); +} +.x-date-inner .x-date-disabled a { + background-color:#eee; + color:#bbb; +} +.x-date-mmenu{ + background-color:#eee !important; +} +.x-date-mmenu .x-menu-item { + font-size:10px; + color:#000; +} +.x-date-mp { + background-color:#fff; +} +.x-date-mp td { + font:normal 11px arial, helvetica,tahoma,sans-serif; +} +.x-date-mp-btns button { + background-color:#083772; + color:#fff; + border-color: #3366cc #000055 #000055 #3366cc; + font:normal 11px arial, helvetica,tahoma,sans-serif; +} +.x-date-mp-btns { + background-color: #dfecfb; + background-image: url(../images/default/shared/glass-bg.gif); +} +.x-date-mp-btns td { + border-top-color: #c5d2df; +} +td.x-date-mp-month a,td.x-date-mp-year a { + color:#15428b; +} +td.x-date-mp-sel a { + background-color: #dfecfb; + background-image: url(../images/default/shared/glass-bg.gif); + border-color:#8db2e3; +} +.x-date-mp-ybtn a { + background-image:url(../images/default/panel/tool-sprites.gif); +} +td.x-date-mp-sep { + border-right-color:#c5d2df; +} +.x-tip .x-tip-close{ + background-image: url(../images/default/qtip/close.gif); +} +.x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr { + background-image: url(../images/default/qtip/tip-sprite.gif); +} +.x-tip .x-tip-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; +} +.x-tip .x-tip-ml { + background-color: #fff; +} +.x-tip .x-tip-header-text { + font: bold 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} +.x-tip .x-tip-body { + font: normal 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} +.x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc, +.x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr +{ + background-image: url(../images/default/form/error-tip-corners.gif); +} +.x-form-invalid-tip .x-tip-body { + background-image:url(../images/default/form/exclamation.gif); +} +.x-tip-anchor { + background-image:url(../images/default/qtip/tip-anchor-sprite.gif); +} +.x-menu { + border-color:#718bb7; + background-color:#f0f0f0; + background-image:url(../images/default/menu/menu.gif); +} +.x-menu-nosep { + background-image:none; +} +.x-menu-list-item{ + font:normal 11px tahoma,arial, sans-serif; +} +.x-menu-item-arrow{ + background-image:url(../images/default/menu/menu-parent.gif); +} +.x-menu-sep { + background-color:#e0e0e0; + border-bottom-color:#fff; +} +a.x-menu-item { + color:#222; +} +.x-menu-item-active { + background:#ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom; + border:1px solid #aaccf6; + padding:0; +} +.x-menu-item-active a.x-menu-item { + color:#233d6d; +} + +.x-menu-plain { + background-color:#fff !important; +} +.x-menu .x-date-picker{ + border-color:#a3bad9; +} +.x-cycle-menu .x-menu-item-checked { + border-color:#a3bae9 !important; + background-color:#def8f6; +} +.x-menu-scroller-top { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-menu-scroller-bottom { + background-image:url(../images/default/layout/mini-bottom.gif); +} + +.x-menu-scroller{ + border-width: 1px 0; +} +.x-box-tl { + background-image: url(../images/default/box/corners.gif); +} +.x-box-tc { + background-image: url(../images/default/box/tb.gif); +} +.x-box-tr { + background-image: url(../images/default/box/corners.gif); +} +.x-box-ml { + background-image: url(../images/default/box/l.gif); +} +.x-box-mc { + background-color: #eee; + background-image: url(../images/default/box/tb.gif); + 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; +} +.x-box-mr { + background-image: url(../images/default/box/r.gif); +} +.x-box-bl { + background-image: url(../images/default/box/corners.gif); +} +.x-box-bc { + background-image: url(../images/default/box/tb.gif); +} +.x-box-br { + background-image: url(../images/default/box/corners.gif); +} +.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { + background-image: url(../images/default/box/corners-blue.gif); +} +.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { + background-image: url(../images/default/box/tb-blue.gif); +} +.x-box-blue .x-box-mc { + background-color: #c3daf9; +} +.x-box-blue .x-box-mc h3 { + color: #17385b; +} +.x-box-blue .x-box-ml { + background-image: url(../images/default/box/l-blue.gif); +} +.x-box-blue .x-box-mr { + background-image: url(../images/default/box/r-blue.gif); +} +.x-combo-list { + border-color:#98c0f4; + background-color:#ddecfe; + font:normal 12px tahoma, arial, helvetica, sans-serif; +} +.x-combo-list-inner { + background-color:#fff; +} +.x-combo-list-hd { + font:bold 11px tahoma, arial, helvetica, sans-serif; + color:#15428b; + background-image: url(../images/default/layout/panel-title-light-bg.gif); + border-bottom-color:#98c0f4; +} +.x-resizable-pinned .x-combo-list-inner { + border-bottom-color:#98c0f4; +} +.x-combo-list-item { + border-color:#fff; +} +.x-combo-list .x-combo-selected{ + border-color:#a3bae9 !important; + background-color:#dfe8f6; +} +.x-combo-list .x-toolbar { + border-top-color:#98c0f4; +} +.x-combo-list-small { + font:normal 11px tahoma, arial, helvetica, sans-serif; +} +.x-panel { + border-color: #99bbe8; +} +.x-panel-header { + color:#15428b; + font-weight:bold; + font-size: 11px; + font-family: tahoma,arial,verdana,sans-serif; + border-color:#99bbe8; + background-image: url(../images/default/panel/white-top-bottom.gif); +} +.x-panel-body { + border-color:#99bbe8; + background-color:#fff; +} +.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { + border-color:#99bbe8; +} +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-top-color:#99bbe8; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-top-color:#99bbe8; +} +.x-panel-tl .x-panel-header { + color:#15428b; + font-weight:bold; + font-size: 11px; + font-family: tahoma,arial,verdana,sans-serif; +} +.x-panel-tc { + background-image: url(../images/default/panel/top-bottom.gif); +} +.x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{ + background-image: url(../images/default/panel/corners-sprite.gif); + border-bottom-color:#99bbe8; +} +.x-panel-bc { + background-image: url(../images/default/panel/top-bottom.gif); +} +.x-panel-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#dfe8f6; +} +.x-panel-ml { + background-color: #fff; + background-image:url(../images/default/panel/left-right.gif); +} +.x-panel-mr { + background-image: url(../images/default/panel/left-right.gif); +} +.x-tool { + background-image:url(../images/default/panel/tool-sprites.gif); +} +.x-panel-ghost { + background-color:#cbddf3; +} +.x-panel-ghost ul { + border-color:#99bbe8; +} +.x-panel-dd-spacer { + border-color:#99bbe8; +} +.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ + font:normal 11px arial,tahoma, helvetica, sans-serif; +} +.x-window-proxy { + background-color:#c7dffc; + border-color:#99bbe8; +} +.x-window-tl .x-window-header { + color:#15428b; + font:bold 11px tahoma,arial,verdana,sans-serif; +} +.x-window-tc { + background-image: url(../images/default/window/top-bottom.png); +} +.x-window-tl { + background-image: url(../images/default/window/left-corners.png); +} +.x-window-tr { + background-image: url(../images/default/window/right-corners.png); +} +.x-window-bc { + background-image: url(../images/default/window/top-bottom.png); +} +.x-window-bl { + background-image: url(../images/default/window/left-corners.png); +} +.x-window-br { + background-image: url(../images/default/window/right-corners.png); +} +.x-window-mc { + border-color:#99bbe8; + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#dfe8f6; +} +.x-window-ml { + background-image: url(../images/default/window/left-right.png); +} +.x-window-mr { + background-image: url(../images/default/window/left-right.png); +} +.x-window-maximized .x-window-tc { + background-color:#fff; +} +.x-window-bbar .x-toolbar { + border-top-color:#99bbe8; +} +.x-panel-ghost .x-window-tl { + border-bottom-color:#99bbe8; +} +.x-panel-collapsed .x-window-tl { + border-bottom-color:#84a0c4; +} +.x-dlg-mask{ + background-color:#ccc; +} +.x-window-plain .x-window-mc { + background-color: #ccd9e8; + border-color: #a3bae9 #dfe8f6 #dfe8f6 #a3bae9; +} +.ext-ie .x-window-plain .x-window-mc { + background-color: #c9d5e4; +} +.x-window-plain .x-window-body { + border-color: #dfe8f6 #a3bae9 #a3bae9 #dfe8f6; +} +body.x-body-masked .x-window-plain .x-window-mc { + background-color: #ccd9e8; +} +.x-html-editor-wrap { + border-color:#a9bfd3; + background-color:#fff; +} + +.x-html-editor-tb .x-edit-bold, .x-menu-item .x-edit-bold { + background-position:0 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-italic, .x-menu-item .x-edit-italic { + background-position:-16px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-underline, .x-menu-item .x-edit-underline { + background-position:-32px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-forecolor, .x-menu-item .x-edit-forecolor { + background-position:-160px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-backcolor, .x-menu-item .x-edit-backcolor { + background-position:-176px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifyleft, .x-menu-item .x-edit-justifyleft { + background-position:-112px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifycenter, .x-menu-item .x-edit-justifycenter { + background-position:-128px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifyright, .x-menu-item .x-edit-justifyright { + background-position:-144px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item .x-edit-insertorderedlist { + background-position:-80px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item .x-edit-insertunorderedlist { + background-position:-96px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-increasefontsize, .x-menu-item .x-edit-increasefontsize { + background-position:-48px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item .x-edit-decreasefontsize { + background-position:-64px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-sourceedit, .x-menu-item .x-edit-sourceedit { + background-position:-192px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-createlink, .x-menu-item .x-edit-createlink { + background-position:-208px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +}.x-panel-noborder .x-panel-header-noborder { + border-bottom-color:#99bbe8; +} +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-bottom-color:#99bbe8; +} +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-top-color:#99bbe8; +} +.x-tab-panel-bbar-noborder .x-toolbar { + border-top-color:#99bbe8; +} +.x-tab-panel-tbar-noborder .x-toolbar { + border-bottom-color:#99bbe8; +} +.x-border-layout-ct { + background-color:#dfe8f6; +} +.x-accordion-hd { + color:#222; + font-weight:normal; + background-image: url(../images/default/panel/light-hd.gif); +} +.x-layout-collapsed{ + background-color:#d2e0f2; + border-color:#98c0f4; +} +.x-layout-collapsed-over{ + background-color:#d9e8fb; +} +.x-layout-split-west .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} +.x-layout-split-east .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} +.x-layout-split-north .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-layout-split-south .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} +.x-layout-cmini-west .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} +.x-layout-cmini-east .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} +.x-layout-cmini-north .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} +.x-layout-cmini-south .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-progress-wrap { + border-color:#6593cf; +} +.x-progress-inner { + background-color:#e0e8f3; + background-image:url(../images/default/qtip/bg.gif); +} +.x-progress-bar { + background-color:#9cbfee; + background-image:url(../images/default/progress/progress-bg.gif); + border-top-color:#d1e4fd; + border-bottom-color:#7fa9e4; + border-right-color:#7fa9e4; +} +.x-progress-text { + font-size:11px; + font-weight:bold; + color:#fff; +} +.x-progress-text-back { + color:#396095; +} +.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner { + background-image:url(../images/default/slider/slider-bg.png); +} +.x-slider-horz .x-slider-thumb { + background-image:url(../images/default/slider/slider-thumb.png); +} +.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner { + background-image:url(../images/default/slider/slider-v-bg.png); +} +.x-slider-vert .x-slider-thumb { + background-image:url(../images/default/slider/slider-v-thumb.png); +} +.x-window-dlg .ext-mb-text, +.x-window-dlg .x-window-header-text { + font-size:12px; +} +.x-window-dlg .ext-mb-textarea { + font:normal 12px tahoma,arial,helvetica,sans-serif; +} +.x-window-dlg .x-msg-box-wait { + background-image:url(../images/default/grid/loading.gif); +} +.x-window-dlg .ext-mb-info { + background-image:url(../images/default/window/icon-info.gif); +} +.x-window-dlg .ext-mb-warning { + background-image:url(../images/default/window/icon-warning.gif); +} +.x-window-dlg .ext-mb-question { + background-image:url(../images/default/window/icon-question.gif); +} +.x-window-dlg .ext-mb-error { + background-image:url(../images/default/window/icon-error.gif); +} diff --git a/src/main/webapp/gxt/css/gxt-gray.css b/src/main/webapp/gxt/css/gxt-gray.css new file mode 100644 index 0000000..bc31336 --- /dev/null +++ b/src/main/webapp/gxt/css/gxt-gray.css @@ -0,0 +1,493 @@ +.x-panel { + border-style: solid; + border-color: #d0d0d0; +} +.x-panel-header { + color:#333; + border:1px solid #d0d0d0; + background-image:url(../images/gray/panel/white-top-bottom.gif); +} + +.x-panel-body { + border-color:#d0d0d0; +} + +.x-panel-bbar .x-toolbar { + border-color:#d0d0d0; +} + +.x-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} + +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-color:#d0d0d0; +} +.x-panel-tl .x-panel-header { + color:#333; +} +.x-panel-tc { + background-image:url(../images/gray/panel/top-bottom.gif); +} +.x-panel-tl { + background-image:url(../images/gray/panel/corners-sprite.gif); + border-color:#d0d0d0; +} +.x-panel-tr { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-bc { + background-image:url(../images/gray/panel/top-bottom.gif); +} +.x-panel-bl { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-br { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-mc { + background:#f1f1f1; +} +.x-panel-mc .x-panel-body { + background:transparent; + border: 0 none; +} +.x-panel-ml { + background-image:url(../images/gray/panel/left-right.gif); +} +.x-panel-mr { + background-image:url(../images/gray/panel/left-right.gif); +} + +/* Tools */ +.x-tool { + background-image:url(../images/gray/panel/tool-sprites.gif); +} + +/* Ghosting */ +.x-panel-ghost { + background:#e0e0e0; +} + +.x-panel-ghost ul { + border-color:#b0b0b0; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border:1px solid #d0d0d0; +} + +/* Buttons */ + +.x-btn-left{ + background-image:url(../images/gray/button/btn-sprite.gif); +} +.x-btn-right{ + background-image:url(../images/gray/button/btn-sprite.gif); +} +.x-btn-center{ + background-image:url(../images/gray/button/btn-sprite.gif); +} + +.x-btn-group-header { + color: #333333; +} +.x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} +.x-btn-group-tl { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-tr { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-bc { + background-image: url(../images/gray/button/group-tb.gif); +} +.x-btn-group-bl { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-br { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-ml { + background-image: url(../images/gray/button/group-lr.gif); +} +.x-btn-group-mr { + background-image: url(../images/gray/button/group-lr.gif); +} +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} + +/* Layout classes */ + +.x-border-layout-ct { + background:#f0f0f0; +} + +.x-accordion-hd { + background-image:url(../images/gray/panel/light-hd.gif); +} + +.x-layout-collapsed{ + background-color:#eee; + border-color:#e0e0e0; +} +.x-layout-collapsed-over{ + background-color:#fbfbfb; +} + + +/* qtips */ +.x-tip .x-tip-top { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-top-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-top-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-bd-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-bd-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} + +/* Toolbars */ + +.x-toolbar{ + border-color:#d0d0d0; + background:#f0f4f5 url(../images/gray/toolbar/bg.gif) repeat-x top left; +} +.x-toolbar button { + color:#444; +} +.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { + background-image:url(../images/gray/toolbar/btn-arrow.gif); +} +.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { + background-image:url(../images/gray/toolbar/btn-arrow.gif); +} +.x-toolbar .x-btn-over .x-btn-left{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over .x-btn-right{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over .x-btn-center{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over button { + color:#111; +} +.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .xtb-sep { + background-image: url(../images/gray/grid/grid-split.gif); +} + +/* Tabs */ + +.x-tab-panel-header, .x-tab-panel-footer { + background: #EAEAEA; + border-color:#d0d0d0; +} + + +.x-tab-panel-header { + border-color:#d0d0d0; +} + +.x-tab-panel-footer { + border-color:#d0d0d0; +} + +ul.x-tab-strip-top{ + background:#dbdbdb url(../images/gray/tabs/tab-strip-bg.gif) repeat-x left top; + border-color:#d0d0d0; + padding-top: 2px; +} + +ul.x-tab-strip-bottom{ + background-image:url(../images/gray/tabs/tab-strip-btm-bg.gif); + border-color:#d0d0d0; +} + +.x-tab-strip span.x-tab-strip-text { + color:#333; +} +.x-tab-strip-over span.x-tab-strip-text { + color:#111; +} + +.x-tab-strip-active span.x-tab-strip-text { + color:#333; +} + +.x-tab-strip-disabled .x-tabs-text { + color:#aaaaaa; +} + +.x-tab-strip-top .x-tab-right { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} + +.x-tab-strip-top .x-tab-left { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} +.x-tab-strip-top .x-tab-strip-inner { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} + +.x-tab-strip-bottom .x-tab-right { + background-image:url(../images/gray/tabs/tab-btm-inactive-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-left { + background-image:url(../images/gray/tabs/tab-btm-inactive-left-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image:url(../images/gray/tabs/tab-btm-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image:url(../images/gray/tabs/tab-btm-left-bg.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image:url(../images/gray/tabs/tab-close.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ + background-image:url(../images/gray/tabs/tab-close.gif); +} + +.x-tab-panel-body { + border-color:#d0d0d0; + background:#fff; +} +.x-tab-panel-bbar .x-toolbar { + border-color: #d0d0d0; +} + +.x-tab-panel-tbar .x-toolbar { + border-color: #d0d0d0; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer { + border-color:#d0d0d0; + background: #eaeaea; +} + +.x-tab-scroller-left { + background-image: url(../images/gray/tabs/scroll-left.gif); + border-color:#aeaeae; +} +.x-tab-scroller-right { + background-image: url(../images/gray/tabs/scroll-right.gif); + border-color:#aeaeae; +} + +/* Window */ + +.x-window-proxy { + background:#e0e0e0; + border-color:#b0b0b0; +} + +.x-window-tl .x-window-header { + color:#555; +} +.x-window-tc { + background-image:url(../images/gray/window/top-bottom.png); +} +.x-window-tl { + background-image:url(../images/gray/window/left-corners.png); +} +.x-window-tr { + background-image:url(../images/gray/window/right-corners.png); +} +.x-window-bc { + background-image:url(../images/gray/window/top-bottom.png); +} +.x-window-bl { + background-image:url(../images/gray/window/left-corners.png); +} +.x-window-br { + background-image:url(../images/gray/window/right-corners.png); +} +.x-window-mc { + border:1px solid #d0d0d0; + background:#e8e8e8; +} +.ext-ie .x-window-plain .x-window-mc { + background-color: #e3e3e3; +} + +.x-window-ml { + background-image:url(../images/gray/window/left-right.png); +} +.x-window-mr { + background-image:url(../images/gray/window/left-right.png); +} +.x-panel-ghost .x-window-tl { + border-color:#d0d0d0; +} +.x-panel-collapsed .x-window-tl { + border-color:#d0d0d0; +} + +.x-window-plain .x-window-mc { + background: #e8e8e8; + border-right:1px solid #eee; + border-bottom:1px solid #eee; + border-top:1px solid #d0d0d0; + border-left:1px solid #d0d0d0; +} + +.x-window-plain .x-window-body { + border-left:1px solid #eee; + border-top:1px solid #eee; + border-bottom:1px solid #d0d0d0; + border-right:1px solid #d0d0d0; + background:transparent !important; +} + +body.x-body-masked .x-window-mc, body.x-body-masked .x-window-plain .x-window-mc { + background-color: #e4e4e4; +} + + +/* misc */ +.x-html-editor-wrap { + border-color:#d0d0d0; +} + +/* Borders go last for specificity */ +.x-panel-noborder .x-panel-body-noborder { + border-width:0; +} + +.x-panel-noborder .x-panel-header-noborder { + border-width:0; + border-bottom:1px solid #d0d0d0; +} + +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-width:0; + border-bottom:1px solid #d0d0d0; +} + +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-width:0; + border-top:1px solid #d0d0d0; +} + +.x-window-noborder .x-window-mc { + border-width:0; +} +.x-window-plain .x-window-body-noborder { + border-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-body-noborder { + border-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-header-noborder { + border-top-width:0; + border-left-width:0; + border-right-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-footer-noborder { + border-bottom-width:0; + border-left-width:0; + border-right-width:0; +} + + +.x-tab-panel-bbar-noborder .x-toolbar { + border-width:0; + border-top:1px solid #d0d0d0; +} + +.x-tab-panel-tbar-noborder .x-toolbar { + border-width:0; + border-bottom:1px solid #d0d0d0; +} + +.x-spinner-field .x-form-spinner-up { + background-image: url('../images/gray/form/spinner.gif'); +} +.x-spinner-field .x-form-spinner-down { + background-image: url('../images/gray/form/spinner.gif'); +}.x-accordion-hd { + background-color: #e5e5e5; +}.x-border { + border: 1px solid #D0D0D0; +} + +.x-layout-popup { + background-color: #F0F0F0; + border: 1px solid #D0D0D0; +} + +.my-list { + border: 1px solid #D0D0D0; +} + +.x-view { + border:1px solid #D0D0D0; +} + +.x-menubar { + border-color: #D0D0D0; + background-color: #F0F0F0; + background-image: url(../images/gray/toolbar/bg.gif); +} + +.x-menubar-item-active { + background-color: #D9E8FB; +} + +.x-menubar-item-active { + background-color: #D9E8FB; +}.x-date-right-icon { + background-image: url(../images/default/shared/right-btn.gif); + margin-right: 2px; + text-decoration: none !important; +} + +.x-date-left-icon { + background-image: url(../images/default/shared/left-btn.gif); + margin-right: 2px; + text-decoration: none !important; +}.my-tbl { + border: 1px solid #C6C5C5; +}.my-treetbl { + border: 1px solid #C6C5C5; +} \ No newline at end of file diff --git a/src/main/webapp/gxt/desktop/css/desktop.css b/src/main/webapp/gxt/desktop/css/desktop.css new file mode 100644 index 0000000..1db8a3b --- /dev/null +++ b/src/main/webapp/gxt/desktop/css/desktop.css @@ -0,0 +1,638 @@ +/* + * Ext JS Library 2.1 + * Copyright(c) 2006-2008, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ +html,body { + background: #3d71b8 url(../wallpapers/desktop.jpg) no-repeat left top; + font: normal 12px tahoma, arial, verdana, sans-serif; + margin: 0; + padding: 0; + border: 0 none; + overflow: hidden; + height: 100%; +} + +.start { + background-image: url( ../images/taskbar/black/startbutton-icon.gif ) !important; +} + +.bogus { + background-image: url( ../images/bogus.png ) !important; +} + +.logout { + background-image: url( ../images/logout.gif ) !important; +} + +.settings { + background-image: url( ../images/gears.gif ) !important; +} + +#dpanels { + width: 250px; + float: right; +} + +#dpanels .x-panel { + margin: 15px; +} + +#dpanels .x-date-picker { + border: 0 none; + border-top: 0 none; + background: transparent; +} + +#dpanels .x-date-picker td.x-date-active { + background: #ffffff; +} + +#dpanels .x-date-picker { + width: 100% !important; +} + +#x-desktop { + width: 100%; + height: 100%; + border: 0 none; + position: relative; + overflow: hidden; + zoom: 1; +} + +#ux-taskbar .x-btn { + float: left; + margin: 1px 0 0 1px; + position: relative; +} + +#ux-taskbar-start .x-btn { + float: left; + margin: 0; + position: relative; +} + +#ux-taskbar button { /* width: 150px; + overflow: hidden; */ + text-align: left; + color: #ffffff; +} + +#title-bar-wrapper { + height: 35px; +} + +#title-bar { + color: #225599; + padding: 9px 7px; + font: bold 16px tahoma, arial, verdana, sans-serif; + float: left; +} + +#x-logout { + float: right; + padding: 6px 7px; +} + +.x-btn-text-icon .x-btn-center .logout { + background-position: 0pt 3px; + background-repeat: no-repeat; + padding: 3px 0pt 3px 18px; +} + +#ux-taskbar { + background: transparent none; + height: 30px; + margin: 0; + padding: 0; + position: relative; + z-index: 12001; +} + +.x-btn-icon .ux-taskbutton-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 .ux-taskbutton-center { + padding: 1px; +} + +.ux-startbutton-center .x-btn-text { + color: #000000 !important; + font-weight: bold; +} + +.ux-taskbutton-left,.ux-taskbutton-right { + font-size: 1px; + line-height: 1px; +} + +.ux-taskbutton-left { + width: 4px; + height: 28px; + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 0; +} + +.ux-taskbutton-right { + width: 4px; + height: 28px; + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -28px; +} + +.ux-taskbutton-left i,.ux-taskbutton-right i { + display: block; + width: 4px; + overflow: hidden; + font-size: 1px; + line-height: 1px; +} + +.ux-taskbutton-center { + background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -56px; + vertical-align: middle; + text-align: center; + padding: 0 5px; + cursor: pointer; + white-space: nowrap; +} + +#ux-taskbar .ux-taskbutton-left { + background-position: 0 0; +} + +#ux-taskbar .ux-taskbutton-right { + background-position: 0 -28px; +} + +#ux-taskbar .ux-taskbutton-center { + background-position: 0 -56px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-left { + background-position: 0 -252px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-right { + background-position: 0 -280px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-center { + background-position: 0 -308px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-left { + background-position: 0 -168px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-right { + background-position: 0 -196px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-center { + background-position: 0 -224px; +} + +#ux-taskbar .active-win .ux-taskbutton-left { + background-position: 0 -84px; +} + +#ux-taskbar .active-win .ux-taskbutton-right { + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -112px; +} + +#ux-taskbar .active-win .ux-taskbutton-center { + background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -140px; +} + +#ux-taskbar .active-win .ux-taskbutton-center button { + color: #fff; +} + +#spacer { + height: 25px; + float: left; + width: 0; + overflow: hidden; + margin-top: 2px; +} + +.x-window-body p,.x-panel-body p { + padding: 10px; + margin: 0; +} + +.x-window-maximized .x-window-bc { + height: 0; +} + +.add { + background-image: url(../images/add.gif) !important; +} + +.option { + background-image: url(../images/plugin.gif) !important; +} + +.remove { + background-image: url(../images/delete.gif) !important; +} + +.tabs { + background-image: url(../images/tabs.gif) !important; +} + +.ux-start-menu { + background: transparent none; + border: 0px none; + padding: 0; +} + +.ux-start-menu-tl .x-window-header { + color: #f1f1f1; + font: bold 11px tahoma, arial, verdana, sans-serif; + padding: 5px 0 4px 0; +} + +.x-panel-tl .x-panel-icon,.ux-start-menu-tl .x-panel-icon { + background-position: 0pt 4px; + background-repeat: no-repeat; + padding-left: 20px !important; +} + +.ux-start-menu-tl { + background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0 0; + padding-left: 6px; + zoom: 1; + z-index: 1; + position: relative; +} + +.ux-start-menu-tr { + background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right + 0; + padding-right: 6px; +} + +.ux-start-menu-tc { + background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 0; + overflow: hidden; + zoom: 1; +} + +.ux-start-menu-ml { + background: transparent url( ../images/taskbar/black/start-menu-left-right.png ) repeat-y 0 0; + padding-left: 6px; + zoom: 1; +} + +.ux-start-menu-bc { + background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 bottom; + zoom: 1; +} + +.ux-start-menu-bc .x-window-footer { + padding-bottom: 6px; + zoom: 1; + font-size: 0; + line-height: 0; +} + +.ux-start-menu-bl { + background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0 + bottom; + padding-left: 6px; + zoom: 1; +} + +.ux-start-menu-br { + background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right + bottom; + padding-right: 6px; + zoom: 1; +} + +.x-panel-nofooter .ux-start-menu-bc { + height: 6px; +} + +.ux-start-menu-splitbar-h { + background-color: #d0d0d0; +} + +.ux-start-menu-bwrap { + background: transparent none; + border: 0px none; +} + +.ux-start-menu-body { + background: transparent none; + border: 0px none; +} + +.ux-start-menu-apps-panel { + background: #ffffff none; + border: 1px solid #1e2124; +} + +.ux-start-menu-tools-panel { + border: 0px none; + background: transparent url( ../images/taskbar/black/start-menu-right.png ) repeat-y scroll right + 0pt; +} + +#ux-taskbar-start { + background: #000000 url( ../images/taskbar/black/taskbar-start-panel-bg.gif ) repeat-x left top; + left: 0px; + padding: 0; + position: absolute; +} + +#ux-taskbar-start .x-toolbar { + background: none; + padding: 0px; + border: 0px none; +} + +#ux-taskbuttons-panel { + background: #000000 url( ../images/taskbar/black/taskbuttons-panel-bg.gif ) repeat-x left top; + padding-top: 0; + position: relative; +} + +.ux-taskbuttons-strip-wrap { /* overflow:hidden; + position:relative; + width:100%; */ + width: 100%; + overflow: hidden; + position: relative; + zoom: 1; +} + +ul.ux-taskbuttons-strip { + display: block; + width: 5000px; + zoom: 1; +} + +ul.ux-taskbuttons-strip li { + float: left; + margin-left: 2px; +} + +ul.ux-taskbuttons-strip li.ux-taskbuttons-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-clear { + clear: both; + height: 0; + overflow: hidden; + line-height: 0; + font-size: 0; +} + +.x-taskbuttons-scrolling { + position: relative; +} + +.x-taskbuttons-scrolling .ux-taskbuttons-strip-wrap { + margin-left: 18px; + margin-right: 18px; +} + +td.ux-taskButtons-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; +} + +.ux-taskbuttons-scroller-left { + background: transparent url( ../images/taskbar/black/scroll-left.gif ) no-repeat -18px 0; + width: 18px; + position: absolute; + left: 1px; + top: 0px; + z-index: 10; + cursor: pointer; +} + +.ux-taskbuttons-scroller-left-over { + background-position: 0 0; +} + +.ux-taskbuttons-scroller-left-disabled { + background-position: -18px 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.ux-taskbuttons-scroller-right { + background: transparent url( ../images/taskbar/black/scroll-right.gif ) no-repeat 0 0; + width: 18px; + position: absolute; + right: 0; + top: 0px; + z-index: 10; + cursor: pointer; +} + +.ux-taskbuttons-scroller-right-over { + background-position: -18px 0; +} + +.ux-taskbuttons-scroller-right-disabled { + background-position: 0 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.ux-toolmenu-sep { + background-color: #18191a; + border-bottom: 1px solid #858789; + display: block; + font-size: 1px; + line-height: 1px; + margin: 2px 3px; +} + +.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item a.x-menu-item { + color: #ffffff; +} + +.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item .x-menu-item-active a.x-menu-item { + color: #000000; +} + +.ux-start-menu-tools-panel .x-menu-item-active { + background: #525456 url( ../images/taskbar/black/item-over.gif ) repeat-x left bottom; + border: 1px solid #000000; + padding: 0; +} + +#ux-taskbar .x-splitbar-h { + background: #000000 url( ../images/taskbar/black/taskbar-split-h.gif ) no-repeat 0 0; + width: 8px; +} + +.x-window-header-text { + cursor: default; +} + +/* + * Begin Start button + */ +.ux-startbutton-left,.ux-startbutton-right { + font-size: 1px; + line-height: 1px; +} + +.ux-startbutton-left { + width: 10px; + height: 28px; + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 0; +} + +.ux-startbutton-right { + width: 10px; + height: 30px; + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -28px; +} + +.ux-startbutton-left i,.ux-startbutton-right i { + display: block; + width: 10px; + overflow: hidden; + font-size: 1px; + line-height: 1px; +} + +.ux-startbutton-center { + background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -56px; + vertical-align: middle; + text-align: center; + padding: 0; + cursor: pointer; + white-space: nowrap; +} + +#ux-taskbar .ux-startbutton-left { + background-position: 0 0; +} + +#ux-taskbar .ux-startbutton-right { + background-position: 0 -30px; +} + +#ux-taskbar .ux-startbutton-center { + background-position: 0 -60px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-left { + background-position: 0 -270px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-right { + background-position: 0 -300px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-center { + background-position: 0 -330px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-left { + background-position: 0 -180px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-right { + background-position: 0 -210px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-center { + background-position: 0 -240px; +} + +#ux-taskbar .active-win .ux-startbutton-left { + background-position: 0 -90px; +} + +#ux-taskbar .active-win .ux-startbutton-right { + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -120px; +} + +#ux-taskbar .active-win .ux-startbutton-center { + background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -150px; +} + +#ux-taskbar .active-win .ux-startbutton-center button { + color: #fff; +} + +/* + * End Start button + */ +.x-resizable-proxy { + background: #C7DFFC; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + border: 1px solid #3b5a82; +} + +/* Desktop Shortcuts */ +#x-shortcuts dt { + float: left; + margin: 15px 0 0 15px; + clear: left; + width: 64px; + font: normal 10px tahoma, arial, verdana, sans-serif; + text-align: center; + zoom: 1; + display: block; +} + +#x-shortcuts dt a { + width: 64px; + display: block; + color: white; + text-decoration: none; +} + +#x-shortcuts dt div { + width: 100%; + color: white; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; +} + +#x-shortcuts dt a:hover { + text-decoration: underline; +} diff --git a/src/main/webapp/gxt/desktop/images/add.gif b/src/main/webapp/gxt/desktop/images/add.gif new file mode 100644 index 0000000..9319525 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/add.gif differ diff --git a/src/main/webapp/gxt/desktop/images/delete.gif b/src/main/webapp/gxt/desktop/images/delete.gif new file mode 100644 index 0000000..5e2a3b1 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/delete.gif differ diff --git a/src/main/webapp/gxt/desktop/images/desktop.gif b/src/main/webapp/gxt/desktop/images/desktop.gif new file mode 100644 index 0000000..f305cb6 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/desktop.gif differ diff --git a/src/main/webapp/gxt/desktop/images/desktop3.jpg b/src/main/webapp/gxt/desktop/images/desktop3.jpg new file mode 100644 index 0000000..daca8bc Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/desktop3.jpg differ diff --git a/src/main/webapp/gxt/desktop/images/gears.gif b/src/main/webapp/gxt/desktop/images/gears.gif new file mode 100644 index 0000000..2bf6bd7 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/gears.gif differ diff --git a/src/main/webapp/gxt/desktop/images/gears.png b/src/main/webapp/gxt/desktop/images/gears.png new file mode 100644 index 0000000..6acdc98 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/gears.png differ diff --git a/src/main/webapp/gxt/desktop/images/grid.png b/src/main/webapp/gxt/desktop/images/grid.png new file mode 100644 index 0000000..c4da495 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/grid.png differ diff --git a/src/main/webapp/gxt/desktop/images/hatch.gif b/src/main/webapp/gxt/desktop/images/hatch.gif new file mode 100644 index 0000000..6a044a8 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/hatch.gif differ diff --git a/src/main/webapp/gxt/desktop/images/hd-bg.gif b/src/main/webapp/gxt/desktop/images/hd-bg.gif new file mode 100644 index 0000000..f35a53f Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/hd-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/hd-tb-bg.gif b/src/main/webapp/gxt/desktop/images/hd-tb-bg.gif new file mode 100644 index 0000000..f800edb Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/hd-tb-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/icon_padlock.png b/src/main/webapp/gxt/desktop/images/icon_padlock.png new file mode 100644 index 0000000..92625ff Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/icon_padlock.png differ diff --git a/src/main/webapp/gxt/desktop/images/icons-bg.png b/src/main/webapp/gxt/desktop/images/icons-bg.png new file mode 100644 index 0000000..6557cbb Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/icons-bg.png differ diff --git a/src/main/webapp/gxt/desktop/images/launcher-bg.gif b/src/main/webapp/gxt/desktop/images/launcher-bg.gif new file mode 100644 index 0000000..c7cfd83 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/launcher-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/launcher-btn.gif b/src/main/webapp/gxt/desktop/images/launcher-btn.gif new file mode 100644 index 0000000..a9a72d7 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/launcher-btn.gif differ diff --git a/src/main/webapp/gxt/desktop/images/logout.gif b/src/main/webapp/gxt/desktop/images/logout.gif new file mode 100644 index 0000000..a4f3738 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/logout.gif differ diff --git a/src/main/webapp/gxt/desktop/images/logout.png b/src/main/webapp/gxt/desktop/images/logout.png new file mode 100644 index 0000000..1fcb386 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/logout.png differ diff --git a/src/main/webapp/gxt/desktop/images/member.gif b/src/main/webapp/gxt/desktop/images/member.gif new file mode 100644 index 0000000..216c839 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/member.gif differ diff --git a/src/main/webapp/gxt/desktop/images/member.png b/src/main/webapp/gxt/desktop/images/member.png new file mode 100644 index 0000000..0f3657f Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/member.png differ diff --git a/src/main/webapp/gxt/desktop/images/plugin.gif b/src/main/webapp/gxt/desktop/images/plugin.gif new file mode 100644 index 0000000..209c121 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/plugin.gif differ diff --git a/src/main/webapp/gxt/desktop/images/powered.gif b/src/main/webapp/gxt/desktop/images/powered.gif new file mode 100644 index 0000000..8ce74b8 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/powered.gif differ diff --git a/src/main/webapp/gxt/desktop/images/powered.png b/src/main/webapp/gxt/desktop/images/powered.png new file mode 100644 index 0000000..5b2a0b8 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/powered.png differ diff --git a/src/main/webapp/gxt/desktop/images/s.gif b/src/main/webapp/gxt/desktop/images/s.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/s.gif differ diff --git a/src/main/webapp/gxt/desktop/images/tabs.gif b/src/main/webapp/gxt/desktop/images/tabs.gif new file mode 100644 index 0000000..759de0f Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/tabs.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/item-over.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/item-over.gif new file mode 100644 index 0000000..26c1fc2 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/item-over.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif new file mode 100644 index 0000000..94fea48 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-right.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-right.gif new file mode 100644 index 0000000..94b5669 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-right.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-corners.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-corners.png new file mode 100644 index 0000000..d6e5196 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-corners.png differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-right.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-right.png new file mode 100644 index 0000000..a577d1b Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-right.png differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png new file mode 100644 index 0000000..b683301 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png new file mode 100644 index 0000000..e5fa2b8 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-top-bottom.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-top-bottom.png new file mode 100644 index 0000000..fbea3cb Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-top-bottom.png differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif new file mode 100644 index 0000000..8dcd2d1 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton.gif new file mode 100644 index 0000000..683313e Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-split-h.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-split-h.gif new file mode 100644 index 0000000..13564ad Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-split-h.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif new file mode 100644 index 0000000..9794880 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif new file mode 100644 index 0000000..df13974 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif differ diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbuttons-panel-bg.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbuttons-panel-bg.gif new file mode 100644 index 0000000..0865c45 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbuttons-panel-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/winbar-bg.gif b/src/main/webapp/gxt/desktop/images/winbar-bg.gif new file mode 100644 index 0000000..45295a6 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/winbar-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/images/winbar-btn.gif b/src/main/webapp/gxt/desktop/images/winbar-btn.gif new file mode 100644 index 0000000..2c8c024 Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/winbar-btn.gif differ diff --git a/src/main/webapp/gxt/desktop/images/windows-bg.gif b/src/main/webapp/gxt/desktop/images/windows-bg.gif new file mode 100644 index 0000000..396471e Binary files /dev/null and b/src/main/webapp/gxt/desktop/images/windows-bg.gif differ diff --git a/src/main/webapp/gxt/desktop/wallpapers/desktop.jpg b/src/main/webapp/gxt/desktop/wallpapers/desktop.jpg new file mode 100644 index 0000000..8e1fcb0 Binary files /dev/null and b/src/main/webapp/gxt/desktop/wallpapers/desktop.jpg differ diff --git a/src/main/webapp/gxt/flash/swfobject.js b/src/main/webapp/gxt/flash/swfobject.js new file mode 100644 index 0000000..4b704c5 --- /dev/null +++ b/src/main/webapp/gxt/flash/swfobject.js @@ -0,0 +1,5 @@ +/* SWFObject v2.1 + Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis + This software is released under the MIT License +*/ +var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("