/*
* 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.controller.base;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import java.util.ResourceBundle;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import br.com.moonjava.flight.model.base.Aeronave;
import br.com.moonjava.flight.model.base.AeronaveModel;
import br.com.moonjava.flight.util.RequestParamWrapper;
import br.com.moonjava.flight.view.aeronave.ConsultarAeronaveUI;
/**
* @version 1.0 Aug 29, 2012
* @contact tiago.aguiar@moonjava.com.br
*
*/
public class ConsultarAeronaveController extends ConsultarAeronaveUI {
private final JPanel conteudo;
private final ResourceBundle bundle;
private final JButton atualizar;
private final JButton deletar;
private List<Aeronave> list;
public ConsultarAeronaveController(JPanel subConteudo,
ResourceBundle bundle,
JButton atualizar,
JButton deletar) {
super(subConteudo, bundle, atualizar, deletar);
this.conteudo = subConteudo;
this.bundle = bundle;
this.atualizar = atualizar;
this.deletar = deletar;
addConsultarListener(new ConsultarHandler());
addShowSeatMapListener(new SeatMapHandler());
addItemTableSelectedListener(new ItemTableSelectedHandler());
}
private class ConsultarHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
RequestParamWrapper request = getParameters();
Aeronave aeronave = new AeronaveModel();
list = aeronave.consultar(request);
// Exibe vôos na tabela
boolean isEmpty = showList(list);
if (isEmpty) {
messageFailed();
} else {
addButtonMapa();
}
}
}
private class SeatMapHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int index = getTable().getSelectedRow();
try {
// Carrega imagem do mapa de assento de acordo
// com o indice na tabela
Aeronave aeronave = list.get(index);
String pathFile = String.format("airplanes/%s.jpg", aeronave.getNome());
showSeatMap(pathFile);
} catch (IndexOutOfBoundsException e2) {
messageSeatMapFailed();
}
}
}
private class ItemTableSelectedHandler extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
enableButtons();
JTable tabela = getTable();
// Os controladores de Deletar e Atualizar
// são objetos Singleton pois a cada evento (mouseClicked)
// um objeto seria instanciado, ocasionando a ação
// dos JOptionPane (definidos nestas classes) mais de uma vez.
// Ex.: Deletar mais de um item sem um Singleton executará a JOptionPane
// em questão a mesma quantidade de clicks (isso porque o HashCode de cada
// objeto é diferente). Com Singleton, isso não ocorrerá porque há somente
// um HashCode, logo, há somente um JOptionPane.
DeletarAeronaveController delete = DeletarAeronaveController.getInstance();
delete.setAttributes(tabela, conteudo, bundle, atualizar, deletar);
delete.setResult(false);
delete.setList(list);
AtualizarAeronaveController atualiza = AtualizarAeronaveController.getInstance();
atualiza.setAttributes(tabela, conteudo, bundle, atualizar, deletar);
atualiza.setResult(false);
atualiza.setList(list);
}
}
}