From 35a8381f85f01cd605551524a03083116baf0551 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 21 Aug 2012 10:16:57 +0000 Subject: [PATCH] SP-242, BIS-154: refactoring SampleTypeGrid to avoid code duplication SVN: 26412 --- .../entity_type/AbstractEditTypeDialog.java | 72 +++++ .../application/ui/sample/SampleTypeGrid.java | 253 ++++++------------ .../ui/widget/AbstractSaveDialog.java | 2 +- 3 files changed, 153 insertions(+), 174 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEditTypeDialog.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEditTypeDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEditTypeDialog.java new file mode 100644 index 00000000000..e714b49f3f9 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/entity_type/AbstractEditTypeDialog.java @@ -0,0 +1,72 @@ +/* + * Copyright 2012 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.client.web.client.application.ui.entity_type; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DescriptionField; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; + +/** + * Abstract super class of dialogs editing an entity type. + * + * @author Franz-Josef Elmer + */ +public abstract class AbstractEditTypeDialog<T extends EntityType> extends + AbstractRegistrationDialog +{ + public static final String DIALOG_ID = GenericConstants.ID_PREFIX + "edit-type-dialog"; + + private final T type; + + private final DescriptionField descriptionField; + + private final EntityKind entityKind; + + private final IViewContext<ICommonClientServiceAsync> viewContext; + + protected AbstractEditTypeDialog(IViewContext<ICommonClientServiceAsync> viewContext, + String title, IDelegatedAction postRegistrationCallback, EntityKind entityKind, + T entityType) + { + super(viewContext, title, postRegistrationCallback); + this.viewContext = viewContext; + this.entityKind = entityKind; + setId(DIALOG_ID); + this.type = entityType; + descriptionField = createDescriptionField(viewContext); + FieldUtil.setValueWithUnescaping(descriptionField, entityType.getDescription()); + addField(descriptionField); + } + + @Override + protected void register(AsyncCallback<Void> registrationCallback) + { + type.setDescription(descriptionField.getValue()); + setSpecificAttributes(type); + viewContext.getCommonService().updateEntityType(entityKind, type, registrationCallback); + } + + abstract protected void setSpecificAttributes(T entityType); +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java index 48782103c68..0fdf489d82b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java @@ -27,14 +27,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.entity_type.AbstractEditTypeDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.entity_type.AbstractEntityTypeGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.entity_type.AddTypeDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CheckBoxField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CodeField; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DescriptionField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractSaveDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DialogWithOnlineHelpUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; @@ -123,81 +122,21 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType> String title = viewContext.getMessage(Dict.EDIT_TYPE_TITLE_TEMPLATE, entityKind.getDescription(), code); - return new AbstractRegistrationDialog(viewContext, title, postRegistrationCallback) + return new AbstractEditTypeDialog<SampleType>(viewContext, title, postRegistrationCallback, + EntityKind.SAMPLE, sampleType) { - private final DescriptionField descriptionField; - - private final CheckBoxField showContainerField; - - private final CheckBoxField showParentsField; - - private final CheckBoxField listableField; - - private final CheckBoxField subcodeUniqueField; - - private final CheckBoxField autoGeneratedCodeField; - - private final CheckBoxField showParentMetadataField; - - private final TextField<String> generatedCodePrefixField; + private final SampleTypeDialogFieldHelper helper; { - descriptionField = createDescriptionField(viewContext); - FieldUtil.setValueWithUnescaping(descriptionField, sampleType.getDescription()); - addField(descriptionField); - - listableField = - SampleTypeDialogFieldHelper.createListableField(viewContext, - sampleType.isListable()); - addField(listableField); - - showContainerField = - SampleTypeDialogFieldHelper.createShowContainerField(viewContext, - sampleType.isShowContainer()); - addField(showContainerField); - - showParentsField = - SampleTypeDialogFieldHelper.createShowParentsField(viewContext, - sampleType.isShowParents()); - addField(showParentsField); - - subcodeUniqueField = - SampleTypeDialogFieldHelper.createUniqueSubcodesField(viewContext, - sampleType.isSubcodeUnique()); - addField(subcodeUniqueField); - - autoGeneratedCodeField = - SampleTypeDialogFieldHelper.createAutoGeneratedCodeField(viewContext, - sampleType.isAutoGeneratedCode()); - addField(autoGeneratedCodeField); - - showParentMetadataField = - SampleTypeDialogFieldHelper.createShowParentMetadataField(viewContext, - sampleType.isShowParentMetadata()); - addField(showParentMetadataField); - - generatedCodePrefixField = - SampleTypeDialogFieldHelper.createGeneratedCodePrefixField(viewContext, - sampleType.getGeneratedCodePrefix()); - addField(generatedCodePrefixField); - - DialogWithOnlineHelpUtils.addHelpButton(viewContext, this, - createHelpPageIdentifier()); + helper = + new SampleTypeDialogFieldHelper(viewContext, this, sampleType, + createHelpPageIdentifier()); } @Override - protected void register(AsyncCallback<Void> registrationCallback) + protected void setSpecificAttributes(SampleType entityType) { - sampleType.setDescription(descriptionField.getValue()); - sampleType.setListable(listableField.getValue()); - sampleType.setSubcodeUnique(subcodeUniqueField.getValue()); - sampleType.setAutoGeneratedCode(autoGeneratedCodeField.getValue()); - sampleType.setShowParentMetadata(showParentMetadataField.getValue()); - sampleType.setGeneratedCodePrefix(generatedCodePrefixField.getValue()); - sampleType.setShowParents(showParentsField.getValue()); - sampleType.setShowContainer(showContainerField.getValue()); - viewContext.getService().updateEntityType(entityKind, sampleType, - registrationCallback); + helper.setAttributes(entityType); } private HelpPageIdentifier createHelpPageIdentifier() @@ -214,72 +153,27 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType> return new AddTypeDialog<SampleType>(viewContext, title, postRegistrationCallback, newEntityType) { - - private CheckBoxField showContainerField; - - private CheckBoxField showParentsField; - - private CheckBoxField listableField; - - private CheckBoxField subcodeUniqueField; - - private CheckBoxField autoGenerateCodesField; - - private CheckBoxField showParentMetadataField; - - private TextField<String> generatedCodePrefixField; + private final SampleTypeDialogFieldHelper helper; { - listableField = - SampleTypeDialogFieldHelper.createListableField(viewContext, - DEFAULT_LISTABLE_VALUE); - addField(listableField); - - showContainerField = - SampleTypeDialogFieldHelper.createShowContainerField(viewContext, - DEFAULT_SHOW_CONTAINER_VALUE); - addField(showContainerField); - - showParentsField = - SampleTypeDialogFieldHelper.createShowParentsField(viewContext, - DEFAULT_SHOW_PARENTS_VALUE); - addField(showParentsField); - - subcodeUniqueField = - SampleTypeDialogFieldHelper.createUniqueSubcodesField(viewContext, - DEFAULT_UNIQUE_SUBCODES_VALUE); - addField(subcodeUniqueField); - - autoGenerateCodesField = - SampleTypeDialogFieldHelper.createAutoGeneratedCodeField(viewContext, - DEFAULT_AUTO_GENERATE_CODES_VALUE); - addField(autoGenerateCodesField); - - showParentMetadataField = - SampleTypeDialogFieldHelper.createShowParentMetadataField(viewContext, - DEFAULT_SHOW_PARENT_METADATA_VALUE); - addField(showParentMetadataField); - - generatedCodePrefixField = - SampleTypeDialogFieldHelper.createGeneratedCodePrefixField(viewContext, - DEFAULT_GENERATED_CODE_PREFIX_VALUE); - addField(generatedCodePrefixField); - - DialogWithOnlineHelpUtils.addHelpButton(viewContext, this, - createHelpPageIdentifier()); + SampleType sampleType = new SampleType(); + sampleType.setListable(DEFAULT_LISTABLE_VALUE); + sampleType.setShowContainer(DEFAULT_SHOW_CONTAINER_VALUE); + sampleType.setShowParents(DEFAULT_SHOW_PARENTS_VALUE); + sampleType.setSubcodeUnique(DEFAULT_UNIQUE_SUBCODES_VALUE); + sampleType.setAutoGeneratedCode(DEFAULT_AUTO_GENERATE_CODES_VALUE); + sampleType.setShowParentMetadata(DEFAULT_SHOW_PARENT_METADATA_VALUE); + sampleType.setGeneratedCodePrefix(DEFAULT_GENERATED_CODE_PREFIX_VALUE); + helper = + new SampleTypeDialogFieldHelper(viewContext, this, sampleType, + createHelpPageIdentifier()); } @Override protected void register(SampleType sampleType, AsyncCallback<Void> registrationCallback) { - sampleType.setShowParents(showParentsField.getValue()); - sampleType.setShowContainer(showContainerField.getValue()); - sampleType.setListable(listableField.getValue()); - sampleType.setAutoGeneratedCode(autoGenerateCodesField.getValue()); - sampleType.setShowParentMetadata(showParentMetadataField.getValue()); - sampleType.setSubcodeUnique(subcodeUniqueField.getValue()); - sampleType.setGeneratedCodePrefix(generatedCodePrefixField.getValue()); + helper.setAttributes(sampleType); SampleTypeGrid.this.register(sampleType, registrationCallback); } @@ -297,34 +191,6 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType> private static final class SampleTypeDialogFieldHelper { - public static CheckBoxField createListableField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) - { - final String title = viewContext.getMessage(Dict.LISTABLE); - return createCheckBoxField(title, value); - } - - public static CheckBoxField createUniqueSubcodesField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) - { - final String title = viewContext.getMessage(Dict.SUBCODE_UNIQUE_LABEL); - return createCheckBoxField(title, value); - } - - public static CheckBoxField createAutoGeneratedCodeField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) - { - final String title = viewContext.getMessage(Dict.AUTO_GENERATE_CODES_LABEL); - return createCheckBoxField(title, value); - } - - public static CheckBoxField createShowParentMetadataField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) - { - final String title = viewContext.getMessage(Dict.SHOW_PARENT_METADATA_LABEL); - return createCheckBoxField(title, value); - } - private static CheckBoxField createCheckBoxField(final String title, Boolean value) { final CheckBoxField field = new CheckBoxField(title, false); @@ -332,28 +198,69 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType> return field; } - public static TextField<String> createGeneratedCodePrefixField( - final IViewContext<ICommonClientServiceAsync> viewContext, String value) - { - final String title = viewContext.getMessage(Dict.GENERATED_CODE_PREFIX); - final TextField<String> field = new CodeField(viewContext, title); - field.setValue(value); - return field; + private final CheckBoxField showContainerField; - } + private final CheckBoxField showParentsField; + + private final CheckBoxField listableField; + + private final CheckBoxField subcodeUniqueField; + + private final CheckBoxField autoGeneratedCodeField; + + private final CheckBoxField showParentMetadataField; + + private final TextField<String> generatedCodePrefixField; - public static CheckBoxField createShowParentsField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) + public SampleTypeDialogFieldHelper(IViewContext<ICommonClientServiceAsync> viewContext, + AbstractSaveDialog dialog, SampleType sampleType, + HelpPageIdentifier helpPageIdentifier) { - final String title = viewContext.getMessage(Dict.SHOW_PARENTS); - return createCheckBoxField(title, value); + listableField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.LISTABLE), sampleType.isListable()); + dialog.addField(listableField); + showContainerField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.SHOW_CONTAINER), + sampleType.isShowContainer()); + dialog.addField(showContainerField); + showParentsField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.SHOW_PARENTS), sampleType.isShowParents()); + dialog.addField(showParentsField); + subcodeUniqueField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.SUBCODE_UNIQUE_LABEL), + sampleType.isSubcodeUnique()); + dialog.addField(subcodeUniqueField); + autoGeneratedCodeField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.AUTO_GENERATE_CODES_LABEL), + sampleType.isAutoGeneratedCode()); + dialog.addField(autoGeneratedCodeField); + showParentMetadataField = + SampleTypeDialogFieldHelper.createCheckBoxField( + viewContext.getMessage(Dict.SHOW_PARENT_METADATA_LABEL), + sampleType.isShowParentMetadata()); + dialog.addField(showParentMetadataField); + generatedCodePrefixField = + new CodeField(viewContext, viewContext.getMessage(Dict.GENERATED_CODE_PREFIX)); + generatedCodePrefixField.setValue(sampleType.getGeneratedCodePrefix()); + dialog.addField(generatedCodePrefixField); + + DialogWithOnlineHelpUtils.addHelpButton(viewContext, dialog, helpPageIdentifier); } - public static CheckBoxField createShowContainerField( - final IViewContext<ICommonClientServiceAsync> viewContext, Boolean value) + public void setAttributes(SampleType sampleType) { - final String title = viewContext.getMessage(Dict.SHOW_CONTAINER); - return createCheckBoxField(title, value); + sampleType.setShowParents(showParentsField.getValue()); + sampleType.setShowContainer(showContainerField.getValue()); + sampleType.setListable(listableField.getValue()); + sampleType.setAutoGeneratedCode(autoGeneratedCodeField.getValue()); + sampleType.setShowParentMetadata(showParentMetadataField.getValue()); + sampleType.setSubcodeUnique(subcodeUniqueField.getValue()); + sampleType.setGeneratedCodePrefix(generatedCodePrefixField.getValue()); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/AbstractSaveDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/AbstractSaveDialog.java index 9e3939b44ff..01f5165a717 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/AbstractSaveDialog.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/AbstractSaveDialog.java @@ -93,7 +93,7 @@ abstract public class AbstractSaveDialog extends Window addButton(createCancelButton()); } - protected final void addField(Widget widget) + public final void addField(Widget widget) { form.add(widget); } -- GitLab