blob: 8b90adeef6446c3f7b109a97984266ff6e6bc7f4 [file] [log] [blame]
/*
* Copyright 2010 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;
/**
* Tests for {@link SplitLayoutPanel}.
*/
public class SplitLayoutPanelTest extends DockLayoutPanelTest {
static class Adder implements HasWidgetsTester.WidgetAdder {
public void addChild(HasWidgets container, Widget child) {
((SplitLayoutPanel) container).addNorth(child, 10);
}
}
public void testAttachDetachOrder() {
HasWidgetsTester.testAll(new SplitLayoutPanel(), new Adder(), true);
}
public void testReplaceCenterWidget() {
SplitLayoutPanel p = new SplitLayoutPanel();
Label l0 = new Label("foo");
Label l1 = new Label("bar");
Label l2 = new Label("baz");
// center: l1
p.addWest(l0, 64);
p.add(l1);
assertEquals(l1, p.getCenter());
// center: l2
p.remove(l1);
p.add(l2);
assertEquals(l2, p.getCenter());
}
public void testSetWidgetMinSizeCenter() {
SplitLayoutPanel p = new SplitLayoutPanel();
Label west = new Label("west");
Label center = new Label("center");
p.addWest(west, 100);
p.add(center);
// Should be ignored gracefully.
p.setWidgetMinSize(center, 10);
}
public void testSplitterOrder() {
SplitLayoutPanel p = new SplitLayoutPanel();
WidgetCollection children = p.getChildren();
Label l0 = new Label("foo");
Label l1 = new Label("bar");
Label l2 = new Label("baz");
Label l3 = new Label("tintin");
Label l4 = new Label("toto");
p.addWest(l0, 64);
assertEquals(l0, children.get(0));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(1).getClass());
p.addNorth(l1, 64);
assertEquals(l1, children.get(2));
assertEquals(SplitLayoutPanel.VSplitter.class, children.get(3).getClass());
p.addEast(l2, 64);
assertEquals(l2, children.get(4));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(5).getClass());
p.addSouth(l3, 64);
assertEquals(l3, children.get(6));
assertEquals(SplitLayoutPanel.VSplitter.class, children.get(7).getClass());
p.add(l4);
assertEquals(l4, children.get(8));
}
public void testRemoveInsert() {
SplitLayoutPanel p = new SplitLayoutPanel();
WidgetCollection children = p.getChildren();
Label l0 = new Label("foo");
Label l1 = new Label("bar");
Label l2 = new Label("baz");
p.addWest(l0, 64);
p.add(l1);
assertEquals(l0, children.get(0));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(1).getClass());
assertEquals(l1, children.get(2));
p.remove(l0);
p.insertWest(l2, 64, l1);
assertEquals(l2, children.get(0));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(1).getClass());
assertEquals(l1, children.get(2));
}
public void testRemoveOutOfOrder() {
SplitLayoutPanel p = new SplitLayoutPanel();
WidgetCollection children = p.getChildren();
Label l0 = new Label("foo");
Label l1 = new Label("bar");
p.addWest(l0, 64);
p.addWest(l1, 64);
assertEquals(l0, children.get(0));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(1).getClass());
assertEquals(l1, children.get(2));
assertEquals(SplitLayoutPanel.HSplitter.class, children.get(3).getClass());
SplitLayoutPanel.HSplitter splitter0 = (SplitLayoutPanel.HSplitter) children.get(1);
// Remove the second element and make sure the correct splitter is removed.
p.remove(l1);
assertEquals(2, children.size());
assertEquals(l0, children.get(0));
assertEquals(splitter0, children.get(1));
}
@Override
protected DockLayoutPanel createDockLayoutPanel() {
return new SplitLayoutPanel();
}
}