ingo@4: package de.intevation.flys.client.client.ui; ingo@4: ingo@4: import com.google.gwt.core.client.GWT; ingo@4: ingo@4: import com.smartgwt.client.widgets.Canvas; ingo@4: import com.smartgwt.client.widgets.Label; ingo@4: import com.smartgwt.client.widgets.grid.ListGrid; ingo@4: import com.smartgwt.client.widgets.grid.ListGridField; ingo@4: import com.smartgwt.client.widgets.layout.VLayout; ingo@4: ingo@4: import de.intevation.artifacts.common.model.User; ingo@4: ingo@4: import de.intevation.flys.client.shared.model.Collection; ingo@4: import de.intevation.flys.client.shared.model.CollectionRecord; ingo@4: import de.intevation.flys.client.shared.model.DefaultCollection; ingo@4: ingo@4: import de.intevation.flys.client.client.FLYSMessages; ingo@4: ingo@4: ingo@4: /** ingo@4: * The project list shows a list of projects of a specific user. ingo@4: * ingo@4: * @author Ingo Weinzierl ingo@4: */ ingo@4: public class ProjectList extends VLayout { ingo@4: ingo@4: /** The interface that provides i18n messages. */ ingo@4: private FLYSMessages messages = GWT.create(FLYSMessages.class); ingo@4: ingo@4: /** The user whose projects should be displayed.*/ ingo@4: protected User user; ingo@4: ingo@4: /** The grid that contains the project rows.*/ ingo@4: protected ListGrid grid; ingo@4: ingo@4: /** ingo@4: * The default constructor that creates a new ProjectList for a specific ingo@4: * user. ingo@4: * ingo@4: * @param user The user. ingo@4: */ ingo@4: public ProjectList(User user) { ingo@4: this.user = user; ingo@4: ingo@4: grid = new CollectionGrid(); ingo@4: initGrid(); ingo@4: ingo@4: // TODO Remove the following code block after a service to fetch the ingo@4: // user collections has been implemented! Instead of these static lines, ingo@4: // a callback mechanism should be implemented that updates this widget ingo@4: // when the current user changes. ingo@4: Collection c1 = new DefaultCollection("uu-1"); ingo@4: Collection c2 = new DefaultCollection("uu-2"); ingo@4: CollectionRecord rec1 = new CollectionRecord(c1); ingo@4: CollectionRecord rec2 = new CollectionRecord(c2); ingo@4: grid.addData(rec1); ingo@4: grid.addData(rec2); ingo@4: ingo@4: init(); ingo@4: } ingo@4: ingo@4: ingo@4: protected void initGrid() { ingo@4: grid.setEmptyMessage(messages.no_projects()); ingo@4: grid.setLoadingDataMessage(messages.load_projects()); ingo@4: grid.setShowRecordComponents(true); ingo@4: grid.setShowRecordComponentsByCell(true); ingo@4: grid.setCanRemoveRecords(false); ingo@4: grid.setShowHeader(false); ingo@4: grid.setWidth100(); ingo@4: ingo@4: ListGridField date = new ListGridField("date", "date"); ingo@4: ListGridField name = new ListGridField("name", "name"); ingo@4: ListGridField pub = new ListGridField("publish", "publish"); ingo@4: ListGridField del = new ListGridField("delete", "delete"); ingo@4: ingo@4: date.setWidth(70); ingo@4: name.setWidth(155); ingo@4: pub.setWidth(35); ingo@4: del.setWidth(35); ingo@4: ingo@4: grid.setFields(date, name, pub, del); ingo@4: } ingo@4: ingo@4: ingo@4: /** ingo@4: * The init() method handles the layout stuff for this widget. ingo@4: */ ingo@4: protected void init() { ingo@4: setWidth(300); ingo@4: setHeight100(); ingo@4: setShowResizeBar(true); ingo@4: setShowEdges(false); ingo@4: setLayoutMargin(0); ingo@4: ingo@4: Label title = new Label(messages.projects()); ingo@4: title.setHeight("20"); ingo@4: title.setMargin(5); ingo@4: title.setWidth100(); ingo@4: ingo@4: Canvas titleWrapper = new Canvas(); ingo@4: titleWrapper.setBorder("1px solid #808080"); ingo@4: titleWrapper.setBackgroundColor("#C3D9FF"); ingo@4: titleWrapper.setWidth100(); ingo@4: titleWrapper.addChild(title); ingo@4: ingo@4: Canvas gridWrapper = new Canvas(); ingo@4: gridWrapper.setBorder("1px solid #808080"); ingo@4: gridWrapper.setPadding(0); ingo@4: titleWrapper.setWidth100(); ingo@4: gridWrapper.addChild(grid); ingo@4: ingo@4: addMember(titleWrapper); ingo@4: addMember(gridWrapper); ingo@4: } ingo@4: } ingo@4: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :