From f89d87dbd28c82d5472ef344fb32c9d0f3e88cba Mon Sep 17 00:00:00 2001
From: izabel <izabel>
Date: Mon, 15 Feb 2010 13:21:51 +0000
Subject: [PATCH] [LMS-1381] show entity identifier (instead of code) in
 properties grid

SVN: 14736
---
 .../ui/PropertyValueRenderers.java            | 47 +++++++++++--------
 ...EntityInformationHolderWithIdentifier.java | 28 +++++++++++
 .../generic/shared/basic/dto/Experiment.java  |  6 +--
 .../shared/basic/dto/ExternalData.java        |  6 +--
 .../generic/shared/basic/dto/Material.java    |  6 +--
 .../generic/shared/basic/dto/Sample.java      |  6 +--
 .../web/client/application/ProteinViewer.java |  3 +-
 7 files changed, 70 insertions(+), 32 deletions(-)
 create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
index 59ce46e3645..6003ffa1feb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
@@ -16,6 +16,11 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui;
 
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineHTML;
+import com.google.gwt.user.client.ui.Widget;
+
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.VocabularyPropertyColRenderer;
@@ -30,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore;
@@ -48,11 +54,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.InlineHTML;
-import com.google.gwt.user.client.ui.Widget;
-
 /**
  * Some {@link IPropertyValueRenderer} implementations.
  * 
@@ -93,17 +94,6 @@ public final class PropertyValueRenderers
         return new EntityInformationHolderPropertyValueRenderer<ExternalData>(viewContext);
     }
 
-    /**
-     * Creates a {@link IPropertyValueRenderer} implementation for rendering any
-     * {@link IEntityInformationHolder}.
-     */
-    public final static IPropertyValueRenderer<IEntityInformationHolder> createEntityInformationPropertyValueRenderer(
-            final IViewContext<?> viewContext)
-    {
-        return new EntityInformationHolderPropertyValueRenderer<IEntityInformationHolder>(
-                viewContext);
-    }
-
     /**
      * Creates a {@link IPropertyValueRenderer} implementation for rendering {@link SampleType}.
      */
@@ -377,12 +367,25 @@ public final class PropertyValueRenderers
         }
     }
 
+    static class InvalidationFactory
+    {
+        static boolean isInvalid(IInvalidationProvider invalidable)
+        {
+            return invalidable.getInvalidation() != null;
+        }
+
+        static boolean isInvalid(Object object)
+        {
+            return false;
+        }
+    }
+
     /**
      * Renderer for {@link IEntityInformationHolder}.
      * 
      * @author Piotr Buczek
      */
-    public static class EntityInformationHolderPropertyValueRenderer<T extends IEntityInformationHolder>
+    public static class EntityInformationHolderPropertyValueRenderer<T extends IEntityInformationHolderWithIdentifier>
             extends AbstractPropertyValueRenderer<T>
     {
 
@@ -400,11 +403,12 @@ public final class PropertyValueRenderers
 
         public FlowPanel getAsWidget(final T entity)
         {
-            final String code = entity.getCode();
+            final String displayText = getDisplayText(entity);
+
             final boolean invalidate = getInvalidate(entity);
             final ClickHandler listener =
                     new OpenEntityDetailsTabClickListener(entity, viewContext);
-            final Widget link = LinkRenderer.getLinkWidget(code, listener, invalidate);
+            final Widget link = LinkRenderer.getLinkWidget(displayText, listener, invalidate);
 
             // putting link into a panel makes it a block/row
             // which is important if they are rendered as an array
@@ -413,6 +417,11 @@ public final class PropertyValueRenderers
             return panel;
         }
 
+        protected String getDisplayText(final T entity)
+        {
+            return entity.getIdentifier();
+        }
+
         private boolean getInvalidate(final T entity)
         {
             if (entity instanceof IInvalidationProvider)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java
new file mode 100644
index 00000000000..37b62906677
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2008 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;
+
+/**
+ * Contains the information stored in both {@link IIdentifierHolder} and
+ * {@link IEntityInformationHolder}.
+ * 
+ * @author Izabela Adamczyk
+ */
+public interface IEntityInformationHolderWithIdentifier extends IIdentifierHolder,
+        IEntityInformationHolder
+{
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
index 8750007a7b3..e479b3cc26a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
@@ -20,7 +20,7 @@ import java.util.Date;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.IAttachmentHolder;
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -31,8 +31,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Tomasz Pylak
  */
 public class Experiment extends CodeWithRegistration<Experiment> implements IInvalidationProvider,
-        IEntityInformationHolder, IAttachmentHolder, IEntityPropertiesHolder, IIdentifiable,
-        IPermIdHolder
+        IEntityInformationHolderWithIdentifier, IAttachmentHolder, IEntityPropertiesHolder,
+        IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
index 4515c2e6dd1..ef92a22390a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -32,8 +32,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Christian Ribeaud
  */
 public class ExternalData extends CodeWithRegistration<ExternalData> implements
-        IInvalidationProvider, IEntityInformationHolder, IEntityPropertiesHolder, IIdentifiable,
-        IPermIdHolder
+        IInvalidationProvider, IEntityInformationHolderWithIdentifier, IEntityPropertiesHolder,
+        IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
index 6e36dd9b3cf..6c40e519df4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 import java.util.Date;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 
 /**
@@ -27,8 +27,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
  * 
  * @author Izabela Adamczyk
  */
-public class Material extends CodeWithRegistration<Material> implements IEntityInformationHolder,
-        IEntityPropertiesHolder, IIdentifiable
+public class Material extends CodeWithRegistration<Material> implements
+        IEntityInformationHolderWithIdentifier, IEntityPropertiesHolder, IIdentifiable
 {
 
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
index 6af8469c4b1..ee49b699d2f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import ch.systemsx.cisd.common.annotation.CollectionMapping;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IAttachmentHolder;
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -33,8 +33,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Izabela Adamczyk
  */
 public final class Sample extends CodeWithRegistration<Sample> implements IInvalidationProvider,
-        Comparable<Sample>, IEntityInformationHolder, IAttachmentHolder, IEntityPropertiesHolder,
-        IIdentifiable, IPermIdHolder
+        Comparable<Sample>, IEntityInformationHolderWithIdentifier, IAttachmentHolder,
+        IEntityPropertiesHolder, IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
index 9396c0dd122..461b125e01c 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
@@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Abstrac
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
@@ -259,7 +260,7 @@ public class ProteinViewer extends AbstractViewer<IEntityInformationHolder> impl
         return result;
     }
 
-    public static class DatasetInformationHolder implements IEntityInformationHolder
+    public static class DatasetInformationHolder implements IEntityInformationHolderWithIdentifier
     {
         private final ProteinDetails proteinDetails;
 
-- 
GitLab