From db68fcdc837ba18568ea2ac65e0729ae76924acc Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Mon, 12 Oct 2009 17:14:32 +0000
Subject: [PATCH] [LMS-1211] added tooltips for entity type choosers

SVN: 12904
---
 .../application/model/DataSetTypeModel.java   |  2 +
 .../model/ExperimentTypeModel.java            |  3 ++
 .../application/model/MaterialTypeModel.java  |  2 +
 .../application/model/SampleTypeModel.java    |  2 +
 .../renderer/EntityTypeTooltipRenderer.java   | 41 +++++++++++++++++++
 .../ui/data/DataSetTypeSelectionWidget.java   |  3 ++
 .../ExperimentTypeSelectionWidget.java        |  4 ++
 .../field/VocabularyTermSelectionWidget.java  | 13 +-----
 .../material/MaterialTypeSelectionWidget.java |  3 ++
 .../ui/sample/SampleTypeSelectionWidget.java  |  3 ++
 .../web/client/application/util/GWTUtils.java | 16 ++++++++
 11 files changed, 80 insertions(+), 12 deletions(-)
 create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/EntityTypeTooltipRenderer.java

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/DataSetTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/DataSetTypeModel.java
index ee22e03243c..94371c0f7c8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/DataSetTypeModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/DataSetTypeModel.java
@@ -22,6 +22,7 @@ import java.util.List;
 import com.extjs.gxt.ui.client.data.BaseModelData;
 import com.extjs.gxt.ui.client.data.ModelData;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.EntityTypeTooltipRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 
 /**
@@ -38,6 +39,7 @@ public class DataSetTypeModel extends BaseModelData
     {
         set(ModelDataPropertyNames.CODE, dataSetType.getCode());
         set(ModelDataPropertyNames.OBJECT, dataSetType);
+        set(ModelDataPropertyNames.TOOLTIP, EntityTypeTooltipRenderer.renderAsTooltip(dataSetType));
     }
 
     public final static List<DataSetTypeModel> convert(final List<DataSetType> dataSetTypes)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentTypeModel.java
index e42e300f60a..4d910896cd3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentTypeModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/ExperimentTypeModel.java
@@ -24,6 +24,7 @@ import java.util.Set;
 import com.extjs.gxt.ui.client.data.BaseModelData;
 import com.extjs.gxt.ui.client.data.ModelData;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.EntityTypeTooltipRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyType;
@@ -42,6 +43,8 @@ public class ExperimentTypeModel extends BaseModelData
     {
         set(ModelDataPropertyNames.CODE, experimentType.getCode());
         set(ModelDataPropertyNames.OBJECT, experimentType);
+        set(ModelDataPropertyNames.TOOLTIP, EntityTypeTooltipRenderer
+                .renderAsTooltip(experimentType));
     }
 
     public final static List<ExperimentTypeModel> convert(
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MaterialTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MaterialTypeModel.java
index 5d5b23436f9..1ec9da71763 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MaterialTypeModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/MaterialTypeModel.java
@@ -22,6 +22,7 @@ import java.util.List;
 import com.extjs.gxt.ui.client.data.BaseModelData;
 import com.extjs.gxt.ui.client.data.ModelData;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.EntityTypeTooltipRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 
 /**
@@ -37,6 +38,7 @@ public class MaterialTypeModel extends BaseModelData
     public MaterialTypeModel(final MaterialType type)
     {
         this(type.getCode(), type);
+        set(ModelDataPropertyNames.TOOLTIP, EntityTypeTooltipRenderer.renderAsTooltip(type));
     }
 
     private static MaterialTypeModel createNone(String label)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleTypeModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleTypeModel.java
index d90879c256a..7e02732c132 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleTypeModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleTypeModel.java
@@ -22,6 +22,7 @@ import java.util.List;
 import com.extjs.gxt.ui.client.data.BaseModelData;
 import com.extjs.gxt.ui.client.data.ModelData;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.EntityTypeTooltipRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 
 /**
@@ -38,6 +39,7 @@ public class SampleTypeModel extends BaseModelData
     {
         set(ModelDataPropertyNames.CODE, sampleType.getCode());
         set(ModelDataPropertyNames.OBJECT, sampleType);
+        set(ModelDataPropertyNames.TOOLTIP, EntityTypeTooltipRenderer.renderAsTooltip(sampleType));
     }
 
     public final static List<SampleTypeModel> convert(final List<SampleType> sampleTypes,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/EntityTypeTooltipRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/EntityTypeTooltipRenderer.java
new file mode 100644
index 00000000000..ba7e909adcd
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/EntityTypeTooltipRenderer.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2009 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.model.renderer;
+
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
+
+/**
+ * A renderer for tooltips entity type tooltips (used in drop down lists).
+ * 
+ * @author Piotr Buczek
+ */
+public class EntityTypeTooltipRenderer
+{
+    public static final String renderAsTooltip(EntityType entityType)
+    {
+        final String code = entityType.getCode();
+        final String description = entityType.getDescription();
+        final StringBuilder sb = new StringBuilder();
+        sb.append("<b>" + code + "</b>");
+        if (description != null)
+        {
+            sb.append("<br><hr>description: <i>" + description + "</i>");
+        }
+        return sb.toString();
+    }
+
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeSelectionWidget.java
index 2faed567dc8..5d97708a220 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeSelectionWidget.java
@@ -27,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.DataSetTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -48,6 +49,8 @@ public final class DataSetTypeSelectionWidget extends DropDownList<DataSetTypeMo
         super(viewContext, SUFFIX + idSuffix, Dict.DATA_SET_TYPE, ModelDataPropertyNames.CODE,
                 "data set type", "data set types");
         this.viewContext = viewContext;
+        setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE,
+                ModelDataPropertyNames.TOOLTIP));
     }
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
index 618e0d0e8b5..0d399050a8f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
@@ -27,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -53,6 +54,8 @@ public final class ExperimentTypeSelectionWidget extends
         this.viewContext = viewContext;
         this.withAll = withAll;
         setAutoSelectFirst(withAll);
