/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* DlgDirectionSearch.java
*
* Created on 27.02.2009, 13:14:39
*/
package clips.kek.direction;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.EmptyDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.delegate.client.ClientLocal;
import clips.delegate.directory.simple.committeeReason.DirectoryCommitteeReason;
import clips.delegate.directory.simple.committeeReason.DirectoryCommitteeReasonItem;
import clips.delegate.doctor.direction.DirectionFactoryLocal;
import clips.delegate.doctor.direction.DirectionLocal;
import clips.delegate.kek.CommitteeDirectionData;
import clips.delegate.kek.CommitteeLocal;
import clips.userseach.PanelUserSearch;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.infotechservice.ICalendar.DateEvent;
import org.infotechservice.ICalendar.DateListener;
/**
*
* @author lacoste
*/
public class DlgDirectionSearch extends ModalDialog {
private Date dateFrom, dateTill;
private DirectoryCommitteeReasonItem comReason;
private List<DirectionLocal> directionList; //итератор найденных направлений
private ArrayList<CommitteeDirectionData> comDirMembers;
private ArrayList<CommitteeDirectionData> comDirMembersToAdd;
private CommitteeLocal committee;
private ClientLocal client = null;
/** Creates new form DlgDirectionSearch */
public DlgDirectionSearch(java.awt.Frame parent, CommitteeLocal commitee) throws ClipsException {
super(parent, "Поиск направлений", null);
initComponents();
this.committee = commitee;
//заполняем комбобокс типов направлений
DirectoryCommitteeReason dirComReasons = DirectoryLocator.getDirectory(DirectoryCommitteeReason.class);
SelectorEditableExceptional<DirectoryCommitteeReasonItem> ii = dirComReasons.getItems();
for (int i = 0; i < ii.size(); i++) {
DirectoryCommitteeReasonItem item = ii.get(i);
cbComReasons.addItem(item);
}
cbComReasons.setSelectedItem(dirComReasons.getItemFromID(0));
dateChooserFrom.addDateListener(new DateListener() {
@Override
public void dateChanged(DateEvent evt) {
dateFrom = dateChooserFrom.getDate();
}
});
dateChooserTill.addDateListener(new DateListener() {
@Override
public void dateChanged(DateEvent evt) {
dateTill = dateChooserTill.getDate();
}
});
tabDirList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
tabDirList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
btSelect.setEnabled(tabDirList.getSelectedRowCount() > 0);
}
});
StateSaver.attachTo(this);
}
public ArrayList<CommitteeDirectionData> getDirMemList() {
return comDirMembersToAdd;
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelDirMemList.COL_DIRMEM_ID, 2);
state.setPreferredWidth(TableModelDirMemList.COL_CLIENT, 11);
state.setPreferredWidth(TableModelDirMemList.COL_DATE, 6);
state.setPreferredWidth(TableModelDirMemList.COL_MKB, 11);
state.setPreferredWidth(TableModelDirMemList.COL_REASON, 10);
state.setPreferredWidth(TableModelDirMemList.COL_DESC, 10);
state.setPreferredWidth(TableModelDirMemList.COL_COLLAB, 10);
StateSaver.setDefaultState(this, tabDirList, state);
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
cbClient = new javax.swing.JCheckBox();
jLabel2 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
cbComReasons = new javax.swing.JComboBox();
jPanel5 = new javax.swing.JPanel();
tfClient = new javax.swing.JTextField();
btClient = new javax.swing.JButton();
jPanel6 = new javax.swing.JPanel();
jPanel9 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dateChooserFrom = new org.infotechservice.ICalendar.components.ICDateChooser();
jLabel4 = new javax.swing.JLabel();
dateChooserTill = new org.infotechservice.ICalendar.components.ICDateChooser();
jPanel10 = new javax.swing.JPanel();
btSearch = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tabDirList = new cli_fmw.utils.sorted_table.SortedTable();
jPanel3 = new javax.swing.JPanel();
btSelect = new javax.swing.JButton();
btCancel = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Поиск направлений на комиссию");
jPanel8.setLayout(new java.awt.BorderLayout());
jPanel4.setLayout(new java.awt.BorderLayout(5, 0));
jPanel7.setLayout(new java.awt.GridLayout(3, 1, 3, 5));
jLabel1.setText("по типу: ");
jPanel7.add(jLabel1);
cbClient.setText("по пациенту:");
cbClient.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbClientActionPerformed(evt);
}
});
jPanel7.add(cbClient);
jLabel2.setText("по дате:");
jPanel7.add(jLabel2);
jPanel4.add(jPanel7, java.awt.BorderLayout.LINE_START);
jPanel2.setLayout(new java.awt.GridLayout(3, 1, 5, 5));
cbComReasons.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbComReasonsActionPerformed(evt);
}
});
jPanel2.add(cbComReasons);
jPanel5.setLayout(new java.awt.BorderLayout());
tfClient.setColumns(40);
tfClient.setEditable(false);
jPanel5.add(tfClient, java.awt.BorderLayout.CENTER);
btClient.setText("...");
btClient.setEnabled(false);
btClient.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btClientActionPerformed(evt);
}
});
jPanel5.add(btClient, java.awt.BorderLayout.LINE_END);
jPanel2.add(jPanel5);
jPanel6.setLayout(new java.awt.BorderLayout());
jPanel9.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 0));
jLabel3.setText("с: ");
jPanel9.add(jLabel3);
dateChooserFrom.setPreferredSize(new java.awt.Dimension(130, 29));
jPanel9.add(dateChooserFrom);
jLabel4.setText(" по: ");
jPanel9.add(jLabel4);
dateChooserTill.setPreferredSize(new java.awt.Dimension(130, 29));
jPanel9.add(dateChooserTill);
jPanel6.add(jPanel9, java.awt.BorderLayout.LINE_START);
jPanel10.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0));
btSearch.setText("Поиск");
btSearch.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btSearchActionPerformed(evt);
}
});
jPanel10.add(btSearch);
jPanel6.add(jPanel10, java.awt.BorderLayout.LINE_END);
jPanel2.add(jPanel6);
jPanel4.add(jPanel2, java.awt.BorderLayout.CENTER);
jPanel8.add(jPanel4, java.awt.BorderLayout.PAGE_START);
jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Выберите направления, для которых следует создать комиссию"));
tabDirList.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{},
{},
{},
{}
},
new String [] {
}
));
jScrollPane1.setViewportView(tabDirList);
jPanel8.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
btSelect.setText("Выбрать");
btSelect.setEnabled(false);
btSelect.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btSelectActionPerformed(evt);
}
});
jPanel3.add(btSelect);
btCancel.setText("Отмена");
btCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btCancelActionPerformed(evt);
}
});
jPanel3.add(btCancel);
jPanel8.add(jPanel3, java.awt.BorderLayout.PAGE_END);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, 652, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, 417, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cbComReasonsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbComReasonsActionPerformed
if (cbComReasons.getSelectedItem() instanceof DirectoryCommitteeReasonItem) {
comReason = (DirectoryCommitteeReasonItem) cbComReasons.getSelectedItem();
} else {
comReason = null;
}
}//GEN-LAST:event_cbComReasonsActionPerformed
private void btSelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSelectActionPerformed
if (tabDirList.getSelectedRowCount() == 0) {
return;
}
try {
comDirMembersToAdd = new ArrayList<CommitteeDirectionData>();
int[] selRow = tabDirList.getSelectedRowsSorted();
for (int i = 0; i < selRow.length; i++) {
if (!comDirMembers.get(selRow[i]).getDirection(getAuditManager()).isOrdered()) {
comDirMembersToAdd.add(comDirMembers.get(selRow[i]));
}
}
setDlgResult(ModalDialog.DLG_OK);
dispose();
} catch (ClipsException e) {
MessageBox.showException(e);
}
}//GEN-LAST:event_btSelectActionPerformed
private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
setDlgResult(ModalDialog.DLG_CANCEL);
dispose();
}//GEN-LAST:event_btCancelActionPerformed
private void cbClientActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbClientActionPerformed
try {
if (cbClient.isSelected()) {
EmptyDialog dlg = new EmptyDialog(this, "Поиск пациента", getAuditManager());
PanelUserSearch panel = new PanelUserSearch(dlg, PanelUserSearch.MODE_SELECT);
dlg.addNewPage(panel, null);
dlg.setVisible(true);
if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
client = panel.getSelectedClient();
tfClient.setText(client.toString());
btClient.setEnabled(true);
} else {
client = null;
tfClient.setText("");
btClient.setEnabled(false);
cbClient.setSelected(false);
}
} else {
client = null;
tfClient.setText("");
btClient.setEnabled(false);
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_cbClientActionPerformed
private void btClientActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btClientActionPerformed
try {
EmptyDialog dlg = new EmptyDialog(null, "Выбор пациента", getAuditManager());
PanelUserSearch panel = new PanelUserSearch(dlg, PanelUserSearch.MODE_SELECT);
dlg.addNewPage(panel, null);
dlg.setVisible(true);
if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
client = panel.getSelectedClient();
tfClient.setText(client.toString());
btClient.setEnabled(true);
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btClientActionPerformed
private void btSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSearchActionPerformed
try {
int comReasonID = comReason == null ? 0 : comReason.getID();
int clientID = client == null ? 0 : client.getID();
DirectionFactoryLocal factory = new DirectionFactoryLocal(getAuditManager());
directionList = factory.findDirectionListToComm(comReasonID, clientID, dateFrom, dateTill);
comDirMembers = new ArrayList<CommitteeDirectionData>();
for (int i = 0; i < directionList.size(); i++) {
CommitteeDirectionData data = new CommitteeDirectionData(committee);
data.setDirection(directionList.get(i));
comDirMembers.add(data);
}
tabDirList.setModel(new TableModelDirMemList(comDirMembers));
tabDirList.setDefaultRenderer(Object.class, new TableCellRendererDirectionList());
resizeColumn();
} catch (ClipsException e) {MessageBox.showException(e);}
}//GEN-LAST:event_btSearchActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btCancel;
private javax.swing.JButton btClient;
private javax.swing.JButton btSearch;
private javax.swing.JButton btSelect;
private javax.swing.JCheckBox cbClient;
private javax.swing.JComboBox cbComReasons;
private org.infotechservice.ICalendar.components.ICDateChooser dateChooserFrom;
private org.infotechservice.ICalendar.components.ICDateChooser dateChooserTill;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private cli_fmw.utils.sorted_table.SortedTable tabDirList;
private javax.swing.JTextField tfClient;
// End of variables declaration//GEN-END:variables
}