ingo@0: package de.intevation.flys.client.client;
ingo@0:
ingo@0: import com.google.gwt.core.client.EntryPoint;
ingo@2: import com.google.gwt.core.client.GWT;
ingo@2: import com.google.gwt.user.client.rpc.AsyncCallback;
ingo@0: import com.google.gwt.user.client.ui.RootPanel;
ingo@9: import com.google.gwt.xml.client.XMLParser;
ingo@1:
ingo@1: import com.smartgwt.client.widgets.layout.VLayout;
ingo@1:
ingo@2: import de.intevation.artifacts.common.model.User;
ingo@2:
ingo@9: import de.intevation.flys.client.shared.model.Artifact;
ingo@6: import de.intevation.flys.client.shared.model.Collection;
ingo@6: import de.intevation.flys.client.shared.model.DefaultCollection;
ingo@6:
ingo@9: import de.intevation.flys.client.client.services.ArtifactService;
ingo@9: import de.intevation.flys.client.client.services.ArtifactServiceAsync;
ingo@2: import de.intevation.flys.client.client.services.UserService;
ingo@2: import de.intevation.flys.client.client.services.UserServiceAsync;
ingo@6: import de.intevation.flys.client.client.ui.CollectionView;
ingo@1: import de.intevation.flys.client.client.ui.FLYSView;
ingo@6: import de.intevation.flys.client.client.ui.FLYSWorkspace;
ingo@1: import de.intevation.flys.client.client.ui.MainMenu;
ingo@4: import de.intevation.flys.client.client.ui.ProjectList;
ingo@1:
ingo@0:
ingo@0: /**
ingo@0: * Entry point classes define onModuleLoad()
.
ingo@1: *
ingo@1: * @author Ingo Weinzierl
ingo@0: */
ingo@0: public class FLYS implements EntryPoint {
ingo@0:
ingo@2: /** The UserService used to retrieve information about the current user. */
ingo@2: protected UserServiceAsync userService = GWT.create(UserService.class);
ingo@2:
ingo@9: /** The ArtifactService used to communicate with the Artifact server. */
ingo@9: protected ArtifactServiceAsync artifactService =
ingo@9: GWT.create(ArtifactService.class);
ingo@9:
ingo@4: /** The menu bar at the top of the application.*/
ingo@2: protected MainMenu menu;
ingo@4:
ingo@4: /** The content window. It takes the whole space beneath the menu bar.*/
ingo@2: protected FLYSView view;
ingo@2:
ingo@4: /** The project list that displays the projects of the user.*/
ingo@4: protected ProjectList projectList;
ingo@4:
ingo@6: /** The FLYSWorkspace.*/
ingo@6: protected FLYSWorkspace workspace;
ingo@6:
ingo@2:
ingo@1: /**
ingo@1: * This is the entry point method.
ingo@1: */
ingo@1: public void onModuleLoad() {
ingo@0:
ingo@1: VLayout vertical = new VLayout();
ingo@2: vertical.setMembersMargin(2);
ingo@1: vertical.setLayoutMargin(1);
ingo@1: vertical.setWidth100();
ingo@1: vertical.setHeight100();
ingo@0:
ingo@6: menu = new MainMenu(this);
ingo@2: view = new FLYSView();
ingo@1:
ingo@1: vertical.addMember(menu);
ingo@1: vertical.addMember(view);
ingo@1:
ingo@1: RootPanel.get("app").add(vertical);
ingo@2:
ingo@9: initConfiguration();
ingo@9:
ingo@2: userService.getCurrentUser(new AsyncCallback() {
ingo@2: public void onFailure(Throwable caught) {
ingo@2: GWT.log("Could not find a logged in user.");
ingo@2: // TODO do something
ingo@2: }
ingo@2:
ingo@2: public void onSuccess(User user) {
ingo@2: GWT.log("Found a user. Set '"+ user.getLastName()+"'");
ingo@2: menu.setCurrentUser(user);
ingo@4:
ingo@4: projectList = new ProjectList(user);
ingo@6: workspace = new FLYSWorkspace();
ingo@4: view.setProjectList(projectList);
ingo@6: view.setFLYSWorkspace(workspace);
ingo@2: }
ingo@2: });
ingo@0: }
ingo@6:
ingo@6:
ingo@6: /**
ingo@9: * This method should be called at system start. It initialzes the client
ingo@9: * configuration.
ingo@9: */
ingo@9: protected void initConfiguration() {
ingo@9: String xml = FLYSResources.INSTANCE.initialConfiguration().getText();
ingo@9: Config.getInstance(XMLParser.parse(xml));
ingo@9: }
ingo@9:
ingo@9:
ingo@9: /**
ingo@6: * This method creates a new CollectionView and adds it to the workspace.
ingo@6: */
ingo@6: public void newProject() {
ingo@6: // TODO Call the REST service to create a new Collection
ingo@6: // TODO Use the UUID of the Collection to add a new CollectionView!
ingo@6: Collection c = new DefaultCollection(new java.util.Date().toString());
ingo@9: workspace.addView(c.identifier(), new CollectionView(this, c));
ingo@9: }
ingo@9:
ingo@9:
ingo@9: /**
ingo@9: * Create a new Artifact.
ingo@9: */
ingo@9: public void newArtifact(String factory) {
ingo@14: String url = Config.getInstance().getServerUrl();
ingo@14:
ingo@14: artifactService.create(url, factory, new AsyncCallback() {
ingo@9: public void onFailure(Throwable caught) {
ingo@9: GWT.log("Could not create the new artifact.");
ingo@9: GWT.log(caught.getMessage());
ingo@9: }
ingo@9:
ingo@9: public void onSuccess(Artifact artifact) {
ingo@9: GWT.log("Successfully created a new artifact.");
ingo@9: }
ingo@9: });
ingo@6: }
ingo@0: }
ingo@1: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :