Initial import.

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/admin/vre-definition@82238 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2013-10-01 15:58:24 +00:00
parent 85af023adf
commit 7c85cd58c1
1055 changed files with 16270 additions and 0 deletions

40
.classpath Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/vre-definition-3.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/gwt"/>
<classpathentry including="**/*.java" kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER/GWT (5)"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/vre-definition-3.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

59
.project Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>vre-definition</name>
<comment>vre-definition project</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
</natures>
</projectDescription>

15
.settings/.jsdtscope Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/webapp" />
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER" />
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true" />
</attributes>
</classpathentry>
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary" />
<classpathentry kind="output" path="" />
</classpath>

View File

@ -0,0 +1,3 @@
#Thu Jun 16 10:18:26 CEST 2011
eclipse.preferences.version=1
filesCopiedToWebInfLib=

View File

@ -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

View File

@ -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+

View File

@ -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/<project>=UTF-8

View File

@ -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

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="${module}">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
<property name="context-root" value="vre-definition"/>
</wb-module>
</project-modules>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.5"/>
</faceted-project>

View File

@ -0,0 +1 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary

View File

@ -0,0 +1,2 @@
disabled=06target
eclipse.preferences.version=1

View File

@ -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

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gwt.eclipse.core.launch.gwtJUnit">
<stringAttribute key="com.google.gwt.eclipse.core.LOG_LEVEL" value="INFO"/>
<booleanAttribute key="com.google.gwt.eclipse.core.NOT_HEADLESS" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.OUT_DIR" value="www-test"/>
<booleanAttribute key="com.google.gwt.eclipse.core.STANDARDS_MODE" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.STYLE" value="OBFUSCATED"/>
<stringAttribute key="com.google.gwt.eclipse.core.WEB_MODE" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/vre-definition/src/test/java/org/gcube/portlets/admin/vredefinition/client/GwtTestVREDefinition.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.gcube.portlets.admin.vredefinition.client.GwtTestVREDefinition"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="vre-definition"/>
</launchConfiguration>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gwt.eclipse.core.launch.gwtJUnit">
<stringAttribute key="com.google.gwt.eclipse.core.LOG_LEVEL" value="INFO"/>
<booleanAttribute key="com.google.gwt.eclipse.core.NOT_HEADLESS" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.OUT_DIR" value="www-test"/>
<booleanAttribute key="com.google.gwt.eclipse.core.STANDARDS_MODE" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.STYLE" value="OBFUSCATED"/>
<stringAttribute key="com.google.gwt.eclipse.core.WEB_MODE" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/vre-definition/src/test/java/org/gcube/portlets/admin/vredefinition/client/GwtTestVREDefinition.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.gcube.portlets.admin.vredefinition.client.GwtTestVREDefinition"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="vre-definition"/>
</launchConfiguration>

231
pom.xml Normal file
View File

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId>
<version>1.0.0</version>
<relativePath />
</parent>
<groupId>org.gcube.portlets.admin</groupId>
<artifactId>vre-definition</artifactId>
<packaging>war</packaging>
<version>3.0.0-SNAPSHOT</version>
<name>VRE Definition Portlet</name>
<description>
gCube VRE Definition Portlet shows a Wizard to create VREs.
</description>
<scm>
<connection>scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</connection>
<developerConnection>scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</developerConnection>
<url>http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</url>
</scm>
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.5.1</gwtVersion>
<distroDirectory>distro</distroDirectory>
<!-- GWT needs at least java 1.6 -->
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.gcube.distribution</groupId>
<artifactId>maven-portal-bom</artifactId>
<version>LATEST</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Google Web Toolkit (GWT) -->
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<!-- "provided" so that we don't deploy -->
<scope>provided</scope>
</dependency>
<!-- This dependency is needed to use GWT UI BInder without old Xerces
version of gCore complaining -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>gcube-widgets</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portal</groupId>
<artifactId>custom-portal-handler</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.vremanagement</groupId>
<artifactId>vremodeler-client-library</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslcore</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslvre</artifactId>
<version>[5.0.0-SNAPSHOT, 6.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt</artifactId>
<version>2.2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<version>6.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwtVersion}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<!-- <goal>test</goal> -->
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
documentation at codehaus.org -->
<configuration>
<runTarget>VREDefinition.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
</configuration>
</plugin>
<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<!-- SA Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptors>
<descriptor>${distroDirectory}/descriptor.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>servicearchive</id>
<phase>install</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-profile</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>target</outputDirectory>
<resources>
<resource>
<directory>${distroDirectory}</directory>
<filtering>true</filtering>
<includes>
<include>profile.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -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<String, List<ExternalResourceModel>> funcToExternalResources = new HashMap<String, List<ExternalResourceModel>>();
public List<ExternalResourceModel> 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<Map<String,Object>>() {
public void onFailure(Throwable arg0) {
// TODO Auto-generated method stub
}
public void onSuccess(Map<String, Object> 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<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent ce) {
Button btn = ce.getButtonClicked();
if(btn.getText().equals("Yes"))
createVRE();
}
});
}
private void createVRE() {
if(!validateVREDescription())
return;
List<ModelData> items = validateVREFunctionalitiesSelected();
if(items == null || items.isEmpty())
return;
List<String> categoriesIDs = new ArrayList<String>();
List<String> functionalitiesIDs = new ArrayList<String>();
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<String>() {
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<ModelData> validateVREFunctionalitiesSelected() {
List<ModelData> items = new ArrayList<ModelData>();
List<ModelData> 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;
}
}

View File

@ -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() {
}
}

