ingo@862: package de.intevation.flys.client.client.ui; ingo@862: ingo@862: import com.google.gwt.core.client.GWT; ingo@862: import com.google.gwt.user.client.Timer; ingo@862: ingo@862: import com.smartgwt.client.types.Alignment; ingo@862: import com.smartgwt.client.types.Positioning; ingo@862: import com.smartgwt.client.types.VerticalAlignment; ingo@862: import com.smartgwt.client.widgets.Canvas; ingo@862: import com.smartgwt.client.widgets.Label; ingo@862: import com.smartgwt.client.widgets.layout.HLayout; ingo@862: import com.smartgwt.client.widgets.layout.VLayout; ingo@862: ingo@862: import de.intevation.flys.client.shared.model.Artifact; ingo@862: ingo@862: ingo@862: public class LoadingPanel extends Canvas { ingo@862: ingo@862: public static final int UPDATE_INTERVAL = 1000 * 5; ingo@862: ingo@862: protected CollectionView parent; ingo@862: protected Artifact artifact; ingo@862: ingo@862: protected HLayout dialog; ingo@862: protected Label msg; ingo@862: ingo@862: protected int i; ingo@862: ingo@862: ingo@862: public LoadingPanel(CollectionView parent, Artifact artifact) { ingo@862: super(); ingo@862: ingo@862: this.parent = parent; ingo@862: this.artifact = artifact; ingo@862: this.msg = new Label(); ingo@862: this.dialog = createDialog(); ingo@862: ingo@862: this.i = 0; ingo@862: ingo@862: initLayout(); ingo@862: startTimer(); ingo@862: } ingo@862: ingo@862: ingo@862: private void initLayout() { ingo@862: setWidth("100%"); ingo@862: setHeight("98%"); ingo@862: setBackgroundColor("#22AAFF"); ingo@862: setOpacity(50); ingo@862: setPosition(Positioning.RELATIVE); ingo@862: ingo@862: parent.addChild(this); ingo@862: parent.addChild(dialog); ingo@862: dialog.moveTo(0, 20); ingo@862: moveTo(0, 7); ingo@862: } ingo@862: ingo@862: ingo@862: protected HLayout createDialog() { ingo@862: msg.setStyleName("loading-message"); ingo@862: msg.setWidth(200); ingo@862: msg.setHeight(100); ingo@862: ingo@862: dialog = new HLayout(); ingo@862: dialog.setDefaultLayoutAlign(Alignment.CENTER); ingo@862: dialog.setAlign(Alignment.CENTER); ingo@862: dialog.setWidth100(); ingo@862: dialog.setHeight100(); ingo@862: dialog.setBorder("1px solid green"); ingo@862: ingo@862: dialog.addMember(msg); ingo@862: ingo@862: return dialog; ingo@862: } ingo@862: ingo@862: ingo@862: private void startTimer() { ingo@862: Timer t = new Timer() { ingo@862: @Override ingo@862: public void run() { ingo@862: update(); ingo@862: } ingo@862: }; ingo@862: t.schedule(UPDATE_INTERVAL); ingo@862: } ingo@862: ingo@862: ingo@862: private void update() { ingo@862: msg.setContents("This is update -> " + String.valueOf(i++)); ingo@862: ingo@862: // TODO FETCH ARTIFACT's DESCRIBE DOCUMENT AND REMOVE THIS LOADING PANEL ingo@862: // IF IT IS NO LONGER IN BACKGROUND MODE! ingo@862: ingo@862: if (i == 5) { ingo@862: finish(); ingo@862: } ingo@862: ingo@862: startTimer(); ingo@862: } ingo@862: ingo@862: ingo@862: private void finish() { ingo@862: parent.removeChild(this); ingo@862: parent.removeChild(dialog); ingo@862: } ingo@862: } ingo@862: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :