Package reportgen.gui.genepanel.subreportpanel

Source Code of reportgen.gui.genepanel.subreportpanel.SubreportPanel

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

/*
* SubreportPanel.java
*
* Created on 02.04.2009, 16:59:26
*/

package reportgen.gui.genepanel.subreportpanel;

import reportgen.gui.genepanel.Report;
import reportgen.gui.genepanel.ReportManager;
import reportgen.gui.genepanel.subreportpanel.dlg.SubReportChooseDlg;
import reportgen.gui.genepanel.subreportpanel.dlg.UserChoiceDlg;
import java.awt.Window;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import reportgen.prototype.queryresults.QueryResults;
import reportgen.prototype.utils.ItemSelectorEditable;
import reportgen.utils.ReportException;
import reportgen.gui.execute.ReportExecuteDialog;
import reportgen.gui.execute.UserInputPanel;
import reportgen.ren.report.ReportQuery;
import reportgen.ren.executer.QueryExecuterSub;
import reportgen.prototype.utils.RowCount;
import reportgen.ren.report.userinput.UserInputChunk;
import reportgen.utils.Message;

/**
*
* @author axe
*/
public class SubreportPanel extends javax.swing.JPanel {

    private ReportQuery reportQuery;
    private Window parent;
    private int excludeId;
    private final ReportManager queryManager;

