Package com.playlist.listainteligente.condicao

Source Code of com.playlist.listainteligente.condicao.JCondicao

package com.playlist.listainteligente.condicao;

import com.musica.MusicaS;
import com.playlist.listainteligente.condicao.operadores.OperadorComparativo;
import com.playlist.listainteligente.condicao.operadores.OperadorLogico;
import com.utils.campo.Campo;
import com.utils.model.comboboxmodel.ComboBoxModelEditavel;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import javax.swing.JDialog;

/**
*
* @author rudieri
*/
public class JCondicao extends javax.swing.JPanel implements ItemListener {

    private static final String ESCOLHA_UM_OPERADOR = "Escolha um operador";
    private static final String ESCOLHA_UM_CAMPO = "Escolha um campo";
    private ComboBoxModelEditavel comboBoxModelValor1;
    private ComboBoxModelEditavel comboBoxModelOperadorComparativo;
    private ComboBoxModelEditavel comboBoxModelOperadorLogico;

    /**
     * Creates new form Jcondicao
     */
    public JCondicao() {
        init();
    }

    private void init() {
        initComponents();

        comboBoxModelValor1 = new ComboBoxModelEditavel();
        jComboBox_Valor1.setModel(comboBoxModelValor1);
        comboBoxModelValor1.setTextoNenhumItemSelecionado(ESCOLHA_UM_CAMPO);

        comboBoxModelOperadorComparativo = new ComboBoxModelEditavel();
        comboBoxModelOperadorComparativo.setTextoNenhumItemSelecionado(ESCOLHA_UM_OPERADOR);
        comboBoxModelOperadorComparativo.addAll(OperadorComparativo.values());
        jComboBox_OperadorComparativo.setModel(comboBoxModelOperadorComparativo);

        comboBoxModelOperadorLogico = new ComboBoxModelEditavel();
        comboBoxModelOperadorLogico.setTextoNenhumItemSelecionado(ESCOLHA_UM_OPERADOR);
        comboBoxModelOperadorLogico.addAll(OperadorLogico.values());
        jComboBox_OperadorLogico.setModel(comboBoxModelOperadorLogico);

        Field[] campos = MusicaS.class.getDeclaredFields();
        carregarCampos(campos, "");
    }

    private void carregarCampos(Field[] campos, String classeBase) {
        for (Field field : campos) {
            if (!Modifier.isStatic(field.getModifiers())) {
                if (Campo.contemAnotacaoNecessaria(field)) {
                    comboBoxModelValor1.addItem(new Campo(MusicaS.class, classeBase + field.getName()));
                }else if(Campo.contemFilhos(field)){
                    carregarCampos(field.getType().getDeclaredFields(), classeBase + field.getName() + ".");
                }
            }
        }
    }

    public void setCondicao(Condicao condicao) {
        switch (condicao.getTipoValorCondicao1()) {
            case CAMPO:
                jRadioButton_TipocondicaoComparativa.setSelected(true);
                jComboBox_Valor1.setSelectedItem(((ValorCondicao) condicao.getValor1()).getCampo());
                jComboBox_OperadorComparativo.setSelectedItem(condicao.getOperador());
                jTextField_Valor2.setText(condicao.getValor2().toString());
                break;
            case CONDICAO:
                jRadioButton_TipoCondicaoLogica.setSelected(true);
                jSelecionaCondicao1.setCondicao((Condicao) condicao.getValor1());
                jSelecionaCondicao2.setCondicao((Condicao) condicao.getValor2());
                jComboBox_OperadorLogico.setSelectedItem(condicao.getOperador());
                break;
        }
    }

