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 2018/12/19 14:53:37 UTC
[isis] branch ISIS-1997 created (now c0e2c45)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch ISIS-1997
in repository https://gitbox.apache.org/repos/asf/isis.git.
at c0e2c45 ISIS-1997: adds a sidebar, can toggle
This branch includes the following new commits:
new c0e2c45 ISIS-1997: adds a sidebar, can toggle
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[isis] 01/01: ISIS-1997: adds a sidebar, can toggle
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-1997
in repository https://gitbox.apache.org/repos/asf/isis.git
commit c0e2c453e385c166d065ef703e6059adffa27ba2
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 19 14:53:18 2018 +0000
ISIS-1997: adds a sidebar, can toggle
---
.../wicket/viewer/IsisWicketApplication.java | 4 +
.../actionpromptsb/ActionPromptSidebar.html | 40 +++++++
.../actionpromptsb/ActionPromptSidebar.java | 77 ++++++++++++
.../isis/viewer/wicket/ui/pages/PageAbstract.html | 26 ++++-
.../isis/viewer/wicket/ui/pages/PageAbstract.java | 16 ++-
.../ui/pages/SidebarCssResourceReference.java | 33 ++++++
.../wicket/ui/pages/jquery.isis.wicket.viewer.js | 5 +
.../isis/viewer/wicket/ui/pages/simple-sidebar.css | 129 +++++++++++++++++++++
8 files changed, 326 insertions(+), 4 deletions(-)
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index deff2d1..2542513 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -345,6 +345,10 @@ public class IsisWicketApplication
getRequestCycleSettings().setRenderStrategy(RequestCycleSettings.RenderStrategy.REDIRECT_TO_RENDER);
getResourceSettings().setParentFolderPlaceholder("$up$");
+// getResourceSettings().setCachingStrategy(
+// new FilenameWithVersionResourceCachingStrategy(
+// new CachingResourceVersion(
+// new MessageDigestResourceVersion())));
final IsisConfigurationBuilder isisConfigurationBuilder = obtainConfigBuilder();
isisConfigurationBuilder.addDefaultConfigurationResourcesAndPrimers();
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.html
new file mode 100644
index 0000000..a3f460a
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.html
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org"
+ xml:lang="en"
+ lang="en">
+<body>
+<wicket:panel>
+ <li class="sidebar-brand">
+ <h4 wicket:id="header">Action header</h4>
+
+ </li>
+ <div wicket:id="content"></div>
+</wicket:panel>
+ <script>
+ $("#menu-toggle").click(function(e) {
+ e.preventDefault();
+ $("#wrapper").toggleClass("toggled");
+ });
+ </script>
+</body>
+</html>
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.java
new file mode 100644
index 0000000..e310b2f
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionpromptsb/ActionPromptSidebar.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.isis.viewer.wicket.ui.components.actionpromptsb;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.GenericPanel;
+
+import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
+
+public class ActionPromptSidebar extends GenericPanel<Void> implements ActionPrompt /* implements ActionPrompt */ {
+
+ private static final long serialVersionUID = 1L;
+
+ public ActionPromptSidebar(final String id) {
+ super(id);
+
+ add(new Label(getTitleId(), "(no action)"));
+ add(new WebMarkupContainer(getContentId()));
+ }
+
+ public static ActionPromptSidebar newSidebar(String id) {
+ return new ActionPromptSidebar(id);
+ }
+
+ @Override
+ public String getTitleId() {
+ return "header";
+ }
+
+ @Override
+ public String getContentId() {
+ return "content";
+ }
+
+
+ @Override
+ public void setTitle(final Component component, final AjaxRequestTarget target) {
+
+ }
+
+ @Override
+ public void setPanel(final Component component, final AjaxRequestTarget target) {
+
+ }
+
+ @Override
+ public void showPrompt(final AjaxRequestTarget target) {
+ target.appendJavaScript("$('#wrapper').toggleClass('toggled')");
+ }
+
+ @Override
+ public void closePrompt(final AjaxRequestTarget target) {
+ target.appendJavaScript("$('#wrapper').toggleClass('toggled')");
+ }
+
+ @Override
+ public void setOnClose(final CloseHandler closeHandler) {
+
+ }
+}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
index 9785ed1..aaa4753 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
@@ -41,7 +41,31 @@
<div id="body">
- <wicket:child/>
+ <div id="wrapper" class="toggled">
+
+ <div id="sidebar-wrapper">
+
+
+ <ul class="sidebar-nav">
+ <div wicket:id="actionPromptSidebar"></div>
+ </ul>
+ </div>
+
+ <div id="page-content-wrapper">
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-lg-12">
+
+ <wicket:child/>
+
+ <a href="#menu-toggle" class="btn btn-default" id="menu-toggle">Toggle Menu</a>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+
<div class="clearfix" style="margin-bottom: 100px"></div>
</div>
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 0be0dd7..acc959f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -83,6 +83,7 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
+import org.apache.isis.viewer.wicket.ui.components.actionpromptsb.ActionPromptSidebar;
import org.apache.isis.viewer.wicket.ui.components.bookmarkedpages.BookmarkedPagesPanel;
import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbPanel;
import org.apache.isis.viewer.wicket.ui.components.widgets.favicon.Favicon;
@@ -121,7 +122,8 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
private static final String ID_BOOKMARKED_PAGES = "bookmarks";
private static final String ID_ACTION_PROMPT_MODAL_WINDOW = "actionPromptModalWindow";
-
+ private static final String ID_ACTION_PROMPT_SIDEBAR = "actionPromptSidebar";
+
private static final String ID_PAGE_TITLE = "pageTitle";
private static final String ID_FAVICON = "favicon";
@@ -208,6 +210,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
themeDiv.add(footer);
addActionPromptModalWindow(themeDiv);
+ addActionPromptSidebar(themeDiv);
this.childComponentIds = Collections.unmodifiableList(Arrays.asList(childComponentIds));
@@ -290,6 +293,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
response.render(CssHeaderItem.forReference(FontAwesomeCssReference.instance()));
response.render(CssHeaderItem.forReference(new BootstrapOverridesCssResourceReference()));
+ response.render(CssHeaderItem.forReference(new SidebarCssResourceReference()));
contributeThemeSpecificOverrides(response);
response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_LIVEQUERY_JS));
@@ -464,9 +468,10 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
// ///////////////////////////////////////////////////////////////////
private ActionPromptModalWindow actionPromptModalWindow;
+ private ActionPromptSidebar actionPromptSidebar;
public ActionPrompt getActionPrompt() {
- return actionPromptModalWindow;
+ return actionPromptSidebar;
}
private void addActionPromptModalWindow(final MarkupContainer parent) {
@@ -474,7 +479,12 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
parent.addOrReplace(actionPromptModalWindow);
}
-
+ private void addActionPromptSidebar(final MarkupContainer parent) {
+ actionPromptSidebar = ActionPromptSidebar.newSidebar(ID_ACTION_PROMPT_SIDEBAR);
+ parent.addOrReplace(actionPromptSidebar);
+ }
+
+
// ///////////////////////////////////////////////////////////////////
// UI Hint
// ///////////////////////////////////////////////////////////////////
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java
new file mode 100644
index 0000000..7e98e37
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.isis.viewer.wicket.ui.pages;
+
+import org.apache.wicket.request.resource.CssResourceReference;
+
+/**
+ * A CSS resource reference that provides CSS rules which override the CSS rules
+ * provided by the currently active Bootstrap theme.
+ * Usually the overrides rules are about sizes and weights, but should not change any colors
+ */
+public class SidebarCssResourceReference extends CssResourceReference {
+
+ public SidebarCssResourceReference() {
+ super(SidebarCssResourceReference.class, "simple-sidebar.css");
+ }
+}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index 705c79c..273272c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -174,6 +174,11 @@ $(function() {
}
);
+ $('#menu-toggle').click(function(e) {
+ e.preventDefault();
+ $('#wrapper').toggleClass('toggled');
+ });
+
/*
$('.editing .editable').parent().hover(function () {
var inputEl = $(this).find("> .editable")
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/simple-sidebar.css b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/simple-sidebar.css
new file mode 100644
index 0000000..449ebaf
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/simple-sidebar.css
@@ -0,0 +1,129 @@
+/*!
+ * Start Bootstrap - Simple Sidebar (http://startbootstrap.com/)
+ * Copyright 2013-2016 Start Bootstrap
+ * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
+ */
+
+ body {
+ overflow-x: hidden;
+ }
+
+/* Toggle Styles */
+
+#wrapper {
+ padding-left: 0;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+#wrapper.toggled {
+ padding-left: 250px;
+}
+
+#sidebar-wrapper {
+ z-index: 1000;
+ position: fixed;
+ left: 250px;
+ width: 0;
+ height: 100%;
+ margin-left: -250px;
+ overflow-y: auto;
+ background: #000;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+#wrapper.toggled #sidebar-wrapper {
+ width: 250px;
+}
+
+#page-content-wrapper {
+ width: 100%;
+ position: absolute;
+ padding: 15px;
+}
+
+#wrapper.toggled #page-content-wrapper {
+ position: absolute;
+ margin-right: -250px;
+}
+
+/* Sidebar Styles */
+
+.sidebar-nav {
+ position: absolute;
+ top: 0;
+ width: 250px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.sidebar-nav li {
+ text-indent: 20px;
+ line-height: 40px;
+}
+
+.sidebar-nav li a {
+ display: block;
+ text-decoration: none;
+ color: #999999;
+}
+
+.sidebar-nav li a:hover {
+ text-decoration: none;
+ color: #fff;
+ background: rgba(255,255,255,0.2);
+}
+
+.sidebar-nav li a:active,
+.sidebar-nav li a:focus {
+ text-decoration: none;
+}
+
+.sidebar-nav > .sidebar-brand {
+ height: 65px;
+ font-size: 18px;
+ line-height: 60px;
+}
+
+.sidebar-nav > .sidebar-brand a {
+ color: #999999;
+}
+
+.sidebar-nav > .sidebar-brand a:hover {
+ color: #fff;
+ background: none;
+}
+
+@media(min-width:768px) {
+ #wrapper {
+ padding-left: 250px;
+ }
+
+ #wrapper.toggled {
+ padding-left: 0;
+ }
+
+ #sidebar-wrapper {
+ width: 250px;
+ }
+
+ #wrapper.toggled #sidebar-wrapper {
+ width: 0;
+ }
+
+ #page-content-wrapper {
+ padding: 20px;
+ position: relative;
+ }
+
+ #wrapper.toggled #page-content-wrapper {
+ position: relative;
+ margin-right: 0;
+ }
+}
\ No newline at end of file