Package reportgen.math.reference.reportresult

Source Code of reportgen.math.reference.reportresult.MathExpressionReportResultAgregPanel

/*
* MathExpressionOperatorPanel.java
*
* Created on 24 Ноябрь 2008 г., 15:48
*/

package reportgen.math.reference.reportresult;

import reportgen.prototype.context.group.ExpressionEditorPanel;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import reportgen.utils.ReportException;
import reportgen.prototype.context.Context;
import reportgen.math.agregate.agregate.AggregateFunction;
import reportgen.ren.report.column.ReportResultColumn;
import reportgen.utils.Message;

/**
*
* @author  axe
*/
public class MathExpressionReportResultAgregPanel
        extends ExpressionEditorPanel<MathExpressionReportResultAgreg> {

    protected final Context context;
    protected MathExpressionReportResultAgreg me;
  
    public MathExpressionReportResultAgregPanel(Window parent, Context aContext,
            MathExpressionReportResultAgreg expression) {
        initComponents();
        this.context = aContext;
        this.me = expression;

        List options = context.getReportResult();
        if(options == null) {
            Message.warning(parent, "Нет доступных вариантов");
            mainCombo.setEnabled(false);
            subCombo.setEnabled(false);
        } else {
            mainCombo.setModel(new DefaultComboBoxModel(options.toArray()));
            if(expression == null) {
                mainCombo.setSelectedItem(null);
                subCombo.setEnabled(false);
            } else {
                mainCombo.setSelectedItem(expression.getRef());
                AggregateFunction function = expression.getFunction();
                Class cls = null;
                try {
                    cls = expression.getCls();
                } catch (ReportException ex) {
                    Message.warning(this, ex);
                    function = AggregateFunction.ASIS;
                }
                fillFunctions(cls, function);
            }
        }

        mainCombo.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ReportResultColumn selection = (ReportResultColumn) mainCombo.getSelectedItem();
                AggregateFunction function = (AggregateFunction) subCombo.getSelectedItem();
                if(selection != null) {
                    MathExpressionReportResultAgreg sample = new MathExpressionReportResultAgreg(
                            selection, AggregateFunction.ASIS, context);
                    Class cls = null;
                    try {
                        cls = sample.getCls();
                    } catch (ReportException ex) {
                        Message.warning(MathExpressionReportResultAgregPanel.this, ex);
                        function = null;
                    }
                    fillFunctions(cls, function);
                }
                subCombo.setEnabled(selection != null);
            }
        });

        subCombo.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ReportResultColumn selection = (ReportResultColumn) mainCombo.getSelectedItem();
                AggregateFunction function = (AggregateFunction) subCombo.getSelectedItem();
                if(selection != null
                        && function != null) {
                    if(me == null) {
                        me = new MathExpressionReportResultAgreg(selection, function, context);
                    } else {
                        me.setFunction(function);
                        me.setRef(selection);
                    }
                    fireExpressionChanged();
                }
            }
        });
    }

    private void fillFunctions(Class cls, AggregateFunction selection) {
        Object[] functions = context.getAggregFunctions(cls).toArray();
        subCombo.setModel(new DefaultComboBoxModel(functions));
        subCombo.setSelectedItem(selection);
        subCombo.setEnabled(true);
    }

    @Override
    public MathExpressionReportResultAgreg getValue() {
        return me;
    }

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

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        mainCombo = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        subCombo = new javax.swing.JComboBox();

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

        jLabel1.setText("Результат отчета:");
        jPanel1.add(jLabel1, java.awt.BorderLayout.LINE_START);

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

        jPanel2.setLayout(new java.awt.BorderLayout(5, 5));

        jLabel2.setText("Функция:");
        jPanel2.add(jLabel2, java.awt.BorderLayout.LINE_START);

        subCombo.setEnabled(false);
        jPanel2.add(subCombo, java.awt.BorderLayout.CENTER);

        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()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE)
                    .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JComboBox mainCombo;
    private javax.swing.JComboBox subCombo;
    // End of variables declaration//GEN-END:variables

}
TOP

Related Classes of reportgen.math.reference.reportresult.MathExpressionReportResultAgregPanel

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.