/*
* 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.voo;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.text.ParseException;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
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.base.Aeronave;
import br.com.moonjava.flight.util.AbstractFlightUI;
import br.com.moonjava.flight.util.FlightImageUI;
import br.com.moonjava.flight.util.GerarCodigo;
import br.com.moonjava.flight.util.JTextFieldLimit;
import br.com.moonjava.flight.util.RequestParamWrapper;
/**
* @version 1.0 Aug 17, 2012
* @contact tiago.aguiar@moonjava.com.br
*
*/
public abstract class CriarVooUI extends AbstractFlightUI {
private final JPanel conteudo;
protected final ResourceBundle bundle;
private final JButton atualizar;
private final JButton deletar;
private final JButton status;
private JLabel codigo;
private JTextField origem;
private JTextField destino;
private JTextField escala;
private JTextField partida;
private JTextField chegada;
private JComboBox aeronave;
private JComboBox timePartida;
private JComboBox timeChegada;
private JTextField preco;
private JButton cadastrar;
private JLabel imagemPartida;
private JLabel alertaPartida;
private JLabel imagemChegada;
private JLabel alertaChegada;
private JLabel imagemPreco;
private JLabel alertaPreco;
protected CriarVooUI(JPanel conteudo,
ResourceBundle bundle,
JButton atualizar,
JButton deletar,
JButton status) {
this.conteudo = conteudo;
this.bundle = bundle;
this.atualizar = atualizar;
this.deletar = deletar;
this.status = status;
disableButtons();
refresh();
mainMenu();
}
@Override
protected JPanel getConteudo() {
return conteudo;
}
protected abstract List<Aeronave> getList();
@Override
protected void mainMenu() {
atualizar.setEnabled(false);
deletar.setEnabled(false);
status.setEnabled(false);
conteudo.removeAll();
conteudo.validate();
conteudo.repaint();
JLabel tituloCodigo = new JLabel(bundle.getString("criar.voo.titulo.codigo"));
JLabel tituloOrigem = new JLabel(bundle.getString("criar.voo.titulo.origem"));
JLabel tituloDestino = new JLabel(bundle.getString("criar.voo.titulo.destino"));
JLabel tituloEscala = new JLabel(bundle.getString("criar.voo.titulo.escala"));
JLabel tituloPartida = new JLabel(bundle.getString("criar.voo.titulo.partida"));
JLabel tituloChegada = new JLabel(bundle.getString("criar.voo.titulo.chegada"));
JLabel tituloAeronave = new JLabel(bundle.getString("criar.voo.titulo.aeronave"));
JLabel tituloPreco = new JLabel(bundle.getString("criar.voo.titulo.preco"));
imagemPartida = new JLabel();
alertaPartida = new JLabel();
imagemChegada = new JLabel();
alertaChegada = new JLabel();
imagemPreco = new JLabel();
alertaPreco = new JLabel();
cadastrar = new JButton(bundle.getString("criar.voo.botao.cadastrar"));
String _codigo = new GerarCodigo("VOO").getCodigo();
codigo = new JLabel(_codigo);
origem = new JTextField();
destino = new JTextField();
preco = new JTextField();
escala = new JTextField();
aeronave = new JComboBox();
try {
chegada = new JFormattedTextField(new MaskFormatter("##/##/#### ##:##"));
partida = new JFormattedTextField(new MaskFormatter("##/##/#### ##:##"));
} catch (ParseException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage());
}
Vector<Aeronave> vector = new Vector<Aeronave>(getList());
DefaultComboBoxModel model = new DefaultComboBoxModel(vector);
aeronave.setModel(model);
origem.setDocument(new JTextFieldLimit(40));
destino.setDocument(new JTextFieldLimit(40));
escala.setDocument(new JTextFieldLimit(40));
tituloCodigo.setBounds(60, 70, 200, 30);
tituloOrigem.setBounds(60, 110, 200, 30);
tituloDestino.setBounds(60, 150, 200, 30);
tituloEscala.setBounds(60, 190, 200, 30);
tituloPartida.setBounds(60, 230, 200, 30);
tituloChegada.setBounds(60, 270, 200, 30);
tituloAeronave.setBounds(60, 310, 200, 30);
tituloPreco.setBounds(60, 350, 200, 30);
imagemPartida.setBounds(400, 230, 500, 30);
alertaPartida.setBounds(430, 230, 500, 30);
imagemChegada.setBounds(400, 270, 200, 30);
alertaChegada.setBounds(430, 270, 500, 30);
imagemPreco.setBounds(400, 350, 200, 30);
alertaPreco.setBounds(430, 350, 400, 30);
codigo.setBounds(180, 70, 200, 30);
origem.setBounds(180, 110, 200, 30);
destino.setBounds(180, 150, 200, 30);
escala.setBounds(180, 190, 200, 30);
partida.setBounds(180, 230, 200, 30);
chegada.setBounds(180, 270, 200, 30);
aeronave.setBounds(180, 310, 200, 30);
preco.setBounds(180, 350, 200, 30);
cadastrar.setBounds(205, 390, 150, 30);
conteudo.add(tituloCodigo);
conteudo.add(tituloOrigem);
conteudo.add(tituloDestino);
conteudo.add(tituloEscala);
conteudo.add(tituloPartida);
conteudo.add(tituloChegada);
conteudo.add(tituloAeronave);
conteudo.add(tituloPreco);
conteudo.add(alertaPartida);
conteudo.add(imagemPartida);
conteudo.add(alertaChegada);
conteudo.add(imagemChegada);
conteudo.add(alertaPreco);
conteudo.add(imagemPreco);
conteudo.add(codigo);
conteudo.add(origem);
conteudo.add(destino);
conteudo.add(escala);
conteudo.add(partida);
conteudo.add(chegada);
conteudo.add(aeronave);
conteudo.add(preco);
conteudo.add(cadastrar);
if (getCountry().equals("US")) {
alertaPartida.setBounds(450, 230, 500, 30);
String[] ampm = {
"AM",
"PM" };
timePartida = new JComboBox(ampm);
timeChegada = new JComboBox(ampm);
timePartida.setBounds(385, 235, 60, 20);
timeChegada.setBounds(385, 275, 60, 20);
conteudo.add(timePartida);
conteudo.add(timeChegada);
}
conteudo.repaint();
conteudo.validate();
}
protected String getCountry() {
return bundle.getString("country");
}
protected void addFocusDataPartidaListener(FocusListener a) {
partida.addFocusListener(a);
}
protected void addFocusDataChegadaListener(FocusListener a) {
chegada.addFocusListener(a);
}
protected void addFocusPrecoListener(FocusListener a) {
preco.addFocusListener(a);
}
protected void addCadastrarListener(ActionListener a) {
cadastrar.addActionListener(a);
}
protected RequestParamWrapper getParameters() {
RequestParamWrapper request = new RequestParamWrapper();
Aeronave _aeronave = (Aeronave) aeronave.getSelectedItem();
request.set("preco", preco.getText());
request.set("codigo", codigo.getText());
request.set("origem", origem.getText());
request.set("destino", destino.getText());
request.set("escala", escala.getText());
request.set("partida", partida.getText());
request.set("chegada", chegada.getText());
request.set("aeronave", _aeronave.getId());
request.set("assentoLivre", _aeronave.getQtdDeAssento());
if (getCountry().equals("US")) {
request.set("timePartida", timePartida.getSelectedItem());
request.set("timeChegada", timeChegada.getSelectedItem());
}
return request;
}
protected void addImagePartidaValid() {
FlightImageUI.add(imagemPartida, alertaPartida,
bundle.getString("validade.valido"), bundle, conteudo);
repaint();
}
protected void addImageChegadaValid() {
FlightImageUI.add(imagemChegada, alertaChegada,
bundle.getString("validade.valido"), bundle, conteudo);
repaint();
}
protected void addImagePartidaInvalid() {
FlightImageUI.addError(imagemPartida, alertaPartida,
bundle.getString("validade.invalido"), bundle, conteudo);
repaint();
}
protected void addImageChegadaInvalid() {
FlightImageUI.addError(imagemChegada, alertaChegada,
bundle.getString("alerta.data"), bundle, conteudo);
repaint();
}
protected void messageOK() {
JOptionPane.showMessageDialog(null,
bundle.getString("criar.voo.joption.ok"),
bundle.getString("criar.voo.joption.titulo"),
JOptionPane.INFORMATION_MESSAGE);
refresh();
}
protected void messagePrecoOk() {
conteudo.remove(imagemPreco);
conteudo.remove(alertaPreco);
repaint();
}
protected void messagePrecoParseExecption() {
FlightImageUI.addError(imagemPreco, alertaPreco,
bundle.getString("criar.voo.erro.preco"), bundle, conteudo);
repaint();
}
protected void messageFailed() {
JOptionPane.showMessageDialog(null,
bundle.getString("criar.voo.joption.tempo"),
bundle.getString("criar.voo.joption.titulo"),
JOptionPane.ERROR_MESSAGE);
}
protected void addMessageFailed() {
JOptionPane.showMessageDialog(null,
bundle.getString("dadoincorreto"),
"flight",
JOptionPane.ERROR_MESSAGE);
}
protected void disableButtons() {
atualizar.setEnabled(false);
deletar.setEnabled(false);
}
}