All Libraries | This Library | Package | Class | Use | Tree | Deprecated | Index | Grand Index | Help
|  | Components |
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

Note:
  Extension of the classes in this package is prohibited unless otherwise documented. Similarly, extension or implementation of the interfaces in this package is prohibited except as documented.

## Package com.sas.actionprovider

Provides the integrated set of classes that comprise the ActionProvider Framework (APF).

See:
Description

Interface Summary
ActionProviderViewInterface | The base interface for viewer components that acquire their Actions via the ActionProvider Framework (APF).
ActionStatusKeysInterface | This interface defines the keys used to specify the status of a particular Action during the acquisition phase.
CommandStatusInterface | This interface is implemented by commands that may not enabled under certain conditions and whose users need to know this status prior to command execution or Action rendering.
CommandSupportedInterface | This interface is implemented by commands that are not enabled under certain conditions and whose users need to know this status prior to command execution or Action rendering.
HttpActionProviderInterface | The interface is implemented by all Transformation Bean Components that need to hold a reference to an `HttpActionProvider` object.
HttpActionProviderViewInterface | The interface required for all Transformation Bean Components that acquire their Actions via the ActionProvider Framework (APF).
SelectorActionInterface | Extends the Action interface with some additional methods for identifying selector actions.
SupplementalPropertyKeysInterface | This interface defines the keys used to specify the status of a particular Action during the acquisition phase.
SwingActionProviderViewInterface | The interface required for all Swing components that acquire their Actions via the ActionProvider Framework (APF).
URLTemplateViewInterface | The interface required for all ActionProvider view components that submit actions via a Form.

Class Summary
ActionAttributeDescriptor | An implementation of the AttributeDescriptorInterface for the Action Provider Framework.
ActionList | Viewer components acquire ActionList objects when they query an ActionProvider for Actions.
ActionOrderList | These lists are the templates that determine the content, order and structure of the `ActionLists` that are presented by viewer components.
ActionProviderEvent | ActionProviderEvent is fired by HttpActionProvider or SwingActionProvider whenever a command is executed that implements the ContentsChangedInterface and its isContentsChanged() method returns true.
ActionSupportFilter | An ActionSupportFilter encapsulates all the information needed by the ActionProvider Framework ( APF ) from the requesting component to carry out a single query for Actions.
Area | The Area object is used by the ActionProvider Framework( APF ) as a mechanism for describing a particular area of a Viewer component in a more specific way than the general areaType that is defined by a support class.
BaseAction | The BaseAction class is the base class for all Actions acquired via the Action Provider Framework (APF).
BaseActionProvider | The BaseActionProvider class is the Base class for the ActionProviders of the Action Provider Framework (APF).
HttpAction | The HttpAction class is the base class for all actions acquired from the HttpActionProvider.
HttpActionProvider | The HttpActionProvider class, in conjunction with other parts of the ActionProvider Framework (APF), is used by Transformation Beans as a mechanism for acquiring renderable Actions for specific viewable areas of the component.
SelectorAction | The SelectorAction class defines additional type-based attributes specific to actions used by selectors.
SwingAction | The SwingAction class is the base class for all actions acquired from the SwingActionProvider.
SwingActionProvider | The SwingActionProvider class, in conjunction with other parts of the ActionProvider Framework (APF), is used by Swing components as a mechanism for acquiring renderable Actions for specific viewable areas of the component.

## Package com.sas.actionprovider Description

Provides the integrated set of classes that comprise the ActionProvider Framework (APF).

OVERVIEW

The APF is a framework from which both Swing and JSP Viewer Components acquire their Actions. See the CURRENT APF VIEWERS section below for a listing of viewers that currently use the APF.

The main purpose of the framework is to give users the ability to customize the functionality and appearance of these Actions. However, before attempting to exploit these features of the APF, a basic understanding of its primary elements is essential.

PRIMARY TYPES OF CLASSES IN THE APF

Actions
  Primary Classes:
  - ``SwingAction``
  - ``HttpAction``

  These are objects that encapsulate everything needed to:

  1. Perform a particular type of operation for the View Component.

  2. Represent the Action visually.

  ** Typically, a Command object associated with the Action contains the logic for actually performing the operation. Within the APF, all commands are required to be implementations of ``DynamicAttributeCommandInterface``. The ``BaseCommand`` class implements that interface and is the base class for all default commands.

Viewer Components
  Primary Classes:
  - `implementations of `SwingActionProviderViewInterface``
  - `implementations of `HttpActionProviderViewInterface``

  These objects query an ActionProvider, via its ``getActions()`` method, for each renderable portion of their view.

ActionProviders
  Primary Classes:
  - ``SwingActionProvider``
  - ``HttpActionProvider``

  These objects delegate viewer queries for actions and all user interactions to the appropriate type of APF support class. There are different support classes for different viewer-type/model-type combinations. See ``ActionProviderSupportTypes`` for an overview of the the default support classes.

