Package clips.reportgen.mainpanel

Source Code of clips.reportgen.mainpanel.PanelQueryList

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* PanelQueryList.java
*
* Created on 04.02.2009, 13:11:50
*/

package clips.reportgen.mainpanel;

import cli_fmw.delegate.DelegateLine2;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.delegate.directory.complex.reportType.DirectoryReportType;
import cli_fmw.delegate.directory.complex.reportType.DirectoryReportTypeItem;
import cli_fmw.main.ActivateSensitive;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import clips.reportgen.PanelReportGenerator;
import clips.reportgen.collabs.DlgReportCollabsEdit;
import clips.reportgen.debugpanel.DebugPanel;
import reportgen.gui.execute.PendingReportDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.reportgen.QueryLocal;
import clips.reportgen.QuerySearcher;
import framework.beans.directory.reportType.ReportTypeDetails;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.tree.TreeSelectionModel;
import reportgen.utils.ReportException;

/**
*
* @author petr
*/
public class PanelQueryList extends PageGeneric implements ActivateSensitive {

    private ArrayList<QueryLocal> cache = null;
    private DirectoryReportTypeItem reportType;
    private QuerySearcher searcher = new QuerySearcher(getAuditManager());
    private QueryLocal selectedQuery= null;

    public PanelQueryList(PageContainer container) throws ClipsException {
        super(container);
        initComponents();

        setTree();
        treeReportTypes.setRootVisible(true);
        treeReportTypes.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

        tblQueryList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                updateToolbar();
            }
        });
        tblQueryList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        setTable();
        resizeColumn();

        StateSaver.attachTo(this);
    }

    private void setTable() throws ClipsException {
        if (treeReportTypes.getLastSelectedPathComponent() instanceof DirectoryReportTypeItem) {
            reportType = (DirectoryReportTypeItem) treeReportTypes.getLastSelectedPathComponent();
        } else {
            reportType = null;
        }
        getQueryList(reportType);
        tblQueryList.setModel(new TableModelQueryList(cache));
    }

    public void getQueryList(DirectoryReportTypeItem item) throws ClipsException {
        if (item == null || item.getID() == 0) {
            cache = new ArrayList<QueryLocal>();
        }
        else {
            cache = searcher.getQueryList(item, null);
        }
    }

    private void setTree() throws ClipsException {
        DirectoryReportType drt = DirectoryLocator.getDirectory(DirectoryReportType.class);
        treeReportTypes.setModel(new TreeModelReportType(drt));
        treeReportTypes.setSelectionPath(null);
    }

    private void openInEditor(QueryLocal queryLocal) {
        try {
            PanelReportGenerator panel = new PanelReportGenerator(getContainer(), queryLocal);
            PageGeneric page = getContainer().addNewPage((PageGeneric) panel, this);
            getContainer().activatePage(page);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }

    private void updateToolbar() {
        int row = tblQueryList.getSelectedRowSorted();
       
        btRemove.setEnabled(row != -1);
        btDebug.setEnabled(row != -1);

        if(row != -1
                && !cache.get(row).isWrong()) {
            btCollabs.setEnabled(row >= 0);
            execBtn.setEnabled(row >= 0);
            btCollabs.setEnabled(row >= 0);
            btEdit.setEnabled(row >= 0);
            btCopy.setEnabled(row >= 0);
        } else {
            btCollabs.setEnabled(false);
            execBtn.setEnabled(false);
            btCollabs.setEnabled(false);
            btEdit.setEnabled(false);
            btCopy.setEnabled(false);
        }
    }

    private void resizeColumn() {
        TableState state = new TableState();
        state.setPreferredWidth(TableModelQueryList.COL_ID, 2);
        state.setPreferredWidth(TableModelQueryList.COL_QUERY, 8);
        state.setPreferredWidth(TableModelQueryList.COL_VERSION, 2);
        StateSaver.setDefaultState(this, tblQueryList, state);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblQueryList = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        btCopy = new javax.swing.JButton();
        btAdd = new javax.swing.JButton();
        btEdit = new javax.swing.JButton();
        btDebug = new javax.swing.JButton();
        btRemove = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        btCollabs = new javax.swing.JButton();
        execBtn = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        treeReportTypes = new javax.swing.JTree();
        jPanel6 = new javax.swing.JPanel();
        btAddGroup = new javax.swing.JButton();
        btDelGroup = new javax.swing.JButton();

        setLayout(new java.awt.BorderLayout());

        jSplitPane1.setDividerLocation(200);
        jSplitPane1.setResizeWeight(0.5);

        jPanel4.setLayout(new java.awt.BorderLayout(0, 3));

        tblQueryList.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        tblQueryList.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblQueryListKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(tblQueryList);

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

        jPanel1.setLayout(new java.awt.BorderLayout());

        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 5, 9));

        btCopy.setText("Копировать");
        btCopy.setEnabled(false);
        btCopy.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCopyActionPerformed(evt);
            }
        });
        jPanel2.add(btCopy);

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

        btEdit.setText("Редактировать");
        btEdit.setEnabled(false);
        btEdit.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btEdit.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        btEdit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btEditActionPerformed(evt);
            }
        });
        jPanel2.add(btEdit);

        btDebug.setText("Отладка");
        btDebug.setEnabled(false);
        btDebug.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDebugActionPerformed(evt);
            }
        });
        jPanel2.add(btDebug);

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

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

        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 9));

        btCollabs.setText("Сотрудники");
        btCollabs.setEnabled(false);
        btCollabs.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCollabsActionPerformed(evt);
            }
        });
        jPanel3.add(btCollabs);

        execBtn.setText("Выполнить");
        execBtn.setEnabled(false);
        execBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                execBtnActionPerformed(evt);
            }
        });
        jPanel3.add(execBtn);

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

        jPanel4.add(jPanel1, java.awt.BorderLayout.SOUTH);

        jSplitPane1.setRightComponent(jPanel4);

        jPanel5.setLayout(new java.awt.BorderLayout(0, 5));

        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
        treeReportTypes.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
        treeReportTypes.setEditable(true);
        treeReportTypes.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                treeReportTypesValueChanged(evt);
            }
        });
        treeReportTypes.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                treeReportTypesKeyPressed(evt);
            }
        });
        jScrollPane2.setViewportView(treeReportTypes);

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

        jPanel6.setLayout(new java.awt.GridLayout(1, 0, 5, 5));

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

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

        jPanel5.add(jPanel6, java.awt.BorderLayout.SOUTH);

        jSplitPane1.setLeftComponent(jPanel5);

        add(jSplitPane1, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents

    private void btEditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditActionPerformed
        int row = tblQueryList.getSelectedRowSorted();
        if (row < 0) {
            return;
        }
        QueryLocal queryLocal = cache.get(row);
        openInEditor(queryLocal);
    }//GEN-LAST:event_btEditActionPerformed

    private void btRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoveActionPerformed
        try {
            int row = tblQueryList.getSelectedRowSorted();
            if (row < 0) {
                return;
            }
            QueryLocal queryLocal = cache.get(row);
            queryLocal.remove();
            cache.remove(queryLocal);
            tblQueryList.setModel(new TableModelQueryList(cache));
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btRemoveActionPerformed

    private void btAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddActionPerformed
        try {
            QueryLocal query = new QueryLocal(getAuditManager());
            query.setReportType(reportType);
            PanelReportGenerator panel = new PanelReportGenerator(getContainer(), query);
            PageGeneric page = getContainer().addNewPage((PageGeneric) panel, this);
            getContainer().activatePage(page);
        } catch (ReportException ex) {
            MessageBox.showException(ex);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btAddActionPerformed

    private void btCollabsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCollabsActionPerformed
        try {
            int row = tblQueryList.getSelectedRowSorted();
            if (row < 0) {
                return;
            }
            QueryLocal queryLocal = cache.get(row);
            DlgReportCollabsEdit dlg = new DlgReportCollabsEdit(MainWindow.mainWindow, queryLocal);
            dlg.setVisible(true);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
}//GEN-LAST:event_btCollabsActionPerformed

    private void execBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_execBtnActionPerformed
        int row = tblQueryList.getSelectedRowSorted();
        if (row < 0) {
            return;
        }
        QueryLocal rr = cache.get(row);
        PendingReportDialog dlg;
        try {
            dlg = new PendingReportDialog(MainWindow.mainWindow, rr, false);
            dlg.setVisible(true);
        } catch (ReportException ex) {
            MessageBox.showExceptionOnly(ex);
        }
    }//GEN-LAST:event_execBtnActionPerformed

    private void btCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCopyActionPerformed
        try {
            int row = tblQueryList.getSelectedRowSorted();
            if (row < 0) {
                return;
            }
            QueryLocal queryLocal = cache.get(row);
            QueryLocal queryLocalCopy = new QueryLocal(getAuditManager());
            queryLocalCopy.setRaw(queryLocal.getRaw());
            queryLocalCopy.setTitle(queryLocal.getTitle() + "(копия)");
            queryLocalCopy.setReportType(queryLocal.getReportType());
            openInEditor(queryLocalCopy);
        } catch (ReportException ex) {
            MessageBox.showException(ex);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btCopyActionPerformed

    private void btDebugActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDebugActionPerformed
        int row = tblQueryList.getSelectedRowSorted();
        if (row < 0) {
            return;
        }
        QueryLocal queryLocal = cache.get(row);
        try {
            DebugPanel panel = new DebugPanel(MainWindow.mainWindow,
                    getContainer(), queryLocal);
            PageGeneric page = getContainer().addNewPage((PageGeneric) panel, this);
            getContainer().activatePage(page);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btDebugActionPerformed

    private void treeReportTypesValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeReportTypesValueChanged
        try {
            setTable();
            btAdd.setEnabled(treeReportTypes.getLastSelectedPathComponent() instanceof DirectoryReportTypeItem);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_treeReportTypesValueChanged

    private void btAddGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddGroupActionPerformed
        try {
            ReportTypeDetails dd = new ReportTypeDetails();
            dd.title = "введите название";
            DirectoryReportTypeItem item = new DirectoryReportTypeItem(dd);
            if (treeReportTypes.getLastSelectedPathComponent() instanceof DirectoryReportTypeItem) {
                DirectoryReportTypeItem parent = (DirectoryReportTypeItem)
                        treeReportTypes.getLastSelectedPathComponent();
                dd.parentItem = parent.getID();
                parent.getItems().append(item);
                treeReportTypes.updateUI();
            }
            else {
                dd.parentItem = 0;
                DirectoryReportType directory = (DirectoryReportType)
                    DirectoryLocator.getDirectory(DirectoryReportType.class, false);
                directory.getItems().append(item);
                treeReportTypes.updateUI();
            }
            treeReportTypes.expandPath(treeReportTypes.getSelectionPath());
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btAddGroupActionPerformed

    private void btDelGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelGroupActionPerformed
        try {
            if (treeReportTypes.getLastSelectedPathComponent() == treeReportTypes.getModel().getRoot()
                    || treeReportTypes.getLastSelectedPathComponent() == null) {
                return;
            }

            DirectoryReportTypeItem item = (DirectoryReportTypeItem) treeReportTypes.getLastSelectedPathComponent();

            DirectoryReportTypeItem parent = item.getParent();

            if (parent == null) {
                DirectoryReportType dir =
                        (DirectoryReportType) DirectoryLocator.getDirectory(DirectoryReportType.class, false);
                 dir.getItems().remove(item);
            }
            else {
                parent.getItems().remove(item);
            }
            treeReportTypes.updateUI();
            treeReportTypes.getSelectionModel().setSelectionPath(null);
            treeReportTypesValueChanged(null);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btDelGroupActionPerformed

    private void tblQueryListKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblQueryListKeyPressed
        int code = evt.getKeyCode();
        if (evt.isControlDown() && code == KeyEvent.VK_X) {
            selectedQuery = cache.get(tblQueryList.getSelectedRowSorted());
            System.out.println("блаблабла " + selectedQuery.toString());
        }
    }//GEN-LAST:event_tblQueryListKeyPressed

    private void treeReportTypesKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_treeReportTypesKeyPressed
        try {
            int code = evt.getKeyCode();
            if (evt.isControlDown() && code == KeyEvent.VK_V && selectedQuery != null) {
                if (treeReportTypes.getLastSelectedPathComponent() instanceof DirectoryReportTypeItem) {
                    DirectoryReportTypeItem groupItem = (DirectoryReportTypeItem) treeReportTypes.getLastSelectedPathComponent();
                    selectedQuery.setReportType(groupItem);
                    selectedQuery.save1();
                    setTable();
                    selectedQuery = null;
                }
            }
        } catch(ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_treeReportTypesKeyPressed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAdd;
    private javax.swing.JButton btAddGroup;
    private javax.swing.JButton btCollabs;
    private javax.swing.JButton btCopy;
    private javax.swing.JButton btDebug;
    private javax.swing.JButton btDelGroup;
    private javax.swing.JButton btEdit;
    private javax.swing.JButton btRemove;
    private javax.swing.JButton execBtn;
    private javax.swing.JPanel jPanel1;
    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.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSplitPane jSplitPane1;
    private cli_fmw.utils.sorted_table.SortedTable tblQueryList;
    private javax.swing.JTree treeReportTypes;
    // End of variables declaration//GEN-END:variables

    @Override
    public String getPageTitle() {
        return "Генератор запросов";
    }

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

    public void beforeActivate() {
        try {
            setTable();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }

    public void beforeDeactivate() {
    }

    public boolean canBeActivated() {
        return true;
    }

    public boolean canBeDeactivated() {
        return true;
    }
   
}
TOP

Related Classes of clips.reportgen.mainpanel.PanelQueryList

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.