/*
* PanelVidalGroupEdit.java
*
* Created on 26 �?юнь 2008 г., 17:18
*/
package clips.directory.editors.vidalAtc;
import cli_fmw.delegate.DelegateLine2;
import beans.directory.vidal.entities.atc.ClassificationAtcDetails;
import cli_fmw.delegate.directory.DirectoryItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryVidal;
import clips.delegate.directory.complex.DirectoryVidalAtc;
import clips.delegate.directory.complex.DirectoryVidalAtcItem;
import clips.delegate.directory.complex.DirectoryVidalItem;
import clips.directory.DialogDirectoryVidal;
import clips.directory.editors.matter.PanelMatter;
import clips.directory.editors.matter.VidalChangeListener;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.report.panels.model.EnterKeyListener;
import cli_fmw.report.panels.model.FilteredComboBoxModel;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.Selector;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
/**
* редактор групп услуг и услуг
* @author lacoste
*/
public class PanelVidalAtcEdit extends PageGeneric implements Printable, ListSelectionListener {
private DirectoryVidalAtcItem selectedAtc;
private DirectoryVidalItem selectedVidal;
private DirectoryVidal directoryVidal;
private DirectoryVidalAtc directoryVidalAtc;
private ArrayList<DirectoryVidalItem> vidalItems;
private PanelMatter panelMatter;
private boolean selectVidalMode;
private boolean canBeEdit;
public PanelVidalAtcEdit(PageContainer container) throws ClipsException{
this(container, false);
}
/** Creates new form PanelVidalGroupEdit
* @param container
* @param selectVidalMode
* @throws ClipsException
*/
public PanelVidalAtcEdit(PageContainer container, boolean selectVidalMode) throws ClipsException {
super(container);
this.selectVidalMode = selectVidalMode;
initComponents();
directoryVidalAtc = DirectoryLocator.getDirectory(DirectoryVidalAtc.class, false);
//права
canBeEdit = directoryVidalAtc.canEdit();
panelMatter = new PanelMatter(selectVidalMode);
jSplitPane2.setRightComponent(panelMatter);
jPanel6.setVisible(!selectVidalMode);
jPanel3.setVisible(!selectVidalMode);
updateTree();
tblVidals.getSelectionModel().addListSelectionListener(this);
directoryVidal = DirectoryLocator.getDirectory(DirectoryVidal.class, false);
updateTableVidal(selectedAtc);
setEnabledComponents();
resizeColumn();
DefaultComboBoxModel model = new DefaultComboBoxModel(directoryVidalAtc.toArray(false, true));
model.insertElementAt("", 0);
model.setSelectedItem("");
FilteredComboBoxModel filteredModel = new FilteredComboBoxModel(cbSearch, new FilteredComboBoxModel.MaskChecker(), false) {
@Override
public Object addItem(String txt) {
//throw new UnsupportedOperationException("Not supported yet.");
return null;
}
};
filteredModel.setContainModel(model);
filteredModel.addEnterListener(new EnterKeyListener() {
@Override
public void onEnterPressed(KeyEvent e) {
try {
onSearchFieldChanged(cbSearch.getSelectedItem().toString());
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
});
StateSaver.attachTo(this);
}
private void setEnabledComponents() {
int[] sel = tblVidals.getSelectedRowsSorted();
if (selectedAtc != null && selectedAtc.getID() == 0) {
btAddAtcNode.setEnabled(false);
} else {
btAddAtcNode.setEnabled(canBeEdit);
}
if (selectedAtc != null && selectedAtc.getID() != 0) {
btAddVidal.setEnabled(canBeEdit);
btDeleteVidal.setEnabled(canBeEdit && sel.length > 0);
btDeleteAtcNode.setEnabled(canBeEdit);
} else {
btAddVidal.setEnabled(false);
btDeleteVidal.setEnabled(false);
btDeleteAtcNode.setEnabled(false);
}
}
private void updateTree() throws ClipsException{
DirectoryVidalAtc vdls = DirectoryLocator.getDirectory(DirectoryVidalAtc.class, false);
TreeModelVidalAtc model = new TreeModelVidalAtc(vdls);
treeVidalAtc.setRootVisible(true);
treeVidalAtc.setModel(model);
treeVidalAtc.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
// expandTree();
directoryVidalAtc = vdls;
}
/**
* Вызывается при изменении выбора таблицы лекарств
* @param e
*/
@Override
public void valueChanged(ListSelectionEvent e) {
if (tblVidals.getSelectedRowSorted() >= 0) {
selectedVidal = ((TableModelVidal) tblVidals.getModel()).getItemAt(tblVidals.getSelectedRowSorted());
} else {
selectedVidal = null;
}
panelMatter.vidalChanged(selectedVidal);
if (getContainer() instanceof VidalChangeListener) {
((VidalChangeListener) getContainer()).vidalChanged(selectedVidal);
}
setEnabledComponents();
}
private void updateTableVidal(DirectoryVidalAtcItem actItem){
vidalItems = new ArrayList<DirectoryVidalItem>();
try {
if (actItem != null) {
SelectorEditableExceptional<DirectoryVidalItem> s = directoryVidal.getFilteredItems(actItem);
for (int i=0;i<s.size();i++){
vidalItems.add(s.get(i));
}
}
TableModelVidal model = new TableModelVidal(vidalItems);
tblVidals.setModel(model);
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
selectedVidal = null;
panelMatter.vidalChanged(null);
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelVidal.COL_ID, 1);
state.setPreferredWidth(TableModelVidal.COL_TITLE, 8);
state.setPreferredWidth(TableModelVidal.COL_DIRTY, 1);
StateSaver.setDefaultState(this, tblVidals, state);
}
public DirectoryVidalItem getVidalItem() {
int k = tblVidals.getSelectedRowSorted();
if (k < 0) {
return null;
} else {
return vidalItems.get(k);
}
}
/** 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() {
pnlNewNode = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel9 = new javax.swing.JPanel();
tfName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
tfGroupCode = new javax.swing.JTextField();
tfGroupCodePref = new javax.swing.JTextField();
popupMenuTree = new javax.swing.JPopupMenu();
rename = new javax.swing.JMenuItem();
jPanel5 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
cbSearch = new javax.swing.JComboBox();
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
treeVidalAtc = new javax.swing.JTree();
jPanel3 = new javax.swing.JPanel();
btAddAtcNode = new javax.swing.JButton();
btDeleteAtcNode = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jSplitPane2 = new javax.swing.JSplitPane();
panelVidal = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
btDeleteVidal = new javax.swing.JButton();
btAddVidal = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
tblVidals = new cli_fmw.utils.sorted_table.SortedTable();
pnlNewNode.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
pnlNewNode.setLayout(new java.awt.BorderLayout());
jPanel10.setLayout(new java.awt.GridLayout(2, 1, 0, 5));
jPanel9.setLayout(new java.awt.BorderLayout());
jPanel9.add(tfName, java.awt.BorderLayout.CENTER);
jLabel2.setText("Название:");
jLabel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 10));
jPanel9.add(jLabel2, java.awt.BorderLayout.WEST);
jPanel10.add(jPanel9);
jPanel8.setLayout(new java.awt.BorderLayout());
jLabel3.setText("Код группы:");
jLabel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 10));
jPanel8.add(jLabel3, java.awt.BorderLayout.WEST);
jPanel7.setLayout(new java.awt.BorderLayout());
jPanel7.add(tfGroupCode, java.awt.BorderLayout.CENTER);
tfGroupCodePref.setEditable(false);
tfGroupCodePref.setText("jTextField1");
jPanel7.add(tfGroupCodePref, java.awt.BorderLayout.LINE_START);
jPanel8.add(jPanel7, java.awt.BorderLayout.CENTER);
jPanel10.add(jPanel8);
pnlNewNode.add(jPanel10, java.awt.BorderLayout.NORTH);
rename.setText("Переименовать");
rename.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
renameActionPerformed(evt);
}
});
popupMenuTree.add(rename);
setLayout(new java.awt.BorderLayout());
jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
jPanel5.setPreferredSize(new java.awt.Dimension(30, 30));
jLabel1.setText("Поиск:");
jLabel1.setAlignmentY(0.0F);
jLabel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 5));
cbSearch.setEditable(true);
cbSearch.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jLabel1)
.addComponent(cbSearch, 0, 693, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cbSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
);
add(jPanel5, java.awt.BorderLayout.PAGE_START);
jSplitPane1.setDividerLocation(300);
jPanel1.setLayout(new java.awt.BorderLayout());
treeVidalAtc.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
treeVidalAtcMouseClicked(evt);
}
});
treeVidalAtc.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
treeVidalAtcValueChanged(evt);
}
});
treeVidalAtc.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
treeVidalAtcKeyPressed(evt);
}
});
jScrollPane1.setViewportView(treeVidalAtc);
jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 1, 5, 1));
jPanel3.setPreferredSize(new java.awt.Dimension(100, 50));
jPanel3.setLayout(new java.awt.GridLayout(1, 0, 5, 0));
btAddAtcNode.setText("<html><center>Добавить <BR> группу</center></html>");
btAddAtcNode.setActionCommand("<html>Добавить <BR> группу</html>");
btAddAtcNode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddAtcNodeActionPerformed(evt);
}
});
jPanel3.add(btAddAtcNode);
btDeleteAtcNode.setText("<html><center>Удалить<br>группу</center></html>");
btDeleteAtcNode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDeleteAtcNodeActionPerformed(evt);
}
});
jPanel3.add(btDeleteAtcNode);
jPanel1.add(jPanel3, java.awt.BorderLayout.PAGE_END);
jSplitPane1.setLeftComponent(jPanel1);
jPanel2.setLayout(new java.awt.BorderLayout());
jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane2.setResizeWeight(0.5);
panelVidal.setBorder(javax.swing.BorderFactory.createTitledBorder("Препараты"));
panelVidal.setLayout(new java.awt.BorderLayout());
jPanel6.setBorder(javax.swing.BorderFactory.createEmptyBorder(15, 1, 10, 1));
jPanel6.setLayout(new java.awt.BorderLayout());
jPanel4.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
btDeleteVidal.setText("Удалить");
btDeleteVidal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDeleteVidalActionPerformed(evt);
}
});
jPanel4.add(btDeleteVidal);
btAddVidal.setText("Добавить");
btAddVidal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddVidalActionPerformed(evt);
}
});
jPanel4.add(btAddVidal);
jPanel6.add(jPanel4, java.awt.BorderLayout.EAST);
panelVidal.add(jPanel6, java.awt.BorderLayout.SOUTH);
jScrollPane2.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane2ComponentResized(evt);
}
});
jScrollPane2.setViewportView(tblVidals);
panelVidal.add(jScrollPane2, java.awt.BorderLayout.CENTER);
jSplitPane2.setLeftComponent(panelVidal);
jPanel2.add(jSplitPane2, java.awt.BorderLayout.CENTER);
jSplitPane1.setRightComponent(jPanel2);
add(jSplitPane1, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void treeVidalAtcValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeVidalAtcValueChanged
Object value = treeVidalAtc.getLastSelectedPathComponent();
vidalItems = new ArrayList<DirectoryVidalItem>();
if (value instanceof DirectoryVidalAtcItem){
try {
DirectoryVidalAtcItem item = (DirectoryVidalAtcItem) value;
SelectorEditableExceptional<DirectoryVidalItem> s = directoryVidal.getFilteredItems(item);
if (s != null){
if (s.size() > 0){
for (int i=0;i<s.size();i++){
vidalItems.add(s.get(i));
}
}
}
selectedAtc = item;
updateTableVidal(item);
} catch (Exception ex) {
MessageBox.showException(ex);
}
}else{
selectedAtc = null;
updateTableVidal(selectedAtc);
}
fireContainerEventStateChanged();
setEnabledComponents();
}//GEN-LAST:event_treeVidalAtcValueChanged
private void btAddVidalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddVidalActionPerformed
if (treeVidalAtc.getSelectionCount() >0 && selectedAtc != null) {
try {
DialogDirectoryVidal dialog = new DialogDirectoryVidal(MainWindow.mainWindow, directoryVidal, "");
dialog.setVisible(true);
if (dialog.getDlgResult() == ModalDialog.DLG_OK){
DirectoryVidalItem newVidal = dialog.getSelectedItem();
if (newVidal != null) {
SelectorEditableExceptional<DirectoryVidalItem> s
= directoryVidal.getFilteredItems(selectedAtc);
s.append(newVidal);
updateTableVidal(selectedAtc);
}
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btAddVidalActionPerformed
private void btDeleteVidalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteVidalActionPerformed
int[] sel = tblVidals.getSelectedRowsSorted();
if (sel.length>0){
try {
SelectorEditableExceptional<DirectoryVidalItem> s = directoryVidal.getFilteredItems(selectedAtc);
for (int i = sel.length-1;i>=0;i--){
s.remove(sel[i]);
}
updateTableVidal(selectedAtc);
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btDeleteVidalActionPerformed
private void btAddAtcNodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddAtcNodeActionPerformed
try {
Object value = treeVidalAtc.getLastSelectedPathComponent();
DirectoryVidalAtcItem newItem = null;
if (value instanceof DirectoryVidalAtcItem) {
DirectoryVidalAtcItem selected = (DirectoryVidalAtcItem) value;
tfGroupCodePref.setText(selected.getGroupCode());
tfName.setText("");
tfGroupCode.setText("");
int res = JOptionPane.showConfirmDialog(null, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
return;
} else {
ClassificationAtcDetails details = new ClassificationAtcDetails();
details.title = tfName.getText();
details.groupCode = tfGroupCode.getText();
details.parentItem = selected.getID();
newItem = new DirectoryVidalAtcItem(details);
selected.getItems().append(newItem);
}
}
} else {
tfGroupCodePref.setText("");
tfName.setText("");
tfGroupCode.setText("");
int res = JOptionPane.showConfirmDialog(null, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
return;
} else {
ClassificationAtcDetails details = new ClassificationAtcDetails();
details.title = tfName.getText();
details.groupCode = tfGroupCode.getText();
newItem = new DirectoryVidalAtcItem(details);
directoryVidalAtc.getItems().append(newItem);
}
}
}
updateTree();
TreePath fullPath = getPath(newItem);
treeVidalAtc.setSelectionPath(fullPath);
treeVidalAtc.scrollPathToVisible(fullPath);
treeVidalAtc.updateUI();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btAddAtcNodeActionPerformed
/**
* Строит путь к узлу
* @param item узел
* @return путь
*/
private TreePath getPath(DirectoryVidalAtcItem item){
ArrayList<Object> path = new ArrayList<Object>();
path.add(treeVidalAtc.getModel().getRoot());
addNode(item, path);
return new TreePath(path.toArray());
}
/**
* рекурсивно допиcывает узлы начиная с родителя в список
* (нужна чтоб инвертировать путь и он начинался с родителя)
* @param item
* @param path
*/
private void addNode(DirectoryVidalAtcItem item, ArrayList<Object> path) {
if (item == null){
//STOP
}else{
addNode(item.getParent(), path);
path.add(item);
}
}
private void btDeleteAtcNodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDeleteAtcNodeActionPerformed
if (treeVidalAtc.getSelectionCount() > 0 && selectedAtc != null) {
try {
if (selectedAtc.getItems().size() > 0) {
MessageBox.showWarning(MessageBox.W_CANT_DEL_HAVE_CHILDREN);
} else {
DirectoryVidalAtcItem parent = selectedAtc.getParent();
SelectorEditableExceptional<DirectoryVidalItem> s = directoryVidal.getFilteredItems(selectedAtc);
while (s.size() > 0) {
s.remove(0);
}
if (selectedAtc.getParent() != null) {
selectedAtc.getParent().getItems().remove(selectedAtc);
} else {
directoryVidalAtc.getItems().remove(selectedAtc);
}
updateTree();
TreePath fullPath = getPath(parent);
treeVidalAtc.expandPath(fullPath);
treeVidalAtc.updateUI();
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}//GEN-LAST:event_btDeleteAtcNodeActionPerformed
/**
* Переименовать
*/
private void rename() {
Object value = treeVidalAtc.getLastSelectedPathComponent();
try {
if (value instanceof DirectoryVidalAtcItem) {
DirectoryVidalAtcItem selected = (DirectoryVidalAtcItem) value;
tfGroupCodePref.setText(selected.getParent() != null?
selected.getParent().getGroupCode(): "");
tfName.setText(selected.getTitle());
tfGroupCode.setText(selected.getIndividualCode());
int res = JOptionPane.showConfirmDialog(
null, pnlNewNode, "Переименовать", JOptionPane.OK_CANCEL_OPTION, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showError(MessageBox.E_MAKE_FUCKING_EXCEPTION, "Данные некорректны");
return;
} else {
selected.rename(tfGroupCode.getText(), tfName.getText());
}
}
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
private void treeVidalAtcMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeVidalAtcMouseClicked
if (evt.getButton() == MouseEvent.BUTTON3 && treeVidalAtc.getSelectionCount()>0){
Rectangle rect = treeVidalAtc.getPathBounds(treeVidalAtc.getSelectionPath());
if (rect.contains(evt.getPoint())) {
popupMenuTree.show(treeVidalAtc, evt.getX(), evt.getY());
}
}
}//GEN-LAST:event_treeVidalAtcMouseClicked
private void renameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_renameActionPerformed
rename();
}//GEN-LAST:event_renameActionPerformed
private void treeVidalAtcKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_treeVidalAtcKeyPressed
if (evt.getKeyCode() == KeyEvent.VK_F2 && treeVidalAtc.getSelectionCount()>0){
rename();
}
}//GEN-LAST:event_treeVidalAtcKeyPressed
private void jScrollPane2ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane2ComponentResized
}//GEN-LAST:event_jScrollPane2ComponentResized
@SuppressWarnings("unchecked")
private void onSearchFieldChanged(String value) throws ClipsException {
if(value.isEmpty()) {
return;
}
Selector sel = directoryVidalAtc.getItems();
for(int i=0; i<sel.size(); i++) {
DirectoryItem item = (DirectoryItem)sel.get(i);
List found = findMatch(item, value);
if(found != null) {
found.add(treeVidalAtc.getModel().getRoot());
ArrayList reordered = new ArrayList();
for(int j=found.size()-1; j>=0; j--) {
reordered.add(found.get(j));
}
TreePath fullPath = new TreePath(reordered.toArray());
treeVidalAtc.setSelectionPath(fullPath);
treeVidalAtc.scrollPathToVisible(fullPath);
treeVidalAtc.updateUI();
return;
}
}
}
@SuppressWarnings("unchecked")
private List<Object> findMatch(DirectoryItem item, String pattern) throws ClipsException {
//int pos = (item.getTitle().toLowerCase()).indexOf(pattern.toLowerCase());
int pos = (item.toString().toLowerCase()).indexOf(pattern.toLowerCase());
if (pos == 0) {
ArrayList path = new ArrayList();
path.add(item);
return path;
}
if (item instanceof DirectoryVidalAtcItem) {
DirectoryVidalAtcItem parent = (DirectoryVidalAtcItem) item;
Selector ii = parent.getItems();
for (int i = 0; i < ii.size(); i++) {
DirectoryItem child = (DirectoryItem) ii.get(i);
List path = findMatch(child, pattern);
if (path != null) {
path.add(parent);
return path;
}
}
}
return null;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btAddAtcNode;
private javax.swing.JButton btAddVidal;
private javax.swing.JButton btDeleteAtcNode;
private javax.swing.JButton btDeleteVidal;
private javax.swing.JComboBox cbSearch;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JSplitPane jSplitPane2;
private javax.swing.JPanel panelVidal;
private javax.swing.JPanel pnlNewNode;
private javax.swing.JPopupMenu popupMenuTree;
private javax.swing.JMenuItem rename;
private cli_fmw.utils.sorted_table.SortedTable tblVidals;
private javax.swing.JTextField tfGroupCode;
private javax.swing.JTextField tfGroupCodePref;
private javax.swing.JTextField tfName;
private javax.swing.JTree treeVidalAtc;
// End of variables declaration//GEN-END:variables
@Override
public String getPageTitle() {
return "АТХ классификатор";
}
@Override
public DelegateLine2 getDelegate() {
return null;
}
@Override
public boolean readyForPrint() {
return selectedAtc != null;
}
@Override
public void print() {
try {
if (readyForPrint()) {
String group = "";
DirectoryVidalAtcItem parent = selectedAtc;
ArrayList<String> titles = new ArrayList<String>();
while (parent != null) {
titles.add(parent.getTitle() + "(" + parent.getGroupCode() + ")" + "\n");
parent = parent.getParent();
}
String title = "АТХ классификация лекарственных средств группы: ";
int k = titles.size() - 1;
for (int i = k; i > -1; i--) {
String iS = titles.get(i);
for (int j = i; j < k; j++) {
iS = " " + iS;
}
group += iS;
}
HashMap<String, Object> data = new LinkedHashMap<String, Object>();
data.put("groupFullTitle", group);
PrintCreators.createGeneratedReport(title, null, data.entrySet(), null, tblVidals.getModel(), getClass());
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
}