View File

@ -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<ExternalResourceModel> getResourceCategoryByFunctionality(String funcId);
/**
* @return VRE Existing Names
*/
String[] getExistingNames();
Map<String, Object> 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<String, List<ExternalResourceModel>> funcToExternalResources) throws VREDefinitionException;
VREFunctionalityModel getFunctionality(boolean isEdit) throws VREDefinitionException;
Map<String,Object> isEditMode();
}

View File

@ -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<String[]> callback);
void setVRE(
VREDescriptionBean bean,
String[] functionalityIDs,
HashMap<String, List<ExternalResourceModel>> funcToExternalResources,
AsyncCallback<String> callback);
void getFunctionality(boolean isEdit,
AsyncCallback<VREFunctionalityModel> callback);
void getVRE(AsyncCallback<Map<String, Object>> callback);
void isEditMode(AsyncCallback<Map<String, Object>> callback);
void getResourceCategoryByFunctionality(String funcId,
AsyncCallback<ArrayList<ExternalResourceModel>> callback);
}

View File

@ -0,0 +1,22 @@
package org.gcube.portlets.admin.vredefinition.client.event;
import com.google.gwt.event.shared.GwtEvent;
public class BackButtonEvent extends GwtEvent<BackButtonEventHandler> {
public static GwtEvent.Type<BackButtonEventHandler> TYPE = new Type<BackButtonEventHandler>();
@Override
protected void dispatch(BackButtonEventHandler handler) {
// TODO Auto-generated method stub
System.out.println("Dispatch event");
handler.onBackButton(this);
}
@Override
public Type<BackButtonEventHandler> getAssociatedType() {
// TODO Auto-generated method stub
return TYPE;
}
}

View File

@ -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);
}

View File

@ -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<ExternalResourceSelectionEventHandler>{
public static Type<ExternalResourceSelectionEventHandler> TYPE = new Type<ExternalResourceSelectionEventHandler>();
private VREFunctionalityModel functionality;
private List<ExternalResourceModel> associatedExternalResources;
public ExternalResourceSelectionEvent(VREFunctionalityModel functionality, List<ExternalResourceModel> resources) {
this.functionality = functionality;
this.associatedExternalResources = resources;
}
public List<ExternalResourceModel> getAssociatedExternalResources() {
return associatedExternalResources;
}
public VREFunctionalityModel getFunctionalityModel() {
return functionality;
}
@Override
protected void dispatch(ExternalResourceSelectionEventHandler handler) {
handler.onSelectedExternalResources(this);
}
@Override
public Type<ExternalResourceSelectionEventHandler> getAssociatedType() {
return TYPE;
}
}

View File

@ -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);
}

View File

@ -0,0 +1,19 @@
package org.gcube.portlets.admin.vredefinition.client.event;
import com.google.gwt.event.shared.GwtEvent;
public class NextButtonEvent extends GwtEvent<NextButtonEventHandler> {
public static Type<NextButtonEventHandler> TYPE = new Type<NextButtonEventHandler>();
@Override
protected void dispatch(NextButtonEventHandler handler) {
handler.onNextButton(this);
}
@Override
public Type<NextButtonEventHandler> getAssociatedType() {
return TYPE;
}
}

View File

@ -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);
}

View File

@ -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<TreeNodeFunctionalityEventHandler>{
public static Type<TreeNodeFunctionalityEventHandler> TYPE = new Type<TreeNodeFunctionalityEventHandler>();
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<TreeNodeFunctionalityEventHandler> getAssociatedType() {
return TYPE;
}
}

