| /* |
| * 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.Command; |
| import com.google.gwt.user.client.DOM; |
| import com.google.gwt.user.client.DeferredCommand; |
| import com.google.gwt.user.client.Element; |
| |
| /** |
| * Test cases for {@link StackPanel}. |
| */ |
| public class StackPanelTest extends PanelTestBase<StackPanel> { |
| |
| static class Adder implements HasWidgetsTester.WidgetAdder { |
| public void addChild(HasWidgets container, Widget child) { |
| ((StackPanel) container).add(child, "foo"); |
| } |
| } |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.user.DebugTest"; |
| } |
| |
| public String curContents(StackPanel p) { |
| String accum = ""; |
| int size = p.getWidgetCount(); |
| for (int i = 0; i < size; i++) { |
| Label l = (Label) p.getWidget(i); |
| if (i != 0) { |
| accum += " "; |
| } |
| accum += l.getText(); |
| } |
| return accum; |
| } |
| |
| @Override |
| public void testAttachDetachOrder() { |
| HasWidgetsTester.testAll(createStackPanel(), new Adder(), true); |
| } |
| |
| public void testDebugId() { |
| final StackPanel p = createStackPanel(); |
| Label a = new Label("a"); |
| Label b = new Label("b"); |
| Label c = new Label("c"); |
| p.add(a, "header a"); |
| p.add(b, "header b"); |
| p.add(c, "header c"); |
| RootPanel.get().add(p); |
| |
| p.ensureDebugId("myStack"); |
| |
| // Check the body ids |
| UIObjectTest.assertDebugId("myStack", p.getElement()); |
| UIObjectTest.assertDebugId("myStack-content0", |
| DOM.getParent(a.getElement())); |
| UIObjectTest.assertDebugId("myStack-content1", |
| DOM.getParent(b.getElement())); |
| UIObjectTest.assertDebugId("myStack-content2", |
| DOM.getParent(c.getElement())); |
| |
| delayTestFinish(5000); |
| |
| // Check the header IDs |
| DeferredCommand.addCommand(new Command() { |
| public void execute() { |
| UIObjectTest.assertDebugIdContents("myStack-text0", "header a"); |
| UIObjectTest.assertDebugIdContents("myStack-text1", "header b"); |
| UIObjectTest.assertDebugIdContents("myStack-text2", "header c"); |
| |
| Element td0 = DOM.getElementById("gwt-debug-myStack-text-wrapper0"); |
| Element td1 = DOM.getElementById("gwt-debug-myStack-text-wrapper1"); |
| Element td2 = DOM.getElementById("gwt-debug-myStack-text-wrapper2"); |
| |
| assertEquals(p.getElement(), |
| DOM.getParent(DOM.getParent(DOM.getParent(td0)))); |
| assertEquals(p.getElement(), |
| DOM.getParent(DOM.getParent(DOM.getParent(td1)))); |
| assertEquals(p.getElement(), |
| DOM.getParent(DOM.getParent(DOM.getParent(td2)))); |
| |
| RootPanel.get().remove(p); |
| finishTest(); |
| } |
| }); |
| } |
| |
| /** |
| * Tests getSelectedStack. |
| */ |
| public void testGetSelectedStack() { |
| StackPanel p = createStackPanel(); |
| assertEquals(-1, p.getSelectedIndex()); |
| Label a = new Label("a"); |
| Label b = new Label("b"); |
| Label c = new Label("c"); |
| Label d = new Label("d"); |
| p.add(a); |
| p.add(b, "b"); |
| p.add(c); |
| p.add(d, "d"); |
| assertEquals(0, p.getSelectedIndex()); |
| p.showStack(2); |
| assertEquals(2, p.getSelectedIndex()); |
| p.showStack(-1); |
| assertEquals(2, p.getSelectedIndex()); |
| } |
| |
| /** |
| * Tests new remove implementation for StackPanel. |
| */ |
| public void testRemove() { |
| StackPanel p = createStackPanel(); |
| Label a = new Label("a"); |
| Label b = new Label("b"); |
| Label c = new Label("c"); |
| Label d = new Label("d"); |
| p.add(a); |
| p.add(b, "b"); |
| p.add(c); |
| p.add(d, "d"); |
| assertEquals("a b c d", curContents(p)); |
| |
| // Remove c |
| p.remove(c); |
| assertEquals("a b d", curContents(p)); |
| |
| // Remove b. |
| p.remove(1); |
| assertEquals("a d", curContents(p)); |
| |
| // Remove non-existant element |
| assertFalse(p.remove(b)); |
| |
| // Remove a. |
| p.remove(a); |
| assertEquals("d", curContents(p)); |
| |
| // Remove d. |
| p.remove(a); |
| assertEquals("d", curContents(p)); |
| } |
| |
| /** |
| * Create a new stack panel. |
| */ |
| protected StackPanel createStackPanel() { |
| return new StackPanel(); |
| } |
| |
| @Override |
| protected StackPanel createPanel() { |
| return createStackPanel(); |
| } |
| } |