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
|