View File

@ -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);
}

View File

@ -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<TreeNodeWizardMenuEventHandler>{
public static Type<TreeNodeWizardMenuEventHandler> TYPE = new Type<TreeNodeWizardMenuEventHandler>();
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<TreeNodeWizardMenuEventHandler> getAssociatedType() {
return TYPE;
}
}

View File

@ -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);
}

View File

@ -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<ModelData> 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<ModelData> list) {
this.VREFunctionalitiesSelected = list;
}
public List<ModelData> 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;
}
}

View File

@ -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);
}
}

View File

@ -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");
}
}

View File

@ -0,0 +1,9 @@
package org.gcube.portlets.admin.vredefinition.client.model;
public enum WizardStepType {
VREDefinitionStart,
VREDescription,
VREFunctionalities,
VREDefinitionEnd;
}

View File

@ -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();
}

View File

@ -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);
}
}

View File

@ -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<String> getVREName();
TextField<String> getVREDesigner();
DateField getFromDate();
DateField getToDate();
ComboBox<BaseModel> getVREManager();
TextArea getVREDescription();
void setData(Map<String,Object> 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<Map<String,Object>>() {
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<String, Object> 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();
}
}

View File

@ -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();
}
}

View File

@ -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<ModelData> getTreeFunctionalities();
void setData(List<ModelData> 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<TreePanelEvent<ModelData>>() {
public void handleEvent(TreePanelEvent<ModelData> be) {
if (be.getType() == Events.OnClick) {
VREFunctionalityModel selectedModel = (VREFunctionalityModel)be.getItem();
eventBus.fireEvent(new TreeNodeFunctionalityEvent(selectedModel));
}
}
});
}
public boolean doSave() {
TreePanel<ModelData> 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<ModelData> 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<VREFunctionalityModel>() {
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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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;
}
}
}

View File

@ -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<ModelData> 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<TreePanelEvent<ModelData>>() {
public void handleEvent(TreePanelEvent<ModelData> 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();
}
}

View File

@ -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;
}

View File

@ -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<ExternalResourceModel> myResourcesList;
private VREFunctionalityModel myFunc;
public ResourcesGrid(VREFunctionalityModel func, List<ExternalResourceModel> list) {
myFunc = func;
myResourcesList = list;
}
public ContentPanel getGrid() {
ArrayList<ColumnConfig> configs = new ArrayList<ColumnConfig>();
XTemplate tpl = XTemplate.create("<div class=\"resourceText\"><b>Resource name:</b> {name}</div><div class=\"resourceText\"><b>Description:</b> {description}<div>");
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<ModelData> 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<ExternalResourceModel> store = new GroupingStore<ExternalResourceModel>();
store.groupBy("category");
//store.sort("isSelectable", SortDir.DESC);
store.add(myResourcesList);
Grid<ExternalResourceModel> grid = new Grid<ExternalResourceModel>(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<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
store.rejectChanges();
}
}));
gridPanel.addButton(new Button("Commit changes", new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
List<ExternalResourceModel> resources = store.getModels();
store.commitChanges();
AppController.getAppController().getBus().fireEvent(new ExternalResourceSelectionEvent(myFunc, resources));
}
}));
return gridPanel;
}
}

View File

@ -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;
}
}

View File

