package de.circleofcontacts.client.widgets;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.VerticalPanel;
import de.circleofcontacts.client.view.ContactGroupSummaryView;
public class WindowWidget extends HorizontalPanel {
private CirclesListWidget circles;
private FriendsListWidget friends;
private DetailsWidget details;
public WindowWidget () {
// Generate sub-widgets
this.circles = new CirclesListWidget();
this.details = new DetailsWidget();
this.friends = new FriendsListWidget(this.details);
// Add event handlers
this.circles.addSelectionHandler(new SelectionHandler<TreeItem>() {
public void onSelection(SelectionEvent<TreeItem> event) {
if (event.getSelectedItem() instanceof CircleWidget) {
ContactGroupSummaryView group = ((CircleWidget)event.getSelectedItem()).getGroup();
friends.update(group);
} else {
friends.clear();
}
}
});
// Gruss an den GUI Designer: Dieses Button muss anderswohin, oder? ;-)
VerticalPanel vp = new VerticalPanel();
vp.add(this.circles);
vp.add(new Button("Neue Gruppe",
new ClickHandler() {
public void onClick(ClickEvent event) {
new ContactGroupEditor(null).show();
}
}));
// Add to panel
this.add(vp);
this.add(this.friends);
this.add(this.details);
// Do some layout stuff...
this.setSpacing(20);
}
}