Package reportgen.gui.genepanel.formatpanel.dlg.range

Source Code of reportgen.gui.genepanel.formatpanel.dlg.range.CrossReportPanel

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

/*
* CrossReportPanel.java
*
* Created on 01.08.2009, 10:14:59
*/

package reportgen.gui.genepanel.formatpanel.dlg.range;

import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JPanel;
import reportgen.prototype.context.group.ExpressionEditorPanel;
import reportgen.ren.executer.QueryExecuterSub;
import reportgen.ren.report.extendedformat.range.cross.ColRowRangeCrossReport;
import reportgen.ren.report.extendedformat.range.cross.CrossReport;
import reportgen.utils.Message;

/**
*
* @author axe
*/
public class CrossReportPanel extends JPanel  {

    private final static String NOTUSED = "Не используется";

    private final ColRowRangeCrossReport range;
    private final Window parent;
    private ExpressionEditorPanel criteriaPanel;
   
    public CrossReportPanel(Window aParent, ColRowRangeCrossReport aRange) {
        initComponents();
        this.range = aRange;
        this.parent = aParent;

        initCriteriaPanel();
        //fill list
        crossReportCombo.addItem(NOTUSED);
        List<QueryExecuterSub> subreports = range.getLocalContext().getSubreports();
        if(subreports.size() == 0) {
            crossReportCombo.setEnabled(false);
        } else {
            for(Object iReport: subreports) {
                crossReportCombo.addItem(iReport);
            }
        }
        //set default
        CrossReport localReport = range.getCrossReport();
        if(localReport != null) {
            crossReportCombo.setSelectedItem(localReport.getSubReport());
        } else {
            crossReportCombo.setSelectedItem(NOTUSED);
        }

        crossReportCombo.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object selValue = crossReportCombo.getSelectedItem();
                if(selValue == NOTUSED) {
                    selValue = null;
                }
                QueryExecuterSub newValue = (QueryExecuterSub) selValue;
                QueryExecuterSub oldValue = range.getCrossReport() == null
                        ? null : range.getCrossReport().getSubReport();
                if(oldValue == newValue
                        || (oldValue != null && oldValue.equals(newValue))) {
                    return;
                }
                if(oldValue != null && !range.canRemoveCrossReport(range.getCrossReport())) {
                    crossReportCombo.setSelectedItem(oldValue);
                    Message.warning(parent, "Кросс-отчет иcпользуется и не может быть сменен");
                } else {
                    range.setCrossReport(new CrossReport(newValue));
                    initCriteriaPanel();
                }
            }
        });
    }

    private void initCriteriaPanel() {
        if(criteriaPanel != null) {
            mainPanel.remove(criteriaPanel);
        }
        criteriaPanel = range.getCrossCriteria().getPanel(parent);
        mainPanel.add(criteriaPanel, BorderLayout.CENTER);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        crossReportCombo = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();

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

        jPanel7.setLayout(new java.awt.BorderLayout(5, 5));
        jPanel7.add(crossReportCombo, java.awt.BorderLayout.CENTER);

        jLabel1.setText("Кросс-отчет:");
        jPanel7.add(jLabel1, java.awt.BorderLayout.WEST);

        mainPanel.add(jPanel7, java.awt.BorderLayout.NORTH);

        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(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 346, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox crossReportCombo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel mainPanel;
    // End of variables declaration//GEN-END:variables
}
TOP

Related Classes of reportgen.gui.genepanel.formatpanel.dlg.range.CrossReportPanel

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.