@ -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<String> vrename;
private TextField<String> vredesigner;
private DateField fromDate;
private DateField toDate;
private ComboBox<BaseModel> 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<String>();
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<String>();
vredesigner.setFieldLabel("Designer");
vredesigner.setAllowBlank(false);
fieldSet.add(vredesigner,formData);
ListStore<BaseModel> store = new ListStore<BaseModel>();
BaseModel managerModel = new BaseModel();
managerModel.set("name", "Manager");
store.add(managerModel);
vremanager = new ComboBox<BaseModel>();
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<String,Object> result, VREDescriptionBean bean) {
ListStore<BaseModel> store = new ListStore<BaseModel>();
vremanager.setStore(store);
if (result != null && result.get("Manager")!= null) {
for(String value : (List<String>)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<BaseModel> 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<String> getVREName() {
return vrename;
}
public TextField<String> getVREDesigner() {
return vredesigner;
}
public ComboBox<BaseModel> getVREManager() {
return vremanager;
}
public TextArea getVREDescription() {
return vredescription;
}
public Widget asWidget() {
return this;
}
public DateField getFromDate() {
return fromDate;
}
public DateField getToDate() {
return toDate;
}
}

View File

@ -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<ModelData> 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 = "<div STYLE=\"font-size:18px;\" align=\"center\" ><h1> Summary </h1></div>";
vreDescription+="<div><b>Name: </b>" + vre.getName() +"</div>";
vreDescription+="<div><b>VRE Designer: </b>" + vre.getDesigner() +"</div>";
vreDescription+="<div><b>VRE Manager: </b>" + vre.getManager() +"</div>";
DateTimeFormat fmt = DateTimeFormat.getFormat("MMMM dd, yyyy");
vreDescription+="<div ><b>From: </b>"
+ fmt.format(vre.getStartTime())
+ " <b> To: </b>"
+ fmt.format(vre.getEndTime())
+ "</div>";
vreDescription+= "<br />";
vreDescription+="<div><b>Description: </b>" + vre.getDescription() +"</div>";
vreDescription += "<br />";
container.add(new HTML(vreDescription, true ));
List<ModelData> functionalitiesSelected = new ArrayList<ModelData>();
for (ModelData category : categories) {
for(ModelData func : ((VREFunctionalityModel)category).getChildren()) {
if(((VREFunctionalityModel)func).isSelected())
functionalitiesSelected.add(func);
}
}
int sizeFunctionalities = functionalitiesSelected.size();
String table = "<table width=\"100%\" align=\"center\" >";
table += "<tr>";
if (sizeFunctionalities > 0) {
table += "<td width=\"50%\" >";
table += "<div STYLE=\"font-size:14px;\"><h1><u>Functionalities</u></h1></div>";
table += "</td>";
table += "</tr>";
}
table += "<tr>";
table += "<td width=\"50%\" >";
table += "</td>";
table += "<td width=\"50%\" >";
table += "</td>";
table += "</tr>";
int maxSize = Math.max(0, sizeFunctionalities);
for(int i = 0; i < maxSize; i++) {
table += "<tr>";
if (sizeFunctionalities > 0) {
table += "<td width=\"50%\">";
ModelData functionality = null;
if(i < sizeFunctionalities) {
functionality = functionalitiesSelected.get(i);
table +=" - <span style=\"font-weight: bold; color: #333;\">" + functionality.get("name")+"</span>";
List<ExternalResourceModel> extResources = AppController.getAppController().getExtResourcesFromApp(functionality.get("id").toString());
if (extResources != null) {
table += "<br />";
for (ExternalResourceModel ext : extResources) {
if (ext.isSelected()) {
table += "<span class=\"extres\" >" + ext.getName() + "</span>";
table += "<br />";
}
}
table += "<br /><br />";
}
}
table += "</td>";
}
table += "</tr>";
}
table += "</table>";
container.add(new HTML(table, true));
initComponent(container);
}
@Override
public Widget asWidget() {
return this;
}
}

View File

