| /* |
| * Copyright 2009 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.junit.DoNotRunWith; |
| import com.google.gwt.junit.Platform; |
| import com.google.gwt.user.client.DOM; |
| |
| /** |
| * Tests both {@link HorizontalSplitPanel} and {@link VerticalSplitPanel}. |
| * |
| * @param <T> the panel type |
| */ |
| public abstract class SplitPanelTestBase<T extends SplitPanel> extends |
| PanelTestBase<T> { |
| |
| private static Widget createMockWidget() { |
| final Label label = new Label(); |
| label.setText("Testing 1, 2, 3"); |
| DOM.setStyleAttribute(label.getElement(), "fontSize", "72pt"); |
| return label; |
| } |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.user.DebugTest"; |
| } |
| |
| @Override |
| @DoNotRunWith({Platform.HtmlUnitBug}) |
| public void testAttachDetachOrder() { |
| HasWidgetsTester.testAll(createPanel(), |
| new HasWidgetsTester.DefaultWidgetAdder(), false); |
| } |
| |
| /** |
| * Tests creation, widget assignment, null assignment. |
| */ |
| @DoNotRunWith({Platform.HtmlUnitBug}) |
| public void testSplitPanelCreate() { |
| final T panel = createPanel(); |
| final Widget widgetA = createMockWidget(); |
| final Widget widgetB = createMockWidget(); |
| |
| // Intentionally add before setting widgets. |
| RootPanel.get().add(panel); |
| |
| panel.setHeight("100px"); |
| panel.setWidth("100px"); |
| |
| // Ensure position can be set before widgets are added. |
| panel.setSplitPosition("20px"); |
| |
| setEndOfLineWidget(panel, widgetB); |
| setStartOfLineWidget(panel, widgetA); |
| |
| assertTrue(getEndOfLineWidget(panel) == widgetB); |
| assertTrue(getStartOfLineWidget(panel) == widgetA); |
| |
| setStartOfLineWidget(panel, null); |
| setEndOfLineWidget(panel, null); |
| |
| assertTrue(getStartOfLineWidget(panel) == null); |
| assertTrue(getEndOfLineWidget(panel) == null); |
| |
| setStartOfLineWidget(panel, widgetB); |
| setEndOfLineWidget(panel, widgetA); |
| |
| assertTrue(getStartOfLineWidget(panel) == widgetB); |
| assertTrue(getEndOfLineWidget(panel) == widgetA); |
| |
| // Ensure we ended up at the right size. |
| assertEquals(100, panel.getOffsetWidth()); |
| assertEquals(100, panel.getOffsetHeight()); |
| } |
| |
| /** |
| * Get the widget at the end of the line. |
| * |
| * @param split the {@link SplitPanel} |
| * @return the widget |
| */ |
| protected abstract Widget getEndOfLineWidget(T split); |
| |
| /** |
| * Get the widget at the start of the line. |
| * |
| * @param split the {@link SplitPanel} |
| * @return the widget |
| */ |
| protected abstract Widget getStartOfLineWidget(T split); |
| |
| /** |
| * Set the widget at the end of the line. |
| * |
| * @param split the {@link SplitPanel} |
| * @param w the widget to set |
| */ |
| protected abstract void setEndOfLineWidget(T split, Widget w); |
| |
| /** |
| * Set the widget at the start of the line. |
| * |
| * @param split the {@link SplitPanel} |
| * @param w the widget to set |
| */ |
| protected abstract void setStartOfLineWidget(T split, Widget w); |
| } |