    public Condicao getCondicao() {
        if (jRadioButton_TipocondicaoComparativa.isSelected()) {
            if (comboBoxModelOperadorComparativo.getSelectedItem() == ESCOLHA_UM_OPERADOR) {
                throw new IllegalStateException("Operador não escolhido.");
            }
            if (jComboBox_Valor1.getSelectedItem() == ESCOLHA_UM_CAMPO) {
                throw new IllegalStateException("Campo da música não escolhido.");
            }
            if (jTextField_Valor2.getText().isEmpty()) {
                throw new IllegalStateException("Valor do segundo campo da condição não informado.");
            }
            Condicao condicao = new Condicao();
            OperadorComparativo operador = (OperadorComparativo) comboBoxModelOperadorComparativo.getSelectedItem();
            ValorCondicao valor1 = new ValorCondicao((Campo) jComboBox_Valor1.getSelectedItem());
            Campo campo = (Campo) jComboBox_Valor1.getSelectedItem();
            ValorCondicao valor2;
            if (campo.isInteger()) {
                valor2 = new ValorCondicao(Integer.valueOf(jTextField_Valor2.getText()));
            } else if (campo.isByte()) {
                valor2 = new ValorCondicao(Byte.valueOf(jTextField_Valor2.getText()));
            } else if (campo.isShort()) {
                valor2 = new ValorCondicao(Short.valueOf(jTextField_Valor2.getText()));
            } else if (campo.isLong()) {
                valor2 = new ValorCondicao(Long.valueOf(jTextField_Valor2.getText()));
            } else if (campo.isBoolean()) {
                if (jTextField_Valor2.getText().matches("[0]|[Nn][AaÃã][Oo]|[Ff][Aa][Ll][Ss][Ee]")) {
                    valor2 = new ValorCondicao(false);
                } else {
                    valor2 = new ValorCondicao(true);
                }
            } else {
                valor2 = new ValorCondicao(jTextField_Valor2.getText());
            }
            condicao.setValoresCondicao(operador, valor1, valor2);
            return condicao;
        } else {
            Object selectedItem = comboBoxModelOperadorLogico.getSelectedItem();
            if (selectedItem.equals(ESCOLHA_UM_OPERADOR)) {
                throw new IllegalStateException("Operador não escolhido.");
            }
            Condicao condicao = new Condicao();
            OperadorLogico operador = (OperadorLogico) selectedItem;
            condicao.setValoresCondicao(operador, jSelecionaCondicao1.getCondicao(), jSelecionaCondicao2.getCondicao());
            return condicao;
        }
    }

    public static void main(String[] args) {
        JDialog jDialog = new JDialog((JDialog) null, true);
        jDialog.add(new JCondicao());
        jDialog.setPreferredSize(new Dimension(400, 70));
        jDialog.setSize(700, 90);
        jDialog.setLocation(500, 500);
        jDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        jDialog.setVisible(true);
        System.exit(0);
    }

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

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel8 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jRadioButton_TipocondicaoComparativa = new javax.swing.JRadioButton();
        jRadioButton_TipoCondicaoLogica = new javax.swing.JRadioButton();
        jPanel1 = new javax.swing.JPanel();
        jPanel_Comparativa = new javax.swing.JPanel();
        jComboBox_Valor1 = new javax.swing.JComboBox();
        jComboBox_OperadorComparativo = new javax.swing.JComboBox();
        jTextField_Valor2 = new javax.swing.JTextField();
        jPanel_Logica = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jSelecionaCondicao1 = new com.playlist.listainteligente.condicao.JSelecionaCondicao();
        jComboBox_OperadorLogico = new javax.swing.JComboBox();
        jPanel6 = new javax.swing.JPanel();
        jSelecionaCondicao2 = new com.playlist.listainteligente.condicao.JSelecionaCondicao();
        jPanel7 = new javax.swing.JPanel();

        setBorder(javax.swing.BorderFactory.createEtchedBorder());
        setLayout(new java.awt.BorderLayout());

        jPanel8.setLayout(new javax.swing.BoxLayout(jPanel8, javax.swing.BoxLayout.Y_AXIS));

        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        jLabel1.setText("Tipo de Condição:");
        jLabel1.setPreferredSize(new java.awt.Dimension(135, 15));
        jPanel2.add(jLabel1);

