/*
* PanelServiceList.java
*
* Created on 21 Февраль 2008 г., 15:30
*/
package clips.administrator.certificate.tagList;
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 clips.delegate.doctor.certificate.tag.CertTagFactory;
import clips.delegate.doctor.certificate.tag.interfaces.CertTag;
import framework.utils.PairIntStr;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableModel;
import clips.delegate.doctor.certificate.tag.interfaces.AbstrMultiTag;
import javax.swing.ListSelectionModel;
import javax.swing.border.TitledBorder;
/**
* Панель просмотра и добавления услуг клиента работником регистратуры. Содержит
* таблицу услуг. После создания панели необходимо дать панели
* клиента методом setClient(ClientLocal client)
* @author vip
*/
public class PanelTagList extends PageGeneric implements Printable {
TableModelTagList modelTagList;
TableModelResultList modelResultList;
public PanelTagList(PageContainer container) throws ClipsException {
super(container);
initComponents();
tabTagList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabResultList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
updateTableTagList();
updateTableResultList();
tabTagList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
try {
updateTableResultList();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
});
resizeColumn();
StateSaver.attachTo(this);
}
private void updateTableTagList() {
modelTagList = new TableModelTagList();
tabTagList.setModel(modelTagList);
}
private void updateTableResultList() throws ClipsException {
int row = tabTagList.getSelectedRowSorted();
TitledBorder border = (TitledBorder) jScrollPane2.getBorder();
if (row >=0 && row < modelTagList.getRowCount()) {
String tagName = modelTagList.getTagNameAt(row);
Class<? extends CertTag> classTag = CertTagFactory.getClassByTag(tagName);
if (AbstrMultiTag.class.isAssignableFrom(classTag)) {
CertTag tag = null;
try {
Constructor<? extends CertTag> constructor = classTag.getConstructor();
tag = constructor.newInstance();
} catch (NoSuchMethodException ex) {
throw new ClipsException("Ошибка в теге справки", ex);
} catch (SecurityException ex) {
throw new ClipsException("Ошибка в теге справки", ex);
} catch (InstantiationException ex) {
throw new ClipsException("Ошибка в теге справки", ex);
} catch (IllegalAccessException ex) {
throw new ClipsException("Ошибка в теге справки", ex);
} catch (IllegalArgumentException ex) {
throw new ClipsException("Ошибка в теге справки", ex);
} catch (InvocationTargetException ex) {
if (!(ex.getTargetException() instanceof ClipsException)) {
throw new ClipsException("Ошибка в теге справки", ex);
}
}
if (tag != null) {
//все нормально
modelResultList = new TableModelResultList(((AbstrMultiTag) tag).getAllItems());
border.setTitle("Список результатов");
} else {
//невозможно получить список результатов тега
modelResultList = new TableModelResultList(null);
border.setTitle("Список результатов - динамический");
}
} else {
//не мультитег
modelResultList = new TableModelResultList(null);
border.setTitle("Список результатов - не существует");
}
} else {
//не выбрана строка в таблице
modelResultList = new TableModelResultList(null);
border.setTitle("Список результатов - тэг не выбран");
}
tabResultList.setModel(modelResultList);
jScrollPane2.repaint();
}
/** 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() {
jLabel1 = new javax.swing.JLabel();
jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
tabTagList = new cli_fmw.utils.sorted_table.SortedTable();
jScrollPane2 = new javax.swing.JScrollPane();
tabResultList = new cli_fmw.utils.sorted_table.SortedTable();
jLabel1.setText("В заболевании");
setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
setLayout(new java.awt.BorderLayout());
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setResizeWeight(0.5);
jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Список тегов", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, jLabel1.getFont()));
jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane1ComponentResized(evt);
}
});
tabTagList.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_NEXT_COLUMN);
jScrollPane1.setViewportView(tabTagList);
jSplitPane1.setLeftComponent(jScrollPane1);
jScrollPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Список результатов - тэг не выбран", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, jLabel1.getFont()));
jScrollPane2.setViewportView(tabResultList);
jSplitPane1.setRightComponent(jScrollPane2);
add(jSplitPane1, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
}//GEN-LAST:event_jScrollPane1ComponentResized
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelTagList.COL_NAME, 3);
state.setPreferredWidth(TableModelTagList.COL_TYPE, 2);
state.setPreferredWidth(TableModelTagList.COL_VALUE, 1);
state.setPreferredWidth(TableModelTagList.COL_DESC, 5);
StateSaver.setDefaultState(this, tabTagList, state);
state = new TableState();
state.setPreferredWidth(TableModelResultList.COL_ID, 1);
state.setPreferredWidth(TableModelResultList.COL_VALUE, 3);
StateSaver.setDefaultState(this, tabResultList, state);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSplitPane jSplitPane1;
private cli_fmw.utils.sorted_table.SortedTable tabResultList;
private cli_fmw.utils.sorted_table.SortedTable tabTagList;
// End of variables declaration//GEN-END:variables
@Override
public String getPageTitle() {
return "Список тегов справок";
}
@Override
public boolean readyForPrint() {
return true;
}
@Override
public void print() {
String title = "Список тегов, используемых в справках";
TableModel model = new TableModelTagList();
PrintCreators.createGeneratedReport(title, null, null, null, model, getClass());
}
@Override
public DelegateLine2 getDelegate() {
return null;
}
}