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 :