Package clips.directory.editors.serviceGroup

Source Code of clips.directory.editors.serviceGroup.PanelServiceGroupEdit

/*
* PanelServiceGroupEdit.java
*
* Created on 26 Июнь 2008 г., 17:18
*/

package clips.directory.editors.serviceGroup;

import cli_fmw.delegate.DelegateLine2;
import beans.directory.service.entity.ServiceGroupDetails;
import clips.contract.info.contractService.TreeModelServiceGroup;
import clips.delegate.directory.filtered.DirectoryCheckupType;
import clips.delegate.directory.filtered.DirectoryCheckupTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.directory.complex.DirectoryServicesGroup;
import clips.delegate.directory.complex.DirectoryServicesGroupItem;
import clips.delegate.directory.filtered.ChildServiceData;
import cli_fmw.main.ClipsException;
import cli_fmw.directory.dialogs.DirectoryDialogDefault;
import cli_fmw.main.MainWindow;
import clips.directory.dialogs.DirectoryDialogService;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.report.TableReportOptions;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.Selector;
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 clips.delegate.directory.simple.reqType.DirectoryReqType;
import clips.delegate.directory.simple.serviceClass.DirectoryServiceClass;
import clips.delegate.directory.simple.visitType.DirectoryVisitType;
import beans.directory.service.entity.ServiceToServiceDetails;
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 javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import javax.swing.tree.TreeSelectionModel;

/**
* редактор групп услуг и услуг
* @author  lacoste
*/
public class PanelServiceGroupEdit extends PageGeneric implements Printable{
    private DirectoryServicesGroupItem serviceGroup;
    private Selector<DirectoryServiceItem> services;
    private DirectoryServiceItem serviceItem;
    private DirectoryServiceItem serviceItemToMove;
    private String a[] = {"ОК", "Отмена"};
   
    /** Creates new form PanelServiceGroupEdit */
    public PanelServiceGroupEdit(PageContainer container) throws ClipsException {
        super(container);
        initComponents();
       
        tabService.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                try {
                    int k = tabService.getSelectedRowSorted();
                    if (k < 0) {
                        btAddAccService.setEnabled(false);
                        btDelAccService.setEnabled(false);
                        btDelService.setEnabled(false);
                        btContentService.setEnabled(false);
                    } else {
                        serviceItem = services.get(k);
                        setAccServicesTable();
                        btDelService.setEnabled(true);
                        btContentService.setEnabled(true);
                        btAddAccService.setEnabled(true);
                    }
                } catch(ClipsException ex) {
                    MessageBox.showException(ex);
                }
            }
        });
       
        tabAccServices.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                btDelAccService.setEnabled(tabAccServices.getSelectedRowCount() != 0);
            }
        });
       
        setTree();
        treeServiceGroup.setRootVisible(true);       
        treeServiceGroup.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tabService.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

