From c2333740179d2c86a4cdce5955ab4c001e3e2dd9 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Fri, 3 Apr 2009 07:57:45 +0000
Subject: [PATCH] LMS-830 material details in search results and material
 browser. LMS-811 refresh sample/material browser when new property is
 assigned.

SVN: 10555
---
 .../application/MatchingEntitiesPanel.java    |  3 ++-
 .../experiment/ExperimentBrowserToolbar.java  |  7 +++--
 .../ui/material/MaterialBrowserGrid.java      |  8 ++++++
 .../ui/material/MaterialBrowserToolbar.java   |  7 +++--
 .../ui/sample/SampleBrowserGrid.java          |  1 +
 .../ui/sample/SampleBrowserToolbar.java       |  7 +++--
 .../client/web/client/dto/MatchingEntity.java | 26 +++++++++++++++----
 7 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
index 1231eb9606d..11ab42b30be 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
@@ -116,7 +116,8 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma
                         matchingEntity.getEntityType());
         final IClientPlugin<EntityType, EntityTypePropertyType<EntityType>, EntityProperty<EntityType, EntityTypePropertyType<EntityType>>, IIdentifierHolder, IEditableEntity<EntityType, EntityTypePropertyType<EntityType>, EntityProperty<EntityType, EntityTypePropertyType<EntityType>>>> createClientPlugin =
                 clientPluginFactory.createClientPlugin(entityKind);
-        final ITabItemFactory tabView = createClientPlugin.createEntityViewer(matchingEntity);
+        final ITabItemFactory tabView =
+                createClientPlugin.createEntityViewer(matchingEntity.asIdentifierHolder());
         DispatcherHelper.dispatchNaviEvent(tabView);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
index 14640f93fc4..b9fb5d96d2e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
@@ -112,12 +112,15 @@ class ExperimentBrowserToolbar extends ToolBar implements IDatabaseModificationO
     public DatabaseModificationKind[] getRelevantModifications()
     {
         return new DatabaseModificationKind[]
-            { createOrDelete(ObjectKind.EXPERIMENT_TYPE), createOrDelete(ObjectKind.PROJECT) };
+            { createOrDelete(ObjectKind.EXPERIMENT_TYPE), createOrDelete(ObjectKind.PROJECT),
+                    createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
     }
 
     public void update(Set<DatabaseModificationKind> observedModifications)
     {
-        if (observedModifications.contains(createOrDelete(ObjectKind.EXPERIMENT_TYPE)))
+        if (observedModifications.contains(createOrDelete(ObjectKind.EXPERIMENT_TYPE))
+                || observedModifications
+                        .contains(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)))
         {
             selectExperimentTypeCombo.refreshStore();
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
index 354364a5085..f80b32c0261 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
@@ -29,6 +29,7 @@ import com.extjs.gxt.ui.client.widget.LayoutContainer;
 import com.extjs.gxt.ui.client.widget.button.Button;
 import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem;
 import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
+import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
@@ -203,6 +204,12 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM
 
         if (detailsAvailable)
         {
+            String showDetailsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS);
+            Button showDetailsButton =
+                    createSelectedItemButton(showDetailsTitle, asShowEntityInvoker(false));
+            toolbar.add(new AdapterToolItem(showDetailsButton));
+            toolbar.add(new SeparatorToolItem());
+
             String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT);
             Button editButton = createSelectedItemButton(editTitle, asShowEntityInvoker(true));
             toolbar.add(new AdapterToolItem(editButton));
@@ -341,6 +348,7 @@ public class MaterialBrowserGrid extends AbstractBrowserGrid<Material, MaterialM
         Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>();
         result.add(createOrDelete(ObjectKind.MATERIAL));
         result.add(edit(ObjectKind.MATERIAL));
+        result.add(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT));
         return result;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
index 67b632cb365..ac0ba4587ed 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserToolbar.java
@@ -91,12 +91,15 @@ class MaterialBrowserToolbar extends ToolBar implements IDatabaseModificationObs
     public DatabaseModificationKind[] getRelevantModifications()
     {
         return new DatabaseModificationKind[]
-            { createOrDelete(ObjectKind.MATERIAL_TYPE) };
+            { createOrDelete(ObjectKind.MATERIAL_TYPE),
+                    createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
     }
 
     public void update(Set<DatabaseModificationKind> observedModifications)
     {
-        if (observedModifications.contains(createOrDelete(ObjectKind.MATERIAL_TYPE)))
+        if (observedModifications.contains(createOrDelete(ObjectKind.MATERIAL_TYPE))
+                || observedModifications
+                        .contains(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)))
         {
             selectMaterialTypeCombo.update(observedModifications);
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
index 41838a324e1..d6bcff35482 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
@@ -348,6 +348,7 @@ public final class SampleBrowserGrid extends AbstractBrowserGrid<Sample, SampleM
         Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>();
         result.add(createOrDelete(ObjectKind.SAMPLE));
         result.add(edit(ObjectKind.SAMPLE));
+        result.add(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT));
         return result;
     }
 
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 c02c04beb71..64977add64c 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
@@ -120,12 +120,15 @@ final class SampleBrowserToolbar extends ToolBar implements IDatabaseModificatio
     public DatabaseModificationKind[] getRelevantModifications()
     {
         return new DatabaseModificationKind[]
-            { createOrDelete(ObjectKind.SAMPLE_TYPE), createOrDelete(ObjectKind.GROUP) };
+            { createOrDelete(ObjectKind.SAMPLE_TYPE), createOrDelete(ObjectKind.GROUP),
+                    createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
     }
 
     public void update(Set<DatabaseModificationKind> observedModifications)
     {
-        if (observedModifications.contains(createOrDelete(ObjectKind.SAMPLE_TYPE)))
+        if (observedModifications.contains(createOrDelete(ObjectKind.SAMPLE_TYPE))
+                || observedModifications
+                        .contains(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)))
         {
             selectSampleTypeCombo.refreshStore();
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntity.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntity.java
index c1c5b3f30d4..3473b651f65 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntity.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/MatchingEntity.java
@@ -21,6 +21,7 @@ import com.google.gwt.user.client.rpc.IsSerializable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 
 /**
@@ -29,7 +30,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
  * 
  * @author Christian Ribeaud
  */
-public final class MatchingEntity implements IsSerializable, IIdentifierHolder
+public final class MatchingEntity implements IsSerializable
 {
     private String identifier;
 
@@ -98,15 +99,29 @@ public final class MatchingEntity implements IsSerializable, IIdentifierHolder
         this.textFragment = textFragment;
     }
 
-    //
-    // IIdentifierHolder
-    //
-
     public final String getIdentifier()
     {
         return identifier;
     }
 
+    public IIdentifierHolder asIdentifierHolder()
+    {
+        final String ident = getIdentifier();
+        return new IIdentifierHolder()
+            {
+                public String getIdentifier()
+                {
+                    if (getEntityKind() == EntityKind.MATERIAL)
+                    {
+                        return new MaterialIdentifier(ident, getEntityType().getCode()).print();
+                    } else
+                    {
+                        return ident;
+                    }
+                }
+            };
+    }
+
     //
     // Object
     //
@@ -116,4 +131,5 @@ public final class MatchingEntity implements IsSerializable, IIdentifierHolder
     {
         return getIdentifier();
     }
+
 }
-- 
GitLab