public class Button[label L, label E] extends
ClickableWidget[L, E]public Button(String{L} text)text - the given text
public Button(String{this} id, String{L} text)id - A string that can be used to identify this button
text - the string displayed on the button
protected void initWidget()public String{L} getText()public void setText{L}(String{L} text)text
public void setEnabled{L}(boolean{L} enabled)enabled
public class CheckBox[label L, label E] extends
ClickableWidget[L, E]public CheckBox(String{L} text)text
public CheckBox(String{this} id, String{L} text)id
protected void initWidget()public String{L} getText()public void setText{L}(String{L} text)text -
public boolean{E} isChecked()public boolean{E} isEnabled()public void setChecked{E}(boolean{E} check)check -
public void setEnabled{E}(boolean{E} enable)enable -
public abstract class ClickableWidget[label L, label E] extends Widget[L, E]public ClickableWidget()public ClickableWidget(String{this} id)id -
public void addListener{E}(ClickListener[L,E]{E} li)li -
public interface ClickListener[label L, label E]public void onClick{E;*<-Client}(Widget[L, E]{E} w):{E}w -
public class Grid[label L, label E] extends Panel[L, E]public Grid()public Grid(int{E} rows, int{E} columns)rows -
columns -
public void resize{L}(int{L} rows, int{L} columns)rows -
columns -
public void resizeRows{L}(int{L} rows)rows -
protected void initWidget()public void setWidget{L}(int{L} row, int{L} column, Widget[L, E]{L} widget)row -
column -
widget -
public class HorizontalPanel[label L, label E] extends Panel[L, E]public HorizontalPanel()public HorizontalPanel(String{this} id)id -
protected void initWidget()public class Image[label L, label E] extends ClickableWidget[L, E]public Image(String{L} url)url -
public Image(String{this} id, String{L} url)id -
url -
protected void initWidget()public String{L} getUrl()public void setUrl{L}(String{L} url)url -
public class LabeledWidgetpublic final label{this} wLpublic final label{this} wEpublic final Widget[wL, wE]{*wE;this} widgetLabeledWidget(label{this} wL, label{this} wE, Widget[wL, wE]{*wE;this} widget)wL -
wE -
widget -
public class NumberTextBox[label L, label E] extends TextBox[L, E]public NumberTextBox()public NumberTextBox(int{L} number)number -
public NumberTextBox(String{this} id, int{L} number)id -
number -
public java.lang.Integer{L} getInteger()public void setNumber{L}(int{L} num)num -
public abstract class Panel[label L, label E] extends Widget[L, E]public Panel()public Panel(String{this} id)public void addChild{L}(label wL,
label wE,
Widget[wL, wE]{L} w)
where {*wL} <= L,
{E; w} <= {*wE};wL -
wE -
w -
The second where constraint is the key constraint for tracking information flow from the path from the root to the widget w E is an upper bound on the info from the root panel to this widget, and {w} is the info to the child w, and since {*wE} is an upper bound on info from the root panel to w, we require that {E; w} <= {*wE}
public void addChild{L}(Widget[L, E]{L} w) where {w} <= {E}w -
public void removeChild{L}(label wL,
label wE,
Widget[wL, wE]{L} w)wL -
wE -
w -
public void removeAllChildren{L}()public LabeledWidget{id; this; L} getChildById(String id)id -
public class PasswordTextBox[label L, label E] extends Widget[L, E]public PasswordTextBox()public PasswordTextBox(String{this} id)id -
protected void initWidget()public String{L} getText()public void setText{L}(String{L} text)text -
public void setFocus{L}(boolean{L} state)state -
public class Popup[label L, label E] extends Panel[L, E]public Popup()public Popup(String id)id -
public static void showMessage{L}(String{L} msg)msg -
protected void initWidget()public class RadioButton[label L, label E] extends CheckBox[L, E]public RadioButton(String{L} group, String{L} text)group -
text -
public RadioButton(String{this} id, String{L} group, String{L} text)id -
group -
text -
public interface RadioButtonListener[label L, label E]public void onClick{E}(RadioButton[L, E]{E} b):{E}b -
public abstract class RootPanel[label L, label E] extends Panel[L, E]protected RootPanel()protected void initWidget()public static RootPanel[L, E] getRootPanel(principal client_)
where {L} <= {*->client_;_<-_}client_ -
public class Text[label L, label E] extends ClickableWidget[L, E]public Text(String{L} text)text -
public Text(String{this} id, String{L} text)id -
text -
protected void initWidget()public String{L} getText()public void setText{L}(String{L} text)text -
public class TextBox[label L, label E] extends ClickableWidget[L, E]public TextBox(String{L} text)text -
public TextBox(String{this} id, String{L} text)id -
text -
protected void initWidget()public String{L} getText()public void setText{L}(String{L} text)text -
public void setFocus{L}(boolean{L} state)state -
public class Timer[label E] extends Widget[E, E]public Timer()public Timer(int millis)millis -
public Timer(int millis, boolean repeat)millis -
repeat -
protected void initWidget()public void schedule(int millis)millis -
public void schedule(int millis, boolean repeat)millis -
repeat -
public void cancel()public void addListener{E}(final TimerListener[E]{E} l)l -
public void setStyleName(String style)style -
public void setVisible(boolean visible)visible -
public interface TimerListener[label E]public void onTimer{E}(Timer[E]{E} t):{E}t -
public class VerticalPanel[label L, label E] extends Panel[L, E]public VerticalPanel()public VerticalPanel(String{this} id)id -
protected void initWidget()public abstract class Widget[label L, label E]public Widget()public Widget(String{this} id)id -
public String getID()protected abstract void initWidget()public void setVisible{L}(boolean{L} visible)visible -