Package clips.directory.editors.vidalAtc

Source Code of clips.directory.editors.vidalAtc.PanelVidalAtcEdit

/*
* 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);
        }
    }


}
TOP

Related Classes of clips.directory.editors.vidalAtc.PanelVidalAtcEdit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.