//        DirectoryServiceClass dir = DirectoryLocator.getDirectory(DirectoryServiceClass.class);
//        clItems = new DirectoryServiceClassItem[dir.getItems().size()];
//        clItems = (DirectoryServiceClassItem[]) dir.toArray(clItems);

        setTable();
       
    resizeColumn();
    StateSaver.attachTo(this);
    }

    private Selector<DirectoryServiceItem> getServiceList(DirectoryServicesGroupItem group) throws ClipsException {
        DirectoryService svc = (DirectoryService)
                DirectoryLocator.getDirectory(DirectoryService.class);
        return svc.getFilteredItems(group)
    }
   
    private void setAccServicesTable() throws ClipsException {
        tabAccServices.setModel(new TableModelAccServices(serviceItem));
    }
   
    private void setTable() throws ClipsException {       
        if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
            serviceGroup = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
        } else {
            serviceGroup = null;
        }
        services = getServiceList(serviceGroup);
        tabService.setModel(new TableModelServicesFromGroup(serviceGroup));
        tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_SERV_CLASS).
                setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryServiceClass.class).toArray())));
        tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_REQ_TYPE).
                setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryReqType.class).toArray())));
        tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_VISIT_TYPE).
                setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryVisitType.class).toArray())));
    }
   
    private void setTree() throws ClipsException {
        DirectoryServicesGroup grps = (DirectoryServicesGroup)
                DirectoryLocator.getDirectory(DirectoryServicesGroup.class);       
        treeServiceGroup.setModel(new TreeModelServiceGroup(grps));
        treeServiceGroup.setSelectionPath(null);
    }
   
    private void resizeColumn() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelServicesFromGroup.COL_SERVICE,    15);
    state.setPreferredWidth(TableModelServicesFromGroup.COL_SERV_CLASS,    3);
        state.setPreferredWidth(TableModelServicesFromGroup.COL_REQ_TYPE,    3);
        state.setPreferredWidth(TableModelServicesFromGroup.COL_VISIT_TYPE,    3);
    state.setPreferredWidth(TableModelServicesFromGroup.COL_DURATION,    3);
    state.setPreferredWidth(TableModelServicesFromGroup.COL_DESCRIPTION,  6);
    state.setPreferredWidth(TableModelServicesFromGroup.COL_CHECKUP,    3);
      StateSaver.setDefaultState(this, tabService, state);
      state = new TableState();
    state.setPreferredWidth(TableModelAccServices.COL_SERVICE,      14);
    state.setPreferredWidth(TableModelAccServices.COL_OBLIGATORY,    3);
    state.setPreferredWidth(TableModelAccServices.COL_DESCRIPTION,    13);
      StateSaver.setDefaultState(this, tabAccServices, 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.
     */
   
    // <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();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        treeServiceGroup = new javax.swing.JTree();
        jPanel3 = new javax.swing.JPanel();
        btAddServiceGroup = new javax.swing.JButton();
        btDelServiceGroup = new javax.swing.JButton();
        jSplitPane2 = new javax.swing.JSplitPane();
        panelServices = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        btAddService = new javax.swing.JButton();
        btDelService = new javax.swing.JButton();
        btContentService = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tabService = new cli_fmw.utils.sorted_table.SortedTable();
        panelAccSevices = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        btAddAccService = new javax.swing.JButton();
        btDelAccService = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        tabAccServices = 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);
        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);

        jSplitPane1.setDividerLocation(200);

        jPanel1.setLayout(new java.awt.BorderLayout(0, 10));

        treeServiceGroup.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                treeServiceGroupMouseClicked(evt);
            }
        });
        treeServiceGroup.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                treeServiceGroupValueChanged(evt);
            }
        });
        treeServiceGroup.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                treeServiceGroupMouseMoved(evt);
            }
        });
        treeServiceGroup.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                treeServiceGroupKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(treeServiceGroup);

        jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jPanel3.setPreferredSize(new java.awt.Dimension(100, 50));
        jPanel3.setLayout(new java.awt.GridLayout(1, 0, 5, 0));

        btAddServiceGroup.setText("<html><center>Добавить <BR>  группу</center></html>");
        btAddServiceGroup.setActionCommand("<html>Добавить <BR>   группу</html>");
        btAddServiceGroup.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddServiceGroupActionPerformed(evt);
            }
        });
        jPanel3.add(btAddServiceGroup);

        btDelServiceGroup.setText("<html><center>Удалить<br>группу</center></html>");
        btDelServiceGroup.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDelServiceGroupActionPerformed(evt);
            }
        });
        jPanel3.add(btDelServiceGroup);

        jPanel1.add(jPanel3, java.awt.BorderLayout.PAGE_END);

        jSplitPane1.setLeftComponent(jPanel1);

        jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
        jSplitPane2.setResizeWeight(0.5);

        panelServices.setBorder(javax.swing.BorderFactory.createTitledBorder("Список услуг группы"));
        panelServices.setLayout(new java.awt.BorderLayout());

        btAddService.setText("Добавить услугу");
        btAddService.setEnabled(false);
        btAddService.setPreferredSize(new java.awt.Dimension(150, 29));
        btAddService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddServiceActionPerformed(evt);
            }
        });
        jPanel4.add(btAddService);

        btDelService.setText("Удалить услугу");
        btDelService.setEnabled(false);
        btDelService.setPreferredSize(btAddService.getPreferredSize());
        btDelService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDelServiceActionPerformed(evt);
            }
        });
        jPanel4.add(btDelService);

        btContentService.setText("Состав услуги");
        btContentService.setEnabled(false);
        btContentService.setPreferredSize(btAddService.getPreferredSize());
        btContentService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btContentServiceActionPerformed(evt);
            }
        });
        jPanel4.add(btContentService);

        panelServices.add(jPanel4, java.awt.BorderLayout.PAGE_END);

        jScrollPane2.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                jScrollPane2ComponentResized(evt);
            }
        });

        tabService.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabServiceMouseClicked(evt);
            }
        });
        tabService.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                tabServiceMouseMoved(evt);
            }
        });
        tabService.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tabServiceKeyPressed(evt);
            }
        });
        jScrollPane2.setViewportView(tabService);

        panelServices.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jSplitPane2.setLeftComponent(panelServices);

        panelAccSevices.setBorder(javax.swing.BorderFactory.createTitledBorder("Список включенных услуг"));
        panelAccSevices.setLayout(new java.awt.BorderLayout());

        btAddAccService.setText("Добавить");
        btAddAccService.setEnabled(false);
        btAddAccService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAddAccServiceActionPerformed(evt);
            }
        });
        jPanel2.add(btAddAccService);

        btDelAccService.setText("Удалить");
        btDelAccService.setEnabled(false);
        btDelAccService.setPreferredSize(btAddAccService.getPreferredSize());
        btDelAccService.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDelAccServiceActionPerformed(evt);
            }
        });
        jPanel2.add(btDelAccService);

        panelAccSevices.add(jPanel2, java.awt.BorderLayout.PAGE_END);

        jScrollPane3.setViewportView(tabAccServices);

        panelAccSevices.add(jScrollPane3, java.awt.BorderLayout.CENTER);

        jSplitPane2.setRightComponent(panelAccSevices);

        jSplitPane1.setRightComponent(jSplitPane2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 787, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents

private void treeServiceGroupValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeServiceGroupValueChanged
    try {
        setTable();
        serviceItem = null;
        setAccServicesTable();
        tabService.getSelectionModel().setSelectionInterval(-1, -1);
        if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
            btAddService.setEnabled(true);
        }
        else {
            btAddService.setEnabled(false);
            btDelService.setEnabled(false);
        }
        fireContainerEventStateChanged();
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_treeServiceGroupValueChanged

private void btAddServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddServiceActionPerformed
    try {
        DlgAddService dlg = new DlgAddService(MainWindow.mainWindow, serviceGroup);
        dlg.setVisible(true);
        if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
            DirectoryServiceItem service = dlg.getDlgService();
            DirectoryService dirService = (DirectoryService) DirectoryLocator.getDirectory(DirectoryService.class);
            dirService.getItems().append(service);
            setTable();
            serviceItem = null;
            setAccServicesTable();
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btAddServiceActionPerformed

private void btDelServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelServiceActionPerformed
    try {
        DirectoryService svc = (DirectoryService)
                DirectoryLocator.getDirectory(DirectoryService.class, false);
        int[] sels = tabService.getSelectedRowsSorted();
        for (int j = sels.length - 1; j > -1; j--) {
            DirectoryServiceItem service = services.get(sels[j]);
            svc.getItems().remove(service);
        }       
        services = getServiceList(serviceGroup);
        setTable();
        serviceItem = null;
        setAccServicesTable();
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btDelServiceActionPerformed

private void btAddServiceGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddServiceGroupActionPerformed
    try {
        Object value = treeServiceGroup.getLastSelectedPathComponent();
        DirectoryServicesGroupItem newItem = null;
        if (value instanceof DirectoryServicesGroupItem) {
            DirectoryServicesGroupItem selected = (DirectoryServicesGroupItem) value;
            tfGroupCodePref.setText(selected.getFullCode());
            tfName.setText("");
            tfGroupCode.setText("");
            int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION,
                            JOptionPane.PLAIN_MESSAGE, null, a, -1);
            if (res == JOptionPane.OK_OPTION) {
                if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
                    MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
                    return;
                } else {
                    ServiceGroupDetails details = new ServiceGroupDetails();
                    details.title = tfName.getText();
                    details.code = tfGroupCode.getText();
                    details.parentItem = selected.getID();
                    newItem = new DirectoryServicesGroupItem(details);
                    selected.getItems().append(newItem);
                    treeServiceGroup.updateUI();
                    treeServiceGroup.expandPath(treeServiceGroup.getSelectionPath());
                }
            }
        } else {
            tfGroupCodePref.setText("");
            tfName.setText("");
            tfGroupCode.setText("");
            int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION,
                            JOptionPane.PLAIN_MESSAGE, null, a, -1);
            if (res == JOptionPane.OK_OPTION) {
                if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
                    MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
                    return;
                } else {
                    ServiceGroupDetails details = new ServiceGroupDetails();
                    details.title = tfName.getText();
                    details.code = tfGroupCode.getText();
                    newItem = new DirectoryServicesGroupItem(details);
                    DirectoryServicesGroup svc = (DirectoryServicesGroup)
                        DirectoryLocator.getDirectory(DirectoryServicesGroup.class);
                    svc.getItems().append(newItem);
                    treeServiceGroup.updateUI();
                    treeServiceGroup.expandPath(treeServiceGroup.getSelectionPath());
                }
            }
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btAddServiceGroupActionPerformed

private void btDelServiceGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelServiceGroupActionPerformed
    try {
        if (treeServiceGroup.getLastSelectedPathComponent() == treeServiceGroup.getModel().getRoot() || treeServiceGroup.getLastSelectedPathComponent() == null) {
            return;
        }
       
        DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
       
        deleteServiceGroup(item);
        setTree();
        DirectoryLocator.getDirectory(DirectoryService.class);
    } catch (ClipsException clipsException) {
        MessageBox.showException(clipsException);
    }
}//GEN-LAST:event_btDelServiceGroupActionPerformed

    @SuppressWarnings("unchecked")
