package notwa.gui;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import notwa.common.ConnectionInfo;
import notwa.dal.ProjectDal;
import notwa.gui.components.JTableCellRenderer;
import notwa.gui.datamodels.ProjectManagementModel;
import notwa.wom.Context;
import notwa.wom.project.Project;
import notwa.wom.project.ProjectCollection;
public class ProjectManagement extends JDialog implements ActionListener, ListSelectionListener {
private ConnectionInfo ci;
private Context context;
private JButton closeButton;
private JTable table;
private ProjectManagementModel tblModel;
private ProjectDal pd;
private ProjectCollection pc;
private JTableCellRenderer tableCellRenderer = new JTableCellRenderer();
private AbstractButton addButton;
private JButton assignmentMngr;
public ProjectManagement(ConnectionInfo ci, Context context) {
this.ci = ci;
this.context = context;
init();
}
public void init() {
this.setLayout(new BorderLayout());
this.setTitle("NOTWA - NOT Only Team Work Assistent - User Management");
this.setSize(500,300);
this.setModalityType(JDialog.ModalityType.APPLICATION_MODAL);
this.setLocationRelativeTo(null);
this.add(this.initComponents(), BorderLayout.CENTER);
this.add(this.initButtons(), BorderLayout.PAGE_END);
this.setVisible(true);
}
private JComponent initComponents() {
JPanel managementPanel = new JPanel(new GridLayout(1,0));
pd = new ProjectDal(ci, context);
pc = new ProjectCollection(context);
pd.fill(pc);
tblModel = new ProjectManagementModel(pc);
table = new JTable(tblModel);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getColumnModel().getColumn(0).setCellRenderer(tableCellRenderer);
table.getSelectionModel().addListSelectionListener(this);
managementPanel.add(new JScrollPane(table));
return managementPanel;
}
private JPanel initButtons() {
JPanel jp = new JPanel();
addButton = new JButton("Add");
addButton.addActionListener(this);
assignmentMngr = new JButton("Assignment manager");
assignmentMngr.addActionListener(this);
assignmentMngr.setEnabled(false);
closeButton = new JButton("Close");
closeButton.addActionListener(this);
jp.add(addButton);
jp.add(assignmentMngr);
jp.add(closeButton);
return jp;
}
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == closeButton) {
this.setVisible(false);
}
if (ae.getSource() == addButton) {
String msg = (String)JOptionPane.showInputDialog(this, "New project name", "NOTWA - New project creation", JOptionPane.QUESTION_MESSAGE);
if (msg == null) {
return;
} else if (!msg.isEmpty()) {
Project project = new Project();
project.registerWithContext(context);
project.setProjectName(msg);
project.setInserted(true);
pc.add(project);
pd.update(pc);
tblModel.fireTableDataChanged();
} else {
JOptionPane.showMessageDialog(this, "You must enter the name!", "NOTWA - Error", JOptionPane.ERROR_MESSAGE);
}
}
if (ae.getSource() == assignmentMngr) {
AssignmentManager am = new AssignmentManager(ci, context);
am.setSelection(this.getSelectedProject());
}
}
private Project getSelectedProject() {
int selectedIndex = table.convertRowIndexToModel(table.getSelectedRow());
return pc.get(selectedIndex);
}
@Override
public void valueChanged(ListSelectionEvent lse) {
if (table.getSelectedRow() != -1)
assignmentMngr.setEnabled(true);
else
assignmentMngr.setEnabled(false);
}
/*if(ae.getSource() == chooseColorButton) {
JColorChooser colorChooser = new JColorChooser();
JDialog jd = JColorChooser.createDialog( chooseColorButton,
"Project color chooser",
true,
colorChooser,
this,
null);
jd.setVisible(true); // not done yet
}*/
}