From 37912a77639314bc2c7edc96a0e3cf2fa95b6470 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Tue, 17 Mar 2009 13:32:53 +0000
Subject: [PATCH] LMS-757 bugfix: edit material property

SVN: 10263
---
 .../ui/field/MaterialChooserField.java         | 18 ++++++++++++------
 .../ui/field/PropertyFieldFactory.java         | 10 ++++++----
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MaterialChooserField.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MaterialChooserField.java
index b1350b73e8b..909160a0820 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MaterialChooserField.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MaterialChooserField.java
@@ -46,11 +46,12 @@ public final class MaterialChooserField extends TextField<String> implements
         ChosenEntitySetter<Material>
 {
     public static Field<?> create(final String labelField, final boolean mandatory,
-            final MaterialType materialTypeOrNull,
+            final MaterialType materialTypeOrNull, String initialValueOrNull,
             final IViewContext<ICommonClientServiceAsync> viewContext)
     {
         final MaterialChooserField chosenMaterialField =
-                new MaterialChooserField(mandatory, materialTypeOrNull, viewContext);
+                new MaterialChooserField(mandatory, materialTypeOrNull, initialValueOrNull,
+                        viewContext);
 
         Button chooseButton = new Button(viewContext.getMessage(Dict.BUTTON_BROWSE));
         chooseButton.addSelectionListener(new SelectionListener<ComponentEvent>()
@@ -70,8 +71,7 @@ public final class MaterialChooserField extends TextField<String> implements
     {
         DisposableEntityChooser<Material> materialBrowser =
                 MaterialBrowserGrid.create(viewContext, materialTypeOrNull);
-        new EntityChooserDialog<Material>(materialBrowser, chosenMaterialField, viewContext)
-                .show();
+        new EntityChooserDialog<Material>(materialBrowser, chosenMaterialField, viewContext).show();
     }
 
     // ------------------
@@ -100,7 +100,7 @@ public final class MaterialChooserField extends TextField<String> implements
     }
 
     private MaterialChooserField(boolean mandatory, MaterialType materialTypeOrNull,
-            IViewContext<ICommonClientServiceAsync> viewContext)
+            String initialValueOrNull, IViewContext<ICommonClientServiceAsync> viewContext)
     {
         this.mandatory = mandatory;
 
@@ -109,7 +109,13 @@ public final class MaterialChooserField extends TextField<String> implements
 
         setRegex(CODE_AND_TYPE_PATTERN);
         getMessages().setRegexText(viewContext.getMessage(Dict.INCORRECT_MATERIAL_SYNTAX));
-        setEmptyText(createEmptyText(materialTypeOrNull, viewContext));
+        if (initialValueOrNull != null)
+        {
+            setValue(initialValueOrNull);
+        } else
+        {
+            setEmptyText(createEmptyText(materialTypeOrNull, viewContext));
+        }
         FieldUtil.setMandatoryFlag(this, mandatory);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
index bef935d3567..76acff7e1e9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
@@ -36,7 +36,8 @@ public class PropertyFieldFactory
             String fieldId, String originalRawValue,
             IViewContext<ICommonClientServiceAsync> viewContext)
     {
-        final Field<?> field = createField(pt, isMandatory, label, fieldId, viewContext);
+        final Field<?> field =
+                doCreateField(pt, isMandatory, label, fieldId, originalRawValue, viewContext);
         field.setId(fieldId);
         if (originalRawValue != null)
         {
@@ -45,8 +46,9 @@ public class PropertyFieldFactory
         return field;
     }
 
-    private static Field<?> createField(final PropertyType pt, boolean isMandatory, String label,
-            String fieldId, IViewContext<ICommonClientServiceAsync> viewContext)
+    private static Field<?> doCreateField(final PropertyType pt, boolean isMandatory, String label,
+            String fieldId, String originalRawValue,
+            IViewContext<ICommonClientServiceAsync> viewContext)
     {
         final DataTypeCode dataType = pt.getDataType().getCode();
         switch (dataType)
@@ -66,7 +68,7 @@ public class PropertyFieldFactory
                 return new RealField(label, isMandatory);
             case MATERIAL:
                 return MaterialChooserField.create(label, isMandatory, pt.getMaterialType(),
-                        viewContext);
+                        originalRawValue, viewContext);
         }
         throw new IllegalStateException("unknown enum " + dataType);
     }
-- 
GitLab