001    package com.sptci.rwt.webui;
002    
003    import nextapp.echo2.app.Component;
004    import nextapp.echo2.app.event.ActionEvent;
005    
006    import echopointng.PopUp;
007    
008    import com.sptci.echo2.Listener;
009    import com.sptci.rwt.Query;
010    
011    /**
012     * Action listener for saving the query in {@link QueryExecutorView} to
013     * the application persistent storage area.
014     *
015     * <p>&copy; Copyright 2007 <a href='http://sptci.com/' target='_new'>Sans Pareil Technologies, Inc.</a></p>
016     * @author Rakesh Vidyadharan 2007-10-05
017     * @version $Id: SaveQueryListener.java 4123 2008-05-25 21:49:01Z rakesh $
018     */
019    public class SaveQueryListener extends Listener<MainController>
020    {
021      /**
022       * Create a new instance of the listener using the specified controller.
023       *
024       * @param controller The controller to use to interact with the
025       *   application.
026       */
027      public SaveQueryListener( final MainController controller )
028      {
029        super( controller );
030      }
031    
032      /**
033       * The action listener implementation.  Saves the query to application
034       * persistent storage.
035       *
036       * @see com.sptci.rwt.Queries#add
037       * @see MainController#resetMenu
038       * @param event The event that triggers the save process.
039       */
040      public void actionPerformed( ActionEvent event )
041      {
042        SaveQueryComponent dest = (SaveQueryComponent)
043          controller.getParentView( (Component) event.getSource() );
044        PopUp popup = (PopUp) dest.getParent();
045        ExecutorView view = (ExecutorView) controller.getParentView( popup );
046    
047        Query query = new Query( dest.getName(), view.getQuery() );
048        controller.getQueries().add( dest.getCategory(), query );
049        controller.resetMenu();
050        popup.setExpanded( false );
051      }
052    }