private void deleteServiceGroup(DirectoryServicesGroupItem serGroup) throws ClipsException {
    DirectoryService svc = (DirectoryService)
            DirectoryLocator.getDirectory(DirectoryService.class);
    DirectoryServicesGroup grps = (DirectoryServicesGroup)
            DirectoryLocator.getDirectory(DirectoryServicesGroup.class);
   
    //удаляем услуги из группы
    Selector<DirectoryServiceItem> list2del = getServiceList(serGroup);
    for(int i=list2del.size() - 1; i > -1; i--) {
        DirectoryServiceItem service = svc.getItemFromID(list2del.get(i).getID());
        svc.getItems().remove(service);
        System.out.println("service: " + service.getTitle());
    }

    SelectorEditableExceptional<DirectoryServicesGroupItem> iie = serGroup.getItems();       
    for (int i = iie.size() - 1; i > -1; i--) {
        DirectoryServicesGroupItem item = iie.get(i);
        deleteServiceGroup(item);
    }
   
   
    DirectoryServicesGroupItem parent = serGroup.getParent();
   
    if (parent == null) {
        iie = grps.getItems();
    }
    else {
        iie = parent.getItems();
    }
   
    iie.remove(serGroup);
   
   
}  

private void treeServiceGroupKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_treeServiceGroupKeyPressed
    try {
        int code = evt.getKeyCode();
        if (evt.isControlDown() && code == 86 && serviceItemToMove != null) {
            if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
                DirectoryServicesGroupItem groupItem = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
                serviceItemToMove.setGroup(groupItem);
                setTable();
                serviceItemToMove = null;
            }
        }
        else if (evt.getKeyCode() == KeyEvent.VK_F2 && treeServiceGroup.getSelectionCount()>0){
            rename();
        }
    } catch(ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_treeServiceGroupKeyPressed

private void btAddAccServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddAccServiceActionPerformed
    try {
        DirectoryDialogService ddd = new DirectoryDialogService(true, null);
        ddd.setVisible(true);
        if (serviceItem != null) {
            if (ddd.getDlgResult() == ModalDialog.DLG_OK) {
                Selector s = ddd.getSelectedItems();
                for (int i = 0; i < s.size(); i++) {
                    ServiceToServiceDetails details = new ServiceToServiceDetails(serviceItem.getID());
                    DirectoryServiceItem dsi = (DirectoryServiceItem) s.get(i);
                    details.pserviceId = serviceItem.getID();
                    details.cserviceId = dsi.getID();
                    details.description = "";
                    details.obligatory = false;
                    ChildServiceData dangerService = new ChildServiceData(details);                   
                    serviceItem.getChildServices().append(dangerService);
                }
            }
            setAccServicesTable();
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btAddAccServiceActionPerformed

private void btDelAccServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelAccServiceActionPerformed
    try {
        int[] selectedRows = tabAccServices.getSelectedRowsSorted();
        for (int i = selectedRows.length-1; i>=0; i--) {
            serviceItem.getChildServices().remove(selectedRows[i]);
        }
        setAccServicesTable();
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btDelAccServiceActionPerformed

private void renameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_renameActionPerformed
    rename();
}//GEN-LAST:event_renameActionPerformed

private void treeServiceGroupMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServiceGroupMouseClicked
    if (evt.getButton() == MouseEvent.BUTTON3 && treeServiceGroup.getSelectionCount()>0){
        Rectangle rect = treeServiceGroup.getPathBounds(treeServiceGroup.getSelectionPath());
        if (rect.contains(evt.getPoint())) {
                popupMenuTree.show(treeServiceGroup, evt.getX(), evt.getY());
        }
    }  
}//GEN-LAST:event_treeServiceGroupMouseClicked

/**
* Переименовать
*/
private void rename() {
    Object value = treeServiceGroup.getLastSelectedPathComponent();
    try {
        if (value instanceof DirectoryServicesGroupItem) {
            DirectoryServicesGroupItem selected = (DirectoryServicesGroupItem) value;
            tfGroupCodePref.setText(selected.getParent() != null?
                                selected.getParent().getFullCode(): "");
            tfName.setText(selected.getTitle());
            tfGroupCode.setText(selected.getCode());
            int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Переименовать", JOptionPane.OK_CANCEL_OPTION,
                            JOptionPane.PLAIN_MESSAGE, null, a, -1);
            if (res == JOptionPane.OK_OPTION) {
                if (tfName.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 jScrollPane2ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane2ComponentResized

}//GEN-LAST:event_jScrollPane2ComponentResized

private void tabServiceKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tabServiceKeyPressed
    int code = evt.getKeyCode();
    if (evt.isControlDown() && code == 67) {
        serviceItemToMove = services.get(tabService.getSelectedRowSorted());
        System.out.println(serviceItemToMove.getTitle());
    }
}//GEN-LAST:event_tabServiceKeyPressed

private void tabServiceMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabServiceMouseClicked
    try {
        int col = tabService.columnAtPoint(evt.getPoint());
        TableColumn coll = tabService.getColumnModel().getColumn(col);
        col = coll.getModelIndex();
        int row = tabService.getSelectedRowSorted();
        if (evt.getClickCount() < 2 || col < 0 || row < 0) {
            return;
        }
        DirectoryServiceItem service  = services.get(row);
        if (col == TableModelServicesFromGroup.COL_SERVICE) {
            tfGroupCodePref.setText(service.getGroup().getFullCode());
            tfName.setText(service.getTitle());
            tfGroupCode.setText(service.getCode());
            int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Переименовать", JOptionPane.OK_CANCEL_OPTION,
                            JOptionPane.PLAIN_MESSAGE, null, a, -1);
            if (res == JOptionPane.OK_OPTION) {
                if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
                    MessageBox.showError(MessageBox.E_MAKE_FUCKING_EXCEPTION, "Данные некорректны");
                    return;
                } else {
                    service.setTitle(tfName.getText());
                    service.setCode(tfGroupCode.getText());
                }
            }
        }
        if (col == TableModelServicesFromGroup.COL_CHECKUP) {
            DirectoryCheckupType dir = DirectoryLocator.getDirectory(DirectoryCheckupType.class);
            DirectoryDialogDefault dialog = new DirectoryDialogDefault(false,
                    service.getCheckUpType(), "\\", dir);
            dialog.setVisible(true);
            if (dialog.getDlgResult() == ModalDialog.DLG_OK) {
                Selector selectedItems = dialog.getSelectedItems();
                if (selectedItems.size() > 0) {
                    DirectoryCheckupTypeItem checkupType = (DirectoryCheckupTypeItem) selectedItems.get(0);
                    if (!checkupType.isAnalyse()) {
                        MessageBox.showWarning("Должен быть выбран анализ");
                    } else {
                        service.setCheckUpType(checkupType);
                    }
                }
            }
        }
    } catch (Exception ex) {
        MessageBox.showExceptionOnly(ex);
    }
}//GEN-LAST:event_tabServiceMouseClicked

private void tabServiceMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabServiceMouseMoved
    int col = tabService.columnAtPoint(evt.getPoint());
    TableColumn coll = tabService.getColumnModel().getColumn(col);
    col = coll.getModelIndex();
    if (col == TableModelServicesFromGroup.COL_CHECKUP) {
        tabService.setToolTipText("Двойной клик, чтобы редактировать анализ");
    }
    else {
        tabService.setToolTipText(null);
    }
}//GEN-LAST:event_tabServiceMouseMoved

