/*
* PanelCertificateList.java
*
* Created on 1 Апрель 2008 г., 12:02
*/
package clips.doctor.certificate;
import clips.delegate.doctor.certificate.CertificateLocal;
import cli_fmw.delegate.DelegateLine2;
import clips.doctor.PanelEMC;
import cli_fmw.main.ClipsException;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.Persistentable;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.doctor.newEMC.wrappers.collectors.CertificateCollector;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
* Панель отображающая список справок данного пациента
* @author vip
*/
public class PanelCertificateList extends PageGeneric implements Printable, Persistentable {
private CertificateCollector certificateList;
/** Creates new form PanelCertificateList */
public PanelCertificateList(PageContainer container, CertificateCollector certificateCollector) throws ClipsException {
super(container);
initComponents();
this.certificateList = certificateCollector;
reloadTable();
jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = jTable.getSelectedRowSorted();
btDel.setEnabled(row >=0 && row < jTable.getRowCount());
}
});
resizeColumn();
StateSaver.attachTo(this);
}
private void reloadTable() throws ClipsException {
jTable.setModel(new TableModelCertificateList(certificateList.getChildren().toArray(new CertificateLocal[certificateList.getChildCount()])));
jTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelCertificateList.COL_DATE, 10);
state.setPreferredWidth(TableModelCertificateList.COL_COLLABORATOR, 20);
state.setPreferredWidth(TableModelCertificateList.COL_TYPE, 20);
StateSaver.setDefaultState(this, jTable, state);
}
private void setEnabledComponents() {
int row = jTable.getSelectedRowSorted();
if (row >= 0 && row < jTable.getRowCount()) {
btDel.setEnabled(true);
} else {
btDel.setEnabled(false);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable = new cli_fmw.utils.sorted_table.SortedTable();
jPanel1 = new javax.swing.JPanel();
btDel = new javax.swing.JButton();
setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
setLayout(new java.awt.BorderLayout());
jTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTableMouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable);
add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
btDel.setText("Удалить");
btDel.setEnabled(false);
btDel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDelActionPerformed(evt);
}
});
jPanel1.add(btDel);
add(jPanel1, java.awt.BorderLayout.SOUTH);
}// </editor-fold>//GEN-END:initComponents
private void jTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableMouseClicked
if (evt.getClickCount() == 2) {
int row = jTable.rowAtPoint(evt.getPoint());
if (row >= 0 && row < jTable.getRowCount()) {
try {
CertificateLocal cert = certificateList.getChildren().get(row);
if (getContainer() instanceof PanelEMC) {
((PanelEMC) getContainer()).selectInEmc(cert);
}
} catch (ClipsException ex) {
ex.printStackTrace();
MessageBox.showException(ex);
}
}
}
}//GEN-LAST:event_jTableMouseClicked
private void btDelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelActionPerformed
int row = jTable.getSelectedRowSorted();
if (row >=0 && row < jTable.getRowCount()) {
try {
CertificateLocal cert = certificateList.getChildren().get(row);
cert.remove();
reloadTable();
certificateList.removeChild(cert);
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btDelActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btDel;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private cli_fmw.utils.sorted_table.SortedTable jTable;
// End of variables declaration//GEN-END:variables
@Override
public String getPageTitle() {
return "Список справок";
}
public String getPageIcon() {
return null;
}
@Override
public boolean readyForPrint() {
return true;
}
@Override
public void print() {
if (readyForPrint()) {
HashMap<String, Object> data = new LinkedHashMap<String, Object>();
String title = "Список справок пациента";
data.put("client", "Пациент: " + certificateList.getClientLocal().toString());
PrintCreators.createGeneratedReport(title, null, data.entrySet(), null, jTable.getModel(), getClass());
}
}
@Override
public DelegateLine2 getDelegate() {
return certificateList.getClientLocal();
}
@Override
public boolean isDirty() {
return false;
}
@Override
public void save() throws ClipsException {
//DO NOTHING;
}
@Override
public void restore() {
//DO NOTHING;
}
}