/*
* PanelSetProbeNeed.java
*
* Created on 19 Апрель 2008 г., 11:35
*/
package clips.doctor.checkup.prepareCheckup;
import clips.delegate.doctor.checkup.CheckupXMLData;
import clips.doctor.checkup.CheckUpTableCellRenderer;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import java.util.ArrayList;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
/**
* панель, позволяющая устанавливать какие пробы нужны для анализа.
* @author lacoste
*/
public class PanelSetProbeNeed extends javax.swing.JPanel {
private CheckupXMLData xml;
private ArrayList<CheckListener> listeners;
/** Creates new form PanelSetProbeNeed */
public PanelSetProbeNeed(CheckupXMLData xml) {
initComponents();
listeners = new ArrayList<CheckListener>();
this.xml =xml;
labCheckUpType.setText(xml.getCheckupType().getTitle());
reloadTable();
resizeColumn();
StateSaver.attachTo(this);
}
private void reloadTable() {
TableModelSetProbeNeed tableModelSetProbeNeed = new TableModelSetProbeNeed(xml);
tableModelSetProbeNeed.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
kickListeners();
}
});
tabXml.setModel(tableModelSetProbeNeed);
tabXml.getColumnModel().getColumn(0).setCellRenderer(new CheckUpTableCellRenderer());
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelSetProbeNeed.COL_PROBE_TITLE, 4);
state.setPreferredWidth(TableModelSetProbeNeed.COL_DESCRIPTION, 4);
state.setPreferredWidth(TableModelSetProbeNeed.COL_NEEDED, 2);
StateSaver.setDefaultPanelItemState(this, tabXml, 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
tabXml = new cli_fmw.utils.sorted_table.SortedTable();
labCheckUpType = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
btSelectAll = new javax.swing.JButton();
jScrollPane1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jScrollPane1MouseClicked(evt);
}
});
jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane1ComponentResized(evt);
}
});
tabXml.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{},
{},
{},
{}
},
new String [] {
}
));
jScrollPane1.setViewportView(tabXml);
labCheckUpType.setText("...");
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
btSelectAll.setText("Выбрать все");
btSelectAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btSelectAllActionPerformed(evt);
}
});
jPanel1.add(btSelectAll);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 406, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 406, Short.MAX_VALUE)
.addComponent(labCheckUpType, javax.swing.GroupLayout.PREFERRED_SIZE, 312, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(labCheckUpType, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 166, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
}//GEN-LAST:event_jScrollPane1ComponentResized
private void btSelectAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSelectAllActionPerformed
ArrayList<String> probeList = xml.getProbeList();
for (int i = 0; i < probeList.size(); i++) {
if (!probeList.get(i).startsWith("separator")) {
if (xml.getProbeTitle(probeList.get(i)).toLowerCase().startsWith("примеча")) {
//примечания автоматом не выделять!
continue;
}
xml.setProbeNeed(probeList.get(i), true);
}
}
tabXml.updateUI();
kickListeners();
}//GEN-LAST:event_btSelectAllActionPerformed
private void jScrollPane1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jScrollPane1MouseClicked
kickListeners();
}//GEN-LAST:event_jScrollPane1MouseClicked
private void kickListeners(){
for (CheckListener checkListener : listeners) {
checkListener.mustCheck();
}
}
public void addCheckListener(CheckListener listener){
listeners.add(listener);
}
public void removeCheckListener(CheckListener listener){
listeners.remove(listener);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btSelectAll;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel labCheckUpType;
private cli_fmw.utils.sorted_table.SortedTable tabXml;
// End of variables declaration//GEN-END:variables
}