package org.incha.ui;
import java.awt.BorderLayout;
import java.awt.Dialog.ModalityType;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.incha.core.JavaProject;
public class NewProjectWizard extends JPanel {
private static final long serialVersionUID = 1738212977882284711L;
/**
* New java project.
*/
private JTextField projectName = new JTextField(20);
private CompleteListener listener;
private JavaProject project;
/**
* Default constructor.
*/
public NewProjectWizard() {
super(new BorderLayout());
//center panel
final JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER));
center.add(projectName);
add(center, BorderLayout.CENTER);
//buttons panel
final JPanel south = new JPanel(new FlowLayout(FlowLayout.CENTER));
//add 'ok' button
final JButton ok = new JButton("Ok");
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final String text = projectName.getText();
if (text != null && text.trim().length() > 0) {
project = new JavaProject(text);
handleCompleted();
}
}
});
south.add(ok);
//add 'cancel' button
final JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
project = null;
handleCompleted();
}
});
south.add(cancel);
add(south, BorderLayout.SOUTH);
}
/**
* @param listener the listener to set
*/
public void setListener(final CompleteListener listener) {
this.listener = listener;
}
/**
* Handles the wizard completed.
*/
protected void handleCompleted() {
if (listener != null) {
listener.hasCompleted(this);
}
}
/**
* @return the project
*/
public JavaProject getProject() {
return project;
}
/**
* @return java project.
*/
public static JavaProject showDialog(final JFrame owner) {
final JDialog dialog = new JDialog(owner, "Please enter project name", ModalityType.APPLICATION_MODAL);
final NewProjectWizard wizard = new NewProjectWizard();
wizard.setListener(new CompleteListener() {
@Override
public void hasCompleted(final Object obj) {
dialog.dispose();
}
});
dialog.setContentPane(wizard);
dialog.pack();
dialog.setLocationRelativeTo(owner.getContentPane());
dialog.setVisible(true);
return wizard.getProject();
}
}