blob: b37d6bba78d401e73681d5d6419c5ddfc70c1864 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed 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 com.google.gwt.user.client.ui;
import com.google.gwt.user.client.DOM;
/**
* Test for {@link DeckPanel}.
*/
public class DeckPanelTest extends PanelTestBase<DeckPanel> {
/**
* Test that the {@link DeckPanel} calls widget.setVisible(true) on the
* visible widget, but does NOT call widget.setVisible(false) when a widget is
* hidden.
*/
public void testSetWidgetVisible() {
// Show a widget with animations disabled
{
DeckPanel deck = new DeckPanel();
deck.setAnimationEnabled(false);
Label[] labels = new Label[3];
for (int i = 0; i < labels.length; i++) {
labels[i] = new Label("content" + i);
deck.add(labels[i]);
}
// Show widget at index 1, make sure it becomes visible
deck.showWidget(1);
assertFalse(labels[0].isVisible());
assertTrue(labels[1].isVisible());
assertFalse(labels[2].isVisible());
// Show widget at index 0, make sure widget 1 is still visible
deck.showWidget(0);
assertTrue(labels[0].isVisible());
assertFalse(labels[1].isVisible());
assertFalse(labels[2].isVisible());
}
// Show a widget with animations enabled
{
DeckPanel deck = new DeckPanel();
deck.setAnimationEnabled(true);
Label[] labels = new Label[3];
for (int i = 0; i < labels.length; i++) {
labels[i] = new Label("content" + i);
deck.add(labels[i]);
}
// Show widget at index 1, make sure it becomes visible
deck.showWidget(1);
assertFalse(labels[0].isVisible());
assertTrue(labels[1].isVisible());
assertFalse(labels[2].isVisible());
// Show widget at index 0, make sure widget 1 is still visible
deck.showWidget(0);
assertTrue(labels[0].isVisible());
assertFalse(labels[1].isVisible());
assertFalse(labels[2].isVisible());
}
}
/**
* Test that the offsetHeight/Width of a widget are defined when the widget is
* added to the DeckPanel.
*/
public void testWidgetOffsetDimensionsOnload() {
DeckPanel deck = new DeckPanel();
RootPanel.get().add(deck);
// Add a widget to the DeckPanel
Label content = new Label("detached") {
@Override
public void onLoad() {
// Verify that the offsetWidth/Height are greater than zero
assertTrue(this.getOffsetHeight() > 0);
assertTrue("Expect positive offsetWidth. "
+ "This will fail in WebKit if run headless",
this.getOffsetWidth() > 0);
setText("attached");
}
};
deck.add(content);
// Verify content.onLoad was actually called
assertEquals("attached", content.getText());
}
/**
* Test that style width/height is set to 100% by default.
*/
public void testWidgetDefaultSizeOnAdd() {
DeckPanel deck = new DeckPanel();
RootPanel.get().add(deck);
// Prepare widget, no width/height initially
Label content = new Label("content");
assertEquals("", content.getElement().getStyle().getWidth());
assertEquals("", content.getElement().getStyle().getHeight());
// Add a widget to the DeckPanel
deck.add(content);
// Verify width/height
assertEquals("100%", content.getElement().getStyle().getWidth());
assertEquals("100%", content.getElement().getStyle().getHeight());
}
/**
* Test that existing width/height is kept as is during add.
*/
public void testWidgetKeepSizeOnAdd() {
DeckPanel deck = new DeckPanel();
RootPanel.get().add(deck);
// Prepare widget, with width/height
Label content = new Label("content");
DOM.setStyleAttribute(content.getElement(), "width", "5cm");
DOM.setStyleAttribute(content.getElement(), "height", "30mm");
// Add a widget to the DeckPanel
deck.add(content);
// Verify width/height
assertEquals("5cm", DOM.getStyleAttribute(content.getElement(), "width"));
assertEquals("30mm", DOM.getStyleAttribute(content.getElement(), "height"));
}
@Override
protected DeckPanel createPanel() {
return new DeckPanel();
}
}