blob: 1e713e74acf2c11c038b82267248e7c0ef85330c [file] [log] [blame]
/*
* 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.museum.client.common;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import java.util.Iterator;
/**
* Helper class to avoid manually assembling vertical and horizontal panels for
* these tests. It acts like a "typewriter" layout.
*
* So, for instance
* <pre>
* // assume the existence of widgets a-z
* SimpleLayout layout = new SimpleLayout();
* layout.add(a);
* layout.add(b);
* layout.nextRow();
* layout.add(c);
* layout.nextRow();
* layout.add(d);
* layout.add(e);
*</pre>
*
* would be rendered as:
* <pre>
* a b
* c
* d e
* </pre>
* */
public class SimpleLayout extends Composite implements HasWidgets {
private final VerticalPanel master = new VerticalPanel();
private VerticalPanel allRows = new VerticalPanel();
private HorizontalPanel currentRow;
public SimpleLayout() {
initWidget(master);
master.add(allRows);
nextRow();
}
/**
* Adds a widget to the current row with the given caption.
*/
public void add(String caption, Widget w) {
CaptionPanel c = new CaptionPanel(caption);
c.add(w);
add(c);
}
/**
* Adds a widget to the current row.
*/
public void add(Widget w) {
currentRow.add(w);
}
/**
* Adds a footer to this layout table, the footer is guaranteed to be beneath
* all the rows.
*/
public void addFooter(Widget w) {
master.add(w);
}
public void clear() {
master.clear();
}
public Iterator<Widget> iterator() {
return master.iterator();
}
/**
* Creates another row. After creating this row, all widgets added using
* {@link #add(Widget)} and {@link #add(String, Widget)} will be added to the
* new row.
*/
public void nextRow() {
currentRow = new HorizontalPanel();
allRows.add(currentRow);
}
public boolean remove(Widget w) {
return master.remove(w);
}
}