org.wings
Interface LowLevelEventListener

All Known Subinterfaces:
EditableTreeCellRenderer
All Known Implementing Classes:
DragAndDropManager, SAbstractAdjustable, SAbstractButton, SButton, SCheckBox, SComboBox, SDialog, SFileChooser, SForm, SFormattedTextField, SFrame, SInternalFrame, SList, SMenu, SMenuItem, SOptionPane, SPageScroller, SPasswordField, SRadioButton, SScrollBar, SSpinner, STabbedPane, STable, STextArea, STextComponent, STextField, SToggleButton, STree, SWindow, XCalendar, XDivision, XSuggest, XTable, XTreeTable

public interface LowLevelEventListener

For components that take part in the event dispatching process.

WingS event dispatching is complex. This is because we have to process many requests at once (asynchronous user interaction). There are three levels of dispatching:

  1. process http requests (processLowLevelEvent(java.lang.String, java.lang.String[])): If a component is registered at the session specific LowLevelEventDispatcher it gets all the parameters is is registered for. This parameter consists of a name-value pair. Most time the component itself has encoded this parameter, so it is able to decode it and change its internal state. This should be done in processLowLevelEvent(java.lang.String, java.lang.String[]). Be careful, the change of the internal state shold not trigger any events, because in case of a form request, many requests are processed and many states of components are changed, so if you trigger an event, the listener may access a component which has not yet processed its request parameters and so it is in an inconsistent state.
  2. fire intermediate events: fire events which describes a "in progress" state change, like TreeWillExpand, or ListSelectionEvent with getIsAdjusting() true, ... After this level are components must be in a consistant state
  3. fire final events: fire remaining events. In this level all events, which are important to an application should be fired. All listeners, which are notified in this level can assume that the components are in a consistent (considering user interaction) state.

Author:
Armin Haaf

Method Summary
 void fireFinalEvents()
          fire remaining events.
 void fireIntermediateEvents()
          fire events which describes a "in progress" state change, like TreeWillExpand, or ListSelectionEvent with getIsAdjusting() true, ...
 String getLowLevelEventId()
          The id of an event which will be forwarded by the dispatcher to this component for processing.
 String getName()
          If the dispatcher is configured to use named event, the return value of this method is used to identiy a LowLevelEventListener by name.
 boolean isEnabled()
          SCompontents are typically implemntors of this interface.
 boolean isEpochCheckEnabled()
          Asks the low-level event listener if epoch checking should be perfomed on it.
 void processLowLevelEvent(String name, String[] values)
          Deliver low level/http events (parameters).
 

Method Detail

processLowLevelEvent

void processLowLevelEvent(String name,
                          String[] values)
Deliver low level/http events (parameters). The name-value-pairs of the HTTPRequest are considered low level events.

Parameters:
name - the name-value-pair's name
values - the name-value-pair's values

getLowLevelEventId

String getLowLevelEventId()
The id of an event which will be forwarded by the dispatcher to this component for processing. A component is registered at the dispatcher. This dispatcher forwards servlet parameters (low level events) to each LowLevelEventListener registered for this event. A LowLevelEventListener is registered for an event, if the event id is equals to the result of this method.


getName

String getName()
If the dispatcher is configured to use named event, the return value of this method is used to identiy a LowLevelEventListener by name. E.g. in a http request you might give an action a special name, like "ActivateUpload" to make uploads possible. This action is a SButton in wings with the name "ActivateUpload" and an ActionListener which make the upload form visible. A designer might call your servlet with "servlet/_?ActivateUpload=1" to make the upload form visible by hand. Be careful, this so called "Named Events" are not under control of wings, so they will no be outtimed and might lead to strange effects.


fireIntermediateEvents

void fireIntermediateEvents()
fire events which describes a "in progress" state change, like TreeWillExpand, or ListSelectionEvent with getIsAdjusting() true, ...


fireFinalEvents

void fireFinalEvents()
fire remaining events. In this level all events, which are important to an application should be fired. All listeners, which are notified in this level can assume that the components are in a consistent (considering user interaction) state.


isEnabled

boolean isEnabled()
SCompontents are typically implemntors of this interface. No disabled component should receive any event.

Returns:
true, if LowLevelEventListener should be addressed

isEpochCheckEnabled

boolean isEpochCheckEnabled()
Asks the low-level event listener if epoch checking should be perfomed on it. If true the Dispatcher will ignore request originating from old views (typically iniated by triggering browser back and clicking somewhere.)

Returns:
true if epoch checking should be perfomed, false if all request for this component should be processed.


wingS Swings ;-)