view flys-client/src/main/java/de/intevation/flys/client/client/FLYS.java @ 9:8facd8545a12

Added a global configuration for the client and classes providing methods to retrieve these information. flys-client/trunk@1317 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 16 Feb 2011 14:50:06 +0000
parents e2b3966b40ca
children fe2f4d1dd784
line wrap: on
line source
package de.intevation.flys.client.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.xml.client.XMLParser;

import com.smartgwt.client.widgets.layout.VLayout;

import de.intevation.artifacts.common.model.User;

import de.intevation.flys.client.shared.model.Artifact;
import de.intevation.flys.client.shared.model.Collection;
import de.intevation.flys.client.shared.model.DefaultCollection;

import de.intevation.flys.client.client.services.ArtifactService;
import de.intevation.flys.client.client.services.ArtifactServiceAsync;
import de.intevation.flys.client.client.services.UserService;
import de.intevation.flys.client.client.services.UserServiceAsync;
import de.intevation.flys.client.client.ui.CollectionView;
import de.intevation.flys.client.client.ui.FLYSView;
import de.intevation.flys.client.client.ui.FLYSWorkspace;
import de.intevation.flys.client.client.ui.MainMenu;
import de.intevation.flys.client.client.ui.ProjectList;


/**
 * Entry point classes define <code>onModuleLoad()</code>.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class FLYS implements EntryPoint {

    /** The UserService used to retrieve information about the current user. */
    protected UserServiceAsync userService = GWT.create(UserService.class);

    /** The ArtifactService used to communicate with the Artifact server. */
    protected ArtifactServiceAsync artifactService =
        GWT.create(ArtifactService.class);

    /** The menu bar at the top of the application.*/
    protected MainMenu menu;

    /** The content window. It takes the whole space beneath the menu bar.*/
    protected FLYSView view;

    /** The project list that displays the projects of the user.*/
    protected ProjectList projectList;

    /** The FLYSWorkspace.*/
    protected FLYSWorkspace workspace;


    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {

        VLayout vertical = new VLayout();
        vertical.setMembersMargin(2);
        vertical.setLayoutMargin(1);
        vertical.setWidth100();
        vertical.setHeight100();

        menu = new MainMenu(this);
        view = new FLYSView();

        vertical.addMember(menu);
        vertical.addMember(view);

        RootPanel.get("app").add(vertical);

        initConfiguration();

        userService.getCurrentUser(new AsyncCallback<User>() {
            public void onFailure(Throwable caught) {
                GWT.log("Could not find a logged in user.");
                // TODO do something
            }

            public void onSuccess(User user) {
                GWT.log("Found a user. Set '"+ user.getLastName()+"'");
                menu.setCurrentUser(user);

                projectList = new ProjectList(user);
                workspace   = new FLYSWorkspace();
                view.setProjectList(projectList);
                view.setFLYSWorkspace(workspace);
            }
        });
    }


    /**
     * This method should be called at system start. It initialzes the client
     * configuration.
     */
    protected void initConfiguration() {
        String xml = FLYSResources.INSTANCE.initialConfiguration().getText();
        Config.getInstance(XMLParser.parse(xml));
    }


    /**
     * This method creates a new CollectionView and adds it to the workspace.
     */
    public void newProject() {
        // TODO Call the REST service to create a new Collection
        // TODO Use the UUID of the Collection to add a new CollectionView!
        Collection c = new DefaultCollection(new java.util.Date().toString());
        workspace.addView(c.identifier(), new CollectionView(this, c));
    }


    /**
     * Create a new Artifact.
     */
    public void newArtifact(String factory) {
        artifactService.create(factory, new AsyncCallback<Artifact>() {
            public void onFailure(Throwable caught) {
                GWT.log("Could not create the new artifact.");
                GWT.log(caught.getMessage());
            }

            public void onSuccess(Artifact artifact) {
                GWT.log("Successfully created a new artifact.");
            }
        });
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org