Package com.eclipsesource.tabris.ui

Source Code of com.eclipsesource.tabris.ui.AbstractAction

/*******************************************************************************
* Copyright (c) 2013 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    EclipseSource - initial API and implementation
******************************************************************************/
package com.eclipsesource.tabris.ui;

import org.eclipse.rap.rwt.Adaptable;

import com.eclipsesource.tabris.internal.ui.PropertyChangeNotifier;



/**
* <p>
* An {@link AbstractAction} is a convenience class to make the implementation of actions easier. It provides service
* methods to control the application flow or manipulate the action state.
* </p>
*
* @see Action
*
* @since 1.0
*/
public abstract class AbstractAction implements Action, Adaptable {

  private final PropertyChangeNotifier notifier;
  private UI ui;

  public AbstractAction() {
    notifier = new PropertyChangeNotifier();
  }

  @Override
  public final void execute( UI ui ) {
    this.ui = ui;
    execute();
  }

  /**
   * <p>
   * Will be called by the Tabris UI when a user presses the visual representation of this action.
   * </p>
   *
   * @since 1.0
   */
  public abstract void execute();

  /**
   * <p>
   * Returns the UI instance this action lives in.
   * </p>
   */
  public UI getUI() {
    return ui;
  }

  /**
   * <p>
   * Returns the current visible page.
   * </p>
   */
  public Page getCurrentPage() {
    return ui.getPageOperator().getCurrentPage();
  }

  /**
   * <p>
   * Returns the {@link PageData} of the current visible page.
   * </p>
   */
  public PageData getCurrentPageData() {
    return ui.getPageOperator().getCurrentPageData();
  }

  /**
   * <p>
   * Sets the title of the current visible page.
   * </p>
   */
  public void setPageTitle( String title ) {
    ui.getPageOperator().setCurrentPageTitle( title );
  }

  /**
   * <p>
   * Opens a new page with the defined id.
   * <p>
   *
   * @param pageId the id of the page to open. Must not be <code>null</code> or empty.
   *
   * @throws IllegalStateException when no page exist for the given id.
   */
  public void openPage( String pageId ) throws IllegalStateException {
    ui.getPageOperator().openPage( pageId );
  }

  /**
   * <p>
   * Opens a new page with the defined id and passes {@link PageData} to the new page.
   * <p>
   *
   * @param pageId the id of the page to open. Must not be <code>null</code> or empty.
   * @param data the data for the new page. Can be accessed using {@link AbstractPage#getData()} on the new page.
   *
   * @throws IllegalStateException when no page exist for the given id.
   */
  public void openPage( String pageId, PageData data ) throws IllegalStateException {
    ui.getPageOperator().openPage( pageId, data );
  }

  /**
   * <p>
   * Closes the current visible page.
   * </p>
   *
   * @throws IllegalStateException when it's called on a top level page.
   */
  public void closeCurrentPage() throws IllegalStateException {
    ui.getPageOperator().closeCurrentPage();
  }

  /**
   * <p>
   * Manipulates the visibility of an {@link Action}.
   * </p>
   *
   * @param actionId the id of the action to manipulate. Must not be <code>null</code> or empty.
   *
   * @throws IllegalStateException when no {@link Action} for the given id exist.
   */
  public void setActionVisible( String actionId, boolean visible ) throws IllegalStateException {
    ui.getActionOperator().setActionVisible( actionId, visible );
  }

  /**
   * <p>
   * Manipulates the enable state of an {@link Action}.
   * </p>
   *
   * @param actionId the id of the action to manipulate. Must not be <code>null</code> or empty.
   *
   * @throws IllegalStateException when no {@link Action} for the given id exist.
   */
  public void setActionEnabled( String actionId, boolean enabled ) throws IllegalStateException {
    ui.getActionOperator().setActionEnabled( "foo", enabled );
  }

  /**
   * <p>
   * Returns the {@link UIConfiguration} used to configure the current UI. The configuration returned has
   * session scope and can be used to manipulate the UI during runtime e.g. adding {@link PageConfiguration}s
   * and {@link ActionConfiguration}s.
   * </p>
   *
   * @since 1.2
   */
  public UIConfiguration getUIConfiguration() {
    return ui.getConfiguration();
  }


  /**
   * @since 1.2
   */
  @Override
  @SuppressWarnings("unchecked")
  public <T> T getAdapter( Class<T> adapter ) {
    if( adapter == PropertyChangeNotifier.class ) {
      return ( T )notifier;
    }
    return null;
  }
}
TOP

Related Classes of com.eclipsesource.tabris.ui.AbstractAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.