proyal 2002/07/31 13:47:43
Modified: phyre/src/java/org/apache/avalon/phyre Main.java
MenuBar.java PhyreFrame.java
Added: phyre/src/java/org/apache/avalon/phyre
PhyreRuntimeException.java
Log:
* Add cmd line params for host and port to connect @ startup
* Updating to context-container based sys
* Custom runtime exception
Revision Changes Path
1.2 +63 -2
jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/Main.java
Index: Main.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/Main.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Main.java 26 Jul 2002 20:16:36 -0000 1.1
+++ Main.java 31 Jul 2002 20:47:43 -0000 1.2
@@ -7,15 +7,76 @@
*/
package org.apache.avalon.phyre;
+import java.util.List;
+
+import org.apache.avalon.excalibur.cli.CLArgsParser;
+import org.apache.avalon.excalibur.cli.CLOption;
+import org.apache.avalon.excalibur.cli.CLOptionDescriptor;
+import org.apache.avalon.framework.ExceptionUtil;
+
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a>
*/
public class Main
{
+ private static final int HOST_OPT = 'h';
+ private static final int PORT_OPT = 'p';
+
+ private static final CLOptionDescriptor[] options = new
CLOptionDescriptor[]{
+ new CLOptionDescriptor( "host", CLOptionDescriptor.ARGUMENT_REQUIRED,
+ HOST_OPT, "host to connect to on startup" ),
+ new CLOptionDescriptor( "port", CLOptionDescriptor.ARGUMENT_OPTIONAL,
+ PORT_OPT, "port to connec to on startup" )
+ };
+
public static void main( String args[] )
{
- final PhyreFrame frame = new PhyreFrame( "phyre" );
+ CLArgsParser parser = new CLArgsParser( args, options );
+
+ if( parser.getErrorString() != null )
+ {
+ System.err.println( "Error parsing arguments: " +
parser.getErrorString() );
+
+ return;
+ }
+
+ List clOptions = parser.getArguments();
+ String host = null;
+ int port = 1099;
+ int size = clOptions.size();
+
+ for( int i = 0; i < size; i++ )
+ {
+ CLOption option = ( CLOption ) clOptions.get( i );
+
+ switch( option.getId() )
+ {
+ case CLOption.TEXT_ARGUMENT:
+ System.out.println( "Unknown argument: " +
option.getArgument() );
+ break;
+ case HOST_OPT:
+ host = option.getArgument();
+ break;
+ case PORT_OPT:
+ port = Integer.parseInt( option.getArgument() );
+ break;
+ }
+ }
+
+ try
+ {
+ final PhyreFrame frame =
+ new PhyreFrame( "phyre",
+ "resource://org/apache/avalon/phyre/phoenix",
+ host, port );
+
+ frame.show();
+ }
+ catch( Exception e )
+ {
+ System.err.println( ExceptionUtil.printStackTrace( e ) );
- frame.show();
+ System.exit( -1 );
+ }
}
}
1.2 +3 -3
jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/MenuBar.java
Index: MenuBar.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/MenuBar.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MenuBar.java 26 Jul 2002 20:16:36 -0000 1.1
+++ MenuBar.java 31 Jul 2002 20:47:43 -0000 1.2
@@ -7,9 +7,9 @@
*/
package org.apache.avalon.phyre;
+import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
-import java.awt.Event;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenu;
@@ -52,7 +52,7 @@
{
public void actionPerformed( ActionEvent event )
{
- m_frame.connect();
+ m_frame.showConnectDialog();
}
};
JMenuItem connectItem = new JMenuItem( connectAction );
@@ -72,7 +72,7 @@
};
JMenuItem exit = new JMenuItem( exitAction );
exit.setMnemonic( 'X' );
- exit.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_Q,
Event.CTRL_MASK) );
+ exit.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Q,
Event.CTRL_MASK ) );
m_menuFile.add( exit );
return m_menuFile;
1.2 +104 -75
jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/PhyreFrame.java
Index: PhyreFrame.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/PhyreFrame.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PhyreFrame.java 26 Jul 2002 20:16:36 -0000 1.1
+++ PhyreFrame.java 31 Jul 2002 20:47:43 -0000 1.2
@@ -9,76 +9,111 @@
import java.awt.BorderLayout;
import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
-import javax.swing.JButton;
-import javax.swing.JComponent;
import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
import javax.swing.SwingUtilities;
-import org.apache.avalon.phyre.actions.SwitchContentPanelAction;
+import org.apache.avalon.excalibur.logger.LoggerManager;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.phyre.container.ContentPanelHelper;
+import org.apache.avalon.phyre.container.DefaultPhyreContainer;
+import org.apache.avalon.phyre.container.NavigationPanelHelper;
+import org.apache.avalon.phyre.container.PhyreContainer;
import org.apache.avalon.phyre.dialogs.ConnectDialog;
import org.apache.avalon.phyre.mbean.MBeanManager;
-import org.apache.avalon.phyre.panels.HomePanel;
-import org.apache.avalon.phyre.panels.navigation.PrimaryNavigationPanel;
+import org.apache.avalon.phyre.mbean.MBeanServiceManager;
+import org.apache.excalibur.fortress.ContainerConstants;
+import org.apache.excalibur.fortress.ContainerManager;
+import org.apache.excalibur.fortress.DefaultContainerManager;
+import org.apache.excalibur.fortress.util.ContextBuilder;
+import org.apache.excalibur.fortress.util.ContextManager;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a>
*/
-public class PhyreFrame extends JFrame
+public class PhyreFrame extends JFrame implements NavigationPanelHelper,
ContentPanelHelper
{
- private final String m_title;
+ private PhyreContainer m_container;
+ private ContainerManager m_containerManager;
+ private MBeanServiceManager m_MBeanServiceManager;
- private MenuBar m_menuBar;
- private JPanel m_lhsPanel;
private Component m_content;
private Component m_nav;
- private MBeanManager m_beanManager;
-
- public PhyreFrame( String title )
+ public PhyreFrame( String title, String initialContainerDirectory,
String host, int port )
+ throws Exception
{
super();
- m_title = title;
+ init( title );
+
+ createInitialContainer( initialContainerDirectory );
- init();
+ if( null != host )
+ {
+ connect( host, port );
+ }
}
- private void init()
+ private void createInitialContainer( final String
initialContainerDirectory )
+ throws Exception
{
- setTitle( m_title );
+ final ContextManager contextManager = new ContextManager(
+ createInitialContext( initialContainerDirectory ),
+ new ConsoleLogger( ConsoleLogger.LEVEL_ERROR ) );
- getContentPane().setLayout( new BorderLayout() );
+ contextManager.initialize();
- this.m_lhsPanel = new JPanel( new BorderLayout() );
+ final LoggerManager loggerManager =
+ ( LoggerManager ) contextManager.getChildContext().get(
ContainerConstants.LOGGER_MANAGER );
- getContentPane().add( m_lhsPanel, BorderLayout.WEST );
+ m_MBeanServiceManager.enableLogging(
loggerManager.getLoggerForCategory( "mbean-server" ) );
- final JButton button = new JButton( new SwitchContentPanelAction(
"Phoenix Management Console", HomePanel.class, this ) );
- button.addActionListener( new ActionListener()
- {
- public void actionPerformed( ActionEvent e )
- {
- if( e.getID() == ActionEvent.ACTION_PERFORMED )
- {
- setNavigationPanel( new PrimaryNavigationPanel(
PhyreFrame.this ) );
- }
- }
- } );
- m_lhsPanel.add( button, BorderLayout.NORTH );
+ m_containerManager = new DefaultContainerManager( contextManager );
+ m_containerManager.initialize();
+
+ m_container = ( PhyreContainer ) m_containerManager.getContainer();
+ }
+
+ private Context createRootContext()
+ {
+ DefaultContext ctx = new DefaultContext();
+
+ ctx.put( NavigationPanelHelper.CONTEXT, this );
+ ctx.put( ContentPanelHelper.CONTEXT, this );
- setNavigationPanel( new PrimaryNavigationPanel( this ) );
+ ctx.makeReadOnly();
- setContentPanel( new JLabel( "not connected" ) );
+ return ctx;
+ }
+
+ private Context createInitialContext( final String
initialContainerDirectory )
+ {
+ final ContextBuilder builder = new ContextBuilder(
createRootContext() );
+
+ this.m_MBeanServiceManager = new MBeanServiceManager();
+
+ builder.setContainerClass( DefaultPhyreContainer.class );
+ builder.setContainerConfiguration( initialContainerDirectory +
"/main.xconf" );
+ builder.setLoggerManagerConfiguration( initialContainerDirectory +
"/logkit.xconf" );
+ builder.setRoleManagerConfiguration(
"resource://org/apache/avalon/phyre/container/Container.roles" );
+ builder.setServiceManager( m_MBeanServiceManager );
+
+ return builder.getContext();
+ }
+
+ private void init( final String title )
+ {
+ setTitle( title );
+
+ getContentPane().setLayout( new BorderLayout() );
// Create a Menu Bar
- m_menuBar = new MenuBar( this );
- setJMenuBar( m_menuBar );
+ setJMenuBar( new MenuBar( this ) );
setLocation( 50, 50 );
setSize( 800, 600 );
@@ -90,56 +125,43 @@
shutdown();
}
} );
-
- //just for testing, immediately connect
-
- try
- {
- this.m_beanManager = new MBeanManager( "localhost", 1099 );
-
- setContentPanel( new HomePanel( this ) );
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
}
- public void setContentPanel( JComponent component )
+ public void setContentPanel( Component component )
{
+ final Container pane = getContentPane();
+
if( null != this.m_content )
{
- getContentPane().remove( this.m_content );
+ pane.remove( this.m_content );
}
- getContentPane().add( component, BorderLayout.CENTER );
- getContentPane().validate();
+ pane.add( component, BorderLayout.CENTER );
+ pane.validate();
this.m_content = component;
}
public void setNavigationPanel( Component component )
{
+ final Container pane = getContentPane();
+
if( null != this.m_nav )
{
- this.m_lhsPanel.remove( m_nav );
+ pane.remove( this.m_nav );
}
- this.m_lhsPanel.add( component, BorderLayout.CENTER );
- this.m_lhsPanel.validate();
+ pane.add( component, BorderLayout.WEST );
+ pane.validate();
this.m_nav = component;
}
private void shutdown()
{
- // Kill the JVM.
- System.exit( 1 );
- }
+ m_containerManager.dispose();
- public MBeanManager getMBeanManager()
- {
- return m_beanManager;
+ System.exit( 1 );
}
void fileExit()
@@ -153,7 +175,7 @@
} );
}
- void connect()
+ void showConnectDialog()
{
final ConnectDialog dialog = new ConnectDialog( this );
@@ -161,16 +183,23 @@
if( dialog.getAction() == ConnectDialog.BUTTON_OK )
{
- try
- {
- this.m_beanManager = new MBeanManager( dialog.getHost(),
dialog.getPort() );
+ connect( dialog.getHost(), dialog.getPort() );
+ }
+ }
- setContentPanel( new HomePanel( this ) );
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
+ private void connect( String host, int port )
+ {
+ try
+ {
+ this.m_MBeanServiceManager.setMBeanManager( new MBeanManager(
host,
+
port ) );
+
+ setContentPanel( this.m_container.getDefaultContentComponent() );
+ setNavigationPanel( this.m_container.getNavigationComponent() );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
}
}
}
1.1
jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/PhyreRuntimeException.java
Index: PhyreRuntimeException.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.phyre;
import org.apache.avalon.framework.CascadingRuntimeException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a>
*/
public class PhyreRuntimeException extends CascadingRuntimeException
{
public PhyreRuntimeException( final String message, final Throwable
throwable )
{
super( message, throwable );
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>