From 37ca30e448610d908aa28085eaed2e52757a4f3a Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 11 Jan 2011 11:01:39 +0000
Subject: [PATCH] [LMS-1982] fix & refactoring

SVN: 19350
---
 .../application/model/BaseEntityModel.java    | 37 +++++-------------
 .../ui/attachment/AttachmentBrowser.java      |  7 +++-
 .../PropertyTypeAssignmentGrid.java           | 13 ++++---
 .../ui/property_type/PropertyTypeGrid.java    | 22 ++++++-----
 .../ui/vocabulary/VocabularyTermGrid.java     | 39 +++++++------------
 5 files changed, 50 insertions(+), 68 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
index 945fe76f9d7..b040030c6c2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java
@@ -30,7 +30,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
-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.GridRowModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
@@ -49,8 +48,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 public class BaseEntityModel<T> extends SimplifiedBaseModelData
 {
     private static final long serialVersionUID = 1L;
-    
-    public static <T> BaseEntityModel<T> create(GridRowModel<T> entity, List<IColumnDefinitionUI<T>> columnDefinitions)
+
+    public static <T> BaseEntityModel<T> create(GridRowModel<T> entity,
+            List<IColumnDefinitionUI<T>> columnDefinitions)
     {
         return null;
     }
@@ -67,7 +67,7 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData
     {
         this(entity, columnDefinitions, false);
     }
-    
+
     public BaseEntityModel(final GridRowModel<T> entity,
             List<? extends IColumnDefinition<T>> columnDefinitions, boolean ignoreCustomColumns)
     {
@@ -108,18 +108,12 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData
         return get(ModelDataPropertyNames.link(columnId));
     }
 
-    /** render specified column as a link (using div) */
-    public void renderAsLink(String columnId)
-    {
-        String value = this.get(columnId);
-        if (value.length() > 0)
-        {// only for not null value
-            value = LinkRenderer.renderAsLink(value);
-        }
-        this.set(columnId, value);
-    }
-
-    /** render specified column as a link with anchor */
+    /**
+     * render specified column as a link with anchor
+     * 
+     * @deprecated use cell renderer configured in AbstractBrowser.createColumnDefinitions() instead
+     */
+    @Deprecated
     public void renderAsLinkWithAnchor(String columnId)
     {
         String value = this.get(columnId);
@@ -130,17 +124,6 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData
         this.set(columnId, value);
     }
 
-    /** render specified column as a multiline string with a tooltip (no word wrapping available) */
-    public void renderAsMultilineStringWithTooltip(String columnId)
-    {
-        String value = this.get(columnId);
-        if (value.length() > 0)
-        {// only for not null value
-            value = new MultilineHTML(value).toString();
-        }
-        this.set(columnId, value);
-    }
-
     // TODO 2010-05-18, IA: unify renderers and remove code below
     // ugly, ugly, ugly!
     protected String renderColumnValue(final GridRowModel<T> entity, IColumnDefinition<T> column)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
index ca1c41cedc7..b9f509ecbd1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
@@ -65,6 +65,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Abstrac
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.ColumnConfigFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.AttachmentColDefKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.EntityTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DescriptionField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.file.AttachmentFileUploadField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
@@ -123,7 +124,8 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
             attachmentFileUploadField = new AttachmentFileUploadField(viewContext);
             attachmentFileUploadField.addFieldsTo(form, sessionKey, viewContext);
             AbstractRegistrationForm.addFileUploadFeature(form, Arrays.asList(sessionKey));
-            form.addListener(Events.Submit, new FormPanelListener(PopupDialogBasedInfoHandler.INSTANCE)
+            form.addListener(Events.Submit, new FormPanelListener(
+                    PopupDialogBasedInfoHandler.INSTANCE)
                 {
                     @Override
                     protected void setUploadEnabled()
@@ -222,6 +224,8 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
         ColumnDefsAndConfigs<AttachmentVersions> schema = super.createColumnsDefinition();
         schema.setGridCellRendererFor(AttachmentColDefKind.PERMLINK.id(),
                 LinkRenderer.createExternalLinkRenderer(viewContext.getMessage(Dict.PERMLINK)));
+        schema.setGridCellRendererFor(EntityTypeColDefKind.DESCRIPTION.id(),
+                createMultilineStringCellRenderer());
         return schema;
     }
 
@@ -428,7 +432,6 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
     {
         BaseEntityModel<AttachmentVersions> model = super.createModel(entity);
         model.renderAsLinkWithAnchor(AttachmentColDefKind.FILE_NAME.id());
-        model.renderAsMultilineStringWithTooltip(AttachmentColDefKind.DESCRIPTION.id());
         renderVersionAsLink(model);
         return model;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
index c07c9b67f49..62d2de85038 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
@@ -43,11 +43,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.EntityTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CheckBoxField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.PropertyFieldFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ScriptChooserField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog;
@@ -57,7 +59,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDele
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
-import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -451,12 +452,12 @@ public class PropertyTypeAssignmentGrid extends
     }
 
     @Override
-    protected BaseEntityModel<EntityTypePropertyType<?>> createModel(
-            GridRowModel<EntityTypePropertyType<?>> entity)
+    protected ColumnDefsAndConfigs<EntityTypePropertyType<?>> createColumnsDefinition()
     {
-        BaseEntityModel<EntityTypePropertyType<?>> model = super.createModel(entity);
-        model.renderAsMultilineStringWithTooltip(PropertyTypeAssignmentColDefKind.DESCRIPTION.id());
-        return model;
+        ColumnDefsAndConfigs<EntityTypePropertyType<?>> schema = super.createColumnsDefinition();
+        schema.setGridCellRendererFor(EntityTypeColDefKind.DESCRIPTION.id(),
+                createMultilineStringCellRenderer());
+        return schema;
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
index 47450a03a8f..5e6ed8f8cef 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
@@ -28,6 +28,7 @@ import com.extjs.gxt.ui.client.widget.MessageBox;
 import com.extjs.gxt.ui.client.widget.Window;
 import com.extjs.gxt.ui.client.widget.button.Button;
 import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
@@ -39,12 +40,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.PropertyTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DescriptionField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.XmlField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog;
@@ -53,12 +54,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
-import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 
 /**
  * Grid displaying property types.
@@ -243,13 +243,17 @@ public class PropertyTypeGrid extends AbstractSimpleBrowserGrid<PropertyType>
     }
 
     @Override
-    protected PropertyTypeModel createModel(GridRowModel<PropertyType> entity)
+    protected ColumnDefsAndConfigs<PropertyType> createColumnsDefinition()
     {
-        PropertyTypeModel model = new PropertyTypeModel(entity, getStaticColumnsDefinition());
-        model.renderAsMultilineStringWithTooltip(PropertyTypeColDefKind.DESCRIPTION.id());
-        model.renderAsMultilineStringWithTooltip(PropertyTypeColDefKind.SCHEMA.id());
-        model.renderAsMultilineStringWithTooltip(PropertyTypeColDefKind.TRANSFORMATION.id());
-        return model;
+        ColumnDefsAndConfigs<PropertyType> schema = super.createColumnsDefinition();
+        GridCellRenderer<BaseEntityModel<?>> multilineCellRenderer =
+                createMultilineStringCellRenderer();
+        schema.setGridCellRendererFor(PropertyTypeColDefKind.DESCRIPTION.id(),
+                multilineCellRenderer);
+        schema.setGridCellRendererFor(PropertyTypeColDefKind.SCHEMA.id(), multilineCellRenderer);
+        schema.setGridCellRendererFor(PropertyTypeColDefKind.TRANSFORMATION.id(),
+                multilineCellRenderer);
+        return schema;
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
index 3a6cd5812a8..f882e8241a3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
@@ -72,7 +72,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet;
-import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
@@ -129,33 +128,26 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
     private VocabularyTermGrid(IViewContext<ICommonClientServiceAsync> viewContext,
             Vocabulary vocabulary)
     {
-        super(viewContext, createBrowserId(vocabulary), true, 
+        super(viewContext, createBrowserId(vocabulary), true,
                 DisplayTypeIDGenerator.VOCABULARY_TERMS_GRID);
         this.vocabulary = vocabulary;
         this.postRegistrationCallback = createRefreshGridAction();
         extendBottomToolbar();
 
     }
-    
+
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<VocabularyTermWithStats>> createColumnsDefinition()
     {
         ColumnDefsAndConfigs<TableModelRowWithObject<VocabularyTermWithStats>> definitions =
                 super.createColumnsDefinition();
-        definitions.setGridCellRendererFor(VocabularyTermGridIDs.URL, LinkRenderer
-                .createExternalLinkRenderer());
+        definitions.setGridCellRendererFor(VocabularyTermGridIDs.URL,
+                LinkRenderer.createExternalLinkRenderer());
+        definitions.setGridCellRendererFor(VocabularyTermGridIDs.DESCRIPTION,
+                createMultilineStringCellRenderer());
         return definitions;
     }
 
-    @Override
-    protected BaseEntityModel<TableModelRowWithObject<VocabularyTermWithStats>> createModel(
-            GridRowModel<TableModelRowWithObject<VocabularyTermWithStats>> entity)
-    {
-        BaseEntityModel<TableModelRowWithObject<VocabularyTermWithStats>> model = super.createModel(entity);
-        model.renderAsMultilineStringWithTooltip(VocabularyTermGridIDs.DESCRIPTION);
-        return model;
-    }
-
     private void extendBottomToolbar()
     {
         addEntityOperationsLabel();
@@ -184,7 +176,8 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
         addButton(batchUpdateButton);
 
         Button editButton =
-                createSelectedItemButton(viewContext.getMessage(Dict.EDIT_VOCABULARY_TERM_BUTTON),
+                createSelectedItemButton(
+                        viewContext.getMessage(Dict.EDIT_VOCABULARY_TERM_BUTTON),
                         new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<VocabularyTermWithStats>>>()
                             {
 
@@ -200,8 +193,8 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
         addButton(editButton);
 
         Button deleteButton =
-                createSelectedItemsButton(viewContext
-                        .getMessage(Dict.DELETE_VOCABULARY_TERMS_BUTTON),
+                createSelectedItemsButton(
+                        viewContext.getMessage(Dict.DELETE_VOCABULARY_TERMS_BUTTON),
                         new SelectionListener<ButtonEvent>()
                             {
                                 @Override
@@ -332,7 +325,6 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
         return BROWSER_ID + "-" + vocabularyId;
     }
 
-
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<VocabularyTermWithStats>> resultSetConfig,
@@ -354,7 +346,7 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
     {
         return columnID.startsWith("TERM") ? columnID : columnID.toLowerCase();
     }
-    
+
     private Window createUpdateTermsDialog()
     {
         final String title =
@@ -363,8 +355,8 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
         return new AbstractRegistrationDialog(viewContext, title, postRegistrationCallback)
             {
 
-                public static final String ID =
-                        GenericConstants.ID_PREFIX + "vocabulary-content-edit_" + "form";
+                public static final String ID = GenericConstants.ID_PREFIX
+                        + "vocabulary-content-edit_" + "form";
 
                 protected final String termsSessionKey;
 
@@ -563,8 +555,6 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
             };
     }
 
-    
-
     @Override
     protected List<String> getColumnIdsOfFilters()
     {
@@ -590,7 +580,8 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
 
     private void deleteTerms()
     {
-        List<BaseEntityModel<TableModelRowWithObject<VocabularyTermWithStats>>> terms = getSelectedItems();
+        List<BaseEntityModel<TableModelRowWithObject<VocabularyTermWithStats>>> terms =
+                getSelectedItems();
         if (terms.isEmpty())
         {
             return;
-- 
GitLab