From bc6a35aba9f619e1e4c5b01ecab06b7606b7c6ae Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 6 Apr 2009 10:16:55 +0000 Subject: [PATCH] LMS-819 GUI improved SVN: 10598 --- .../client/web/client/application/Dict.java | 8 +++ .../ui/data/AbstractExternalDataGrid.java | 71 +++++++++++++++---- .../application/ui/widget/FieldUtil.java | 2 +- .../server/business/bo/ExternalDataTable.java | 4 +- .../generic/shared/basic/BasicConstant.java | 36 ++++++++++ .../shared/dto/DataSetUploadContext.java | 2 + .../cisd/openbis/public/common-dictionary.js | 6 +- .../business/bo/ExternalDataTableTest.java | 3 +- 8 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/BasicConstant.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java index fd161d9264f..ce6a5b1ca03 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java @@ -321,6 +321,14 @@ public abstract class Dict public static final String CONFIRM_DATASET_UPLOAD_TITLE = "confirm_dataset_upload_title"; public static final String CONFIRM_DATASET_UPLOAD_MSG = "confirm_dataset_upload_msg"; + + public static final String CONFIRM_DATASET_UPLOAD_FILE_NAME_FIELD = "confirm_dataset_upload_file_name_field"; + + public static final String CONFIRM_DATASET_UPLOAD_COMMENT_FIELD = "confirm_dataset_upload_comment_field"; + + public static final String CONFIRM_DATASET_UPLOAD_USER_FIELD = "confirm_dataset_upload_user_field"; + + public static final String CONFIRM_DATASET_UPLOAD_PASSWORD_FIELD = "confirm_dataset_upload_password_field"; // // Sample Registration diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index 69d98c7d116..829d9ce5317 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -25,9 +25,11 @@ import com.extjs.gxt.ui.client.event.KeyListener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Dialog; import com.extjs.gxt.ui.client.widget.button.Button; +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.toolbar.AdapterToolItem; +import com.google.gwt.user.client.Element; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; @@ -40,11 +42,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DataSetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUploadParameters; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; /** * @@ -78,6 +82,7 @@ public abstract class AbstractExternalDataGrid extends AbstractSimpleBrowserGrid setHideOnButtonClick(true); setModal(true); } + } static final class DeletionCallback extends AbstractAsyncCallback<Void> @@ -149,10 +154,14 @@ public abstract class AbstractExternalDataGrid extends AbstractSimpleBrowserGrid private static final class UploadConfirmationDialog extends AbstractConfirmationDialog { + private static final int FIELD_WIDTH_IN_UPLOAD_DIALOG = 200; + private static final int LABEL_WIDTH_IN_UPLOAD_DIALOG = 120; private final String cifexURL; - private final TextField<String> password; + private final TextField<String> passwordField; private TextField<String> fileNameField; private TextArea commentField; + private TextField<String> userField; + private FormPanel form; public UploadConfirmationDialog(IViewContext<?> viewContext, List<ExternalData> dataSets, IBrowserGridActionInvoker invoker) @@ -160,31 +169,69 @@ public abstract class AbstractExternalDataGrid extends AbstractSimpleBrowserGrid super(viewContext, dataSets, invoker, Dict.CONFIRM_DATASET_UPLOAD_TITLE); cifexURL = viewContext.getModel().getApplicationInfo().getCIFEXURL(); addText(viewContext.getMessage(Dict.CONFIRM_DATASET_UPLOAD_MSG, dataSets.size(), cifexURL)); + form = new FormPanel(); + form.setLabelWidth(LABEL_WIDTH_IN_UPLOAD_DIALOG); + form.setFieldWidth(FIELD_WIDTH_IN_UPLOAD_DIALOG); + form.setBodyBorder(false); + form.setHeaderVisible(false); fileNameField = new TextField<String>(); + fileNameField.setFieldLabel(viewContext.getMessage(Dict.CONFIRM_DATASET_UPLOAD_FILE_NAME_FIELD)); fileNameField.setSelectOnFocus(true); - add(fileNameField); + fileNameField.setMaxLength(BasicConstant.MAX_LENGTH_OF_FILE_NAME + ".zip".length()); + fileNameField.setAutoValidate(true); + KeyListener keyListener = new KeyListener() + { + @Override + public void handleEvent(ComponentEvent ce) + { + okBtn.setEnabled(form.isValid()); + } + }; + fileNameField.addKeyListener(keyListener); + form.add(fileNameField); commentField = new TextArea(); - add(commentField); - password = new TextField<String>(); - password.setPassword(true); - password.setHideLabel(true); - password.setWidth("100%"); - password.setMaxLength(50); - add(password); + commentField.setMaxLength(BasicConstant.MAX_LENGTH_OF_CIFEX_COMMENT); + commentField.setFieldLabel(viewContext.getMessage(Dict.CONFIRM_DATASET_UPLOAD_COMMENT_FIELD)); + commentField.addKeyListener(keyListener); + commentField.setAutoValidate(true); + form.add(commentField); + userField = new TextField<String>(); + userField.setFieldLabel(viewContext.getMessage(Dict.CONFIRM_DATASET_UPLOAD_USER_FIELD)); + userField.setValue(viewContext.getModel().getSessionContext().getUser().getUserName()); + FieldUtil.setMandatoryFlag(userField, true); + userField.addKeyListener(keyListener); + userField.setAutoValidate(true); + form.add(userField); + passwordField = new TextField<String>(); + passwordField.setPassword(true); + passwordField.setFieldLabel(viewContext.getMessage(Dict.CONFIRM_DATASET_UPLOAD_PASSWORD_FIELD)); + FieldUtil.setMandatoryFlag(passwordField, true); + passwordField.addKeyListener(keyListener); + passwordField.setAutoValidate(true); + form.add(passwordField); + add(form); + setWidth(LABEL_WIDTH_IN_UPLOAD_DIALOG + FIELD_WIDTH_IN_UPLOAD_DIALOG + 50); + } + + @Override + protected void onRender(Element parent, int pos) + { + super.onRender(parent, pos); + okBtn.setEnabled(false); } @Override protected void onButtonPressed(Button button) { super.onButtonPressed(button); - if (button.getItemId().equals(Dialog.OK)) + if (button.getItemId().equals(Dialog.OK) && form.isValid()) { DataSetUploadParameters parameters = new DataSetUploadParameters(); parameters.setCifexURL(cifexURL); parameters.setFileName(fileNameField.getValue()); parameters.setComment(commentField.getValue()); - parameters.setUserID(viewContext.getModel().getSessionContext().getUser().getUserName()); - parameters.setPassword(password.getValue()); + parameters.setUserID(userField.getValue()); + parameters.setPassword(passwordField.getValue()); viewContext.getCommonService().uploadDataSets(dataSetCodes, parameters, new UploadCallback(viewContext)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java index 906569de152..ded2d000cbf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java @@ -26,7 +26,7 @@ import com.extjs.gxt.ui.client.widget.form.TextField; */ public class FieldUtil { - private static final String MANDATORY_LABEL_SEPARATOR = ": *"; + private static final String MANDATORY_LABEL_SEPARATOR = ": *"; public static void setMandatoryFlag(Field<?> field, boolean isMandatory) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java index c5d742288fd..a9c0f1e0dc3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java @@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.DataStoreServerSessionMa import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExternalDataDAO; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; +import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerSession; @@ -55,7 +56,6 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; public final class ExternalDataTable extends AbstractExternalDataBusinessObject implements IExternalDataTable { - @Private static final int MAX_LENGTH_OF_CIFEX_COMMENT = 1000; @Private static final String UPLOAD_COMMENT_TEXT = "Uploaded zip file contains the following data sets:"; @Private static final String NEW_LINE = "\n"; @Private static final String AND_MORE_TEMPLATE = "and %d more."; @@ -73,7 +73,7 @@ public final class ExternalDataTable extends AbstractExternalDataBusinessObject { length += NEW_LINE.length() + String.format(AND_MORE_TEMPLATE, n - i - 1).length(); } - if (length < MAX_LENGTH_OF_CIFEX_COMMENT) + if (length < BasicConstant.MAX_LENGTH_OF_CIFEX_COMMENT) { builder.append(code); } else diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/BasicConstant.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/BasicConstant.java new file mode 100644 index 00000000000..492597efa15 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/BasicConstant.java @@ -0,0 +1,36 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.basic; + + +/** + * Definition of basic constants. Can be used by server and GWT client. + * + * @author Franz-Josef Elmer + */ +public class BasicConstant +{ + /** Maximum length of a file name for uploading data sets to CIFEX. */ + public static final int MAX_LENGTH_OF_FILE_NAME = 250; + + /** Maximum length of a comment for uploading data sets to CIFEX. */ + public static final int MAX_LENGTH_OF_CIFEX_COMMENT = 1000; + + private BasicConstant() + { + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetUploadContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetUploadContext.java index 448bbcf8ce1..1c11338318a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetUploadContext.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetUploadContext.java @@ -124,6 +124,7 @@ public class DataSetUploadContext implements Serializable builder.append(that.password, password); builder.append(that.email, email); builder.append(that.comment, comment); + builder.append(that.fileName, fileName); return builder.isEquals(); } @@ -136,6 +137,7 @@ public class DataSetUploadContext implements Serializable builder.append(password); builder.append(email); builder.append(comment); + builder.append(fileName); return builder.toHashCode(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js index 642eb25afbd..d8387acb05a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js @@ -299,7 +299,11 @@ var common = { confirm_dataset_deletion_msg: "You are deleting {0} data set(s). Please enter a reason:", button_upload_datasets: "Upload to CIFEX", confirm_dataset_upload_title: "Uploading Confirmation and Authentication", - confirm_dataset_upload_msg: "You are uploading {0} data set(s) to CIFEX ({1}). Please, enter your CIFEX password:", + confirm_dataset_upload_msg: "You are uploading {0} data set(s) to CIFEX ({1}) in a single ZIP file.<br/><br/>Please, enter additional information:", + confirm_dataset_upload_file_name_field: "File name", + confirm_dataset_upload_comment_field: "Comment", + confirm_dataset_upload_user_field: "CIFEX user", + confirm_dataset_upload_password_field: "CIFEX password", diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java index 6b674e674f0..05d2da79294 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java @@ -34,6 +34,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.business.DataStoreServerSessionManager; import ch.systemsx.cisd.openbis.generic.server.business.ManagerTestTool; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; +import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerSession; @@ -426,7 +427,7 @@ public final class ExternalDataTableTest extends AbstractBOTest String comment = ExternalDataTable.createUploadComment(dataSets); System.out.println(comment.length() + ":" + comment); assertEquals(builder.toString(), comment); - assertTrue(comment.length() <= ExternalDataTable.MAX_LENGTH_OF_CIFEX_COMMENT); + assertTrue(comment.length() <= BasicConstant.MAX_LENGTH_OF_CIFEX_COMMENT); } private String generateDataSetCode(int codeLength, int codeIndex) -- GitLab