From 65b1c0f9aae3ac85378f80ffbf9b6693e3c3b7ef Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 27 Nov 2015 18:03:06 +0000 Subject: [PATCH] 1452: Implement a GUI for StatMan Algorithms Importer Task-Url: https://support.d4science.org/issues/1452 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@120463 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 11 +- .../client/StatAlgoImporter.java | 33 +++-- .../client/StatAlgoImporterController.java | 18 ++- .../client/event/ProjectStatusEvent.java | 65 ++++++++ .../client/maindata/CodeEditPanel.java | 105 +++++++++++++ .../client/maindata/MainDataPanel.java | 33 ++--- .../resource/StatAlgoImporterResources.java | 5 + .../client/resource/project-create_32.png | Bin 0 -> 1474 bytes .../client/resource/project-open_32.png | Bin 0 -> 1523 bytes .../client/ribbon/HomeToolBar.java | 139 ++++++++++++------ .../client/ribbon/HomeToolBarMessages.java | 76 ++++++---- .../client/tools/ExplorerProjectPanel.java | 43 ++++++ .../client/tools/ToolsPanel.java | 82 +++++++++++ .../input/EnvironmentVariablesPanel.java | 47 ++++++ .../tools/input/InputVariableMessages.java | 22 +++ .../tools/input/InputVariablePanel.java | 116 +++++++++++++++ .../tools/input/InputVariablePanelState.java | 12 ++ .../tools/input/InputVariableTabPanel.java | 100 +++++++++++++ .../client/tools/input/SelectedRowsPanel.java | 47 ++++++ .../client/type/ProjectStatusEventType.java | 12 ++ .../type/StatAlgoImporterRibbonType.java | 6 +- .../statalgoimporter.gwt.xml | 6 +- .../client/resource/project-create_32.png | Bin 0 -> 1474 bytes .../client/resource/project-open_32.png | Bin 0 -> 1523 bytes .../statalgoimporter.gwt.xml | 4 +- src/main/webapp/StatAlgoImporter.html | 4 + 26 files changed, 858 insertions(+), 128 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/ExplorerProjectPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/ToolsPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableMessages.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanelState.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java create mode 100644 src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png diff --git a/pom.xml b/pom.xml index 251f1fa..208b14c 100644 --- a/pom.xml +++ b/pom.xml @@ -212,10 +212,13 @@ juniversalchardet 1.0.3 - - - + + + + org.gcube.portlets.widget + acegwt-widget + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporter.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporter.java index 81fef7f..0c1f2a4 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporter.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporter.java @@ -5,6 +5,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.Sta import org.gcube.portlets.user.statisticalalgorithmsimporter.client.ribbon.StatAlgoImporterRibbon; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.ToolsPanel; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.EntryPoint; @@ -19,7 +20,7 @@ import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderL import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.Viewport; -/** +/** * * @author "Giancarlo Panichi" g.panichi@isti.cnr.it @@ -27,12 +28,12 @@ import com.sencha.gxt.widget.core.client.container.Viewport; */ public class StatAlgoImporter implements EntryPoint { - private static final String JSP_TAG_ID = "StatisticalRunnerPortlet"; + private static final String JSP_TAG_ID = "StatAlgoImporterPortlet"; private static final int RIBBON_HEIGHT = 120; @SuppressWarnings("unused") - private final StatAlgoImporterServiceAsync statRunnerService = GWT + private final StatAlgoImporterServiceAsync statAlgoImporterService = GWT .create(StatAlgoImporterService.class); // Main Panel @@ -90,18 +91,20 @@ public class StatAlgoImporter implements EntryPoint { mainPanelLayout.setNorthWidget(accountingManagerMenu.getContainer(), ribbonData); - // Tools - /* - * CodeUploadPanel codeUploadPanel=new CodeUploadPanel(eventBus); - * BorderLayoutData westData = new BorderLayoutData(310); - * westData.setCollapsible(false); westData.setSplit(false); - * westData.setFloatable(false); westData.setCollapseMini(false); - * westData.setMargins(new Margins(2, 7, 2, 7)); - * westData.setCollapseHidden(true); westData.setMaxSize(310); - * westData.setMinSize(310); - * mainPanelLayout.setWestWidget(codeUploadPanel, westData); - * codeUploadPanel.expand(); codeUploadPanel.enable(); - */ + // Right + ToolsPanel toolsPanel = new ToolsPanel(eventBus); + BorderLayoutData eastData = new BorderLayoutData(310); + eastData.setCollapsible(false); + eastData.setSplit(false); + eastData.setFloatable(false); + eastData.setCollapseMini(false); + eastData.setMargins(new Margins(2, 7, 2, 7)); + eastData.setCollapseHidden(true); + // estData.setMaxSize(510); + // estData.setMinSize(310); + mainPanelLayout.setEastWidget(toolsPanel, eastData); + // codeUploadPanel.expand(); + toolsPanel.enable(); bind(mainPanelLayout); controller.setMainPanelLayout(mainPanelLayout); diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java index 938652c..b8cdf58 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java @@ -3,11 +3,12 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client; import java.util.Date; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ImportCodeEvent; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ShowCodeEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.StatAlgoImporterRibbonType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.UIStateType; @@ -194,13 +195,17 @@ public class StatAlgoImporterController { } switch(eventType){ - case HELP: + case PROJECT_CREATE: break; - case CREATE_ALGORITHM: + case PROJECT_OPEN: break; - case UPLOAD_CODE: + case ALGORITHM_CREATE: + break; + case ALGORITHM_IMPORT: showCodeUploadPanel(); break; + case HELP: + break; default: break; @@ -210,8 +215,9 @@ public class StatAlgoImporterController { private void doImportCodeCommand(ImportCodeEvent event) { ImportCodeDescription importCodeDesc=event.getImportCodeDescription(); if(importCodeDesc!=null && importCodeDesc.getImportCodeType()!=null){ - ShowCodeEvent showCodeEvent=new ShowCodeEvent(importCodeDesc); - eventBus.fireEvent(showCodeEvent); + ProjectStatusEvent projectStatusEvent= new ProjectStatusEvent(ProjectStatusEventType.UPDATE); + eventBus.fireEvent(projectStatusEvent); + Log.debug("ProjectStatusEvent fired"); } } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java new file mode 100644 index 0000000..069ff24 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java @@ -0,0 +1,65 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event; + +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +/** + * Project Status Event + * + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ProjectStatusEvent extends + GwtEvent { + + public static Type TYPE = new Type(); + private ProjectStatusEventType projectStatusEventType; + + public interface ProjectStatusEventHandler extends EventHandler { + void onProjectStatus(ProjectStatusEvent event); + } + + public interface HasProjectStatusEventHandler extends HasHandlers { + public HandlerRegistration addProjectStatusEventHandler( + ProjectStatusEventHandler handler); + } + + public ProjectStatusEvent(ProjectStatusEventType projectStatusEventType) { + this.projectStatusEventType = projectStatusEventType; + } + + @Override + protected void dispatch(ProjectStatusEventHandler handler) { + handler.onProjectStatus(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + public static Type getType() { + return TYPE; + } + + public static void fire(HasHandlers source, + ProjectStatusEvent projectStatusEvent) { + source.fireEvent(projectStatusEvent); + } + + public ProjectStatusEventType getProjectStatusEventType() { + return projectStatusEventType; + } + + @Override + public String toString() { + return "ProjectStatusEvent [projectStatusEventType=" + + projectStatusEventType + "]"; + } +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java new file mode 100644 index 0000000..7db243e --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java @@ -0,0 +1,105 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata; + +import java.util.ArrayList; + +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3; +import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData; +import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sencha.gxt.widget.core.client.ContentPanel; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; + +import edu.ycp.cs.dh.acegwt.client.ace.AceEditor; +import edu.ycp.cs.dh.acegwt.client.ace.AceEditorMode; +import edu.ycp.cs.dh.acegwt.client.ace.AceEditorTheme; + +/** + * + * @author giancarlo email: g.panichi@isti.cnr.it + * + */ +public class CodeEditPanel extends ContentPanel { + + private EventBus eventBus; + private AceEditor editor; + + public CodeEditPanel(EventBus eventBus) { + super(); + Log.debug("CodeEditPanel"); + this.eventBus = eventBus; + + // msgs = GWT.create(ServiceCategoryMessages.class); + init(); + create(); + + } + + private void init() { + forceLayoutOnResize = true; + setBodyBorder(false); + setBorders(false); + setHeaderVisible(false); + setResize(true); + + } + + private void create() { + editor = new AceEditor(); + VerticalLayoutContainer v = new VerticalLayoutContainer(); + v.add(editor, new VerticalLayoutData(1, 1)); + + add(v); + editor.startEditor(); + loadCode(); + + } + + private void loadCode() { + StatAlgoImporterServiceAsync.INSTANCE + .getCode(new AsyncCallback>() { + + public void onFailure(Throwable caught) { + if (caught instanceof StatAlgoImporterSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + Log.error("Error retrieving code: " + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error", + caught.getLocalizedMessage()); + } + caught.printStackTrace(); + + } + + public void onSuccess(ArrayList result) { + Log.debug("loaded " + result.size() + " code lines"); + String text = new String(); + for (CodeData codeData : result) { + Log.debug("Read: " + codeData); + text+=codeData.getCodeLine()+"\r\n"; + } + + editor.setShowPrintMargin(false); + editor.setMode(AceEditorMode.R); + editor.setTheme(AceEditorTheme.ECLIPSE); + editor.setText(text); + forceLayout(); + } + }); + } + + public void codeUpdate() { + loadCode(); + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/MainDataPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/MainDataPanel.java index 5d7692a..c9ee703 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/MainDataPanel.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/MainDataPanel.java @@ -1,6 +1,6 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata; -import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ShowCodeEvent; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.event.shared.EventBus; @@ -17,7 +17,7 @@ import com.sencha.gxt.widget.core.client.container.SimpleContainer; public class MainDataPanel extends SimpleContainer { private EventBus eventBus; - private CodeViewerPanel codeViewPanel; + private CodeEditPanel codeEditPanel; public MainDataPanel(EventBus eventBus) { super(); @@ -41,30 +41,29 @@ public class MainDataPanel extends SimpleContainer { } private void bindToEvents() { - eventBus.addHandler(ShowCodeEvent.TYPE, - new ShowCodeEvent.ShowCodeEventHandler() { - + eventBus.addHandler(ProjectStatusEvent.TYPE, + new ProjectStatusEvent.ProjectStatusEventHandler() { + @Override - public void onShowCode(ShowCodeEvent event) { - Log.debug("Catch ShowCodeEvent"); - doShowCodeCommand(event); - + public void onProjectStatus(ProjectStatusEvent event) { + Log.debug("Catch ProjectStatusEvent"); + doProjectStatusCommand(event); + } - }); } - private void doShowCodeCommand(ShowCodeEvent event) { - if (codeViewPanel == null) { - addCodeViewPanel(); + private void doProjectStatusCommand(ProjectStatusEvent event) { + if (codeEditPanel == null) { + addCodeEditPanel(); } else { - codeViewPanel.gridReload(); + codeEditPanel.codeUpdate(); } } - private void addCodeViewPanel() { - codeViewPanel = new CodeViewerPanel(eventBus); - add(codeViewPanel, new MarginData(new Margins(0))); + private void addCodeEditPanel() { + codeEditPanel = new CodeEditPanel(eventBus); + add(codeEditPanel, new MarginData(new Margins(0))); forceLayout(); } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java index 1384c99..87821b4 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java @@ -50,5 +50,10 @@ public interface StatAlgoImporterResources extends ClientBundle { @Source("algorithm_32.png") ImageResource algorithm32(); + + @Source("project-create_32.png") + ImageResource projectCreate32(); + @Source("project-open_32.png") + ImageResource projectOpen32(); } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c066e5db41c6045063cbe2ac97ab409c92163e GIT binary patch literal 1474 zcmV;z1wHzSP)}_DylNY@g5WMuD!fsT04~@_?B8j%?RHc(t{pPT#+UmA3)jB^2MP9x4 ze&6?fzdzrCkC=!=Pgg{ah{%G7{7Xc9`Oy6FyM^&wH@U|rn}{rm$iGFzll10|*DQXD z!{~WXL>|iL+d~mKn2L>r^Fh(aRMNRp3K99M@B2UXdObbC>l4ZaM+PH%h7Rc4FWl@at$as(7Bq`uaLouU_Tl%aRFqEZSyE*M`X-)gNf#(c2K7=z>jbgS^+Lt2YYG4+aNn0b7Qt@vv7y#h=K67((yJ3K_&sjablWdw5$+YZtyYzZJ z!Z4)KXmI%OVYJq}0gweM2KYLy^VQW=+U+*J?{oe7b%w(sd-m+1*=#a3HMN_X5ZTuT z_#!R+Z{NP<>C>m!w$0q!9JXzd!sZ=U)rZ|p+Wm%u%{C^oY$!XFunGA(Ofl{eN zu~;OV&0>s+=ZOd_D=S>Na)ssP<YhZWr6O8I4Bt`~6Afxvzm=wvXPu zdzZ6k&(dnO;(OlM*x=&Di(I&H0nhVx+${(Kf*^M z?b{d6wk(Sv2*_kID5Yq(+bl0H$C_a<7~pvxN-6sNKF^*#qfjWsz>XX_f^FLoC?Dvk zaWh&1{t&B%Figs`xCAFpxVE;&xpU{(*x1-|V%K%iS`&sLo12?)e-IIT-{=1Q`{Z&t zfd2r0G)k$yi2MlrBiRicoGI{vC4lG8 cpMTWHZzhwAwj+;M+5i9m07*qoM6N<$f-LvW`Tzg` literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png new file mode 100644 index 0000000000000000000000000000000000000000..5498032dce5f4a36ed506a450b491492729d3112 GIT binary patch literal 1523 zcmVbrBE|oqQWqmc zIs*d^xOj*g5r$C^EOeo+9=M2amSr}r8)0Zn7lNJClr*{Co7~?lrZd-d>iXtHi0sSY zwtp~Z`Ewiw&q)z^A%EOnh{)tXY;-wa5|Lf`|JkmHEcFASx}7Vf5Rrd18jZDPvl%*g zKRiJxLZJ{^Yb?vcFpNRTZ36|R)RVy1AppV7fp1HtQt0vH$L#Fv5DJ9=@O__Jt%hye zG@DJb*(^gtL(I+1asK>yx)=Q)Ag(K=zU#-pq=@{~Zny15qd~o1=l1Q}yn6Ktr4+GP zjBD4fF*-WR*47qx@7|@+Xy7;w7cXAq>eZ`*GVu=hyHaWk!04j*2c?u9&?_R$&d%a_ z9snaFBONBv=`@!vUBWa?EX(4-g9ogyuMe7XHt<6bcHbikBSXst0#lTavxZQDd55$g3i0IgPw_wV0Ruh+SG^CoZKz6Idev11gAMMg(Q zdk^fQi2U0Cz5pf$)d;0j=NE)$e}A8ag#`@5pja$YE|+m#7uR)p{rWYh(JHdL7^Q86O{Kc6OGHjSXJDe2Lb&Ge>L9=H@0F8ymgL#eh)_ zd^M=^?d@%Lc6RVQk2`nn&}y|vBobV>aDi|*jOTfMb-^$U9LJ&6YGImY_s~}wm>)EM z_V)HDl}c!>nV+9WDaFLZ1e24K*tU(_kEO7Jb(V2YPEWZtxvEYHSjg?&tOOGcAG+>z?m~= zs8lNK?(X9IKCxJgY&J_Klfn0WeBbBk)2FPgtS~n>$I8kI$z<|Vd%&*^;1{6LO`qp^ zxUNeom11gYikX=ia=9F)Y0_*qu`G*c&z^Db-aW?0$0?V~EH5uptyVD%gJ?85NTbpK ze$l|sKp8k0#LTiREXzVfx;rJ5Quw~l+S(eoZrviA%_1Ubt$Fk24NFT)#i>)L0JwkuKBrHg=Iq(COifLZOeQ-*6%L27EUVY~y8~ap z^%!0GyCovu0N(Geb6;B^HYv5~&{NZQz@rAN*)r4y+vo z0>JY;YPA}BdwWD85p3Hg7Kg.panichi@isti.cnr.it + * + */ +public class ExplorerProjectPanel extends ContentPanel { + + //private EventBus eventBus; + + + public ExplorerProjectPanel(EventBus eventBus) { + super(); + Log.debug("ExplorerProjectPanel"); + //this.eventBus = eventBus; + + // msgs = GWT.create(ServiceCategoryMessages.class); + init(); + create(); + + } + + private void init() { + forceLayoutOnResize = true; + setBodyBorder(false); + setBorders(false); + setHeaderVisible(false); + setResize(true); + + } + + private void create() { + + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/ToolsPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/ToolsPanel.java new file mode 100644 index 0000000..bdfdaf1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/ToolsPanel.java @@ -0,0 +1,82 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools; + +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input.InputVariablePanel; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.shared.EventBus; +import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.widget.core.client.container.MarginData; +import com.sencha.gxt.widget.core.client.container.SimpleContainer; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; + +/** + * + * @author giancarlo email: g.panichi@isti.cnr.it + * + */ +public class ToolsPanel extends SimpleContainer { + + private EventBus eventBus; + private InputVariablePanel inputVariablePanel; + private ExplorerProjectPanel explorerProjectPanel; + private boolean first = true; + + public ToolsPanel(EventBus eventBus) { + super(); + this.eventBus = eventBus; + init(); + create(); + bindToEvents(); + } + + protected void init() { + forceLayoutOnResize = true; + // setBodyBorder(false); + setBorders(false); + // setHeaderVisible(false); + + } + + protected void create() { + + } + + private void bindToEvents() { + eventBus.addHandler(ProjectStatusEvent.TYPE, + new ProjectStatusEvent.ProjectStatusEventHandler() { + + @Override + public void onProjectStatus(ProjectStatusEvent event) { + Log.debug("Catch ShowCodeEvent"); + doProjectStatusCommand(event); + + } + }); + } + + private void doProjectStatusCommand(ProjectStatusEvent event) { + if (first) { + first = false; + addPanel(); + } else { + + } + } + + private void addPanel() { + VerticalLayoutContainer v = new VerticalLayoutContainer(); + + inputVariablePanel = new InputVariablePanel(eventBus); + explorerProjectPanel = new ExplorerProjectPanel(eventBus); + v.add(inputVariablePanel, new VerticalLayoutData(1, -1, new Margins(0))); + v.add(explorerProjectPanel, new VerticalLayoutData(1, -1, + new Margins(0))); + add(v, new MarginData(new Margins(0))); + forceLayout(); + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java new file mode 100644 index 0000000..f42a780 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java @@ -0,0 +1,47 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.ContentPanel; + +/** + * + * @author giancarlo + * email: g.panichi@isti.cnr.it + * + */ +public class EnvironmentVariablesPanel extends ContentPanel { + + private EventBus eventBus; + + + public EnvironmentVariablesPanel(EventBus eventBus) { + super(); + Log.debug("EnvironmentVariablesPanel"); + this.eventBus = eventBus; + + // msgs = GWT.create(ServiceCategoryMessages.class); + init(); + create(); + + } + + private void init() { + forceLayoutOnResize = true; + setBodyBorder(false); + setBorders(false); + setHeaderVisible(false); + setResize(true); + + } + + private void create() { + + + } + + public void update(){ + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableMessages.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableMessages.java new file mode 100644 index 0000000..08a56b2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableMessages.java @@ -0,0 +1,22 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +import com.google.gwt.i18n.client.Messages; + +/** + * + * @author giancarlo email: g.panichi@isti.cnr.it + * + */ +public interface InputVariableMessages extends Messages { + + // + @DefaultMessage("Selected Rows") + String selectedRowsItem(); + + @DefaultMessage("Enviroment Variables") + String environmentVariables(); + + + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java new file mode 100644 index 0000000..4f64401 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java @@ -0,0 +1,116 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; +import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.ContentPanel; + +/** + * + * @author giancarlo + * email: g.panichi@isti.cnr.it + * + */ +public class InputVariablePanel extends ContentPanel { + + private EventBus eventBus; + private InputVariableTabPanel inputVariableTabPanel; + private InputVariablePanelState state; + + public InputVariablePanel(EventBus eventBus) { + super(); + Log.debug("Open InputVariablePanel"); + this.eventBus = eventBus; + setId("InputVariablePanel"); + setHeaderVisible(false); + setResize(true); + setBodyBorder(false); + setBorders(false); + forceLayoutOnResize = true; + inputVariableTabPanel = new InputVariableTabPanel(eventBus, this); + add(inputVariableTabPanel); + startPanel(); + bindToEvents(); + + } + + protected void bindToEvents() { + eventBus.addHandler(UIStateEvent.TYPE, + new UIStateEvent.UIStateHandler() { + + public void onUIState(UIStateEvent event) { + manageUIStateEvents(event); + + } + }); + + eventBus.addHandler(ProjectStatusEvent.TYPE, + new ProjectStatusEvent.ProjectStatusEventHandler() { + + @Override + public void onProjectStatus(ProjectStatusEvent event) { + manageProjectStatusEvents(event); + + } + }); + } + + + + protected void manageUIStateEvents(UIStateEvent event) { + Log.debug("InputVariablePanel recieved event from UI: " + + event.toString()); + switch (event.getUiStateType()) { + case START: + break; + case WAITING: + break; + default: + break; + + } + } + + protected void manageProjectStatusEvents(ProjectStatusEvent event) { + Log.debug("InputVariablePanel recieved event ProjectStatus: " + + event.toString()); + switch (event.getProjectStatusEventType()) { + case OPEN: + startPanel(); + break; + case UPDATE: + updatePanel(); + break; + default: + break; + } + } + + /* + private void closePanelOnly() { + collapse(); + disable(); + state = InputVariablePanelState.CLOSED; + }*/ + + + private void startPanel() { + enable(); + expand(); + state = InputVariablePanelState.OPENED; + inputVariableTabPanel.startTabs(); + + } + + private void updatePanel() { + if (state == InputVariablePanelState.OPENED) { + inputVariableTabPanel.updateTabs(); + Log.debug("ToolBoxPanel Updated"); + } + } + + + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanelState.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanelState.java new file mode 100644 index 0000000..0dd2c2b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanelState.java @@ -0,0 +1,12 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +/** + * + * @author giancarlo + * email: g.panichi@isti.cnr.it + * + */ +public enum InputVariablePanelState { + CLOSED, + OPENED; +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java new file mode 100644 index 0000000..61bc3a5 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java @@ -0,0 +1,100 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.TabItemConfig; +import com.sencha.gxt.widget.core.client.TabPanel; + +//import org.gcube.portlets.user.td.taskswidget.client.TdTaskController; + +/** + * + * @author giancarlo email: g.panichi@isti.cnr.it + * + */ +public class InputVariableTabPanel extends TabPanel { + private InputVariableMessages msgs; + private EventBus eventBus; + private EnvironmentVariablesPanel enviromentVariablesPanel; + private SelectedRowsPanel selectedRowsPanel; + + public InputVariableTabPanel(EventBus eventBus, + InputVariablePanel toolBoxPanel) { + super(); + Log.debug("Create InpuntVariableTabPanel"); + this.eventBus = eventBus; + this.msgs = GWT.create(InputVariableMessages.class); + setId("InputVariableTabPanel"); + setBodyBorder(false); + setBorders(false); + setAnimScroll(true); + setTabScroll(true); + setCloseContextMenu(true); + + } + + public void startTabs() { + Log.debug("Start InputVariable Tabs"); + addEnvironmentVariablesPanel(); + addSelectedRowsPanel(); + + setActiveWidget(getWidget(0)); + + } + + /* + * public void openEnviromentVariablesPanel() { + * Log.debug("Open EnviromentVariablesPanel Tab"); if + * (enviromentVariablesPanel == null) { addChangeColumnTypePanel(trId, + * columnName); } else { enviromentVariablesPanel.update(); } + * setActiveWidget(changeColumnTypePanel); + * + * } + */ + + // Close + /* + * public void closePropertiesTabs() { Log.debug("Close Properties Tab"); if + * (trProperties != null) { remove(trProperties); trProperties = null; } + * + * } + */ + + // + + public void updateTabs() { + try { + enviromentVariablesPanel.update(); + selectedRowsPanel.update(); + + forceLayout(); + } catch (Throwable e) { + Log.error("Error in InputVariableTabPanel: " + + e.getLocalizedMessage()); + e.printStackTrace(); + } + } + + // Add + private void addSelectedRowsPanel() { + TabItemConfig selectedRowsPanelItemConf = new TabItemConfig( + msgs.selectedRowsItem(), false); + + selectedRowsPanel = new SelectedRowsPanel(eventBus); + selectedRowsPanel.setHeaderVisible(false); + add(selectedRowsPanel, selectedRowsPanelItemConf); + + } + + private void addEnvironmentVariablesPanel() { + TabItemConfig enviromentVariablePanelItemConf = new TabItemConfig( + msgs.environmentVariables(), false); + + enviromentVariablesPanel = new EnvironmentVariablesPanel(eventBus); + enviromentVariablesPanel.setHeaderVisible(false); + add(enviromentVariablesPanel, enviromentVariablePanelItemConf); + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java new file mode 100644 index 0000000..c5e5df4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java @@ -0,0 +1,47 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.ContentPanel; + +/** + * + * @author giancarlo + * email: g.panichi@isti.cnr.it + * + */ +public class SelectedRowsPanel extends ContentPanel { + + private EventBus eventBus; + + + public SelectedRowsPanel(EventBus eventBus) { + super(); + Log.debug("SelectedRowsPanel"); + this.eventBus = eventBus; + + // msgs = GWT.create(ServiceCategoryMessages.class); + init(); + create(); + + } + + private void init() { + forceLayoutOnResize = true; + setBodyBorder(false); + setBorders(false); + setHeaderVisible(false); + setResize(true); + + } + + private void create() { + + + } + + public void update(){ + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java new file mode 100644 index 0000000..a15e943 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java @@ -0,0 +1,12 @@ +package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public enum ProjectStatusEventType { + OPEN, + UPDATE; +} diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java index 3bf4e85..953dd97 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java @@ -7,7 +7,9 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type; * */ public enum StatAlgoImporterRibbonType { - UPLOAD_CODE, - CREATE_ALGORITHM, + PROJECT_CREATE, + PROJECT_OPEN, + ALGORITHM_IMPORT, + ALGORITHM_CREATE, HELP; } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/statalgoimporter.gwt.xml b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/statalgoimporter.gwt.xml index b7ca55e..311f7ab 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/statalgoimporter.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/statalgoimporter.gwt.xml @@ -18,10 +18,10 @@ - - - + + + diff --git a/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png b/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-create_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c066e5db41c6045063cbe2ac97ab409c92163e GIT binary patch literal 1474 zcmV;z1wHzSP)}_DylNY@g5WMuD!fsT04~@_?B8j%?RHc(t{pPT#+UmA3)jB^2MP9x4 ze&6?fzdzrCkC=!=Pgg{ah{%G7{7Xc9`Oy6FyM^&wH@U|rn}{rm$iGFzll10|*DQXD z!{~WXL>|iL+d~mKn2L>r^Fh(aRMNRp3K99M@B2UXdObbC>l4ZaM+PH%h7Rc4FWl@at$as(7Bq`uaLouU_Tl%aRFqEZSyE*M`X-)gNf#(c2K7=z>jbgS^+Lt2YYG4+aNn0b7Qt@vv7y#h=K67((yJ3K_&sjablWdw5$+YZtyYzZJ z!Z4)KXmI%OVYJq}0gweM2KYLy^VQW=+U+*J?{oe7b%w(sd-m+1*=#a3HMN_X5ZTuT z_#!R+Z{NP<>C>m!w$0q!9JXzd!sZ=U)rZ|p+Wm%u%{C^oY$!XFunGA(Ofl{eN zu~;OV&0>s+=ZOd_D=S>Na)ssP<YhZWr6O8I4Bt`~6Afxvzm=wvXPu zdzZ6k&(dnO;(OlM*x=&Di(I&H0nhVx+${(Kf*^M z?b{d6wk(Sv2*_kID5Yq(+bl0H$C_a<7~pvxN-6sNKF^*#qfjWsz>XX_f^FLoC?Dvk zaWh&1{t&B%Figs`xCAFpxVE;&xpU{(*x1-|V%K%iS`&sLo12?)e-IIT-{=1Q`{Z&t zfd2r0G)k$yi2MlrBiRicoGI{vC4lG8 cpMTWHZzhwAwj+;M+5i9m07*qoM6N<$f-LvW`Tzg` literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png b/src/main/resources/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-open_32.png new file mode 100644 index 0000000000000000000000000000000000000000..5498032dce5f4a36ed506a450b491492729d3112 GIT binary patch literal 1523 zcmVbrBE|oqQWqmc zIs*d^xOj*g5r$C^EOeo+9=M2amSr}r8)0Zn7lNJClr*{Co7~?lrZd-d>iXtHi0sSY zwtp~Z`Ewiw&q)z^A%EOnh{)tXY;-wa5|Lf`|JkmHEcFASx}7Vf5Rrd18jZDPvl%*g zKRiJxLZJ{^Yb?vcFpNRTZ36|R)RVy1AppV7fp1HtQt0vH$L#Fv5DJ9=@O__Jt%hye zG@DJb*(^gtL(I+1asK>yx)=Q)Ag(K=zU#-pq=@{~Zny15qd~o1=l1Q}yn6Ktr4+GP zjBD4fF*-WR*47qx@7|@+Xy7;w7cXAq>eZ`*GVu=hyHaWk!04j*2c?u9&?_R$&d%a_ z9snaFBONBv=`@!vUBWa?EX(4-g9ogyuMe7XHt<6bcHbikBSXst0#lTavxZQDd55$g3i0IgPw_wV0Ruh+SG^CoZKz6Idev11gAMMg(Q zdk^fQi2U0Cz5pf$)d;0j=NE)$e}A8ag#`@5pja$YE|+m#7uR)p{rWYh(JHdL7^Q86O{Kc6OGHjSXJDe2Lb&Ge>L9=H@0F8ymgL#eh)_ zd^M=^?d@%Lc6RVQk2`nn&}y|vBobV>aDi|*jOTfMb-^$U9LJ&6YGImY_s~}wm>)EM z_V)HDl}c!>nV+9WDaFLZ1e24K*tU(_kEO7Jb(V2YPEWZtxvEYHSjg?&tOOGcAG+>z?m~= zs8lNK?(X9IKCxJgY&J_Klfn0WeBbBk)2FPgtS~n>$I8kI$z<|Vd%&*^;1{6LO`qp^ zxUNeom11gYikX=ia=9F)Y0_*qu`G*c&z^Db-aW?0$0?V~EH5uptyVD%gJ?85NTbpK ze$l|sKp8k0#LTiREXzVfx;rJ5Quw~l+S(eoZrviA%_1Ubt$Fk24NFT)#i>)L0JwkuKBrHg=Iq(COifLZOeQ-*6%L27EUVY~y8~ap z^%!0GyCovu0N(Geb6;B^HYv5~&{NZQz@rAN*)r4y+vo z0>JY;YPA}BdwWD85p3Hg7K - + + + diff --git a/src/main/webapp/StatAlgoImporter.html b/src/main/webapp/StatAlgoImporter.html index 1f28a4f..2e78b6d 100644 --- a/src/main/webapp/StatAlgoImporter.html +++ b/src/main/webapp/StatAlgoImporter.html @@ -22,6 +22,10 @@ + + + +