/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* PanelCheckupTypeListAbstract.java
*
* Created on 11.03.2009, 17:02:50
*/
package clips.directory.editors.checkUpType;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.sorted_table.SortedTable;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.directory.filtered.DirectoryCheckupType;
import clips.delegate.directory.filtered.DirectoryCheckupTypeItem;
import beans.directory.checkuptype.entity.CheckupTypeDetails;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.jdom.JDOMException;
/**
* Абстрактная панель, редактирующая список Чекаптайпов - либо осмотров либо анализов
* @author vip
*/
abstract public class PanelCheckupTypeListAbstract extends PageGeneric {
private DirectoryCheckupType directory;
private boolean isAnalyse;
private final TableModelCheckupTypes model;
public PanelCheckupTypeListAbstract(PageContainer container, boolean isAnalyse) throws ClipsException {
super(container);
this.isAnalyse = isAnalyse;
initComponents();
directory = (DirectoryCheckupType) DirectoryLocator.getDirectory(DirectoryCheckupType.class, true);
ArrayList<DirectoryCheckupTypeItem> items = loadItems(isAnalyse);
model = createModel();
model.setItems(items);
tblTypes.setModel(model);
addRenderAndEditor(tblTypes);
setEnabledComponents();
tblTypes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tblTypes.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
setEnabledComponents();
}
});
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle dlgSize = this.getBounds();
this.setLocation((scrSize.width - dlgSize.width) / 2, (scrSize.height - dlgSize.height) / 2);
StateSaver.attachTo(this);
}
private ArrayList<DirectoryCheckupTypeItem> loadItems(boolean isAnalyse) throws ClipsException {
directory = (DirectoryCheckupType) DirectoryLocator.getDirectory(DirectoryCheckupType.class, true);
ArrayList<DirectoryCheckupTypeItem> items = new ArrayList<DirectoryCheckupTypeItem>();
for (int i = 0; i < directory.getItems().size(); i++) {
DirectoryCheckupTypeItem item = directory.getItems().get(i);
if (item.getID() != 0 && item.isAnalyse() == isAnalyse) {
items.add(item);
}
}
return items;
}
private void setEnabledComponents() {
if (tblTypes.getSelectedRowCount() > 0){
Object item = tblTypes.getValueAt(tblTypes.getSelectedRowSorted(), 0);
boolean isDirItem = (item != null && item instanceof DirectoryCheckupTypeItem);
boolean isVisible = (isDirItem && ((DirectoryCheckupTypeItem)item).isVisible());
btNew.setEnabled(true);
btCopy.setEnabled(isDirItem);
btEdit.setEnabled(isDirItem);
btRemove.setEnabled(isVisible);
}else{
btNew.setEnabled(true);
btCopy.setEnabled(false);
btEdit.setEnabled(false);
btRemove.setEnabled(false);
}
}
// private void formList() throws ClipsException {
// DefaultListModel model = new DefaultListModel();
// for (int i = 0; i < directory.getItems().size(); i++) {
// DirectoryCheckupTypeItem item = directory.getItems().get(i);
// if (item.getID() != 0 && item.isAnalyse() == isAnalyse) {
// model.addElement(directory.getItems().get(i));
// }
// }
// tblTypes.setModel(model);
// }
/** 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() {
jScrollPane1 = new javax.swing.JScrollPane();
lstCheckupTypes = new javax.swing.JList();
jPanel1 = new javax.swing.JPanel();
btCopy = new javax.swing.JButton();
btRemove = new javax.swing.JButton();
btNew = new javax.swing.JButton();
btEdit = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
tblTypes = new cli_fmw.utils.sorted_table.SortedTable();
lstCheckupTypes.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lstCheckupTypesMouseClicked(evt);
}
});
jScrollPane1.setViewportView(lstCheckupTypes);
btCopy.setText("Сделать копию");
btCopy.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btCopyActionPerformed(evt);
}
});
btRemove.setText(" Удалить ");
btRemove.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btRemoveActionPerformed(evt);
}
});
btNew.setText(" Добавить ");
btNew.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btNewActionPerformed(evt);
}
});
btEdit.setText("Редактировать");
btEdit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btEditActionPerformed(evt);
}
});
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(btCopy)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btRemove)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btNew)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btEdit)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btCopy, btEdit, btNew, btRemove});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btCopy)
.addComponent(btRemove)
.addComponent(btNew)
.addComponent(btEdit))
);
tblTypes.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"
}
));
jScrollPane2.setViewportView(tblTypes);
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()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(24, Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 594, Short.MAX_VALUE)
.addContainerGap()))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(164, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)
.addGap(48, 48, 48)))
);
}// </editor-fold>//GEN-END:initComponents
private void lstCheckupTypesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstCheckupTypesMouseClicked
if (evt.getClickCount() == 2) {
btEditActionPerformed(null);
}
}//GEN-LAST:event_lstCheckupTypesMouseClicked
private void btCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCopyActionPerformed
try {
DirectoryCheckupTypeItem checkupType = (DirectoryCheckupTypeItem) tblTypes.getValueAt(tblTypes.getSelectedRowSorted(), 0);
CheckupTypeDetails details = new CheckupTypeDetails();
DirectoryCheckupTypeItem checkupTypeNew = new DirectoryCheckupTypeItem(details);
checkupTypeNew.setTitle(checkupType.getTitle() + " (копия)");
checkupTypeNew.setDescription(checkupType.getDescription());
checkupTypeNew.setMetadata(checkupType.getMetadata());
checkupTypeNew.setIsAnalyse(checkupType.isAnalyse());
directory.getItems().append(checkupTypeNew);
model.setItems(loadItems(isAnalyse));
} catch (ClipsException e) {
MessageBox.showException(e);
}
}//GEN-LAST:event_btCopyActionPerformed
private void btRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoveActionPerformed
try {
DirectoryCheckupTypeItem checkupType = (DirectoryCheckupTypeItem) tblTypes.getValueAt(tblTypes.getSelectedRowSorted(), 0);
SelectorEditableExceptional<DirectoryCheckupTypeItem> items = directory.getItems();
items.remove(checkupType);
/*for (int i = 0; i < items.size(); i++) {
if (checkupType == items.get(i)) {
items.remove(i);
break;
}
}*/
model.setItems(loadItems(isAnalyse));
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btRemoveActionPerformed
private void btNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btNewActionPerformed
try {
DlgMetadataEdit dialog = new DlgMetadataEdit(MainWindow.mainWindow, null, isAnalyse, getAuditManager());
dialog.setVisible(true);
if (dialog.getDlgResult() == DlgMetadataEdit.DLG_OK) {
DirectoryCheckupTypeItem checkupType = dialog.getResult();
directory.getItems().append(checkupType);
}
model.setItems(loadItems(isAnalyse));
} catch (JDOMException ex) {
MessageBox.showError(MessageBox.E_INVALID_XML_STRING);
} catch (Exception ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btNewActionPerformed
private void btEditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditActionPerformed
try {
DirectoryCheckupTypeItem checkupType = (DirectoryCheckupTypeItem) tblTypes.getValueAt(tblTypes.getSelectedRowSorted(), 0);
DlgMetadataEdit dialog = new DlgMetadataEdit(MainWindow.mainWindow, checkupType, isAnalyse, getAuditManager());
dialog.setVisible(true);
tblTypes.repaint();
} catch (JDOMException ex) {
MessageBox.showError(MessageBox.E_INVALID_XML_STRING);
} catch (Exception ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btEditActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btCopy;
private javax.swing.JButton btEdit;
private javax.swing.JButton btNew;
private javax.swing.JButton btRemove;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JList lstCheckupTypes;
private cli_fmw.utils.sorted_table.SortedTable tblTypes;
// End of variables declaration//GEN-END:variables
protected TableModelCheckupTypes createModel() throws ClipsException {
throw new UnsupportedOperationException("Not yet implemented");
}
protected void addRenderAndEditor(SortedTable tblTypes) throws ClipsException {
}
}