/*
* PanelMatter.java
*
* Created on 7 Октябрь 2008 г., 12:28
*/
package clips.directory.editors.matter;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryVidal;
import clips.delegate.directory.complex.DirectoryVidalItem;
import clips.delegate.directory.filtered.DirectoryMatter;
import clips.delegate.directory.filtered.DirectoryMatterItem;
import clips.directory.DialogDirectoryMatter;
import clips.directory.editors.vidalAtc.TableModelMatter;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
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 java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
*
* @author vip
*/
public class PanelMatter extends JPanel implements VidalChangeListener, ListSelectionListener{
private DirectoryMatter directoryMatter;
private DirectoryVidalItem vidalItem;
private boolean selectVidalMode;
private boolean canBeEdit;
/** Creates new form PanelMatter */
public PanelMatter(boolean selectVidalMode) throws ClipsException {
directoryMatter = (DirectoryMatter) DirectoryLocator.getDirectory(DirectoryMatter.class, false);
DirectoryVidal dv = (DirectoryVidal) DirectoryLocator.getDirectory(DirectoryVidal.class, false);
canBeEdit = dv.canEdit();
this.selectVidalMode = selectVidalMode;
initComponents();
jPanel12.setVisible(!selectVidalMode);
tblMatters.getSelectionModel().addListSelectionListener(this);
updateTableMatter();
resizeColumn();
StateSaver.attachTo(this);
}
private void setEnabledComponents() {
btAddMatter.setEnabled(vidalItem != null && canBeEdit);
btDeleteMatter.setEnabled(tblMatters.getSelectedRowCount() > 0 && canBeEdit);
}
private void updateTableMatter(){
ArrayList<DirectoryMatterItem> matterItems = new ArrayList<DirectoryMatterItem>();
try {
if (vidalItem != null) {
SelectorEditableExceptional<DirectoryMatterItem> s = directoryMatter.getFilteredItems(vidalItem);
for (int i=0;i<s.size();i++){
matterItems.add(s.get(i));
}
}
TableModelMatter model = new TableModelMatter(matterItems);
tblMatters.setModel(model);
setEnabledComponents();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelMatter.COL_ID, 1);
state.setPreferredWidth(TableModelMatter.COL_TITLE, 8);
state.setPreferredWidth(TableModelMatter.COL_DIRTY, 1);
StateSaver.setDefaultPanelItemState(this, tblMatters, 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() {
jPanel12 = new javax.swing.JPanel();
jPanel13 = new javax.swing.JPanel();
btDeleteMatter = new javax.swing.JButton();
btAddMatter = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tblMatters = new cli_fmw.utils.sorted_table.SortedTable();
setBorder(javax.swing.BorderFactory.createTitledBorder("Действующие вещества"));
setLayout(new java.awt.BorderLayout());
jPanel12.setBorder(javax.swing.BorderFactory.createEmptyBorder(15, 1, 10, 1));
jPanel12.setLayout(new java.awt.BorderLayout());
jPanel13.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
btDeleteMatter.setText("Удалить");
btDeleteMatter.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDeleteMatterActionPerformed(evt);
}
});
jPanel13.add(btDeleteMatter);
btAddMatter.setText("Добавить");
btAddMatter.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddMatterActionPerformed(evt);
}
});
jPanel13.add(btAddMatter);
jPanel12.add(jPanel13, java.awt.BorderLayout.EAST);
add(jPanel12, java.awt.BorderLayout.SOUTH);
jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane1ComponentResized(evt);
}
});
jScrollPane1.setViewportView(tblMatters);
add(jScrollPane1, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void btDeleteMatterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteMatterActionPerformed
int[] sel = tblMatters.getSelectedRowsSorted();
if (sel.length>0){
try {
SelectorEditableExceptional<DirectoryMatterItem> s = directoryMatter.getFilteredItems(vidalItem);
for (int i = sel.length-1;i>=0;i--){
s.remove(sel[i]);
}
updateTableMatter();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btDeleteMatterActionPerformed
private void btAddMatterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddMatterActionPerformed
if (vidalItem != null) {
try {
DialogDirectoryMatter dialog = new DialogDirectoryMatter(MainWindow.mainWindow, directoryMatter, "", true);
dialog.setVisible(true);
if (dialog.getDlgResult() == ModalDialog.DLG_OK){
DirectoryMatterItem newItem = dialog.getSelectedItem();
if (newItem != null) {
SelectorEditableExceptional<DirectoryMatterItem> s
= directoryMatter.getFilteredItems(vidalItem);
if (newItem.getID() != 0) {
s.append(newItem);
}
}
updateTableMatter();
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btAddMatterActionPerformed
private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
}//GEN-LAST:event_jScrollPane1ComponentResized
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btAddMatter;
private javax.swing.JButton btDeleteMatter;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JScrollPane jScrollPane1;
private cli_fmw.utils.sorted_table.SortedTable tblMatters;
// End of variables declaration//GEN-END:variables
@Override
public void vidalChanged(DirectoryVidalItem vidal) {
vidalItem = vidal;
updateTableMatter();
}
@Override
public void valueChanged(ListSelectionEvent e) {
setEnabledComponents();
}
}