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:

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:

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

ActionProviders
Primary Classes:

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:

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:

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 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.


Copyright © 2009 SAS Institute Inc. All Rights Reserved.