ingo@6: package de.intevation.flys.client.client.ui; ingo@6: ingo@6: import com.google.gwt.core.client.GWT; ingo@6: import com.google.gwt.i18n.client.DateTimeFormat; ingo@13: import com.google.gwt.user.client.rpc.AsyncCallback; ingo@6: ingo@7: import com.smartgwt.client.widgets.Canvas; ingo@13: import com.smartgwt.client.widgets.IButton; ingo@6: import com.smartgwt.client.widgets.Window; ingo@13: import com.smartgwt.client.widgets.events.ClickEvent; ingo@13: import com.smartgwt.client.widgets.events.ClickHandler; ingo@7: import com.smartgwt.client.widgets.form.DynamicForm; ingo@7: import com.smartgwt.client.widgets.form.fields.RadioGroupItem; ingo@7: import com.smartgwt.client.widgets.layout.VLayout; ingo@7: import com.smartgwt.client.widgets.tab.Tab; ingo@6: ingo@13: import de.intevation.flys.client.shared.model.Artifact; ingo@6: import de.intevation.flys.client.shared.model.Collection; ingo@6: ingo@14: import de.intevation.flys.client.client.Config; ingo@13: import de.intevation.flys.client.client.FLYS; ingo@6: import de.intevation.flys.client.client.FLYSMessages; ingo@13: import de.intevation.flys.client.client.services.ArtifactService; ingo@13: import de.intevation.flys.client.client.services.ArtifactServiceAsync; ingo@6: ingo@6: ingo@6: /** ingo@6: * @author Ingo Weinzierl ingo@6: */ ingo@6: public class CollectionView extends Window { ingo@6: ingo@13: /** The ArtifactService used to communicate with the Artifact server. */ ingo@13: protected ArtifactServiceAsync artifactService = ingo@13: GWT.create(ArtifactService.class); ingo@13: ingo@6: /** The message class that provides i18n strings.*/ ingo@6: FLYSMessages messages = GWT.create(FLYSMessages.class); ingo@6: ingo@13: /** The FLYS instance used to call services.*/ ingo@13: protected FLYS flys; ingo@13: ingo@6: /** The collection to be displayed.*/ ingo@6: protected Collection collection; ingo@6: ingo@13: /** TODO The artifact needs to be removed here after the Collection stuff in ingo@13: * the server has been finished! */ ingo@13: protected Artifact artifact; ingo@13: ingo@7: /** The parameter tab.*/ ingo@7: protected Tab parameterTab; ingo@7: ingo@7: /** The output tab.*/ ingo@7: protected Tab outputTab; ingo@7: ingo@6: ingo@6: /** ingo@6: * This constructor creates a new CollectionView that is used to display the ingo@6: * collection. ingo@6: * ingo@6: * @param collection The collection to be displayed. ingo@6: */ ingo@13: public CollectionView(FLYS flys, Collection collection) { ingo@13: this.flys = flys; ingo@6: this.collection = collection; ingo@6: ingo@6: init(); ingo@6: } ingo@6: ingo@6: ingo@6: /** ingo@6: * This method handles the initial layout stuff. ingo@6: */ ingo@6: protected void init() { ingo@6: setWidth(600); ingo@6: setHeight(400); ingo@6: ingo@6: setCanDragResize(true); ingo@6: ingo@6: DateTimeFormat dtf = DateTimeFormat.getFormat(messages.date_format()); ingo@6: String lastAccess = dtf.format(collection.getLastAccess()); ingo@6: setTitle(lastAccess + " - " + collection.getName()); ingo@7: ingo@7: VLayout layout = new VLayout(); ingo@7: addItem(layout); ingo@7: ingo@7: if (isNew()) { ingo@7: layout.addMember(renderNew()); ingo@7: } ingo@7: } ingo@7: ingo@7: ingo@7: /** ingo@7: * This method returns true, if the Collection is new and no plugins has ingo@7: * been chosen. ingo@7: * ingo@7: * @return true, if the Collection is new. ingo@7: */ ingo@7: public boolean isNew() { ingo@7: return true; ingo@7: } ingo@7: ingo@7: ingo@7: /** ingo@7: * This method creates a Canvas displaying the plugins of FLYS. ingo@7: * ingo@7: * @return a Canvas that displays the plugins of FLYS. ingo@7: */ ingo@7: protected Canvas renderNew() { ingo@13: VLayout layout = new VLayout(); ingo@7: layout.setWidth100(); ingo@7: ingo@7: DynamicForm form = new DynamicForm(); ingo@7: RadioGroupItem radio = new RadioGroupItem("plugin"); ingo@7: ingo@7: radio.setShowTitle(false); ingo@7: radio.setVertical(false); ingo@7: radio.setValueMap( ingo@7: messages.winfo(), ingo@7: messages.minfo(), ingo@7: messages.map(), ingo@7: messages.fix()); ingo@7: ingo@7: form.setFields(radio); ingo@7: ingo@13: IButton go = new IButton(messages.next()); ingo@13: go.addClickHandler(new ClickHandler() { ingo@13: public void onClick(ClickEvent event) { ingo@14: String serverUrl = Config.getInstance().getServerUrl(); ingo@13: ingo@14: artifactService.create( ingo@14: serverUrl, "winfo", ingo@14: new AsyncCallback() { ingo@14: public void onFailure(Throwable caught) { ingo@14: GWT.log("Could not create the new artifact."); ingo@14: GWT.log(caught.getMessage()); ingo@14: } ingo@14: ingo@14: public void onSuccess(Artifact artifact) { ingo@14: GWT.log("Successfully created a new artifact."); ingo@14: setArtifact(artifact); ingo@14: } ingo@13: }); ingo@13: } ingo@13: }); ingo@13: ingo@7: layout.addMember(form); ingo@13: layout.addMember(go); ingo@7: ingo@7: return layout; ingo@6: } ingo@13: ingo@13: ingo@13: /** ingo@13: * Set the current artifact. ingo@13: * ingo@13: * @param artifact The new artifact. ingo@13: */ ingo@13: protected void setArtifact(Artifact artifact) { ingo@13: this.artifact = artifact; ingo@13: ingo@13: updateView(); ingo@13: } ingo@13: ingo@13: ingo@13: protected void updateView() { ingo@13: GWT.log("Update the view of the artifact: " + artifact.getUuid()); ingo@13: // TODO display the artifact information / data ingo@13: } ingo@6: } ingo@6: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :