/* * 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.internal; import org.junit.Assert; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.WebPage; /** */ public class TraditionalEnclosureAjaxPage extends WebPage { /** */ private static final long serialVersionUID = 1L; private final WebMarkupContainer traditionalAjaxVisibilityToggleRequiresPlaceholder; private final String toggleableChildId; private final WebMarkupContainer toggleable; private final AjaxLink<Void> link; /** * */ @SuppressWarnings("serial") public TraditionalEnclosureAjaxPage() { add((traditionalAjaxVisibilityToggleRequiresPlaceholder = new WebMarkupContainer( "toggleable-placeholder") { @Override public boolean isVisible() { return get(toggleableChildId).isVisible(); } }).setOutputMarkupPlaceholderTag(true)); Assert.assertEquals("Ajax requires tag to remain in DOM even if not visible", true, traditionalAjaxVisibilityToggleRequiresPlaceholder.getOutputMarkupPlaceholderTag()); { traditionalAjaxVisibilityToggleRequiresPlaceholder.add((toggleable = new WebMarkupContainer( toggleableChildId = "toggleable")).setOutputMarkupPlaceholderTag(true)); add(link = new AjaxLink<Void>("link") { @Override public void onClick(AjaxRequestTarget target) { toggleable.setVisible(!toggleable.isVisible()); ajaxRepaintOnlyToggleableComponentsContainer(target); } }); } } /** * @param target */ private void ajaxRepaintOnlyToggleableComponentsContainer(AjaxRequestTarget target) { target.add(traditionalAjaxVisibilityToggleRequiresPlaceholder); // This is what we // repaint and toggleable is inside it } /** * @return toggleable webmarkupcontainer */ public WebMarkupContainer getToggleable() { return toggleable; } /** * @return toggle link */ public AjaxLink<Void> getLink() { return link; } /** * @return the traditional placeholder */ public WebMarkupContainer getTraditionalAjaxVisibilityToggleRequiresPlaceholder() { return traditionalAjaxVisibilityToggleRequiresPlaceholder; } }