ViewController.java :  » UnTagged » socialconferenceproject » at » socialconference » web » client » controller » Android Open Source

Android Open Source » UnTagged » socialconferenceproject 
socialconferenceproject » at » socialconference » web » client » controller » ViewController.java
/** 
 * Copyright 2010 Erlacher Felix, Estgfaeller Wolfgang, Ferula Patrick
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package at.socialconference.web.client.controller;

import com.google.gwt.user.client.rpc.AsyncCallback;

import at.socialconference.inter.model.User;
import at.socialconference.web.client.SCwebService;
import at.socialconference.web.client.ui.AdminHome;
import at.socialconference.web.client.ui.FriendsHome;
import at.socialconference.web.client.ui.FriendsSearch;
import at.socialconference.web.client.ui.FriendsTwitter;
import at.socialconference.web.client.ui.Home;
import at.socialconference.web.client.ui.Login;
import at.socialconference.web.client.ui.Registration;
import at.socialconference.web.client.ui.SCwebView;
import at.socialconference.web.client.util.AsyncCallbackGetClientUser;

/**
 * Controlles the view and offers methods to update it
 * 
 */
public class ViewController {

  private class AsyncCallbackExistsValidSession implements AsyncCallback<Boolean>  {
    @Override
    public void onFailure(Throwable caught) {}
    @Override
    public void onSuccess(Boolean result) {
      if (result.equals(true)) {
        SCwebService.Util.getInstance().getClientUser(new AsyncCallbackGetClientUser());
      }
      else {
        changeViewToLoggedOut();
      }
    }
  }
  
  private static ViewController instance;

  private SCwebView view = new SCwebView();
  private User user;
  
  private ViewController() {
    SCwebService.Util.getInstance().existsValidSession(new AsyncCallbackExistsValidSession());
  }

  /**
   * Returns the current instance of the ViewController
   * 
   * @return
   */
  public static ViewController getInstance() {
    if (instance == null)
      instance = new ViewController();
    return instance;
  }

  /**
   * Returns the view controlled by the ViewController
   * 
   * @return
   */
  public SCwebView getView() {
    return view;
  }

  /**
   * Shows the registration-form in the middle of the root DockLayoutPanel
   */
  public void showRegisterForm() {
    view.updateMiddle(new Registration());
  }

  /**
   * Shows the login-form in the middle of the root DockLayoutPanel
   */
  public void showLoginForm() {
    view.updateMiddle(new Login());
  }

  /**
   * Changes the status of the view from logged out to logged in.
   */
  public void changeViewToLoggedIn() {
    view.updateMenu(true);
    showClientHome();
  }

  /**
   * Changes the status of the view from logged in to logged out.
   */
  public void changeViewToLoggedOut() {
    view.updateMiddle(new Login());
    view.updateMenu(false);
  }

  /**
   * Returns the user of the client
   * 
   * @return
   */
  public User getClientUser() {
    return user;
  }

  /**
   * Sets the user of the client
   * 
   * @param user
   */
  public void setUser(User user) {
    this.user = user;
  }

  /**
   * Shows the FriendsHome
   */
  public void showFriendsHome() {
    view.updateMiddle(new FriendsHome());
  }

  /**
   * Shows the FriendsTwitter
   */
  public void showFriendsTwitter() {
    view.updateMiddle(new FriendsTwitter());
  }
  
  /**
   * Shows Admininistration Area
   */
  public void showAdminHome() {
    view.updateMiddle(new AdminHome());
  }

  /**
   * Shows the FriendsSearch
   */
  public void showFriendsSearch() {
    view.updateMiddle(new FriendsSearch());
  }

  /**
   * Shows the Home view of the client
   */
  public void showClientHome() {
    view.updateMiddle(new Home());
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.