private void btContentServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btContentServiceActionPerformed
        int row = tabService.getSelectedRowSorted();
        DirectoryServiceItem service = services.get(row);
        DialogContentService dlg;
        try {
            dlg = new DialogContentService(MainWindow.mainWindow, service, getAuditManager());
            dlg.setVisible(true);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
}//GEN-LAST:event_btContentServiceActionPerformed

private void treeServiceGroupMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServiceGroupMouseMoved
    if (treeServiceGroup.getPathForLocation(evt.getX(), evt.getY()) == null) {
        return;
    }
    Object obj = treeServiceGroup.getPathForLocation(evt.getX(), evt.getY()).getLastPathComponent();
    if (obj instanceof DirectoryServicesGroupItem) {
        DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) obj;
        treeServiceGroup.setToolTipText(item.getTitle());
    }
    else {
        treeServiceGroup.setToolTipText(null);
    }
}//GEN-LAST:event_treeServiceGroupMouseMoved


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAddAccService;
    private javax.swing.JButton btAddService;
    private javax.swing.JButton btAddServiceGroup;
    private javax.swing.JButton btContentService;
    private javax.swing.JButton btDelAccService;
    private javax.swing.JButton btDelService;
    private javax.swing.JButton btDelServiceGroup;
    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 jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    private javax.swing.JPanel panelAccSevices;
    private javax.swing.JPanel panelServices;
    private javax.swing.JPanel pnlNewNode;
    private javax.swing.JPopupMenu popupMenuTree;
    private javax.swing.JMenuItem rename;
    private cli_fmw.utils.sorted_table.SortedTable tabAccServices;
    private cli_fmw.utils.sorted_table.SortedTable tabService;
    private javax.swing.JTextField tfGroupCode;
    private javax.swing.JTextField tfGroupCodePref;
    private javax.swing.JTextField tfName;
    private javax.swing.JTree treeServiceGroup;
    // End of variables declaration//GEN-END:variables

    @Override
    public String getPageTitle() {
        return "Редактор групп услуг";
    }

    @Override
    public DelegateLine2 getDelegate() {
        return null;
    }

    @Override
    public boolean readyForPrint() {
        return (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem);
    }

    @Override
    public void print() {
        if (readyForPrint()) {
            if (tabService.isEditing()) {
                tabService.getCellEditor().stopCellEditing();
            }
            String title = "Услуги группы:";
           
            String group = "";
            DirectoryServicesGroupItem parent = serviceGroup;
            ArrayList<String> titles = new ArrayList<String>();
            while (parent != null) {
                titles.add(parent.getTitle()+ "\n");               
                parent = parent.getParent();
            }
            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);
           
            TableReportOptions ops = new TableReportOptions(TableReportOptions.PageOrentation.horizontal);
            PrintCreators.createGeneratedReport(title, ops, data.entrySet(), null, tabService.getModel(), getClass());
        }
    }

}
TOP

Related Classes of clips.directory.editors.serviceGroup.PanelServiceGroupEdit

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.