@ -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<ModelData> tree;
private LayoutContainer container;
public VREFunctionalitiesView() {
container = new LayoutContainer();
container.setScrollMode(Scroll.AUTO);
container.setSize("100%","100%");
initComponent(container);
}
public void setData(List<ModelData> categories) {
TreeStore<ModelData> store = new TreeStore<ModelData>();
store.add(categories, true);
tree = new TreePanel<ModelData>(store);
tree.setCheckable(true);
tree.setWidth(300);
tree.setDisplayProperty("name");
// Handles the selection
TreePanelSelectionModel<ModelData> sm = new TreePanelSelectionModel<ModelData>();
tree.setSelectionModel(sm);
tree.getSelectionModel().setSelectionMode(SelectionMode.MULTI);
tree.setCheckStyle(CheckCascade.CHILDREN);
// The icon decorator
tree.setIconProvider(
new ModelIconProvider<ModelData>() {
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<ModelData> getTreeFunctionalities() {
// TODO Auto-generated method stub
return tree;
}
}

View File

@ -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 = "</br><h3> Select a functionality to show info </h3>";
add(new HTML(toAdd, true ));
setStyleAttribute("margin", "10px");
}
public VREInfoFunctionalitiesView(final VREFunctionalityModel functionality, VREDefinitionServiceAsync rpcService) {
mask("Loading available resources ....");
setHeaderVisible(false);
setBodyBorder(false);
toAdd = "<div class=\"theTitle\">" + functionality.getName() + "</div>";
toAdd += "<div class=\"functionalityText\">" + functionality.getDescription()+"</div>";
info.setHTML(toAdd);
add(info);
setStyleAttribute("margin", "10px");
//get that from the server
rpcService.getResourceCategoryByFunctionality(functionality.getId(), new AsyncCallback<ArrayList<ExternalResourceModel>>() {
public void onSuccess(ArrayList<ExternalResourceModel> cats) {
if (cats.size() == 0) {
unmask();
toAdd += "<div class=\"theResources\">There are no external Resources to select for this functionality</div>";
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 += "<div class=\"theResources\">Available Resources for " + functionality.getName() + "</div>";
info.setHTML(toAdd);
if (AppController.getAppController().getExtResourcesFromApp(functionality.getId()) != null) {
List<ExternalResourceModel> 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<ExternalResourceModel> cats) {
ResourcesGrid grid = new ResourcesGrid(func, cats);
gridPanel = grid.getGrid();
gridPanel.setHeight(260);
add(gridPanel);
gridPanel.layout(true);
layout(true);
setLayout(new FitLayout());
unmask();
}
}

View File

@ -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 = "<div align=\"center\"><h3> This wizard will guide you on the VRE Creation </h3></div>";
toAdd += "<br />";
toAdd += "<div align=\"center\">Click 'Next' to continue ...</div>";
cp.add(new HTML(toAdd, true ));
container.add(cp,tableData);
initComponent(container);
}
}

View File

@ -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;
}
}

View File

@ -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<ModelData> tree;
private VREDefinitionView parentView;
public WizardMenuView(WizardStepModel treeModel) {
TreeStore<ModelData> store = new TreeStore<ModelData>();
// The root node will not be shown
store.add(treeModel.getChildren(), true);
tree = new TreePanel<ModelData>(store);
tree.setWidth(300);
tree.setDisplayProperty("name");
// The icon decorator
tree.setIconProvider(
new ModelIconProvider<ModelData>() {
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<ModelData> getTreeMenu() {
// TODO Auto-generated method stub
return tree;
}
}

View File

@ -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<String, ArrayList<ResourceCategory>> funcCategories) {
getASLSession().setAttribute(CATEGORIES, funcCategories);
}
@SuppressWarnings("unchecked")
private HashMap<String, ArrayList<ResourceCategory>> getResourceCategoryFromSession() {
return (HashMap<String, ArrayList<ResourceCategory>>) getASLSession().getAttribute(CATEGORIES);
}
/**
* return the categories per functionality
* @param func
*/
public ArrayList<ExternalResourceModel> getResourceCategoryByFunctionality(String id) {
ArrayList<ExternalResourceModel> toReturn = new ArrayList<ExternalResourceModel>();
return (getResourceCategoryFromSession().containsKey(id) ? getExternaleResources(id) : toReturn);
}
/**
*
* @param id
* @return
*/
private ArrayList<ExternalResourceModel> getExternaleResources(String id) {
ArrayList<ExternalResourceModel> toReturn = new ArrayList<ExternalResourceModel>();
ArrayList<ResourceCategory> 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<String,Object> 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<VRECollectionBean> collections = getCollections();
VREFunctionalityModel functionalities = getFunctionality(true);
Map<String,Object> map = new HashMap<String, Object>();
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<String, ArrayList<ResourceCategory>> funCategories = new HashMap<String, ArrayList<ResourceCategory>>();
List<FunctionalityItem> 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<FunctionalityItem> 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<ResourceCategory> resCats = new ArrayList<ResourceCategory>();
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<String, Object> getVRE() throws VREDefinitionException {
HashMap<String, Object> toReturn = new HashMap<String,Object>();
HttpSession session = this.getThreadLocalRequest().getSession();
String username = (String) session.getAttribute(USERNAME_ATTRIBUTE);
List<UserModel> belongingUsers = new LinkedList<UserModel>();
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<String> managers = new ArrayList<String>();
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<String, Object> getFakeBelongingUsers() {
HashMap<String, Object> ret = new HashMap<String,Object>();
ArrayList<String> managers = new ArrayList<String>();
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<String, List<ExternalResourceModel>> 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<String, List<ExternalResourceModel>> funcToExternalResources) throws VREDefinitionException {
//fillling up
ArrayList<SelectedResourceDescriptionType> toSend = new ArrayList<SelectedResourceDescriptionType>();
//for each func
for (int i = 0; i < functionalityIDs.length; i++) {
if (funcToExternalResources.containsKey(functionalityIDs[i])) { //get the associated resources
String descriptionId = "";
ArrayList<String> resourceIds = new ArrayList<String>();
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<VRECollectionBean> getCollections() throws VREDefinitionException {
List<VRECollectionBean> listToReturn = new ArrayList<VRECollectionBean>();
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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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 {
}
}

View File

@ -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();
}
}

View File

@ -0,0 +1,42 @@
package org.gcube.portlets.admin.vredefinition.shared;
/**
* <p>
* FieldVerifier validates that the name the user enters is valid.
* </p>
* <p>
* This class is in the <code>shared</code> 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.
* </p>
* <p>
* 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.
* </p>
*/
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;
}
}

View File

@ -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<ResourceCategoryItem> items;
public ResourceCategory() {
super();
}
public ResourceCategory(String id, String name,
ArrayList<ResourceCategoryItem> 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<ResourceCategoryItem>();
}
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<ResourceCategoryItem> getItems() {
return items;
}
public void setItems(ArrayList<ResourceCategoryItem> items) {
this.items = items;
}
public void addResourceItem(ResourceCategoryItem item) {
items.add(item);
}
}

View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='VREDefinition'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<!-- inherits GCUBE Widgets -->
<inherits name='org.gcube.portlets.user.gcubewidgets.WidgetFactory' />
<inherits name="com.extjs.gxt.ui.GXT" />
<!-- Other module inherits -->
<!-- Specify the app entry point class. -->
<entry-point class='org.gcube.portlets.admin.vredefinition.client.VREDefinition' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
</module>

View File

@ -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;
}

View File

@ -0,0 +1,27 @@
<!doctype html>
<!-- The DOCTYPE declaration above will set the -->
<!-- browser's rendering engine into -->
<!-- "Standards Mode". Replacing this declaration -->
<!-- with a "Quirks Mode" doctype may lead to some -->
<!-- differences in layout. -->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- -->
<!-- Consider inlining CSS to reduce the number of requested files -->
<!-- -->
<link rel="stylesheet" type="text/css" href="gxt/css/gxt-all.css" />
<link type="text/css" rel="stylesheet" href="VREDefinition.css">
<title>Web Application Starter Project</title>
<script type="text/javascript" language="javascript" src="VREDefinition/VREDefinition.nocache.js"></script>
</head>
<body>
<div id="VREDefinitionDIV"></div>
</body>
</html>

View File

@ -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"%>
<portlet:defineObjects />
--%>
<b>
EDIT MODE
</b>

View File

@ -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"%>
<portlet:defineObjects />
--%>
<b>
HELP MODE
</b>

View File

@ -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"%>
<portlet:defineObjects />
--%>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/gxt/css/gxt-all.css" />
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/VREDefinition.css">
<script language='javascript' src='<%=request.getContextPath()%>/gxt/flash/swfobject.js'></script>
<script type="text/javascript" language="javascript" src='<%=request.getContextPath()%>/VREDefinition/VREDefinition.nocache.js'></script>
<div id="VREDefinitionDIV">
</div>

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 5.2.0//EN" "http://www.liferay.com/dtd/liferay-display_5_2_0.dtd">
<display>
<category name="gCube Applications">
<portlet id="VREDefinition" />
</category>
</display>

View File

@ -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

View File

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 5.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_5_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>VREDefinition</portlet-name>
<layout-cacheable>false</layout-cacheable>
<instanceable>false</instanceable>
<ajaxable>false</ajaxable>
<!-- LOCATION CSS HERE -->
<header-portlet-css>/Wizard.css</header-portlet-css>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
</liferay-portlet-app>

View File

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>VREDefinition</portlet-name>
<display-name>VRE Definition Wizard</display-name>
<portlet-class>org.gcube.portlets.admin.vredefinition.server.portlet.VREDefinitionPortlet</portlet-class>
<init-param>
<name>view-jsp</name>
<value>/WEB-INF/jsp/CollectionViewerPortlet_view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>VRE Definition Wizard</title>
<short-title>VRE Definition Wizard</short-title>
<keywords>VRE Definition Wizard</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
</portlet>
</portlet-app>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- Servlets -->
<servlet>
<servlet-name>VREDefinitionServiceImpl</servlet-name>
<servlet-class>org.gcube.portlets.admin.vredefinition.server.VREDefinitionServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>VREDefinitionServiceImpl</servlet-name>
<url-pattern>/VREDefinition/VREDefinitionServiceImpl</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>VREDefinition.html</welcome-file>
</welcome-file-list>
</web-app>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -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;
}

View File

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Some files were not shown because too many files have changed in this diff Show More