/*
* PanelEditCabinets.java
*
* Created on 2 Октябрь 2008 г., 12:36
*/
package clips.directory.editors.cabinet;
import clips.delegate.directory.complex.DirectoryCabinet;
import clips.delegate.directory.complex.DirectoryCabinetItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.delegate.DelegateLine2;
import cli_fmw.main.ClipsException;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
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 beans.directory.cabinet.entity.CabinetDetails;
import cli_fmw.report.ExtraField;
import cli_fmw.report.SampleMapEntry;
import clips.delegate.directory.ro.DirectoryLpu;
import clips.delegate.directory.ro.DirectoryLpuItem;
import clips.login.UserInfo;
import java.util.ArrayList;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ListSelectionModel;
/**
*
* @author lacoste
*/
public class PanelEditCabinets extends PageGeneric implements Printable {
private DirectoryCabinet directory;
private TableModelEditCabinets tableModel;
/** Creates new form PanelEditCabinets
* @param container
* @throws ClipsException
*/
public PanelEditCabinets(PageContainer container) throws ClipsException {
super(container);
initComponents();
DirectoryLpu dirLpu = DirectoryLocator.getDirectory(DirectoryLpu.class);
DefaultComboBoxModel model = new DefaultComboBoxModel(dirLpu.toArray());
model.setSelectedItem(UserInfo.get().getCollaborator().getLpu());
cbLpu.setModel(model);
directory = DirectoryLocator.getDirectory(DirectoryCabinet.class, false);
tabCabinets.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setTable();
resizeColumn();
StateSaver.attachTo(this);
}
private DirectoryLpuItem getCurLpu(){
DirectoryLpuItem curLPu = (DirectoryLpuItem)cbLpu.getSelectedItem();
return curLPu;
}
private void setTable() throws ClipsException {
tableModel = new TableModelEditCabinets(directory.getFilteredItems(getCurLpu()));
tabCabinets.setModel(tableModel);
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelEditCabinets.COL_ID, 2);
state.setPreferredWidth(TableModelEditCabinets.COL_TITLE, 6);
state.setPreferredWidth(TableModelEditCabinets.COL_DESCRIPTION, 12);
StateSaver.setDefaultState(this, tabCabinets, 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() {
jPanel1 = new javax.swing.JPanel();
btAdd = new javax.swing.JButton();
btDel = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tabCabinets = new cli_fmw.utils.sorted_table.SortedTable();
jPanel2 = new javax.swing.JPanel();
cbLpu = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
setLayout(new java.awt.BorderLayout(5, 5));
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
btAdd.setText("Добавить");
btAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddActionPerformed(evt);
}
});
jPanel1.add(btAdd);
btDel.setText("Удалить");
btDel.setPreferredSize(btAdd.getPreferredSize());
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);
jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane1ComponentResized(evt);
}
});
tabCabinets.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tabCabinets);
add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel2.setLayout(new java.awt.BorderLayout(5, 0));
cbLpu.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
cbLpu.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cbLpuItemStateChanged(evt);
}
});
jPanel2.add(cbLpu, java.awt.BorderLayout.CENTER);
jLabel1.setText("ЛПУ");
jPanel2.add(jLabel1, java.awt.BorderLayout.LINE_START);
add(jPanel2, java.awt.BorderLayout.PAGE_START);
}// </editor-fold>//GEN-END:initComponents
private void btAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddActionPerformed
try {
CabinetDetails d = new CabinetDetails();
d.id = 0;
d.title = "Введите название кабинета";
d.description = "";
d.lpuId = getCurLpu().getID();
directory.getItems().append(new DirectoryCabinetItem(d));
directory = DirectoryLocator.getDirectory(DirectoryCabinet.class, true);
setTable();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btAddActionPerformed
private void btDelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelActionPerformed
try {
if (tabCabinets.getSelectedRowCount() > 0) {
DirectoryCabinetItem itemAt = tableModel.getItemAt(tabCabinets.getSelectedRowSorted());
directory.getItems().remove(itemAt);
}
directory = DirectoryLocator.getDirectory(DirectoryCabinet.class, true);
setTable();
} catch(ClipsException e) {
MessageBox.showException(e);
}
}//GEN-LAST:event_btDelActionPerformed
private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
}//GEN-LAST:event_jScrollPane1ComponentResized
private void cbLpuItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbLpuItemStateChanged
try {
setTable();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_cbLpuItemStateChanged
@Override
public String getPageTitle() {
return "Редактор данных кабинетов";
}
@Override
public DelegateLine2 getDelegate() {
return null;
}
@Override
public boolean readyForPrint() {
return true;
}
@Override
public void print() {
if (readyForPrint()) {
String title = "Справочник кабинетов";
ArrayList<Entry<String, Object>> fields = new ArrayList<Entry<String, Object>>();
fields.add(new SampleMapEntry<String, Object>("clinic", new ExtraField(getCurLpu(), "Клиника: ")));
PrintCreators.createGeneratedReport(title, null, fields, null, tabCabinets.getModel(), getClass());
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btAdd;
private javax.swing.JButton btDel;
private javax.swing.JComboBox cbLpu;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private cli_fmw.utils.sorted_table.SortedTable tabCabinets;
// End of variables declaration//GEN-END:variables
}