/*
 * Licensed Materials - Property of Rogue Wave Software, Inc. 
 * © Copyright Rogue Wave Software, Inc. 2014, 2015 
 * © Copyright IBM Corp. 2009, 2014
 * © Copyright ILOG 1996, 2009
 * All Rights Reserved.
 *
 * Note to U.S. Government Users Restricted Rights:
 * The Software and Documentation were developed at private expense and
 * are "Commercial Items" as that term is defined at 48 CFR 2.101,
 * consisting of "Commercial Computer Software" and
 * "Commercial Computer Software Documentation", as such terms are
 * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
 * as applicable.
 */
package monitoring.web.action;

import monitoring.web.AbstractSampleContext;
import monitoring.web.SampleActionProviders;
import monitoring.web.SampleControls;
import monitoring.web.SampleDataStructures;

import org.apache.myfaces.trinidad.component.core.nav.CoreCommandNavigationItem;
import org.apache.myfaces.trinidad.component.core.nav.CoreNavigationPane;


/**
 * Base class for all action providers used in the sample.
 * <p>
 * An action provider is the main source of actions that can (and are) executed 
 * in the sample.
 */
public class BaseActionProvider {

  //Sample context
  protected AbstractSampleContext sampleContext;

  /**
   * Should initilize all the actions in this action provider.
   * <p>
   * This particular implementatoin simply saves the provided sample context.
   */
  public void initialize(AbstractSampleContext sampleContext) {
    this.sampleContext = sampleContext;
  }

  /**
   * Sets the provided index as the selected one in the provided 
   * <code>CoreMenuTabs</code>.
   */
  protected void setSelectedTab(int index, CoreNavigationPane tabs) {

    int childrenCount = tabs.getChildCount();

    for (int i = 0; i < childrenCount; i++) {

      CoreCommandNavigationItem tab = (CoreCommandNavigationItem) tabs
      .getChildren().get(i);

      if (i != index) {
        tab.setSelected(false);
      } else {
        tab.setSelected(true);
      }
    }
  }

  //////////////////////////////////////////////////////////////////////////////
  //Accessors
  //////////////////////////////////////////////////////////////////////////////
  protected AbstractSampleContext getSampleContext() {
    return sampleContext;
  }
  protected SampleControls getControls() {
    return getSampleContext().getControls();
  }
  protected SampleDataStructures getDataStructures() {
    return getSampleContext().getDataStructures();
  }
  protected SampleActionProviders getActionProviders() {
    return getSampleContext().getActionProviders();
  }
}