Show TOC Start of Content Area

Procedure documentation Implementing View Controllers  Locate the document in its SAP Library structure

Overview

This graphic is explained in the accompanying text

Implementing Hook Methods

This graphic is explained in the accompanying text Task 1: Implementing the Action Event Handler  onActionSave()

The action Save is associated with the event handler onActionSave(). In this method the application logic for the action Save can be implemented.

 

SampleView.java

//@@begin javadoc:onActionSave(ServerEvent)

/**

 * Declared validating event handler.

 *

 * @param wdEvent generic event object provided by framework

 */

 //@@end

public void onActionSave(  
  com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

{

  //@@begin onActionSave(ServerEvent)

  ...

  //@@end

}

 

Using the IPrivate-API

This graphic is explained in the accompanying text Task 2: Dynamically subsribing an event handler to an event

You can dynamically subsribe the view controller’s event handler onSomeEvent() to the event SomeEvent (exposed by the component controller) at runtime with the generic component controller API IWDComponent. For this purpose the generated event- and event handler constants must be used.

 

SampleView.java

//@@begin javadoc:wdDoInit()

/** Hook method called to initialize controller. */

//@@end

public void wdDoInit()

{

  //@@begin wdDoInit()       

  IWDEventId eventId =
   
wdThis.wdGetSampleCompController().WD_EVENT_SOME_EVENT;

  IWDEventHandlerId eventHandlerId =
   
wdThis.WD_EVENTHANDLER_ON_SOME_EVENT;

   

  wdComponentAPI.addEventHandler(eventId,eventHandlerId); 

  //@@end

}

 

This graphic is explained in the accompanying text Task 3: Disabling the Save Action Object 

The object instance of the defined action Save can be accessed in the IPrivate-API of the view controller.

 

SampleView.java

 

wdThis.wdGetSaveAction().setEnabled(false);

 

 

Using the IPublic-API of another controller

This graphic is explained in the accompanying text Task 4: Firing the suspend plug of a window conroller

You can directly fire the suspend plug Suspend defined in the window controller SomeWin in a view controller. To invoke the IPublic-API of the window controller a corresponding controller usage relation must be defined.

 

SampleView.java

 

IPublicSampleWin winPublicAPI = wdThis.wdGetSampleWinController();

winPublicAPI.wdFirePlugSuspend(someSuspendURL);

 

// direct access

wdThis.wdGetSampleWinController().wdFirePlugSuspend(someSuspendURL);

 

 

This graphic is explained in the accompanying text Task 5: Firing event SomeEvent defined in the component controller

Events which are defined in non-view controllers cannot be fired by other controllers because the IPublic-API does not expose a corresponding wdFireEventXY()-method by default. Consequently you must declare a public method fireSomeEvent() in the component controller which fires the event SomeEvent and which can be invoked by the view controller. To invoke the IPublic-API of the component controller a corresponding controller usage relation must be defined.

 

SampleView.java

 

wdThis.wdGetSampleCompController().fireSomeEvent()

 

 

SampleComp.java

 

//@@begin javadoc:fireSomeEvent()

/**

 * Method declared by application.

 */

//@@end

public void fireSomeEvent( )  {

  //@@begin fireSomeEvent()

  wdThis.wdFireEventSomeEvent();

  //@@end

}

 

 

Using the Generic Controller APIs

This graphic is explained in the accompanying text Task 6: Changing the keyboard input focus on the client 

Change the keyboard input focus to the UI element whose primary purpose is to raise an event bound to the action Save.  

 

SampleView.java

 

//Assumption: Only one single UI element is bound to action Save

wdControllerAPI.requestFocus(wdThis.wdGetSaveAction());

 

 

This graphic is explained in the accompanying text Task 7: Accessing the Message Manager

The IWDMessageManager-API is exposed to all controllers in a Web Dynpro component via the generic component controller API IWDComponent. This interface can directly be accessed with the shortcut variable wdComponentAPI.  

 

SampleView.java

 

IWDMessageManager msgMgr = wdComponentAPI.getMessageManager();

 

 

This graphic is explained in the accompanying text Task 8: Accessing the Generic Controller API of the embedding Window

Invoke the generic IWDWindowController-API of the window controller instance which embeds this view you .  

 

SampleView.java

 

IWDWindowController wdwController = wdControllerAPI.getWindowController();

 

 

End of Content Area