From d1f520f4fa290761f8c703c8c99708117ecabc44 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Tue, 27 Oct 2009 12:38:45 +0000
Subject: [PATCH] bugfix: refresh sample browser toolbar after sample type
 update (isListable field can influence the view)

SVN: 13085
---
 .../ui/data/AbstractExternalDataGrid.java       |  4 +---
 .../ui/sample/SampleBrowserToolbar.java         | 17 ++++++++++++-----
 .../basic/dto/DatabaseModificationKind.java     |  8 ++++++++
 3 files changed, 21 insertions(+), 8 deletions(-)

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 4242a63e5bd..fd6e7ffe34d 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
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data;
 
-import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete;
 import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit;
 
 import java.util.List;
@@ -375,8 +374,7 @@ public abstract class AbstractExternalDataGrid
                 getGridRelevantModifications(ObjectKind.DATA_SET);
         relevantMods.add(edit(ObjectKind.EXPERIMENT));
         relevantMods.add(edit(ObjectKind.SAMPLE));
-        relevantMods.add(edit(ObjectKind.VOCABULARY_TERM));
-        relevantMods.add(createOrDelete(ObjectKind.VOCABULARY_TERM));
+        DatabaseModificationKind.addAny(relevantMods, ObjectKind.VOCABULARY_TERM);
         return relevantMods;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java
index db970b212bd..e33181cfc3d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserToolbar.java
@@ -146,7 +146,8 @@ final class SampleBrowserToolbar extends ToolBar implements ISampleCriteriaProvi
     public DatabaseModificationKind[] getRelevantModifications()
     {
         return new DatabaseModificationKind[]
-            { createOrDelete(ObjectKind.SAMPLE_TYPE), createOrDelete(ObjectKind.GROUP),
+            { createOrDelete(ObjectKind.SAMPLE_TYPE), edit(ObjectKind.SAMPLE_TYPE),
+                    createOrDelete(ObjectKind.GROUP),
                     createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT),
                     edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
     }
@@ -154,10 +155,9 @@ final class SampleBrowserToolbar extends ToolBar implements ISampleCriteriaProvi
     public void update(Set<DatabaseModificationKind> observedModifications,
             IDataRefreshCallback entityTypeRefreshCallback)
     {
-        if (observedModifications.contains(createOrDelete(ObjectKind.SAMPLE_TYPE))
-                || observedModifications
-                        .contains(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT))
-                || observedModifications.contains(edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)))
+        if (containsAnyModificationsOf(observedModifications, ObjectKind.SAMPLE_TYPE)
+                || containsAnyModificationsOf(observedModifications,
+                        ObjectKind.PROPERTY_TYPE_ASSIGNMENT))
         {
             selectSampleTypeCombo.refreshStore(entityTypeRefreshCallback);
         } else
@@ -171,6 +171,13 @@ final class SampleBrowserToolbar extends ToolBar implements ISampleCriteriaProvi
 
     }
 
+    private boolean containsAnyModificationsOf(Set<DatabaseModificationKind> observedModifications,
+            ObjectKind objectKind)
+    {
+        return observedModifications.contains(createOrDelete(objectKind))
+                || observedModifications.contains(edit(objectKind));
+    }
+
     public void setEntityTypes(Set<SampleType> availableEntityTypes)
     {
         // TODO 2009-08-27, Tomasz Pylak: use this info to narrow properties when displaying "all"
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseModificationKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseModificationKind.java
index a2648932dfe..d9736088358 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseModificationKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseModificationKind.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import com.google.gwt.user.client.rpc.IsSerializable;
@@ -55,6 +56,13 @@ public class DatabaseModificationKind implements IsSerializable
     {
     }
 
+    public static final void addAny(Collection<DatabaseModificationKind> result,
+            ObjectKind objectType)
+    {
+        result.add(createOrDelete(objectType));
+        result.add(edit(objectType));
+    }
+
     public static final DatabaseModificationKind[] any(ObjectKind objectType)
     {
         List<DatabaseModificationKind> result = new ArrayList<DatabaseModificationKind>();
-- 
GitLab