Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

A PortalEvent is an event generated by the uPortal framework and broadcast to affected channnels.

Kinds of PortalEvents

Framework-generated events

renderingDone

I believe that "renderingDone" is currently never sent. See JIRA issue

sessionDone

Session done signifies the end of the user session. Channels that have been instantiated in the course of the user's session receive the event "sessionDone" when that session ends.

unsubscribe

Sent to channels which the user permanently removes from his or her layout.

Layout-generated events

editButtonEvent

Sent to channels when the user actuates the channel's edit button.

helpButtonEvent

Sent to channels when the user actuates the channel's help button.

aboutButtonEvent

Sent to channels when the user actuates the channel's about button.

detachButtonEvent

Sent to channels when the user actuates the channel's detach button.

Proposed new implementation for 2.5:

package org.jasig.portal;

/**
 * Events which may be arguments to the IChannel receiveEvent() method.
 * @author <a href="mailto:pkharchenko@interactivebusiness.com">Peter Kharchenko</a>
 * @author andrew.petro@yale.edu
 * @version $Revision: 1.7 $
 */
public class PortalEvent {
    
  
    // framework-generated events
    public static final int RENDERING_DONE = 0;
    public static final int SESSION_DONE = 1;
    public static final int UNSUBSCRIBE = 2;

    // layout-generated events
    public static final int EDIT_BUTTON_EVENT = 3;
    public static final int HELP_BUTTON_EVENT = 4;
    public static final int ABOUT_BUTTON_EVENT = 5;
    public static final int DETACH_BUTTON_EVENT = 6;
    public static final int MINIMIZE_EVENT = 7;
    public static final int MAXIMIZE_EVENT = 8;
    
  /**
   * The framework-generated event representing the rendering cycle having
   * finished. The original intent was to broadcast it to the involved channels at the
   * end of each rendering cycle.
   * The framework implementation doesn't actually ever send this event
   * -- listening for it is currently pointless.
   */
  public static final PortalEvent RENDERING_DONE_EVENT = 
      new PortalEvent(RENDERING_DONE, "renderingDone", 
              PortalEventSource.FRAMEWORK_GENERATED);
    
  /**
   * The framework-generated event that is broadcast to
   * channels that were used for a user session which is now ending.
   * Typical usage is to trigger state cleanup in channels that are not
   * user-session-scoped.
   */
  public static final PortalEvent SESSION_DONE_EVENT = 
      new PortalEvent(SESSION_DONE, "sessionDone", 
              PortalEventSource.FRAMEWORK_GENERATED);

  /**
   * The framework-generated event that is sent to
   * a channel when the user unsubscribes from that channel.
   */
  public static final PortalEvent UNSUBSCRIBE_EVENT = 
      new PortalEvent(UNSUBSCRIBE, "unsubscribe", 
              PortalEventSource.FRAMEWORK_GENERATED);

  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its edit control.
   */
  public static final PortalEvent EDIT_BUTTON = 
      new PortalEvent(EDIT_BUTTON_EVENT, "editButtonEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its help control.
   */
  public static final PortalEvent HELP_BUTTON = 
      new PortalEvent(HELP_BUTTON_EVENT, "helpButtonEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its about control.
   */
  public static final PortalEvent ABOUT_BUTTON = 
      new PortalEvent(ABOUT_BUTTON_EVENT, "aboutButtonEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its detach control.
   */
  public static final PortalEvent DETACH_BUTTON = 
      new PortalEvent(DETACH_BUTTON_EVENT, "detachButtonEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its minimize control.
   */
  public static final PortalEvent MINIMIZE = 
      new PortalEvent(MINIMIZE_EVENT, "minimizeEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * The layout-generated event that is sent to
   * a channel when the user actuates its maximize control.
   */
  public static final PortalEvent MAXIMIZE = 
      new PortalEvent(MAXIMIZE_EVENT, "maximizeEvent", 
              PortalEventSource.LAYOUT_GENERATED);
  
  /**
   * Integer representation of an event.  Must be one of the static integers
   * declared in this class.
   */
  private final int eventNumber;

  /**
   * String representation of the event.
   */
  private final String eventName;
  
  /**
   * Source of the event -- curently either FRAMEWORK or LAYOUT.
   */
  private final PortalEventSource source;
  
  /**
   * Constructor which translates from one of the integers representing a
   * PortalEvent to the actual PortalEvent class.
   * @param ev integer representing the event
   * @deprecated instead reference one of the static singleton events.
   */
  public PortalEvent(int ev) {
      
      if (ev < 0 || ev > 8)
          throw new IllegalArgumentException("The integer " + ev + 
                  " does not identify a PortalEvent.");
      
    this.eventNumber = ev;
    
    final String [] eventNameArray =
    {
        "renderingDone",
        "sessionDone",
        "unsubscribe",
        "editButtonEvent",
        "helpButtonEvent",
        "aboutButtonEvent",
        "detachButtonEvent",
        "minimizeEvent",
        "maximizeEvent",
    };
    
    this.eventName = eventNameArray[ev];
    
    if (ev < 3) {
        this.source = PortalEventSource.FRAMEWORK_GENERATED;
    } else {
        this.source = PortalEventSource.LAYOUT_GENERATED;
    }
        
  }

  /**
   * Construct a PortalEvent instance from parameters.
   * @param eventNumber - integer representation of event type
   * @param eventName - String name of event
   * @param source - source type of event
   */
  private PortalEvent(int eventNumber, String eventName, PortalEventSource source) {
      this.eventNumber = eventNumber;
      this.eventName = eventName;
      this.source = source;
  }
  
  /**
   * Get a String representing this event.
   * @return a String representing this event.
   */
  public String getEventName() {
    return this.eventName;
  }

  /**
   * Get an integer representing this event.
   * @return an integer representing this event.
   */
  public int getEventNumber() {
    return this.eventNumber;
  }
  
  /**
   * Get the source type of this event.
   * @return the source type of this event.
   */
  public PortalEventSource getSource() {
      return this.source;
  }
  
  /**
   * Two PortalEvents are equal if they have the same eventNumber.
   * @param other - another object
   * @return true if other is a PortalEvent with the same eventNumber,
   * false otherwise
   */
  public boolean equals(Object other) {
      if (other == null)
          return false;
      if (! (other instanceof PortalEvent))
          return false;
      PortalEvent otherEvent = (PortalEvent) other;
      
      if (otherEvent.eventNumber == this.eventNumber)
          return true;
      
      return false;
  }

  /**
   * The String representation of a PortalEvent is its eventName.
   */
  public String toString() {
      return this.eventName;
  }
  
}
  • No labels