You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/05/30 08:22:53 UTC

cvs commit: jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/frontends ProjectFileFilter.java SwingUI.java

donaldp     02/05/29 23:22:53

  Modified:    container/src/java/org/apache/myrmidon/frontends
                        SwingUI.java
  Added:       container/src/java/org/apache/myrmidon/frontends
                        ProjectFileFilter.java
  Log:
  Add a browse button
  
  Revision  Changes    Path
  1.2       +207 -29   jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/frontends/SwingUI.java
  
  Index: SwingUI.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/frontends/SwingUI.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SwingUI.java	28 May 2002 07:05:05 -0000	1.1
  +++ SwingUI.java	30 May 2002 06:22:53 -0000	1.2
  @@ -8,22 +8,40 @@
   package org.apache.myrmidon.frontends;
   
   import java.awt.Container;
  +import java.awt.Dimension;
   import java.awt.Font;
   import java.awt.Frame;
  +import java.awt.GridBagConstraints;
  +import java.awt.GridBagLayout;
  +import java.awt.GridLayout;
  +import java.awt.Insets;
   import java.awt.TextField;
  +import java.awt.Toolkit;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
   import java.awt.event.TextEvent;
   import java.awt.event.TextListener;
  -import javax.swing.BoxLayout;
  +import java.io.File;
  +import java.io.IOException;
   import javax.swing.JButton;
   import javax.swing.JCheckBox;
  +import javax.swing.JComponent;
   import javax.swing.JDialog;
  +import javax.swing.JFileChooser;
   import javax.swing.JPanel;
   import javax.swing.JProgressBar;
  +import javax.swing.JSplitPane;
  +import javax.swing.JTextArea;
  +import javax.swing.JTree;
   import javax.swing.SwingUtilities;
  +import javax.swing.JOptionPane;
  +import javax.swing.event.ChangeEvent;
  +import javax.swing.event.ChangeListener;
   import org.apache.myrmidon.Constants;
   
  +/**
  + * A basic GUI for executing Ant Build files.
  + */
   class SwingUI
       extends JDialog
   {
  @@ -34,56 +52,133 @@
       private TextField m_fileField;
       private JCheckBox m_reloadLibsCheckBox;
       private JCheckBox m_reloadFileCheckBox;
  +    private JFileChooser m_chooser;
  +    private File m_oldFile;
   
       public SwingUI()
       {
           super( (Frame)null, Constants.BUILD_BANNER, true );
           final Container contentPane = getContentPane();
  -        final BoxLayout layout = new BoxLayout( contentPane, BoxLayout.Y_AXIS );
  +        final GridBagLayout layout = new GridBagLayout();
           contentPane.setLayout( layout );
   
  -        final JPanel entryPanel = createEntryPanel();
  -        final JPanel statusPanel = createStatusPanel();
  -        final JPanel resultsPanel = createResultsPanel();
  -
  -        contentPane.add( entryPanel );
  -        contentPane.add( statusPanel );
  -        contentPane.add( resultsPanel );
  +        final JComponent entryPanel = createEntryPanel();
  +        final JComponent statusPanel = createStatusPanel();
  +        final JComponent resultsPanel = createResultsPanel();
  +
  +        GridBagConstraints gbc = null;
  +
  +        gbc = new GridBagConstraints();
  +        gbc.gridx = 0;
  +        gbc.gridy = 0;
  +        gbc.gridwidth = 1;
  +        gbc.gridheight = 1;
  +        gbc.fill = GridBagConstraints.BOTH;
  +        gbc.anchor = GridBagConstraints.CENTER;
  +        gbc.insets = new Insets( 2, 2, 2, 2 );
  +        gbc.ipadx = 5;
  +        gbc.ipady = 5;
  +        gbc.weightx = 1.0;
  +        gbc.weighty = 0.0;
  +        contentPane.add( entryPanel, gbc );
  +
  +        gbc = new GridBagConstraints();
  +        gbc.gridx = 0;
  +        gbc.gridy = 1;
  +        gbc.gridwidth = 1;
  +        gbc.gridheight = 1;
  +        gbc.fill = GridBagConstraints.BOTH;
  +        gbc.anchor = GridBagConstraints.CENTER;
  +        gbc.insets = new Insets( 2, 2, 2, 2 );
  +        gbc.ipadx = 5;
  +        gbc.ipady = 5;
  +        gbc.weightx = 1.0;
  +        gbc.weighty = 0.0;
  +        contentPane.add( statusPanel, gbc );
  +
  +        gbc = new GridBagConstraints();
  +        gbc.gridx = 0;
  +        gbc.gridy = 2;
  +        gbc.gridwidth = 1;
  +        gbc.gridheight = 1;
  +        gbc.fill = GridBagConstraints.BOTH;
  +        gbc.anchor = GridBagConstraints.CENTER;
  +        gbc.insets = new Insets( 2, 2, 2, 2 );
  +        gbc.ipadx = 5;
  +        gbc.ipady = 5;
  +        gbc.weightx = 1.0;
  +        gbc.weighty = 1.0;
  +        contentPane.add( resultsPanel, gbc );
   
           pack();
           validate();
           doLayout();
  +
  +        m_chooser = createChooser();
       }
   
  -    private JPanel createResultsPanel()
  +    private JComponent createResultsPanel()
       {
  -        final JPanel panel = new JPanel();
  -        return panel;
  +        final Dimension size = new Dimension( 300, 140 );
  +        final JTree top = new JTree();
  +        top.setSize( size );
  +        top.setPreferredSize( size );
  +        final JTextArea bottom = new JTextArea( "Text output will go here." );
  +        bottom.setEditable( false );
  +        bottom.setSize( size );
  +        bottom.setPreferredSize( size );
  +        return new JSplitPane( JSplitPane.VERTICAL_SPLIT, top, bottom );
       }
   
       private JPanel createStatusPanel()
       {
           final JPanel panel = new JPanel();
           m_progressBar = new JProgressBar( 0, 300 );
  +        m_progressBar.setStringPainted( true );
  +        m_progressBar.setBorderPainted( true );
  +        m_progressBar.setValue( 200 );
           panel.add( m_progressBar );
           return panel;
       }
   
       private JPanel createEntryPanel()
       {
  -        final JPanel panel = new JPanel();
  +        final JPanel panel = new JPanel( new GridLayout( 2, 1 ) );
  +        final JButton browseButton = createBrowseButton();
           m_buildButton = createBuildButton();
           m_fileField = createFileField();
  -        m_reloadLibsCheckBox = new JCheckBox( "Reload Libraries", true );
           m_reloadFileCheckBox = new JCheckBox( "Reload Build File", true );
  +        m_reloadLibsCheckBox = createLibsCheckBox();
  +
  +        final JPanel top = new JPanel();
  +        top.add( m_fileField );
  +        top.add( browseButton );
  +        top.add( m_buildButton );
  +
  +        final JPanel bottom = new JPanel();
  +        bottom.add( m_reloadLibsCheckBox );
  +        bottom.add( m_reloadFileCheckBox );
  +
  +        panel.add( top );
  +        panel.add( bottom );
   
  -        panel.add( m_fileField );
  -        panel.add( m_buildButton );
  -        panel.add( m_reloadLibsCheckBox );
  -        panel.add( m_reloadFileCheckBox );
           return panel;
       }
   
  +    private JCheckBox createLibsCheckBox()
  +    {
  +        final JCheckBox reloadLibsCheckBox = new JCheckBox( "Reload Libraries", true );
  +        final ChangeListener changeListener = new ChangeListener()
  +        {
  +            public void stateChanged( final ChangeEvent event )
  +            {
  +                m_reloadFileCheckBox.setEnabled( reloadLibsCheckBox.isSelected() );
  +            }
  +        };
  +        reloadLibsCheckBox.addChangeListener( changeListener );
  +        return reloadLibsCheckBox;
  +    }
  +
       private TextField createFileField()
       {
           final TextField fileField = new TextField( "" );
  @@ -113,6 +208,23 @@
           return fileField;
       }
   
  +    private JButton createBrowseButton()
  +    {
  +        final JButton button = new JButton( "..." );
  +        button.setToolTipText( "Browse For Project File" );
  +
  +        final ActionListener actionListener = new ActionListener()
  +        {
  +            public void actionPerformed( final ActionEvent action )
  +            {
  +                action_browse();
  +            }
  +        };
  +        button.addActionListener( actionListener );
  +
  +        return button;
  +    }
  +
       private JButton createBuildButton()
       {
           final JButton button = new JButton( "Build" );
  @@ -130,6 +242,36 @@
           return button;
       }
   
  +    private void action_browse()
  +    {
  +        final int result = m_chooser.showDialog( this, null );
  +        if( JFileChooser.APPROVE_OPTION != result )
  +        {
  +            return;
  +        }
  +
  +        final File file = m_chooser.getSelectedFile();
  +        if( null == file )
  +        {
  +            Toolkit.getDefaultToolkit().beep();
  +            return;
  +        }
  +
  +        m_fileField.setText( file.getAbsolutePath() );
  +    }
  +
  +    private JFileChooser createChooser()
  +    {
  +        final JFileChooser chooser = new JFileChooser();
  +        chooser.setDialogTitle( "Select Build File" );
  +        chooser.setApproveButtonText( "OK" );
  +        chooser.setCurrentDirectory( new File( "." ) );
  +        chooser.setDialogType( JFileChooser.OPEN_DIALOG );
  +        chooser.setMultiSelectionEnabled( false );
  +        chooser.setFileFilter( new ProjectFileFilter() );
  +        return chooser;
  +    }
  +
       private void action_build()
       {
           m_buildButton.setEnabled( false );
  @@ -150,26 +292,62 @@
       {
           System.out.println( "SwingUI.doBuild" );
   
  -//        final boolean reloadLibs = m_reloadLibsCheckBox.isSelected();
  -//        if( reloadLibs )
  -//        {
  -//            //rebuild workspace/module
  -//        }
  +        final boolean reloadLibs = m_reloadLibsCheckBox.isSelected();
  +        if( reloadLibs )
  +        {
  +            //rebuild workspace/module
  +            System.out.println( "Reloading Workspace" );
  +        }
   
           final String buildFilename = m_fileField.getText();
  -        final boolean reloadFile =
  -            m_reloadFileCheckBox.isSelected();
  +        final File file = resolveFile( buildFilename );
  +
  +        if( !file.exists() )
  +        {
  +            final String message = "File " + file + "does not exist.";
  +            final String title = "Missing File";
  +            JOptionPane.showMessageDialog( this,
  +                                           message,
  +                                           title,
  +                                           JOptionPane.WARNING_MESSAGE );
  +            return;
  +        }
   
  -//        if( buildFilename.equals( m_oldBuildFile ) || reloadFile || reloadLibs )
  -//        {
  -//            //reload build file here
  -//        }
  +        final boolean reloadFile = m_reloadFileCheckBox.isSelected() || reloadLibs;
  +        if( null != m_oldFile && file.equals( m_oldFile ) || reloadFile )
  +        {
  +            //reload build file here
  +            System.out.println( "Reloading Build file: " + file );
  +        }
  +        m_oldFile = file;
   
           //Hook up event listener here
   
           //Process Module here
   
  +        //Temporary sleep
  +        try
  +        {
  +            Thread.sleep( 2000 );
  +        }
  +        catch( InterruptedException e )
  +        {
  +        }
  +
           m_buildButton.setEnabled( true );
  +    }
  +
  +    private File resolveFile( final String buildFilename )
  +    {
  +        final File file = new File( buildFilename );
  +        try
  +        {
  +            return file.getCanonicalFile();
  +        }
  +        catch( IOException e )
  +        {
  +            return file.getAbsoluteFile();
  +        }
       }
   
       private void file_textChanged()
  
  
  
  1.1                  jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/frontends/ProjectFileFilter.java
  
  Index: ProjectFileFilter.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.myrmidon.frontends;
  
  import javax.swing.filechooser.FileFilter;
  import javax.swing.filechooser.FileView;
  import java.io.File;
  
  /**
   * A basic file filter for Ant project files.
   */
  public class ProjectFileFilter
      extends FileFilter
  {
      /**
       * Whether the given file is accepted by this filter.
       */
      public boolean accept( final File file )
      {
          final String name = file.getName();
          return name.endsWith( ".xml" ) || name.endsWith( ".ant" );
      }
  
      /**
       * The description of this filter. For example: "JPG and GIF Images"
       * @see FileView#getName
       */
      public String getDescription()
      {
          return "Ant Project Files";
      }
  }
  
  
  

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