ISIS-537: minor fixes for menus.

1. scrollable menu if long
2. adding "top-menu-xxx" class to each top menu to allow application.css to 
apply targetted fixes if required (eg <ul class="pull-right" ...> if require 
right-align)
3. use Isis' CssClassAppender rather than Wicket's CssClassNameAppender 
(consistency in codebase)
4. removing unused code from PageAbstract


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

Branch: refs/heads/master
Commit: 07b42358756655e88e084f6847e5bfadcda4b122
Parents: b1e34c3
Author: Dan Haywood <[email protected]>
Authored: Thu Nov 20 12:16:34 2014 +0100
Committer: Dan Haywood <[email protected]>
Committed: Thu Nov 20 12:18:58 2014 +0100

----------------------------------------------------------------------
 .../widgets/cssmenu/ApplicationActionsPanel.css |  7 ++++
 .../cssmenu/ApplicationActionsPanel.html        |  2 +-
 .../cssmenu/ApplicationActionsPanel.java        | 15 ++++---
 .../viewer/wicket/ui/pages/PageAbstract.java    | 41 +++++++-------------
 .../viewer/wicket/ui/util/CssClassAppender.java |  3 ++
 .../wicket/ui/pages/PageAbstractTest.java       |  6 ++-
 6 files changed, 39 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
index b777dcd..9367e66 100644
--- 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
+++ 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
@@ -95,3 +95,10 @@
     border-radius: 0;
     color: initial;
 }
+
+.scrollable-menu {
+    min-width: 250px;
+    height: auto;
+    max-height: 600px;
+    overflow-x: hidden;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
index 0562067..3a6dd5d 100644
--- 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
+++ 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
@@ -4,7 +4,7 @@
         <wicket:panel>
             <li class="dropdown" wicket:id="menuItems">
                 <a href="javascript:;" class="dropdown-toggle" 
data-toggle="dropdown"><span wicket:id="name"></span> <span 
class="caret"></span></a>
-                <ul class="dropdown-menu multi-level" role="menu">
+                <ul wicket:id="topMenu" class="dropdown-menu scrollable-menu 
multi-level" role="menu">
                     <li wicket:id="subMenuItems">
                         <wicket:container 
wicket:id="content"></wicket:container>
                     </li>

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
index 48b34d4..d2c3f05 100644
--- 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
+++ 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
@@ -1,16 +1,17 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu;
 
-import 
de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipBehavior;
 import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.button.DropdownAutoOpenJavaScriptReference;
 
 import java.util.List;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
+import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -50,6 +51,10 @@ public class ApplicationActionsPanel extends Panel {
                 CssMenuItem menuItem = listItem.getModelObject();
                 listItem.add(new Label("name", menuItem.getName()));
 
+                MarkupContainer topMenu = new WebMarkupContainer("topMenu");
+
+                topMenu.add(new CssClassAppender("top-menu-" + 
CssClassAppender.asCssStyle(menuItem.getName())));
+                listItem.add(topMenu);
                 List<CssMenuItem> subMenuItems = withSeparators(menuItem);
 
 // fake data to test multi-level menus
@@ -75,7 +80,7 @@ public class ApplicationActionsPanel extends Panel {
                         }
                     }
                 };
-                listItem.add(subMenuItemsView);
+                topMenu.add(subMenuItemsView);
             }
         };
         add(menuItemsView);
@@ -139,13 +144,13 @@ public class ApplicationActionsPanel extends Panel {
             subMenuItemLink.addOrReplace(menuItemLabel);
 
             if (!menuItem.isEnabled()) {
-                listItem.add(new CssClassNameAppender("disabled"));
+                listItem.add(new CssClassAppender("disabled"));
                 subMenuItemLink.setEnabled(false);
                 TooltipBehavior tooltipBehavior = new 
TooltipBehavior(Model.of(menuItem.getDisabledReason()));
                 listItem.add(tooltipBehavior);
             }
             if (menuItem.isPrototyping()) {
-                subMenuItemLink.add(new CssClassNameAppender("prototype"));
+                subMenuItemLink.add(new CssClassAppender("prototype"));
             }
             leafItem.add(subMenuItemLink);
 
@@ -160,7 +165,7 @@ public class ApplicationActionsPanel extends Panel {
             }
         } else {
             leafItem = new Fragment("content", "empty", 
ApplicationActionsPanel.this);
-            listItem.add(new CssClassNameAppender("divider"));
+            listItem.add(new CssClassAppender("divider"));
         }
         listItem.add(leafItem);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 8c94106..b12fa60 100644
