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]>

Reply via email to