+        setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE,
+                ModelDataPropertyNames.TOOLTIP));
     }
 
     public ExperimentTypeSelectionWidget(final IViewContext<ICommonClientServiceAsync> viewContext,
@@ -87,4 +90,5 @@ public final class ExperimentTypeSelectionWidget extends
     {
         return DatabaseModificationKind.any(ObjectKind.EXPERIMENT_TYPE);
     }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
index ced262fff31..768eea23ed2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
@@ -87,7 +87,7 @@ public class VocabularyTermSelectionWidget extends
         {
             setTerms(termsOrNull);
         }
-        setTemplate(getTooltipTemplate(ModelDataPropertyNames.CODE_WITH_LABEL,
+        setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE_WITH_LABEL,
                 ModelDataPropertyNames.TOOLTIP));
     }
 
@@ -162,15 +162,4 @@ public class VocabularyTermSelectionWidget extends
         }
     }
 
-    private native String getTooltipTemplate(String displayField, String tooltipField) /*-{ 
-                   return  [ 
-                   '<tpl for=".">', 
-                   '<div class="x-combo-list-item" qtip="{[values.',
-                   tooltipField,
-                   ']}">{[values.',
-                   displayField,
-                   ']}</div>', 
-                   '</tpl>' 
-                   ].join(""); 
-                 }-*/;
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
index da02c2d78e2..2eab360a923 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeSelectionWidget.java
@@ -27,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.MaterialTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -82,6 +83,8 @@ public final class MaterialTypeSelectionWidget extends
                 "material type", "material types");
         this.viewContext = viewContext;
         this.additionalOptionLabelOrNull = additionalOptionLabelOrNull;
+        setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE,
+                ModelDataPropertyNames.TOOLTIP));
     }
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeSelectionWidget.java
index 735f502bf94..1eafe07a778 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeSelectionWidget.java
@@ -26,6 +26,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -57,6 +58,8 @@ public final class SampleTypeSelectionWidget extends DropDownList<SampleTypeMode
         this.withAll = withAll;
         this.withTypeInFile = withTypeInFile;
         setAutoSelectFirst(withAll);
+        setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE,
+                ModelDataPropertyNames.TOOLTIP));
     }
 
     public SampleTypeSelectionWidget(final IViewContext<?> viewContext, final String idSuffix,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
index de9a5cc0312..8106aa445af 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
@@ -269,4 +269,20 @@ public final class GWTUtils
         $wnd.allowConfirmOnExit = allowConfirmOnExit;
     }-*/;
 
+    /**
+     * Tooltip template displayed when mouse is over drop down list.
+     */
+    public final static native String getTooltipTemplate(String displayField, String tooltipField)
+    /*-{ 
+       return  [ 
+       '<tpl for=".">', 
+       '<div class="x-combo-list-item" qtip="{[values.',
+       tooltipField,
+       ']}">{[values.',
+       displayField,
+       ']}</div>', 
+       '</tpl>' 
+       ].join(""); 
+     }-*/;
+
 }
-- 
GitLab