--- 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -35,7 +35,12 @@ import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.RestartResponseAtInterceptPageException;
 import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.markup.head.*;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.CssReferenceHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.head.filter.HeaderResponseContainer;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
@@ -66,7 +71,13 @@ import 
org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
 import org.apache.isis.viewer.wicket.model.hints.IsisEventLetterAbstract;
-import org.apache.isis.viewer.wicket.model.models.*;
+import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
+import org.apache.isis.viewer.wicket.model.models.ApplicationActionsModel;
+import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
+import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
@@ -105,13 +116,6 @@ public abstract class PageAbstract extends WebPage 
implements ActionPromptProvid
     public static final String ID_MENU_LINK = "menuLink";
 
     private static final String ID_THEME_PICKER = "themePicker";
-
-    // TODO mgrigorov: are those used somewhere else ? since they are public
-    public static final String ID_LOGOUT_LINK = "logoutLink";
-    public static final String ID_LOGOUT_TEXT = "logoutText";
-    public static final String ID_ABOUT_LINK = "aboutLink";
-
-    private static final String ID_COPY_LINK = "copyLink";
     private static final String ID_BREADCRUMBS = "breadcrumbs";
 
 
@@ -164,7 +168,7 @@ public abstract class PageAbstract extends WebPage 
implements ActionPromptProvid
             themeDiv = new WebMarkupContainer(ID_THEME);
             add(themeDiv);
             if(applicationName != null) {
-                themeDiv.add(new 
CssClassAppender(asCssStyle(applicationName)));
+                themeDiv.add(new 
CssClassAppender(CssClassAppender.asCssStyle(applicationName)));
             }
 
             addApplicationActions(themeDiv);
@@ -222,23 +226,6 @@ public abstract class PageAbstract extends WebPage 
implements ActionPromptProvid
         return pageClassRegistry.getPageClass(PageType.SIGN_IN);
     }
 
-    static String asCssStyle(final String str) {
-        return str.toLowerCase().replaceAll("[^A-Za-z0-9 ]", 
"").replaceAll("\\s+", "-");
-    }
-
-    // TODO mgrigorov this method is not used
-    protected ExceptionModel recognizeException(Exception ex) {
-        List<ExceptionRecognizer> exceptionRecognizers;
-        try {
-            exceptionRecognizers = 
getServicesInjector().lookupServices(ExceptionRecognizer.class);
-        } catch(Exception ex2) {
-            LOG.warn("Unable to obtain exceptionRecognizers (no session?)");
-            exceptionRecognizers = Collections.emptyList();
-        }
-        final String recognizedMessageIfAny = new 
ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
-        return ExceptionModel.create(recognizedMessageIfAny, ex);
-    }
-
     @Override
     public void renderHead(IHeaderResponse response) {
         

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
index 1fef4f6..8c4e1c0 100644
--- 
a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
+++ 
b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
@@ -39,4 +39,7 @@ public class CssClassAppender extends AttributeAppender {
         this(Model.of(append));
     }
 
+    public static String asCssStyle(final String str) {
+        return str.toLowerCase().replaceAll("[^A-Za-z0-9- ]", 
"").replaceAll("\\s+", "-");
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
 
b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
index 8a354d3..fccbca6 100644
--- 
a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
+++ 
b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
@@ -20,6 +20,8 @@ package org.apache.isis.viewer.wicket.ui.pages;
 
 import org.junit.Test;
 
+import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
@@ -29,12 +31,12 @@ public abstract class PageAbstractTest {
 
         @Test
         public void withSpacesAndCapitals() throws Exception {
-            assertThat(PageAbstract.asCssStyle("Simple App"), 
is("simple-app"));
+            assertThat(CssClassAppender.asCssStyle("Simple App"), 
is("simple-app"));
         }
 
         @Test
         public void withOtherCharacters() throws Exception {
-            assertThat(PageAbstract.asCssStyle("Kitchen Sink (Demo) App"), 
is("kitchen-sink-demo-app"));
+            assertThat(CssClassAppender.asCssStyle("Kitchen Sink (Demo) App"), 
is("kitchen-sink-demo-app"));
         }
 
     }

Reply via email to