Support classes
  Primary Classes:
  - subclasses of ``BaseActionProviderSupport``

  Generally, these objects are responsible for the following:

  1. Define the general areaTypes in which Actions may be registered. For example, a table support class may define a COLUMN_HEADER_AREA and a DATA_CELL_AREA.

  2. Define the default actionTypes and map each type to an Action instance that it creates and registers to an areaType.

  3. Provide dynamic attribute values for Actions during a viewer's getActions() query. These are values that typically vary depending on the specific area for which the viewer is querying. For example, some attributes of the Actions in a table's column header cell would likely have different values.

  Most efforts of users to override or add their own custom actions for a particular Viewer Component should start with identifying the support class for that viewer. See the CURRENT APF VIEWERS section below for the default mappings between supportType keys and support classes. Each support class documents its default actionTypes and the areaTypes to which they are registered.

  Neither viewers or users interact directly with instances of a support class. Instead, both interact with an ActionProvider which delegates method calls to a support class based on a specified supportType key.

OPERATIONAL FLOW OF THE APF

  There are two primary operational phases of the APF:

  - Action acquisition
  - Action / Command execution

  The Action acquisition phase is similar in the Swing and JSP/Servlet environments.

  1. A Viewer Component makes a query for Actions to its ActionProvider via a `getActions()` call. There may be multiple calls to this method; One for each specific area within a general areaType. For example, a TableView component does a different query for each of its column headers within the general COLUMN_HEADER_AREA. JSP/Servlet Components have to make as many queries as there are specific areas during each rendering of the view. Swing Components can query for Actions on just an as-needed basis; When a users clicks an area to bring up a pop menu of Action choices for example. The query always includes the following:

     - The instance of the Viewer Component making the query.
     - The supportType key. See `ActionProviderSupportTypes`
     - The areaType key. e.g. `TableViewAreaInterface.COLUMN_HEADER_AREA` for a TableView

     The other parts required on the query depend on the particular support class. Typically, they include:

     - An instance of the model to which the Viewer Component is attached.
     - Indexes or other more complex objects that identify the specific area for which the query is being made. For example, a column's model index or OLAP TupleElement.

  2. The ActionProvider delegates the `getActions()` call to the appropriate support class based on the specified supportType key.

  3. The support class identifies all the actionTypes that are registered for the specified areaType and does the following for each of the Actions to which they are associated:

     - Determines if the Action should be returned with the query according to its presence on the ActionOrderList that is in effect and the visibility status on the Viewer Component. See `setActionOrderList()` on the base ActionProvider class and `setActionVisible` on the Viewer component.
     - Determine if the Action is disabled and, if so, should it be returned in a disabled state. See `getActionStatus()` on the base support class and `setReturnStatus()` on the base Action class.
     - If it is determined that Action should be returned for the query, the support class makes a copy of the registered Action instance and applies all the dynamic values to it. See the `DYNAMIC` supplemental attribute property defined on the base Action class.
     - The support class returns all the Actions that satisfy the query in the form of an `ActionList` whose structure is defined by the `ActionOrderList` that is in effect on the support class.

  4. In the JSP/Servlet environment, Actions can not persist after they are acquired and their html representations have been returned to the client. Therefore, the `HttpActionProvider` stores command instances and, possibly, certain dynamic Action attributes so that the command may be executed later during a new request from the client. The HttpActionProvider assigns a unique `HttpActionProvider.CMDID` identifier for each of its stored commands.

  The Action / Command execution phase is different in the Swing and JSP/Servlet environments.

  The Swing execution phase starts when the SwingAction's `actionPeformed()` method is called by the Viewer Component itself or some Action handler like `JPopupMenu`. This base implementation of this method does just the following:

    1. For every attribute on the command, the method looks for an attribute with the same name on the SwingAction and applies the Action's value to the command.
    2. The command's `execute()` method is called.
    3. If the executed command implements the `ContentsChangedInterface` and the `isContentsChanged()` method returns true, then the SwingActionProvider that generated the Action is told to fire an `ActionProviderEvent` to all of its listeners.

  The JSP/Servlet execution phases starts when the HttpActionProvider's `executeCommand()` method is called. This method does the following:

    1. Lookup the stored command to be executed using the `HttpActionProvider.CMDID` identifier that is passed as a request parameter.
    2. For every attribute on the command, the method looks for an attribute with the same name, except prepended with the HttpActionProvider's `parameterPrefix`, on the request object. If not found on the request, the method looks for the attribute with the same name in the set of stored attributes for the command.
    3. If match for command attribute found, the attribute value is transformed, if possible, to the appropriate Object type and then set on the command.
    4. The command's `execute()` method is called.
    5. If the executed command implements the `ContentsChangedInterface` and the `isContentsChanged()` method returns true, then the HttpActionProvider fires an `ActionProviderEvent` to all of its listeners.

