StartupProjectChoiceDialog.java :  » IDE » Schmortopf » Schmortopf » Main » Java Open Source

Java Open Source » IDE » Schmortopf 
Schmortopf » Schmortopf » Main » StartupProjectChoiceDialog.java
package Schmortopf.Main;


  /**
   *   A dialog, which is displayed on applicationstart after
   *   the mainframe has become visible.
   *   It allows the user to reopen a project, open a project
   *   or create a new project.
   */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.plaf.metal.*;
import java.util.*;

import Schmortopf.Utility.*;
import Schmortopf.Utility.gui.*;
import Language.Language;


public class StartupProjectChoiceDialog extends JDialog
{

  private JPanel mainPanel;



                                          
  public StartupProjectChoiceDialog( final IDE_MainFrame mainFrame,
                                     final AbstractAction[] latestProjectActions )
  {
    super( mainFrame, Language.Translate("Choose a Project"),true);
    int spaceUnit = UIManager.getFont("TextField.font").getSize();
     
    // mainPanel :
    this.mainPanel = new EFCNBackgroundPanel( new BorderLayout(),
                                              EFCNBackgroundPanel.BackgroundColorIdentifier,
                                              null );
    this.mainPanel.setBorder( BorderFactory.createEmptyBorder(spaceUnit/4,spaceUnit/4,spaceUnit/4,spaceUnit/4) );

    // The northButton panel :
    JPanel northButtonPanel = new EFCNGradientPanel( EFCNGradientPanel.ApplyVerticalHighLight,
                                                     EFCNGradientPanel.StrongGradientStrength,
                                                     EFCNGradientPanel.ActiveTitleBackground );
    BoxLayout nbLayout = new BoxLayout(northButtonPanel,BoxLayout.Y_AXIS );
    northButtonPanel.setLayout( nbLayout );                           
    northButtonPanel.setBorder( BorderFactory.createEmptyBorder(spaceUnit/2,spaceUnit/4,spaceUnit/2,spaceUnit/4) );
    northButtonPanel.setOpaque(false);                       

    JPanel standardButtonPanel = new JPanel( new FlowLayout(FlowLayout.LEFT,spaceUnit/2,spaceUnit/4) );
    standardButtonPanel.setOpaque(false);

    final ImageIcon newProjectIcon = mainFrame.loadImageIcon("pics/menupics/new.gif");
    JSenseButton newButton = new JSenseButton( 
      " " + Language.Translate("Create New project") + "   ", newProjectIcon, true, mainFrame );
    newButton.setBorder( BorderFactory.createLoweredBevelBorder() );
    newButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {
         setVisible(false);
         mainFrame.createNewProject();
       }
     });
    standardButtonPanel.add( newButton );

    final ImageIcon openIcon = mainFrame.loadImageIcon("pics/menupics/open.gif");
    JSenseButton openButton = new JSenseButton( 
       " " + Language.Translate("Open Project") + "   ", openIcon, true, mainFrame );
    openButton.setBorder( BorderFactory.createLoweredBevelBorder() );
    openButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {
         setVisible(false);
         mainFrame.openExistingProjectFromLocalSystem(false);
       }
     });
    standardButtonPanel.add( openButton );

    final ImageIcon editAndOpenIcon = mainFrame.loadImageIcon("pics/menupics/edit.gif");
    JSenseButton editAndOpenButton = new JSenseButton( 
     " " + Language.Translate("Edit and Open Project") + "   ", editAndOpenIcon, true, mainFrame );
    editAndOpenButton.setBorder( BorderFactory.createLoweredBevelBorder() );
    editAndOpenButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {
         setVisible(false);    
         mainFrame.openExistingProjectFromLocalSystem(true);
       }
     });
    standardButtonPanel.add( editAndOpenButton );

    northButtonPanel.add( standardButtonPanel );

    JPanel featureButtonPanel = new JPanel( new FlowLayout(FlowLayout.RIGHT,spaceUnit/2,spaceUnit/4) );
    featureButtonPanel.setOpaque(false);

    JSenseButton eclipseImportButton = new JSenseButton(
       " " + Language.Translate("Import Eclipse project") + "   ",true,mainFrame);
    eclipseImportButton.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e ) {
         setVisible(false);                            
         mainFrame.importEclipseProject();
      }
    });
    eclipseImportButton.setBorder( BorderFactory.createLoweredBevelBorder() );
    eclipseImportButton.setIcon( mainFrame.loadImageIcon("pics/menupics/eclipseimport.gif") );
    featureButtonPanel.add( eclipseImportButton );

    northButtonPanel.add( Box.createVerticalStrut(spaceUnit/4) );
    northButtonPanel.add( featureButtonPanel );


    // wrap the northButtonPanel (cause efcn.. stuff)
    JPanel northButtonWrapPanel = new JPanel( new BorderLayout() );
    northButtonWrapPanel.setBorder( BorderFactory.createEtchedBorder() );
    northButtonWrapPanel.add(northButtonPanel, BorderLayout.CENTER );

    mainPanel.add( northButtonWrapPanel, BorderLayout.NORTH );


    // The panel with the latest projects :
    JPanel projectsPanel = new EFCNGradientPanel( EFCNGradientPanel.ApplyUpperLeftCornerHighLight,
                                                  EFCNGradientPanel.StrongGradientStrength,
                                                  EFCNGradientPanel.ActiveTitleBackground );

    projectsPanel.setBorder( BorderFactory.createEmptyBorder(spaceUnit/2,spaceUnit/2,spaceUnit/2,spaceUnit/2) );
    BoxLayout projectListLayout = new BoxLayout(projectsPanel,BoxLayout.Y_AXIS);
    projectsPanel.setLayout( projectListLayout );
    if( latestProjectActions.length == 0 )
     {
       projectsPanel.add( Box.createVerticalStrut( spaceUnit/2 ) );
       projectsPanel.add( new JContrastLabel(Language.Translate("No stored projects available.")) );
       projectsPanel.add( Box.createVerticalStrut( spaceUnit/2 ) );
     }
    else
     {
       JContrastLabel titleLabel = new JContrastLabel(Language.Translate("Latest projects:"));
       titleLabel.setAlignmentX(0.5f);
       projectsPanel.add( titleLabel );
       projectsPanel.add( Box.createVerticalStrut( spaceUnit/2 ) );
       for( int i=0; i < latestProjectActions.length; i++ )
        {
          AbstractAction thisLatestProjectAction = latestProjectActions[i];
          String thisName = "  " + (String)thisLatestProjectAction.getValue(Action.NAME) + "  ";
          final JSenseButton thisLatestProjectButton = new JSenseButton( thisName,false,true, mainFrame );
          thisLatestProjectButton.setHorizontalAlignment( SwingConstants.LEFT );
          Border ibd = BorderFactory.createEmptyBorder(spaceUnit/4,spaceUnit/4,spaceUnit/4,spaceUnit/4);
          Border obd = BorderFactory.createRaisedBevelBorder();
          thisLatestProjectButton.setBorder( BorderFactory.createCompoundBorder(obd,ibd) );
          thisLatestProjectButton.setCursor( new Cursor(Cursor.HAND_CURSOR) );
          // Add the action :
          // Additionally to the already attached action, we must close this dialog :
          thisLatestProjectButton.addActionListener( thisLatestProjectAction );
          thisLatestProjectButton.addActionListener( new ActionListener()
           {
             public void actionPerformed( ActionEvent e )
             {
               setVisible(false);
             }
           });
          JPanel buttonWrapPanel = new JPanel( new BorderLayout() );
          buttonWrapPanel.add( thisLatestProjectButton,BorderLayout.CENTER );
          projectsPanel.add( buttonWrapPanel );
          projectsPanel.add( Box.createVerticalStrut( spaceUnit/2 ) );
        }
     }
    JPanel projectsWrapPanel = new JPanel( new BorderLayout(0,0) );
    projectsWrapPanel.setBorder( BorderFactory.createEtchedBorder() );
    projectsWrapPanel.add(projectsPanel, BorderLayout.CENTER );
    mainPanel.add( projectsWrapPanel, BorderLayout.CENTER );

    // and the southbutton panel :
    JPanel southButtonPanel = new EFCNGradientPanel( new FlowLayout(),
                                                     EFCNGradientPanel.ApplyVerticalHighLight,
                                                     EFCNGradientPanel.StrongGradientStrength,
                                                     EFCNGradientPanel.ActiveTitleBackground );
    southButtonPanel.setOpaque(false);
    final ImageIcon okIcon = mainFrame.loadImageIcon("pics/menupics/ok.gif");
    JSenseButton okButton = new JSenseButton( 
       "      " + Language.Translate("Close") + "      ", okIcon, true, mainFrame );
    okButton.setBorder( BorderFactory.createLoweredBevelBorder() );
    okButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {
         setVisible(false);
       }
     });
    southButtonPanel.add( okButton );
    // Wrap the buttonpanel (cause efcn.. stuff)
    JPanel southButtonWrapPanel = new JPanel( new BorderLayout() );
    southButtonWrapPanel.setBorder( BorderFactory.createEtchedBorder() );
    southButtonWrapPanel.add(southButtonPanel, BorderLayout.CENTER );
    mainPanel.add( southButtonWrapPanel, BorderLayout.SOUTH  );

    this.getContentPane().add( this.mainPanel );

    this.pack();
  } // Constructor                                               






  public void showCentered( final IDE_MainFrameProvider mainFrameProvider )
  {
     final Dimension parentSize = mainFrameProvider.getJFrame().getSize();
     final Point parentLocation = mainFrameProvider.getJFrame().getLocation();
     int xp = parentLocation.x + (parentSize.width-this.getWidth() )/2;
     int yp = parentLocation.y + (parentSize.height-this.getHeight() )/2;
     this.setLocation(xp,yp);
     this.show();
  }


} // StartupProjectChoiceDialog




java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.