You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by pr...@apache.org on 2002/07/31 22:36:33 UTC

cvs commit: jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/actions SwitchContentPanelAction.java

proyal      2002/07/31 13:36:33

  Modified:    phyre/src/java/org/apache/avalon/phyre/actions
                        SwitchContentPanelAction.java
  Log:
  Updated action
  
  Revision  Changes    Path
  1.2       +31 -51    jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/actions/SwitchContentPanelAction.java
  
  Index: SwitchContentPanelAction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/actions/SwitchContentPanelAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SwitchContentPanelAction.java	26 Jul 2002 20:16:36 -0000	1.1
  +++ SwitchContentPanelAction.java	31 Jul 2002 20:36:33 -0000	1.2
  @@ -7,71 +7,51 @@
    */
   package org.apache.avalon.phyre.actions;
   
  -import java.awt.event.ActionEvent;
  -import java.lang.reflect.Constructor;
  -import javax.swing.AbstractAction;
  -import javax.swing.JComponent;
  +import java.awt.Component;
   
  -import org.apache.avalon.phyre.PhyreFrame;
  +import org.apache.avalon.framework.context.Context;
  +import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.framework.service.ServiceSelector;
  +import org.apache.avalon.phyre.container.ContentPanelHelper;
  +import org.apache.avalon.phyre.panels.EventContextualizable;
   
   /**
    * @author <a href="mailto:proyal@apache.org">Peter Royal</a>
    */
  -public class SwitchContentPanelAction extends AbstractAction
  +public class SwitchContentPanelAction implements Action
   {
  -    private final Constructor m_panelConstructor;
  -    private final PhyreFrame m_frame;
  -
  -    public SwitchContentPanelAction( final String caption,
  -                                     final Class panelClass,
  -                                     final PhyreFrame frame )
  -    {
  -        super( caption );
  -
  -        m_frame = frame;
  -
  -        try
  -        {
  -            m_panelConstructor = panelClass.getConstructor( getParameterTypes() );
  -        }
  -        catch( Exception e )
  -        {
  -            e.printStackTrace();
  -
  -            throw new RuntimeException( "invalid class: " + e.getMessage() );
  -        }
  -    }
  -
  -    protected Class[] getParameterTypes()
  +    private final ContentPanelHelper m_helper;
  +    private final ServiceSelector m_serviceSelector;
  +    private final String m_panel;
  +    private final Logger m_logger;
  +
  +    public SwitchContentPanelAction( final ContentPanelHelper helper,
  +                                     final ServiceSelector serviceSelector,
  +                                     final String panel,
  +                                     final Logger logger )
       {
  -        return new Class[]{PhyreFrame.class};
  +        m_helper = helper;
  +        m_panel = panel;
  +        m_serviceSelector = serviceSelector;
  +        m_logger = logger;
       }
   
  -    public void actionPerformed( ActionEvent e )
  +    public void perform( Context ctx )
       {
  -        if( ActionEvent.ACTION_PERFORMED == e.getID() )
  +        try
           {
  -            try
  -            {
  -                final JComponent pane =
  -                    ( JComponent ) m_panelConstructor.newInstance( getParameters() );
  +            final Component panel = ( Component ) m_serviceSelector.select( m_panel );
   
  -                getFrame().setContentPanel( pane );
  -            }
  -            catch( Exception e1 )
  +            if( null != ctx && panel instanceof EventContextualizable )
               {
  -                e1.printStackTrace();
  +                ( ( EventContextualizable ) panel ).eventContext( ctx );
               }
  -        }
  -    }
   
  -    protected Object[] getParameters()
  -    {
  -        return new Object[]{getFrame()};
  -    }
  -
  -    protected PhyreFrame getFrame()
  -    {
  -        return m_frame;
  +            m_helper.setContentPanel( panel );
  +        }
  +        catch( Exception e )
  +        {
  +            m_logger.error( "Unable to switch content panel: " + m_panel, e );
  +        }
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>