CURRENT APF VIEWERS

The following is a list of Viewer Components that use the APF including their default APF support class and the supportKey.

Viewer | Support Key | Support Class
--- | --- | ---
`Swing TableView` | `TABLEVIEW_SUPPORT` | `SwingTableViewSupport`
`Swing OLAPTableView` | `OLAP_TABLEVIEW_SUPPORT` | `SwingOLAPTableViewSupport`
`Swing OLAPDrillState` | `OLAP_DRILLSTATE_SUPPORT` | `SwingOLAPDrillStateSupport`
`Swing IFileServiceSelectorPanel` | `REMOTE_IFILE_SERVICE_SUPPORT` | `SwingIFileServiceSupport`
`Swing InformationServicesSelectorPanel` | `REMOTE_INFO_SERVICE_SUPPORT` | `SwingInformationServiceSupport`
*`Swing RemoteFileSearchComponent` | `REMOTE_IFILE_SERVICE_SUPPORT` | `SwingInformationServiceSupport`
*`Swing RemoteFileSearchComponent` | `REMOTE_INFO_SERVICE_SUPPORT` | `SwingInformationServiceSupport`
`JSP/Servlet TableView` | `TABLEVIEW_SUPPORT` | `HttpTableViewSupport`
`JSP/Servlet OLAPTableView` | `OLAP_TABLEVIEW_SUPPORT` | `HttpOLAPTableViewSupport`
`JSP/Servlet RelationalMenuBar` | `RELATIONAL_MENUBAR_SUPPORT` | `HttpRelationalMenuBarSupport`
`JSP/Servlet OLAPMenuBar` | `OLAP_MENUBAR_SUPPORT` | `HttpMenuBarSupport`
**`JSP/Servlet NavigationBarRowScrollingElement` | `NAVIGATIONBAR_SUPPORT` | `HttpNavigationBarSupport`
**`JSP/Servlet NavigationBarColumnScrollingElement` | `NAVIGATIONBAR_SUPPORT` | `HttpNavigationBarSupport`
`JSP/Servlet Label` | `CUSTOM_SUPPORT` | `HttpCustomSupport`
***`JSP/Servlet RemoteFileSearch` | `REMOTE_FILE_SELECTOR_COMPOSITE_SUPPORT` | `HttpRemoteFileSelectorCompositeSupport`
***`JSP/Servlet RemoteFileToolBar` | `REMOTE_FILE_SELECTOR_COMPOSITE_SUPPORT` | `HttpRemoteFileSelectorCompositeSupport`
***`JSP/Servlet RemoteFileSelector TableView` | `REMOTE_FILE_SELECTOR_COMPOSITE_SUPPORT` | `HttpRemoteFileSelectorCompositeSupport`
`JSP/Servlet OLAPDrillState` | `OLAP_DRILLSTATE_SUPPORT` | `HttpOLAPDrillStateSupport`
`JSP/Servlet BarChart` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet BarLineChart` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet LineChart` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet LinePlot` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet PieChart` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet ScatterPlot` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet BarChartComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet BarLineChartComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet LineChartComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet LinePlotComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet PieChartComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet ScatterPlotComposite` | `GRAPH_SUPPORT` | `HttpGraphSupport`
`JSP/Servlet OLAPBarChart` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPBarLineChart` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPLineChart` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPLinePlot` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPPieChart` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPScatterPlot` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPBarChartComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPBarLineChartComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPLineChartComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPLinePlotComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPPieChartComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`
`JSP/Servlet OLAPScatterPlotComposite` | `OLAP_GRAPH_SUPPORT` | `HttpOLAPGraphSupport`

*Note: The support class used by the Swing RemoteFileSearchComponent is dependent on the type of RemoteFileSelector it is being used within. If used within the `InformationServicesSearchPanel` then it uses the support class mapped to `REMOTE_INFO_SERVICE_SUPPORT`.

**Note: The NavigationBarRowScrollingElement and NavigationBarColumnScrollingElement are used within the `TableRowNavigationBar` and `TableColumnNavigationBar`, respectively.

***Note: All three components are used within the `InformationServicesSelector` and the `RemoteFileSelector` components.

For More Information

  Examples demonstrating how to use the ActionProvider Framework may be found on the ActionProvider Framework Examples Site.

  ** You will initially see a subset of examples relating to this framework. You can search for other types of examples as needed.

  Also, visit the AppDev Studio Developer's Site to access step-by-step examples, white papers and additional usage information at http://support.sas.com/rnd/appdev/.

Note:
  Extension of the classes in this package is prohibited unless otherwise documented. Similarly, extension or implementation of the interfaces in this package is prohibited except as documented.

All Libraries | This Library | Package | Class | Use | Tree | Deprecated | Index | Grand Index | Help
|  | Components |
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

Copyright © 2009 SAS Institute Inc. All Rights Reserved.