You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/02/14 14:44:46 UTC

[2/3] git commit: ISIS-335: abbreviate title in collections.

ISIS-335: abbreviate title in collections.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b0e5a608
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b0e5a608
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b0e5a608

Branch: refs/heads/master
Commit: b0e5a608d58e36e181b41192bc08b7920f4bef37
Parents: 0de1eb4
Author: Dan Haywood <da...@apache.org>
Authored: Thu Feb 14 13:22:46 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Feb 14 13:22:46 2013 +0000

----------------------------------------------------------------------
 .../viewer/wicket/model/models/EntityModel.java    |   22 ++++++-
 .../columns/ObjectAdapterTitleColumn.java          |    4 +-
 .../entity/icontitle/EntityIconAndTitlePanel.java  |   51 +++++++++------
 .../ui/components/scalars/ScalarPanelAbstract.java |    2 +-
 .../widgets/entitylink/EntityLinkSelect2Panel.java |    4 +-
 5 files changed, 58 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b0e5a608/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 5d4103a..8a3b3c9 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -89,7 +89,27 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
 
     public enum RenderingHint {
         REGULAR,
-        COMPACT
+        COMPACT,
+        /**
+         * icon only
+         */
+        ULTRA_COMPACT;
+
+        public boolean isCompactOrUltraCompact() {
+            return isCompact() || isUltraCompact();
+        }
+
+        public boolean isRegular() {
+            return this == REGULAR;
+        }
+
+        public boolean isCompact() {
+            return this == COMPACT;
+        }
+
+        public boolean isUltraCompact() {
+            return this == ULTRA_COMPACT;
+        }
     }
 
 	public enum Mode {

http://git-wip-us.apache.org/repos/asf/isis/blob/b0e5a608/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
index 877e918..8cc24d4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
@@ -35,7 +35,7 @@ public class ObjectAdapterTitleColumn extends ColumnAbstract<ObjectAdapter> {
     private static final long serialVersionUID = 1L;
 
     public ObjectAdapterTitleColumn() {
-        super("Title"); // i18n
+        super("Object"); // i18n
     }
 
     @Override
@@ -47,7 +47,7 @@ public class ObjectAdapterTitleColumn extends ColumnAbstract<ObjectAdapter> {
     private Component createComponent(final String id, final IModel<ObjectAdapter> rowModel) {
         final ObjectAdapter adapter = rowModel.getObject();
         final EntityModel model = new EntityModel(adapter);
-        model.setRenderingHint(RenderingHint.COMPACT);
+        model.setRenderingHint(RenderingHint.ULTRA_COMPACT);
         final ComponentFactory componentFactory = findComponentFactory(ComponentType.ENTITY_LINK, model);
         return componentFactory.createComponent(id, model);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/b0e5a608/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index cd6bed2..29fad02 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -19,22 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
 
-import java.io.InputStream;
-
-import images.Images;
-
-import com.google.inject.Inject;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.request.resource.IResource;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
@@ -44,6 +28,15 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Links;
+import org.apache.wicket.Page;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.ResourceReference;
+
+import com.google.inject.Inject;
 
 /**
  * {@link PanelAbstract Panel} representing the icon and title of an entity,
@@ -51,6 +44,7 @@ import org.apache.isis.viewer.wicket.ui.util.Links;
  */
 public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
 
+
     private static final long serialVersionUID = 1L;
 
     private static final String ID_ENTITY_LINK_WRAPPER = "entityLinkWrapper";
@@ -58,6 +52,8 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
     private static final String ID_ENTITY_TITLE = "entityTitle";
     private static final String ID_ENTITY_ICON = "entityImage";
 
+    private static final int TITLE_MAX_LEN_IF_ULTRA_COMPACT = 12;
+
     private Label label;
     private Image image;
 
@@ -94,7 +90,8 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
         final Class<? extends Page> pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
         final AbstractLink link = newLink(ID_ENTITY_LINK, pageClass, pageParameters);
         
-        label = new Label(ID_ENTITY_TITLE, determineTitle());
+        String title = determineTitle();
+        label = new Label(ID_ENTITY_TITLE, title);
         link.add(label);
 
         final ResourceReference imageResource = imageCache.resourceReferenceFor(adapter);
@@ -113,10 +110,24 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
     }
 
     private String determineTitle() {
-        final ObjectAdapter adapter = getModel().getObject();
-         // TODO: i18n
-        return adapter != null ? adapter.titleString() : "(no object)";
+        EntityModel model = getModel();
+        final ObjectAdapter adapter = model.getObject();
+         if (adapter != null) {
+            String titleString = adapter.titleString();
+            if(model.getRenderingHint().isUltraCompact()) {
+                //return "";
+                return abbreviated(titleString, TITLE_MAX_LEN_IF_ULTRA_COMPACT);
+            }
+            return titleString;
+        } else {
+            return "(no object)";
+        }
     }
+    
+    private static String abbreviated(final String str, final int maxLength) {
+        return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "...";
+    }
+
 
     private AbstractLink newLink(final String linkId, final Class<? extends Page> pageClass, final PageParameters pageParameters) {
         return Links.newBookmarkablePageLink(linkId, pageParameters, pageClass);

http://git-wip-us.apache.org/repos/asf/isis/blob/b0e5a608/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 84b770b..7f70813 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -91,7 +91,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         public abstract Where getWhere();
 
         private static Rendering renderingFor(RenderingHint renderingHint) {
-            return renderingHint==RenderingHint.COMPACT? Rendering.COMPACT: Rendering.REGULAR;
+            return renderingHint.isCompactOrUltraCompact()? Rendering.COMPACT: Rendering.REGULAR;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/b0e5a608/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
index a239df0..6d2aa62 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
@@ -333,12 +333,14 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
 
     private void addOrReplaceIconAndTitle(ObjectAdapter pendingOrCurrentAdapter) {
         final EntityModel entityModelForLink = new EntityModel(pendingOrCurrentAdapter);
+        entityModelForLink.setRenderingHint(getEntityModel().getRenderingHint());
         final ComponentFactory componentFactory = getComponentFactoryRegistry().findComponentFactory(ComponentType.ENTITY_ICON_AND_TITLE, entityModelForLink);
         final Component component = componentFactory.createComponent(entityModelForLink);
         addOrReplace(component);
     }
 
 
+    @SuppressWarnings("unused")
     private static List<ObjectAction> findServiceActionsFor(final ObjectSpecification scalarTypeSpec) {
         final List<ObjectAction> actionList = Lists.newArrayList();
         addServiceActionsFor(scalarTypeSpec, ActionType.USER, actionList);
@@ -381,7 +383,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
     
     private boolean isEditableWithEitherAutoCompleteOrChoices() {
         // never doesn't apply in compact rendering contexts (ie tables)
-        if(getEntityModel().getRenderingHint() == RenderingHint.COMPACT) {
+        if(getEntityModel().getRenderingHint().isCompactOrUltraCompact()) {
             return false;
         }
         // doesn't apply if not editable, either