package com.gwt.ui.client.toolbar;
import java.util.ArrayList;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
public class Toolbar extends Composite {
private AbsolutePanel panel;
private int horizontalSpacing = 10;
private int verticalSpacing = 5;
private ArrayList<Widget> widgets = new ArrayList<Widget>();
/**
* Constructor
*/
public Toolbar() {
panel = new AbsolutePanel();
initWidget(panel);
panel.addStyleName("Toolbar");
}
/**
* Adds a widget into the toolbar.
*
* @param w widget to add.
*/
public void addWidget(Widget w) {
widgets.add(w);
panel.add(w);
if (w instanceof Image) {
w.addStyleName("Toolbar-Image");
}
}
/**
* Redraw the toolbar. This is needed in some cases when the size of the tools widgets changes.
*/
public void redraw() {
int left = horizontalSpacing;
int top = verticalSpacing;
int max = 0;
int size = widgets.size();
for (int i = 0; i < size; i++) {
Widget w = widgets.get(i);
panel.setWidgetPosition(w, left, top);
left += w.getOffsetWidth() + horizontalSpacing;
if (w.getOffsetHeight() > max) {
max = w.getOffsetHeight();
}
}
setHeight((max + verticalSpacing + verticalSpacing) + "px");
setWidth(left + horizontalSpacing + "px");
}
/**
* Returns the horizontal spacing.
*
* @return Returns the horizontalSpacing.
*/
public int getHorizontalSpacing() {
return horizontalSpacing;
}
public void setHorizontalSpacing(int horizontalSpacing) {
this.horizontalSpacing = horizontalSpacing;
}
/**
* Returns the vertical spacing.
*
* @return Returns the verticalSpacing.
*/
public int getVerticalSpacing() {
return verticalSpacing;
}
public void setVerticalSpacing(int verticalSpacing) {
this.verticalSpacing = verticalSpacing;
}
}