/* * 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.wicket.markup.html.border; import org.apache.wicket.MarkupContainer; import org.apache.wicket.markup.IMarkupFragment; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; import org.apache.wicket.util.lang.Args; /** * This is a simple Container component which can be used to build Border like components. * <p> * Example: * * <pre> * <u>Panel Markup:</u> * .. * <div wicket:id="myPanel"> * My Panels body * </div> * .. * * <u>Panel associated Markup:</u> * <wicket:panel> * .. * <div wicket:id="myBody"/> * .. * </wicket:panel> * * <u>Panel Java code:</u> * class MyPanel extends Panel * { * .. * public MyPanel(String id) * { * add(new Body("myBody", this); * } * .. * } * </pre> * * There can be any number of containers between the Panel and Body. You must only remember to * provide the correct markup provider to the Body. * * @author Juergen Donnerstag */ public class Body extends WebMarkupContainer { private static final long serialVersionUID = 1L; private final MarkupContainer markupProvider; /** * Construct. * * @param id * @param model * @param markupProvider * Usually a Panel */ public Body(final String id, final IModel<?> model, final MarkupContainer markupProvider) { super(id, model); Args.notNull(markupProvider, "markupProvider"); this.markupProvider = markupProvider; } /** * Construct. * * @param id * @param markupProvider */ public Body(String id, final MarkupContainer markupProvider) { this(id, null, markupProvider); } @Override public IMarkupFragment getMarkup() { // Panel.getMarkup() returns the "calling" markup. Which is what we want. We do not want the // <wicket:panel> markup. return markupProvider.getMarkup(); } }