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>