        buttonGroup1.add(jRadioButton_TipocondicaoComparativa);
        jRadioButton_TipocondicaoComparativa.setSelected(true);
        jRadioButton_TipocondicaoComparativa.setText("Comparativa");
        jRadioButton_TipocondicaoComparativa.addItemListener(this);
        jPanel2.add(jRadioButton_TipocondicaoComparativa);

        buttonGroup1.add(jRadioButton_TipoCondicaoLogica);
        jRadioButton_TipoCondicaoLogica.setText("Lógica");
        jRadioButton_TipoCondicaoLogica.addItemListener(this);
        jPanel2.add(jRadioButton_TipoCondicaoLogica);

        jPanel8.add(jPanel2);

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

        jPanel_Comparativa.setLayout(new java.awt.GridLayout(1, 3));

        jPanel_Comparativa.add(jComboBox_Valor1);

        jPanel_Comparativa.add(jComboBox_OperadorComparativo);
        jPanel_Comparativa.add(jTextField_Valor2);

        jPanel1.add(jPanel_Comparativa, "card2");

        jPanel_Logica.setLayout(new java.awt.GridLayout(1, 3));

        jPanel5.setLayout(new java.awt.BorderLayout());
        jPanel5.add(jSelecionaCondicao1, java.awt.BorderLayout.CENTER);

        jPanel_Logica.add(jPanel5);

        jPanel_Logica.add(jComboBox_OperadorLogico);

        jPanel6.setLayout(new java.awt.BorderLayout());
        jPanel6.add(jSelecionaCondicao2, java.awt.BorderLayout.CENTER);

        jPanel_Logica.add(jPanel6);

        jPanel1.add(jPanel_Logica, "card3");

        jPanel8.add(jPanel1);

        add(jPanel8, java.awt.BorderLayout.PAGE_START);

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

    // Code for dispatching events from components to event handlers.

    public void itemStateChanged(java.awt.event.ItemEvent evt) {
        if (evt.getSource() == jRadioButton_TipocondicaoComparativa) {
            JCondicao.this.jRadioButton_TipocondicaoComparativaItemStateChanged(evt);
        }
        else if (evt.getSource() == jRadioButton_TipoCondicaoLogica) {
            JCondicao.this.jRadioButton_TipoCondicaoLogicaItemStateChanged(evt);
        }
    }// </editor-fold>//GEN-END:initComponents

    private void jRadioButton_TipocondicaoComparativaItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButton_TipocondicaoComparativaItemStateChanged
        if (evt.getStateChange() == ItemEvent.SELECTED) {
            jPanel_Comparativa.setVisible(true);
            jPanel_Logica.setVisible(false);
        }
    }//GEN-LAST:event_jRadioButton_TipocondicaoComparativaItemStateChanged

    private void jRadioButton_TipoCondicaoLogicaItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButton_TipoCondicaoLogicaItemStateChanged
        if (evt.getStateChange() == ItemEvent.SELECTED) {
            jPanel_Logica.setVisible(true);
            jPanel_Comparativa.setVisible(false);
        }
    }//GEN-LAST:event_jRadioButton_TipoCondicaoLogicaItemStateChanged
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JComboBox jComboBox_OperadorComparativo;
    private javax.swing.JComboBox jComboBox_OperadorLogico;
    private javax.swing.JComboBox jComboBox_Valor1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel_Comparativa;
    private javax.swing.JPanel jPanel_Logica;
    private javax.swing.JRadioButton jRadioButton_TipoCondicaoLogica;
    private javax.swing.JRadioButton jRadioButton_TipocondicaoComparativa;
    private com.playlist.listainteligente.condicao.JSelecionaCondicao jSelecionaCondicao1;
    private com.playlist.listainteligente.condicao.JSelecionaCondicao jSelecionaCondicao2;
    private javax.swing.JTextField jTextField_Valor2;
    // End of variables declaration//GEN-END:variables
}
TOP

Related Classes of com.playlist.listainteligente.condicao.JCondicao

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.