public class MenuBarPanel extends org.apache.wicket.markup.html.panel.Panel implements IStyleResolver
MenuBarPanel consits of several Menus where each Menu consist of IMenuLinks.
A MenuBarPanel can be constructed e.g. like this:
List<Menu> menus = new ArrayList<Menu>();
// The MenuItems for the first Menu
List<MenuItem> menu1Items = new ArrayList<MenuItem>();
menu1Items.add(new MenuItem(new Model<String>("Visible menu item 1.1"), new LinkToPage(Page1.class)));
menu1Items.add(new MenuItem(new Model<String>("Visible but disabled menu item 1.2"), new LinkToPage(Page2.class)).setEnabled(false));
menu1Items.add(new MenuItem(new Model<String>("Invisible menu item 1.3"), new LinkToPage(Page3.class)).setVisible(false));
menu1Items.add(new MenuItem(new Model<String>("visible menu item 1.4"), new LinkToPage(Page4.class)));
menus.add(new Menu(new Model<String>("First menu"), menu1Items));
// The MenuItems for the second Menu
List<MenuItem> menu2Items = new ArrayList<MenuItem>();
menu2Items.add(new MenuItem(new Model<String>("Visible menu item 2.1"), "http://www.wicketframework.org"));
menu2Items.add(new MenuItem(new Model<String>("Visible but disabled menu item 2.2"), new LinkToPage(Page1.class)).setEnabled(false));
menu2Items.add(new MenuItem(new Model<String>("Invisible menu item 2.3"), new LinkToPage(null, Page2.class)).setVisible(false));
menu2Items.add(new MenuItem(new Model<String>("visible menu item 2.4"), new LinkToPage(Page3.class)));
menus.add(new Menu(new Model<String>("Second menu"), menu2Items));
add(new MenuBarPanel("menuBar", menus);
...
private class LinkToPage implements IPageLink {
private Class<? extends Page> pageClass;
public LinkToPage(Class<? extends Page> pageClass) {
this.pageClass = pageClass;
}
public Page getPage() {
return pageClass.newInstance();
}
The HTML markup for this example looks like this:
<div wicket:id="menuBar">[[The menu bar goes here]]</div>You need the following css code to get this example to work with IE:
.menubar h1 {
text-align: center;
padding: 0 0 0.25em 0;
margin: 0;
z-index: 999;
}
.menubar ul {
list-style: none;
padding: 0;
margin: 0;
z-index: 999;
}
#nav a {
font-weight: bold;
color: rgb(15,15,15);
text-align: left;
text-decoration: none;
text-align: left;
}
#nav li li a {
font-weight: bold;
text-align: left;
display: block;
color: rgb(41,41,41);
padding : 0.2em 10px;
white-space : nowrap;
z-index: 999;
}
#nav li li.disabled {
font-weight: bold;
text-align: left;
display: block;
padding : 0.2em 10px;
white-space : nowrap;
z-index: 999;
}
#nav li li a:hover {
padding: 0.2em 5px;
border: 1px solid rgb(34,69,104);
border-width: 0 5px;
text-align: left;
}
.menubar li {
float: left;
position: relative;
text-align: center;
cursor: default;
background-color: rgb(152,186,225);
border: 1px solid rgb(34,69,104);
border-width: 1px 0;
text-align: left;
z-index: 999;
}
.menubar li#singleMenu {
padding-left: 1em;
padding-right: 1em;
border-left-width: 2px;
border-right-width: 2px;
margin-right: 2px;
white-space : nowrap;
}
.menubar li#firstMenu {
padding-left: 1em;
padding-right: 1em;
border-left-width: 2px;
border-right-width: 2px;
margin-right: 2px;
white-space : nowrap;
}
.menubar li#middleMenu {
padding-left: 1em;
padding-right: 1em;
border-left-width: 2px;
border-right-width: 2px;
margin-right: 2px;
white-space : nowrap;
}
.menubar li#lastMenu {
padding-left: 1em;
padding-right: 1em;
border-left-width: 2px;
border-right-width: 2px;
white-space : nowrap;
}
.menubar li ul {
display: none;
position: absolute;
top: 100%;
left: 0;
font-weight: normal;
background-color: rgb(152,186,225);
padding: 0.5em 0;
border-right: ridge 1px rgb(125,125,125);
border-left: ridge 1px rgb(125,125,125);
border-bottom: ridge 1px rgb(125,125,125);
text-align: left;
z-index:99999;
}
.menubar li>ul {
top: auto;
left: auto;
}
.menubar li li {
display: block;
float: none;
background-color: rgb(152,186,225);
border: 0;
color: rgb(41,41,41);
}
.menubar li li.disabled {
display: block;
float: none;
background-color: rgb(152,186,225);
border: 0;
color: rgb(123,123,123);
}
.menubar li:hover ul, li.over ul {
display: block;
}
.menubar hr {
display: none;
}
.menubar p {
clear: left;
background: url(images/remora.gif) center left no-repeat;
padding: 1em 1em 0 1em;
margin: 0;
}
.menubar p.image {
float: right;
font-size: 0.8em;
text-align: center;
color: #7d6340;
padding: 1.25em 1.25em 0.25em 0.25em;
}
.menubar p.image img {
display: block;
border: 1px solid #7d6340;
}
| Modifier and Type | Field and Description |
|---|---|
static JQueryCssResourceReference[] |
CSS |
protected List<Menu> |
menus |
ENABLE, FLAG_AFTER_RENDERING, FLAG_INITIALIZED, FLAG_PREPARED_FOR_RENDER, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RENDERING, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING| Constructor and Description |
|---|
MenuBarPanel(String id,
List<Menu> menus)
Constructs a
MenuBarPanel. |
| Modifier and Type | Method and Description |
|---|---|
JQueryCssResourceReference[] |
getCssResources() |
protected void |
onBeforeRender() |
void |
refresh(org.apache.wicket.ajax.AjaxRequestTarget target) |
void |
renderHead(org.apache.wicket.markup.head.IHeaderResponse response) |
getRegionMarkup, newMarkupSourcingStrategygetWebPage, getWebRequest, getWebResponse, getWebSessionadd, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findComponentToDequeue, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onAfterRenderChildren, onComponentTagBody, onDetach, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildrenadd, addStateChange, afterRender, beforeRender, canCallListenerInterface, canCallListenerInterfaceAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalPrepareForRender, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onComponentTag, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrappublic static JQueryCssResourceReference[] CSS
protected void onBeforeRender()
onBeforeRender in class org.apache.wicket.Componentpublic void renderHead(org.apache.wicket.markup.head.IHeaderResponse response)
renderHead in interface org.apache.wicket.markup.html.IHeaderContributorrenderHead in class org.apache.wicket.Componentpublic void refresh(org.apache.wicket.ajax.AjaxRequestTarget target)
public JQueryCssResourceReference[] getCssResources()
getCssResources in interface IStyleResolverCopyright © 2015. All rights reserved.