/* * Copyright 2012 MoonJava LTDA. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package br.com.moonjava.flight.view.passagem; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.ActionListener; import java.awt.event.FocusListener; import java.text.ParseException; import java.util.ResourceBundle; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFormattedTextField; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.text.MaskFormatter; import br.com.moonjava.flight.model.financeiro.Bandeira; import br.com.moonjava.flight.util.AbstractFlightUI; import br.com.moonjava.flight.util.ErrorSystem; import br.com.moonjava.flight.util.FlightImageUI; import br.com.moonjava.flight.util.FocusTextField; import br.com.moonjava.flight.util.RequestParamWrapper; /** * @version 1.0 Sep 7, 2012 * @contact tiago.aguiar@moonjava.com.br * */ public class CartaoUI extends AbstractFlightUI { private final JPanel conteudo; protected final ResourceBundle bundle; private final JDialog frame; private JLabel tituloNomeTitular; private JLabel tituloNumero; private JLabel tituloCpf; private JLabel tituloValidade; private JLabel tituloCodSeguranca; private JLabel tituloBandeira; private JLabel imagemNumero; private JLabel imagemCpf; private JLabel imagemCodigo; private JLabel imagemValidade; private JLabel alertaNumero; private JLabel alertaCpf; private JLabel alertaCodigo; private JLabel alertaValidade; private JTextField nomeTitular; private JTextField numero; private JTextField codSeguranca; private JFormattedTextField validade; private JFormattedTextField cpf; private JComboBox bandeira; private JButton oK; private boolean valid; private final double valorTotal; public CartaoUI(ResourceBundle bundle, double valorTotal) { this.bundle = bundle; this.valorTotal = valorTotal; frame = new JDialog(); frame.setTitle(bundle.getString("cartao.titulo")); frame.setModal(true); conteudo = new JPanel(null); conteudo.setBounds(30, 30, 1130, 600); frame.getContentPane().add(conteudo); mainMenu(); } @Override protected JPanel getConteudo() { return conteudo; } @Override protected void mainMenu() { tituloNomeTitular = new JLabel(bundle.getString("cartao.titulo.nometitular")); tituloNumero = new JLabel(bundle.getString("cartao.titulo.numero")); tituloCpf = new JLabel(bundle.getString("cartao.titulo.cpf")); tituloCodSeguranca = new JLabel(bundle.getString("cartao.titulo.codSeguranca")); tituloValidade = new JLabel(bundle.getString("cartao.titulo.validade")); tituloBandeira = new JLabel(bundle.getString("cartao.titulo.bandeira")); nomeTitular = new JTextField(bundle.getString("cartao.nomeTitular")); numero = new JTextField(bundle.getString("cartao.numero")); codSeguranca = new JTextField(bundle.getString("cartao.codSeguranca")); bandeira = new JComboBox(Bandeira.values()); try { cpf = new JFormattedTextField(new MaskFormatter("###.###.###-##")); validade = new JFormattedTextField(new MaskFormatter("##/####")); } catch (ParseException e) { ErrorSystem.addException(e, bundle); } oK = new JButton("Ok"); imagemNumero = new JLabel(); imagemCpf = new JLabel(); imagemCodigo = new JLabel(); imagemValidade = new JLabel(); alertaNumero = new JLabel(); alertaCpf = new JLabel(); alertaCodigo = new JLabel(); alertaValidade = new JLabel(); Font font = new Font("Century Gothic", Font.ITALIC, 13); nomeTitular.setFont(font); numero.setFont(font); codSeguranca.setFont(font); bandeira.setFont(font); nomeTitular.setForeground(Color.GRAY); numero.setForeground(Color.GRAY); codSeguranca.setForeground(Color.GRAY); bandeira.setForeground(Color.GRAY); imagemNumero.setBounds(420, 90, 400, 30); imagemCpf.setBounds(420, 130, 100, 30); imagemCodigo.setBounds(420, 170, 400, 30); imagemValidade.setBounds(420, 210, 400, 30); alertaNumero.setBounds(445, 90, 400, 30); alertaCpf.setBounds(445, 130, 100, 30); alertaCodigo.setBounds(445, 170, 400, 30); alertaValidade.setBounds(445, 210, 400, 30); tituloNomeTitular.setBounds(60, 50, 200, 30); tituloNumero.setBounds(60, 90, 200, 30); tituloCpf.setBounds(60, 130, 200, 30); tituloCodSeguranca.setBounds(60, 170, 200, 30); tituloValidade.setBounds(60, 210, 200, 30); tituloBandeira.setBounds(60, 250, 200, 30); nomeTitular.setBounds(230, 50, 300, 30); numero.setBounds(230, 90, 180, 30); cpf.setBounds(230, 130, 180, 30); codSeguranca.setBounds(230, 170, 180, 30); validade.setBounds(230, 210, 180, 30); bandeira.setBounds(230, 250, 180, 30); oK.setBounds(230, 290, 100, 30); conteudo.repaint(); conteudo.validate(); conteudo.add(tituloNomeTitular); conteudo.add(tituloNumero); conteudo.add(tituloCpf); conteudo.add(tituloCodSeguranca); conteudo.add(tituloValidade); conteudo.add(tituloBandeira); conteudo.add(nomeTitular); conteudo.add(numero); conteudo.add(cpf); conteudo.add(codSeguranca); conteudo.add(validade); conteudo.add(bandeira); conteudo.add(oK); repaint(); } protected void showAll() { Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); int width = dimension.width; int height = dimension.height; int frameWidth = 800; int frameHeight = 400; frame.setLocation((width / 2) - (frameWidth / 2), (height / 2) - (frameHeight / 2)); frame.setSize(frameWidth, frameHeight); frame.setResizable(false); frame.setVisible(true); } protected void addOkListener(ActionListener a) { oK.addActionListener(a); } protected void addFocusCpfListener(FocusListener a) { cpf.addFocusListener(a); } protected void addFocusNumeroListener(FocusListener a) { numero.addFocusListener(a); } protected void addFocusCodigoListener(FocusListener a) { codSeguranca.addFocusListener(a); } protected void addFocusDataListener(FocusListener a) { validade.addFocusListener(a); } protected void addFocusListener(FocusListener a) { nomeTitular.addFocusListener(a); numero.addFocusListener(a); codSeguranca.addFocusListener(a); ((FocusTextField) a).setField(nomeTitular, numero, codSeguranca); ((FocusTextField) a).setText(bundle.getString("cartao.nomeTitular"), bundle.getString("cartao.numero"), bundle.getString("cartao.codSeguranca")); } protected RequestParamWrapper getParameters() { RequestParamWrapper request = new RequestParamWrapper(); request.set("titular", nomeTitular.getText()); request.set("numero", numero.getText()); request.set("validade", validade.getText()); request.set("bandeira", bandeira.getSelectedItem()); request.set("cpf", cpf.getText()); request.set("codigo", codSeguranca.getText()); request.set("valor", valorTotal); return request; } protected RequestParamWrapper getDefaultTexts() { RequestParamWrapper request = new RequestParamWrapper(); request.set("numero", bundle.getString("cartao.numero")); request.set("codigo", bundle.getString("cartao.codSeguranca")); return request; } public boolean isParameterValid() { return valid; } public void setParameterValid(boolean valid) { this.valid = valid; } protected void dispose() { frame.dispose(); } // add Layout protected void addImageCardValid() { FlightImageUI.add(imagemValidade, alertaValidade, bundle.getString("validade.valido"), bundle, conteudo); repaint(); } protected void addImageCardInvalid() { FlightImageUI.addError(imagemValidade, alertaValidade, bundle.getString("validade.invalido"), bundle, conteudo); repaint(); } protected void addImageCpfValido() { FlightImageUI.add(imagemCpf, alertaCpf, bundle.getString("criar.pessoafisica.cpf.alerta.ok"), bundle, conteudo); repaint(); } protected void addImageCpfInvalido() { FlightImageUI.addError(imagemCpf, alertaCpf, bundle.getString("criar.pessoafisica.cpf.alerta.erro"), bundle, conteudo); repaint(); } protected void addImageNumeroParseException() { FlightImageUI.addError(imagemNumero, alertaNumero, bundle.getString("alerta.numero"), bundle, conteudo); repaint(); } protected void addImageCodigoParseException() { FlightImageUI.addError(imagemCodigo, alertaCodigo, bundle.getString("alerta.numero"), bundle, conteudo); repaint(); } protected void addMessageFailed() { JOptionPane.showMessageDialog(null, bundle.getString("cartao.erro"), bundle.getString("vender.passagem.pagamento.cartao"), JOptionPane.ERROR_MESSAGE); } // remove layout protected void removeImageNumeroParseException() { conteudo.remove(alertaNumero); conteudo.remove(imagemNumero); repaint(); } protected void removeImageCodigoParseException() { conteudo.remove(alertaCodigo); conteudo.remove(imagemCodigo); repaint(); } }