    /** Creates new form SubreportPanel */
    public SubreportPanel(Window parent, ReportQuery queryCore, int excludeId, ReportManager manager) {
        initComponents();
        this.reportQuery = queryCore;
        this.parent = parent;
        this.excludeId = excludeId;
        this.queryManager = manager;

        subreportTable.setModel(new SubReportTableModel(subreportTable, queryCore.getSubReports()));
        subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELCOLUMN)
                .setCellEditor(new SubReportColumnTableEditor(queryCore.getSubReports()));
        subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELECTROWS)
                .setCellEditor(new SubReportColumRowCountEditor());

        subreportTable.getSelectionModel().addListSelectionListener( new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                delSubreportBtn.setEnabled(subreportTable.getSelectedRow() != -1);
                upSubreportBtn.setEnabled(subreportTable.getSelectedRow() != -1);
                downSubreportBtn.setEnabled(subreportTable.getSelectedRow() != -1);
            }
        });       
    }

    /** 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() {

        jPanel5 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        subreportTable = new javax.swing.JTable();
        jPanel14 = new javax.swing.JPanel();
        addSubreportBtn = new javax.swing.JButton();
        delSubreportBtn = new javax.swing.JButton();
        upSubreportBtn = new javax.swing.JButton();
        downSubreportBtn = new javax.swing.JButton();

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

        subreportTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                subreportTableMouseClicked(evt);
            }
        });
        jScrollPane5.setViewportView(subreportTable);

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

        jPanel14.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        addSubreportBtn.setText("Добавить");
        addSubreportBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addSubreportBtnActionPerformed(evt);
            }
        });
        jPanel14.add(addSubreportBtn);

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

        upSubreportBtn.setText("Вверх");
        upSubreportBtn.setEnabled(false);
        upSubreportBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                upSubreportBtnActionPerformed(evt);
            }
        });
        jPanel14.add(upSubreportBtn);

        downSubreportBtn.setText("Вниз");
        downSubreportBtn.setEnabled(false);
        downSubreportBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                downSubreportBtnActionPerformed(evt);
            }
        });
        jPanel14.add(downSubreportBtn);

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

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void addSubreportBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addSubreportBtnActionPerformed
        try {
            //list used reports
            HashSet<Integer> used = new HashSet<Integer>();
            used.add(excludeId);

            /*
            ItemSelectorEditable<QueryExecuterSub> already = reportQuery.getSubReports();
            for(int i=0; i<already.size(); i++) {
                used.add(already.get(i).getId());
            }*/

            //создаем список доступных подотчетов
            ArrayList<Report> lst = queryManager.getQueryList(true);
            Iterator<Report> lstIt = lst.iterator();
            while(lstIt.hasNext()) {
                if(used.contains(lstIt.next().getID())) {
                    lstIt.remove();
                }
            }

            if(lst.size() == 0) {
                Message.error(this, "Нет доступных подотчетов");
            } else {

                SubReportChooseDlg dlg = new SubReportChooseDlg(parent, lst);
                dlg.setVisible(true);
                if(dlg.isOK()) {
                    Report selected = dlg.getSelectedReport();
                    ItemSelectorEditable<QueryExecuterSub> subreports = reportQuery.getSubReports();
                    QueryExecuterSub srq = new QueryExecuterSub(
                            selected.getID(), selected.getQuery(), selected.getTitle(),
                            selected.getDescription(), "", "", 1, RowCount.SINGLE);
                    subreports.add(srq);
                    subreportTable.setModel(new SubReportTableModel(subreportTable, subreports));
                    subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELCOLUMN)
                            .setCellEditor(new SubReportColumnTableEditor(subreports));
                    subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELECTROWS)
                            .setCellEditor(new SubReportColumRowCountEditor());
                }
            }
        } catch (Exception ex) {
            Message.warning(this, ex);
        }
}//GEN-LAST:event_addSubreportBtnActionPerformed

    private void delSubreportBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delSubreportBtnActionPerformed
        int index = subreportTable.getSelectedRow();
        if(index != -1) {
            try {
                ItemSelectorEditable<QueryExecuterSub> subreports = reportQuery.getSubReports();
                subreports.remove(index);
                subreportTable.setModel(new SubReportTableModel(subreportTable, subreports));
                subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELCOLUMN)
                        .setCellEditor(new SubReportColumnTableEditor(subreports));
                subreportTable.getColumnModel().getColumn(SubReportTableModel.COL_SELECTROWS)
                        .setCellEditor(new SubReportColumRowCountEditor());
            } catch (ReportException ex) {
                Message.warning(this, ex);
            }
        }
}//GEN-LAST:event_delSubreportBtnActionPerformed

    private void subreportTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_subreportTableMouseClicked
        if(evt.getClickCount() != 2
                || subreportTable.getSelectedColumn() != SubReportTableModel.COL_DEFAULTCHOICE) {
            return;
        }

        ItemSelectorEditable<QueryExecuterSub> subreports = reportQuery.getSubReports();
        QueryExecuterSub subreport = subreports.get(subreportTable.getSelectedRow());
        try {
            Report report = queryManager.get(subreport.getReportId());
            Object res = report.execute();
            ReportExecuteDialog dlg = new ReportExecuteDialog(parent);
            while (res instanceof UserInputChunk) {
                UserInputChunk chunk = (UserInputChunk) res;
                dlg.addPanel(new UserInputPanel(chunk));
                dlg.setVisible(true);
                if (dlg.isOK()) {
                    throw new ReportException("Генерация отчета отменена");
                }
                res = report.continueReport(chunk);
            }
            QueryResults results = (QueryResults) res;
            UserChoiceDlg userChoiceDlg = new UserChoiceDlg(parent, results,
                    subreport.getActiveRows(),
                    subreport.getReport().getQuery().getColumns().getList());
            userChoiceDlg.setVisible(true);
            if(userChoiceDlg.isOK()) {
                ArrayList<Integer> selection = userChoiceDlg.getResult();
                if(selection.size() > 0 ) {
                    results.shrinkTo(selection);
                    subreport.setDefaultResults(results);
                } else {
                    subreport.clearDefaultResults();
                }
                subreportTable.updateUI();
            }
        } catch (ReportException ex) {
            Message.warning(this, ex);
        }
    }//GEN-LAST:event_subreportTableMouseClicked

    private void upSubreportBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upSubreportBtnActionPerformed
        int index = subreportTable.getSelectedRow();
        if(index == -1) {
            subreportTable.setEnabled(false);
        } else {
            int sel = reportQuery.getSubReports().moveUp(index);
            subreportTable.getSelectionModel().setSelectionInterval(sel, sel);
            subreportTable.updateUI();
        }
    }//GEN-LAST:event_upSubreportBtnActionPerformed

    private void downSubreportBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downSubreportBtnActionPerformed
        int index = subreportTable.getSelectedRow();
        if(index == -1) {
            subreportTable.setEnabled(false);
        } else {
            int sel = reportQuery.getSubReports().moveDown(index);
            subreportTable.getSelectionModel().setSelectionInterval(sel, sel);
            subreportTable.updateUI();
        }
    }//GEN-LAST:event_downSubreportBtnActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton addSubreportBtn;
    private javax.swing.JButton delSubreportBtn;
    private javax.swing.JButton downSubreportBtn;
    private javax.swing.JPanel jPanel14;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JTable subreportTable;
    private javax.swing.JButton upSubreportBtn;
    // End of variables declaration//GEN-END:variables

}
TOP

Related Classes of reportgen.gui.genepanel.subreportpanel.SubreportPanel

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.