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 2014/12/03 08:53:08 UTC
[2/5] isis git commit: ISIS-963: primary,
secondary and tertiary menu support.
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/AjaxDeferredBehaviour.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/AjaxDeferredBehaviour.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/AjaxDeferredBehaviour.java
new file mode 100644
index 0000000..c9bb75f
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/AjaxDeferredBehaviour.java
@@ -0,0 +1,84 @@
+/*
+ * 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.widgets.linkandlabel;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.UrlRenderer;
+import org.apache.wicket.request.cycle.RequestCycle;
+
+import org.apache.isis.viewer.wicket.ui.actionresponse.ActionResultResponseHandlingStrategy;
+
+public abstract class AjaxDeferredBehaviour extends AbstractAjaxBehavior {
+ private static final long serialVersionUID = 1L;
+
+ public static enum OpenUrlStrategy {
+ NEW_WINDOW {
+ @Override
+ public String javascriptFor(AjaxDeferredBehaviour deferredBehaviour, String url) {
+ final Url parsedUrl = Url.parse(url);
+ final RequestCycle requestCycle = deferredBehaviour.getComponent().getRequestCycle();
+ final UrlRenderer urlRenderer = requestCycle.getUrlRenderer();
+ String fullUrl = urlRenderer.renderFullUrl(parsedUrl);
+ return "function(){Wicket.Event.publish(Isis.Topic.OPEN_IN_NEW_TAB, '" + fullUrl + "');}";
+ }
+ },
+ SAME_WINDOW {
+ @Override
+ public String javascriptFor(AjaxDeferredBehaviour deferredBehaviour, String url) {
+ return "\"window.location.href='" + url + "'\"";
+ }
+ };
+
+ public abstract String javascriptFor(AjaxDeferredBehaviour deferredBehaviour, String url);
+ }
+
+ private final OpenUrlStrategy openUrlStrategy;
+
+ protected AjaxDeferredBehaviour(final OpenUrlStrategy openUrlStrategy) {
+ this.openUrlStrategy = openUrlStrategy;
+ }
+
+ /**
+ * Call this method to initiate the download.
+ */
+ public void initiate(AjaxRequestTarget target) {
+ String url = getCallbackUrl().toString();
+
+ url = ActionResultResponseHandlingStrategy.expanded(url);
+ String func = openUrlStrategy.javascriptFor(this, url);
+
+ // the timeout is needed to let Wicket release the channel
+ String javascriptFor = "setTimeout(" + func + ", 100);";
+ target.appendJavaScript(javascriptFor);
+ }
+
+ @Override
+ public void onRequest() {
+ IRequestHandler handler = getRequestHandler();
+ if(handler != null) {
+ getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
+ }
+ }
+
+ protected abstract IRequestHandler getRequestHandler();
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 2f6b442..f5b3b17 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -37,7 +37,7 @@ import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
-import org.apache.isis.viewer.wicket.ui.components.additionallinks.EntityActionUtil;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
import org.apache.isis.viewer.wicket.ui.components.widgets.ObjectAdapterMementoProviderAbstract;
import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract-old.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract-old.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract-old.css
deleted file mode 100644
index b7e215e..0000000
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract-old.css
+++ /dev/null
@@ -1,962 +0,0 @@
-/*
- * 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.
- */
-
-
-/*
-TODO mgrigorov: Remove this file once the new styling based on Bootstrap is finished
-
-
-colors
-------
-
-#E4E4DB - page background
-
-#00477F rich blue
- h1,h2,h3 {color}
- a {color}
-
-#20B5C2 - light blue
- .ok {background-color}
- .links{color}
-
-#40C0CB - highlight blue
- .a:hover {background-color}
-
-#F0EFEA light (bookmark background)
- .select2-choice {background-color}
-
-#407098 muted blue
- th {color}
-
-
-#454545 dark brown/grey
- body {color}
-
-#413D37 dark brown/banner
- legend {color}
-
-#E4E4DB very pale beige
-.cancel {background-color}
-
-#46423C dark brown
- .cancel {color}
-
-#888 medium grey
- p.disabled {color}
-
-#F0EFEA very light grey
- p.disabled {background-color}
-
-#E3E3D9 light grey
- body {background-color}
-
-
-#BF0B0B - jgrowl error
-
-
-
-#46413B dark brown
- .scalarName {color}
-
-#7F7F7F (medium grey)
- .select2-choice {color}
-
-#46423C - dark (writing?)
-
-
-#CCCBC7 (medium)
- input[disabled] {border-top}
-
-#EEEEEE light grey
- th{background}
-
-#FFFFFF white
- .ok {color}
-
-*/
-
-/********** ID's **********/
-
-#header {
- width: 73%;
- float: left;
- height: 60px;
- margin-left: 5px;
- background: transparent url("images/logo.png") left center no-repeat;
-}
-
-#header .applicationName {
- display:none;
-}
-.headerContainer {
- background: url("images/bg_header_brown.png") left top repeat;
- height: 100px;
-}
-
-.headerContainer .links>span:first-child {
- background: url("/images/icon_appuser.png") no-repeat scroll left
- center transparent;
- line-height: 30px;
- padding: 5px 0 5px 20px;
- margin-left: 10px;
-}
-
-.headerContainer .links {
- font-size: 0.9em;
-}
-
-.headerContainer .links a {
- margin-left: 10px;
-}
-
-#secondaryMenu {
- width: 25%;
-}
-
-#tertiaryMenu {
- width: 3%;
- float: right;
- padding-right: 20px;
-}
-#breadcrumbsMenu {
- width: 18%;
- float: right;
-}
-#tertiaryMenu .imgLinks {
- line-height: 30px;
- font-size: 3em;
- margin-right:20px;
-}
-
-#tertiaryMenu a.copyLink:hover,
-#tertiaryMenu a.copyLink.hover {
- cursor: pointer;
-}
-
-#tertiaryMenu a.copyLink:active,
-#tertiaryMenu a.copyLink.active {
- cursor: pointer;
-}
-
-
-#secondaryMenu,
-#tertiaryMenu {
- display: inline-block;
- float: right;
- text-align: right;
- margin-right: 5px;
-}
-
-#tertiaryMenu a {
- font-size:3em;
- line-height: 30px;
-}
-
-#header h1 {
- margin: 10px 10px 10px 0px;
- font-size: xx-large;
-}
-
-.clear {
- clear: both;
-}
-
-.links {
- clear: both;
- height: 60px;
- line-height:60px;
- color:#20B5C2;
- text-transform: uppercase;
- font-size:1.0em;
- font-weight:bold;
- padding:0px 20px 0px 0px;
-}
-
- .links a {
- color:#FFFFFF;
- font-weight:bold;
- }
-
-
-#container {
- /*width: 800px;*/
-}
-
-
-/* Buttons */
-
-.edit,
-.ok,
-.okButton {
- display:inline-block;
- background-color:#20B5C2;
- color:#FFFFFF;
- text-transform:uppercase;
- font-size:0.9em;
- border:0px;
- padding:5px 10px;
- border-radius:4px;
- cursor:pointer;
-}
-
-.edit:focus,
-.ok:focus,
-.okButton:focus {
- background-color: #40C0CB;
- font-style: italic;
-}
-
-.cancel {
- display:inline-block;
- background-color:#E4E4DB;
- color:#46423C;
- text-transform:uppercase;
- font-size:0.9em;
- border:0px;
- padding:5px 10px;
- border-radius:4px;
- cursor:pointer;
-}
-
-.cancel:focus {
- font-style: italic;
-}
-
-
-/********** CLASSes **********/
-
-.feedbackPanel li {
- list-style: none;
-}
-
-.leftSide {
- float: left;
- width: 220px;
- height: 500px;
-}
-
-.rightSide {
- float: right;
- width: 520px;
-}
-
-/**************** APPLICATION MENU **************/
-
-#applicationActions {
- padding-left: 10px;
- height:40px;
- margin-left: 10px;
- width: 73%;
- float: left;
-}
-
-#applicationActions .menuh {
- background-color: transparent;
- position:relative;
- z-index:501;
-}
-
-#applicationActions .menuh ul.cssMenuItems {
- line-height:30px;
-}
-
-#applicationActions .cssMenuPanel .menuh a:link,
-#applicationActions .cssMenuPanel .menuh a:visited,
-#applicationActions .cssMenuPanel .menuh a:active,
-#applicationActions .cssMenuPanel .menuh p {
- background-color: transparent;
- color: #FFFFFF;
- text-decoration: none;
- text-transform:uppercase;
- font-size:0.9em;
- font-weight:bold;
-}
-
-#applicationActions .cssMenuPanel .menuh a.prototype span {
- color: #DBDB4D;
- font-style: italic;
-}
-
-
-#applicationActions .cssMenuPanel .menuh li a:link,
-#applicationActions .cssMenuPanel .menuh li a:visited,
-#applicationActions .cssMenuPanel .menuh li a:active,
-#applicationActions .cssMenuPanel .menuh li p {
- border-radius:4px 4px 0px 0px;
- -moz-border-radius:4px 4px 0px 0px;
- -webkit-border-radius:4px 4px 0px 0px;
-}
-
-#applicationActions .cssMenuPanel .menuh li li a:link,
-#applicationActions .cssMenuPanel .menuh li li a:visited,
-#applicationActions .cssMenuPanel .menuh li li a:active,
-#applicationActions .cssMenuPanel .menuh li li p {
- border-radius:0px;
- -moz-border-radius:0px;
- -webkit-border-radius:0px;
- background-color: #20B5C2;
-}
-
-#applicationActions .cssMenuPanel .menuh li li:last-child a:link,
-#applicationActions .cssMenuPanel .menuh li li:last-child a:visited,
-#applicationActions .cssMenuPanel .menuh li li:last-child a:active,
-#applicationActions .cssMenuPanel .menuh li li:last-child p {
- border-radius:0px 0px 4px 4px;
- -webkit-border-radius:0px 0px 4px 4px;
- -moz-border-radius:0px 0px 4px 4px;
- background-color: #20B5C2;
-}
-
-#applicationActions .cssMenuPanel .menuh li li:first-child a:link,
-#applicationActions .cssMenuPanel .menuh li li:first-child a:visited,
-#applicationActions .cssMenuPanel .menuh li li:first-child a:active,
-#applicationActions .cssMenuPanel .menuh li li:first-child p {
- border-radius:0px 4px 0px 0px;
- -webkit-border-radius:0px 4px 0px 0px;
- -moz-border-radius:0px 4px 0px 0px;
- background-color: #20B5C2;
-}
-
-#applicationActions .cssMenuPanel .menuh li li:first-child:last-child a:link,
-#applicationActions .cssMenuPanel .menuh li li:first-child:last-child a:visited,
-#applicationActions .cssMenuPanel .menuh li li:first-child:last-child a:active,
-#applicationActions .cssMenuPanel .menuh li li:first-child:last-child p {
- border-radius:0px 4px 4px 4px;
- -webkit-border-radius:0px 4px 4px 4px;
- -moz-border-radius:0px 4px 4px 4px;
- background-color: #20B5C2;
-}
-
-
-#applicationActions .menuh a,
-#applicationActions .menuh p {
- border: 0px solid #00477F;
- padding: 0px 1em 0px 1em;
- background-image:none !important;
-}
-
-#applicationActions .cssMenuPanel .menuh li:hover a,
-#applicationActions .cssMenuPanel .menuh li:hover p {
- color: #FFFFFF;
- background-color: #20B5C2;
-}
-
-#applicationActions .cssMenuPanel .menuh a:hover,
-#applicationActions .cssMenuPanel .menuh p:hover {
- color: #FFFFFF;
- background-color: #20B5C2;
-}
-
-#applicationActions .cssMenuPanel .menuh li li a:hover,
-#applicationActions .cssMenuPanel .menuh li li p:hover {
- color: #FFFFFF;
- background-color: #40C0CB !important;
-}
-
-#applicationActions ul.cssSubMenuItemsPanel {
- min-width:220px;
-}
-
- #applicationActions ul.cssSubMenuItemsPanel li.cssSubMenuItem p.disabled {
- color: lightgray;
- /*background-color: #F0EFEA;*/
-
- }
-
-
-/**************** ELEMENTS **************/
-
-body {
- background-color: #E3E3D9;
- color: #454545;
- font-family: Arial,'Sans-serif', 'Helvetica', 'Sans-serif', 'sans';
- font-size: 0.8em;
- line-height: 1.4em;
- padding: 0px;
- margin:0px;
-}
-
-.panel, fieldset {
- margin: 3px 0px;
-}
-
-.scalarNameAndValueComponentType .panel {
- padding: 4px;
-}
-
-
-div {
- margin: 0;
- padding: 0;
-}
-
-#body {
- min-height: 400px;
- margin:20px;
-}
-
-#footer {
-}
-
- #footer .links {
- height:auto;
- padding:0px 20px;
- line-height:20px;
- height:20px;
- color:#46423C;
- }
-
- #footer .links a {
- color:#20B5C2;
- text-decoration:none;
- }
-
-h3 {
- margin-top: 9px;
- margin-bottom: 0px;
-}
-
-p {
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-form fieldset .okButton {
- margin-top: 2em;
-}
-
-.myBlockContainer {
- background-color:#FFFFFF;
- padding:10px;
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
- margin-bottom:1%;
- position:relative;
- clear:both;
-}
-
-.myBlockContainer fieldset {
- border:0px;
- margin:0px;
- padding:0px;
-}
-.myBlockContainer fieldset:not(:first-child) {
- margin-top: 30px
-}
-
-
-.myBlockContainer legend {
- color:#423D37;
- font-size:1.6em;
- margin-bottom:10px;
- line-height:120%;
- padding:0px;
- float:left;
- display:block;
-}
-
-
-/************************************************************ *********/
-
-
-
-h1,h2,h3,h4,h5,h6,h7,h8 {
- color: #00477F;
- font-weight: normal;
-}
-
-h1,h2 {
- letter-spacing: -1px;
-}
-
-#extitle {
- font-size: 12pt;
- font-weight: bold;
- color: #454545;
- padding: 10px 10px 10px 10px;
-}
-
-.mark {
- background-color: yellow;
- margin: 5px;
-}
-
-.nospam {
- display : none;
-}
-
-.block {
- padding: 10px;
-}
-
-
-h2 {
- font-size: 1.25em;
-}
-
-h3 {
- font-size: 1em;
-}
-
-a {
- color: #00477F;
- font-weight: bold;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
- cursor: pointer;
-}
-
-img {
- border: none;
-}
-
-pre {
- font-family: 'Lucida Sans', 'Helvetica', 'Sans serif', 'sans';
-}
-
-th {
- background: #EEEEEE;
- color: #407098;
- font-weight: bold;
-}
-
-tr.b {
- background: #EEEEEE;
-}
-
-tr.a {
- background: #E6E6E5;
-}
-
-tr.none {
- background: transparent;
-}
-
-a.none {
- background: transparent;
- padding-right: 0px;
-}
-
-.inputForm label.non {
- display: inline !important;
-}
-
-.inputFormTable td {
- padding: 2px;
-}
-
-div.tabRowContent {
- border-style: solid;
- border-width: 1px;
- margin: 4px;
- padding: 4px;
-}
-
-tr.section td {
- padding-top: 0.75em;
-}
-
-table.contents td,
-table.contents th {
- border-left: 1px solid #DDD;
- border-right: 1px solid #DDD;
-}
-
-/*************** Styling Entity Forms and Parameters ********************/
-
-
-
-
-.property, .propertyOrCollection, .parameter {
- clear: both;
-}
-
-.scalarNameAndValueComponentType {
-}
-
-.scalarName {
- padding:6px 0px;
- margin-bottom:5px;
-}
-
-
-
-.scalarValue {
- margin-bottom:10px;
-}
-
-.collectionName,
-.collectionContents {
-
-}
-
-.scalarName, .collectionName {
- float: left;
- font-style: normal;
- text-align: left;
- text-transform:uppercase;
- font-weight:bold !important;
- font-size:0.9em;
- color:#46413B;
-}
-
-.mandatory .scalarName:after,
-.mandatory .collectionName:after {
- content: " *";
- font-weight:bold;
- color:#20B5C2;
-}
-
-.scalarValue,.collectionContents {
- float: left;
-}
-
-.scalarValue {
-}
-
-.collectionContents {
- width: 100%;
-}
-
-.scalarName {
- width: 160px;
-}
-.scalarValue {
-}
-
-div.scalarPanel {
- display: inline;
-}
-
-.buttons {
- padding: 1em 0em 1em 0em;
- clear: both;
- display: block;
-}
-
-.mandatory {
- font-weight: bold;
-}
-
-.number input {
- text-align: right;
-}
-
-
-
-/********************* Select2 component styling *****************************/
-
-
-.actionPromptPage .select2-container .select2-choice,
-.entityPage .select2-container .select2-choice {
- padding: 4px;
-}
-
-
-
-.actionPromptPage .select2-container .select2-choice,
-.entityPage .select2-container .select2-choice {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- height: 20px;
- line-height: 20px;
- color:#7F7F7F;
- background:#FFFFFF none;
- border:1px solid #F0EFEA;
- border-top:1px solid #CCCBC7;
-}
-
-.actionPromptPage .select2-container .select2-choice span,
-.entityPage .select2-container .select2-choice span {
- font-size:13px;
-}
-
-.actionPromptPage .select2-container.select2-drop-above .select2-choice,
-.entityPage .select2-container.select2-drop-above .select2-choice {
- -webkit-border-radius:0px;
- -moz-border-radius:0px;
- border-radius:0px;
-}
-
-.actionPromptPage .select2-drop,
-.entityPage .select2-drop {
- -webkit-border-radius:0px;
- -moz-border-radius:0px;
- border-radius:0px;
-}
-
-.actionPromptPage .select2-drop.select2-drop-above,
-.entityPage .select2-drop.select2-drop-above {
- -webkit-border-radius:0px;
- -moz-border-radius:0px;
- border-radius:0px;
-}
-
-.actionPromptPage .select2-container .select2-choice div,
-.entityPage .select2-container .select2-choice div {
- -webkit-border-radius:0px;
- -moz-border-radius:0px;
- border-radius:0px;
- background: #EBEBE4;
-}
-
-.actionPromptPage .select2-container.select2-container-disabled .select2-choice,
-.entityPage .select2-container.select2-container-disabled .select2-choice {
- background-color:#F0EFEA;
- border:1px solid #F0EFEA;
- border-top:1px solid #CCCBC7;
-}
-
-.actionPromptPage .select2-container a,
-.entityPage .select2-container a {
- font-weight: normal;
-}
-
-/******** fix for select2 on ModalWindow ********/
-/* http://osdir.com/ml/users-wicket.apache.org/2013-09/msg00165.html */
-
-div.select2-drop {
- z-index: 30001
-}
-
-.select2-drop-mask {
- z-index: 30000
-}
-
-
-/******** action prompt modal dialog ********/
-
-
-.wicket-modal .w_content_container {
- background-color: #E4E4DB;
-}
-
-.actionPanel {
- width: 680px;
-}
-
-.actionPanel .myBlockContainer {
- margin:19px;
- padding: 20px;
- width: 600px;
- min-height: 200px;
-}
-
-.wicket-modal .w_caption {
- display: none;
-}
-
-div.wicket-modal div.w_content_3 {
- border: 0px;
-}
-
-div.wicket-modal div.w_content_3,
-div.wicket-modal div.w_content_2,
-div.wicket-modal div.w_content_1,
-div.wicket-modal div.w_content,
-.wicket-modal .w_content_container,
-.w_isis,
-.actionPanel {
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
-}
-
-/******** FORM STYLES ********/
-
-form input[type=text][disabled] {
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
- padding:6px;
- background-color:#F0EFEA;
- border:1px solid #F0EFEA;
- border-top:1px solid #CCCBC7;
-}
-
-form input[type=text] {
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
- padding:6px;
- background-color:#FFFFFF;
- border:1px solid #F0EFEA;
- border-top:1px solid #CCCBC7;
-}
-
-
-
-.inputForm {
- clear:both;
-}
-
-.actionPanelHeaderNew {
- clear:both;
- display:block;
-}
-
-.actionPanelHeaderNew .entityIconAndTitlePanel {
- padding-bottom:10px;
- line-height:150%;
- float:left;
-}
-
-div.actionPanelHeaderNew .iconAndTitle {
- float: left;
- padding:0em;
-}
-
-div.actionPanelHeaderNew .actions {
- float: right;
- padding:0em 0em;
-}
-
-.actionPanelHeaderNew .entityImage {
- width: 32px;
- height: 32px;
- vertical-align:text-bottom;
- padding-right:5px;
-}
-
-.actionPanelHeaderNew .entityTitle {
- font-size: 1.8em;
- font-weight:normal;
- color:#413D37;
- text-decoration:none;
-}
-
-/* Feedback Error Styling */
-
-.feedbackPanel {
- clear:both;
- display:block;
- color:#990000;
- font-weight:normal;
- font-size:12px;
- line-height:150%;
-}
-
-
-.feedbackPanelERROR {
- color:#CC0000;
- list-style: none;
- font-weight: normal;
-}
-
-.feedbackPanelINFO {
- color: green;
- list-style: none;
- font-weight: normal;
-}
-
-
-
-div#jGrowl {
- margin-top: 55px;
- margin-right: 25px;
- color: white;
- font-size: larger;
- opacity: .90;
- filter: alpha(opacity = 90);
-}
-
-div#jGrowl div.jgrowl-ERROR {
- background-color: #BF0B0B;
-}
-div#jGrowl div.jgrowl-WARNING {
- background-color: orange;
-}
-div#jGrowl div.jgrowl-INFO {
- background-color: #20B5C2;
-}
-div#jGrowl div.jgrowl-WARNING {
- background-color: orange;
-}
-div#jGrowl div.jGrowl-closer {
- background-color: #F0EFEA;
- color: #46423C;
- font-size: small;
-}
-
-
-
-
-/* ModalWindow tweaks */
-
-div.wicket-mask-dark {
- filter: alpha(opacity=40);
- opacity: 0.4;
-}
-
-
-/* action buttons in properties */
-
-.properties .property .additionalLinkList {
- float:none;
- padding-top: 5px;
- padding-bottom: 20px;
-}
-
-.properties .property .isisBlobPanel .additionalLinkList {
- padding-top: 0px;
-}
-
-
-
-/** general **/
-
-.hidden {
- display: none;
-}
-
-
-
-
-/**
-zero clipboard
-(for some reason - perhaps to do with Flash - this CSS doesn't seem to
- do anything if within the ZeroClipboard.css)
-*/
-.zeroClipboardPanel a {
- background-image: url("copy-26.png");
- background-position: right;
- background-repeat: no-repeat;
- cursor: pointer;
-}
-
-
-/**
-for some reason the containedToggleboxPanel.css is not being picked up...
-*/
-.containedToggleboxPanel .containedToggleboxPanelForm {
- display: inline;
-}
-
-
-
-
-.collectionContentsAsAjaxTablePanel table.contents tbody td div.FixtureResult-className label,
-.collectionContentsAsAjaxTablePanel table.contents tbody td div.FixtureResult-fixtureScriptClassName label {
- text-transform: none;
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
deleted file mode 100644
index 60c8e2c..0000000
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 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.
- */
-
-
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
index 5cd3c10..400cca7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
@@ -50,16 +50,16 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-fw fa-user"></i> <span wicket:id="userName"></span><span class="caret"></span>
</a>
- <ul class="dropdown-menu" role="menu" style="min-width: 0px;">
- <li class="navbar-right">
- <a wicket:id="logoutLink"><i class="fa fa-fw fa-sign-out"></i><wicket:message key="logoutLabel"></wicket:message></a>
- </li>
+ <ul wicket:id="tertiaryMenuBar" class="dropdown-menu" role="menu" style="min-width: 0px;">
</ul>
</li>
</ul>
</div>
+ <div class="navbar-collapse app-actions collapse navbar-right">
+ <ul class="nav navbar-nav" wicket:id="secondaryMenuBar"></ul>
+ </div>
<div class="navbar-collapse app-actions collapse">
- <ul class="nav navbar-nav" wicket:id="applicationActions"></ul>
+ <ul class="nav navbar-nav" wicket:id="primaryMenuBar"></ul>
</div>
</div>
</header>
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/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 0d7b129..424b23f 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
@@ -47,7 +47,6 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
@@ -61,6 +60,7 @@ import org.apache.wicket.request.resource.PackageResource;
import org.apache.wicket.request.resource.ResourceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -74,11 +74,11 @@ 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.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.model.models.ServiceActionsModel;
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;
@@ -89,7 +89,6 @@ import org.apache.isis.viewer.wicket.ui.components.widgets.themepicker.ThemeChoo
import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
import org.apache.isis.viewer.wicket.ui.pages.about.AboutPage;
-import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
/**
@@ -156,6 +155,15 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
@Inject
private PageClassRegistry pageClassRegistry;
+ /**
+ * Top-level <div> to which all content is added.
+ *
+ * <p>
+ * Has <code>protected</code> visibility so that subclasses can also add directly to this div.
+ * </p>
+ */
+ protected MarkupContainer themeDiv;
+
public PageAbstract(
final PageParameters pageParameters,
final String title,
@@ -172,14 +180,15 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
themeDiv.add(new CssClassAppender(CssClassAppender.asCssStyle(applicationName)));
}
- addApplicationActions(themeDiv);
+ addActionPromptModalWindow(themeDiv);
+ addServiceActionMenuBars(themeDiv);
this.childComponentIds = Collections.unmodifiableList(Arrays.asList(childComponentIds));
this.pageParameters = pageParameters;
addApplicationName(themeDiv);
addUserName(themeDiv);
- addLogoutLink(themeDiv);
+ //addLogoutLink(themeDiv);
addAboutLink(themeDiv);
addBreadcrumbs();
@@ -237,7 +246,6 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
response.render(CssHeaderItem.forReference(FontAwesomeCssReference.instance()));
response.render(CssHeaderItem.forReference(new BootstrapOverridesCssResourceReference()));
contributeThemeSpecificOverrides(response);
- PanelUtil.renderHead(response, PageAbstract.class);
response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_LIVEQUERY_JS));
response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_ISIS_WICKET_VIEWER_JS));
@@ -282,17 +290,6 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
themeDiv.add(userName);
}
- private void addLogoutLink(MarkupContainer themeDiv) {
- Link logoutLink = new Link("logoutLink") {
-
- @Override
- public void onClick() {
- getSession().invalidate();
- setResponsePage(getSignInPage());
- }
- };
- themeDiv.add(logoutLink);
- }
private void addAboutLink(MarkupContainer themeDiv) {
BookmarkablePageLink<Void> aboutLink = new BookmarkablePageLink<>("aboutLink", AboutPage.class);
@@ -335,11 +332,15 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
return pageParameters;
}
- private void addApplicationActions(MarkupContainer container) {
- addActionPromptModalWindow();
- final ApplicationActionsModel model = new ApplicationActionsModel();
- model.setActionPromptProvider(this);
- addComponent(container, ComponentType.APPLICATION_ACTIONS, model);
+ private void addServiceActionMenuBars(MarkupContainer container) {
+ addMenuBar(container, "primaryMenuBar", DomainService.MenuBar.PRIMARY);
+ addMenuBar(container, "secondaryMenuBar", DomainService.MenuBar.SECONDARY);
+ addMenuBar(container, "tertiaryMenuBar", DomainService.MenuBar.TERTIARY);
+ }
+
+ private void addMenuBar(MarkupContainer container, String id, DomainService.MenuBar menuBar) {
+ final ServiceActionsModel model = new ServiceActionsModel(menuBar);
+ getComponentFactoryRegistry().addOrReplaceComponent(container, id, ComponentType.SERVICE_ACTIONS, model);
}
/**
@@ -395,12 +396,11 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
private ActionPromptModalWindow actionPromptModalWindow;
- protected MarkupContainer themeDiv;
public ActionPrompt getActionPrompt() {
return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
}
- private void addActionPromptModalWindow() {
+ private void addActionPromptModalWindow(final MarkupContainer themeDiv) {
actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
themeDiv.addOrReplace(actionPromptModalWindow);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
index 064910a..670361f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainService.java
@@ -33,12 +33,23 @@ import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
public @interface DomainService {
+ public enum MenuBar {
+ PRIMARY,
+ SECONDARY,
+ TERTIARY
+ }
+
/**
* If this domain service acts as a repository for an entity type, specify that entity type.
*/
Class<?> repositoryFor() default Object.class;
/**
+ * The menubar in which the menu that hold's this service's actions should reside.
+ */
+ MenuBar menuBar() default MenuBar.PRIMARY;
+
+ /**
* Number in Dewey Decimal format representing the order.
*
* <p>
@@ -47,4 +58,5 @@ public @interface DomainService {
*/
String menuOrder() default "" + Integer.MAX_VALUE;
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
index 73ca140..250aba4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.domainservice;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -28,6 +29,11 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
public interface DomainServiceFacet extends Facet {
/**
+ * Corresponds to {@link org.apache.isis.applib.annotation.DomainService#menuBar()}.
+ */
+ public DomainService.MenuBar getMenuBar();
+
+ /**
* Corresponds to {@link org.apache.isis.applib.annotation.DomainService#menuOrder()}.
*
* <p>
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacetAbstract.java
index e39bb3b..d1aa190 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacetAbstract.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.domainservice;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -32,15 +33,21 @@ public abstract class DomainServiceFacetAbstract
return DomainServiceFacet.class;
}
+ private final DomainService.MenuBar menuBar;
private final String menuOrder;
private final Class<?> repositoryFor;
- public DomainServiceFacetAbstract(final FacetHolder facetHolder, final String menuOrder, final Class<?> repositoryFor) {
+ public DomainServiceFacetAbstract(final FacetHolder facetHolder, final DomainService.MenuBar menuBar, final String menuOrder, final Class<?> repositoryFor) {
super(DomainServiceFacetAbstract.type(), facetHolder, Derivation.NOT_DERIVED);
+ this.menuBar = menuBar;
this.menuOrder = menuOrder;
this.repositoryFor = repositoryFor;
}
+ public DomainService.MenuBar getMenuBar() {
+ return menuBar;
+ }
+
public String getMenuOrder() {
return menuOrder;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotation.java
index 460b5cd..9448bf8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotation.java
@@ -19,13 +19,18 @@
package org.apache.isis.core.metamodel.facets.object.domainservice.annotation;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacetAbstract;
public class DomainServiceFacetAnnotation extends DomainServiceFacetAbstract {
- public DomainServiceFacetAnnotation(FacetHolder facetHolder, String menuOrder, Class<?> repositoryFor) {
- super(facetHolder, menuOrder, repositoryFor);
+ public DomainServiceFacetAnnotation(
+ final FacetHolder facetHolder,
+ final DomainService.MenuBar menubar,
+ final String menuOrder,
+ final Class<?> repositoryFor) {
+ super(facetHolder, menubar, menuOrder, repositoryFor);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8aaa166f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
index 036ebd8..78f42b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
@@ -41,8 +41,8 @@ public class DomainServiceFacetAnnotationFactory extends FacetFactoryAbstract {
}
FacetUtil.addFacet(
new DomainServiceFacetAnnotation(
- processClassContext.getFacetHolder(),
- annotation.menuOrder(), annotation.repositoryFor()));
+ processClassContext.getFacetHolder(),
+ annotation.menuBar(), annotation.menuOrder(), annotation.repositoryFor()));
if(annotation.repositoryFor() != null) {
FacetUtil.addFacet(
new IconFacetDerivedFromDomainServiceAnnotation(