/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vue.terminal;
import controller.terminal.controller.TerminalController;
import controller.terminal.controller.TerminalReturnController;
import controller.terminal.interfacesGUI.TerminalReturn;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Set;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
/**
*
* @author Valentin SEITZ
*/
public class TerminalReturnPanel extends AbstractTerminalPanel implements TerminalReturn {
//Content
JComboBox cboNbBikes;
JScrollPane scrollPane;
TerminalReturnBikesPanel panelBikes;
//Actions
private JButton btnReturn;
public TerminalReturnPanel(LayoutManager lm, boolean bln) {
super(lm, bln);
initialize();
}
public TerminalReturnPanel(LayoutManager lm) {
super(lm);
initialize();
}
public TerminalReturnPanel(boolean bln) {
super(bln);
initialize();
}
public TerminalReturnPanel() {
initialize();
}
private void initialize() {
GridBagConstraints gbc;
{//content
GridBagLayout gbl = new GridBagLayout();
{
gbl.columnWidths = new int[]{0, 0, 0};
gbl.rowHeights = new int[]{TerminalMainFrame.ROW_HEIGHT, 0, 0};
gbl.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
gbl.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
}
this.getPanelContent().setLayout(gbl);
JLabel lblNombreDeVelos = new JLabel("Nombre de velos a rendre");
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, TerminalMainFrame.HORIZONTAL_GAP, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 0;
}
this.getPanelContent().add(lblNombreDeVelos, gbc);
this.cboNbBikes = new JComboBox();
{
this.cboNbBikes.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent ie) {
if (cboNbBikes.getModel().getSize() > 0) {
panelBikes.setBikeQuantity(((Integer) cboNbBikes.getSelectedItem()).intValue());
} else {
panelBikes.setBikeQuantity(0);
}
scrollPane.validate();
scrollPane.repaint();
}
});
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 1;
gbc.gridy = 0;
}
}
this.getPanelContent().add(this.cboNbBikes, gbc);
this.panelBikes = new TerminalReturnBikesPanel();
this.scrollPane = new JScrollPane();
{
this.scrollPane.setWheelScrollingEnabled(true);
//The view port contains the panel which allows to handle bikes
this.scrollPane.setViewportView(this.panelBikes);
{//Position
gbc = new GridBagConstraints();
gbc.gridwidth = 2;
gbc.insets = new Insets(0, TerminalMainFrame.HORIZONTAL_GAP, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 1;
}
}
this.getPanelContent().add(this.scrollPane, gbc);
}
{//Actions
this.getPanelActions().setLayout(new GridLayout(1, 1));
this.btnReturn = new JButton("Rendre");
{
this.btnReturn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
Set bikeSerialNumbers;
bikeSerialNumbers = panelBikes.getBikeSerialNumbers();
if (bikeSerialNumbers.size() == panelBikes.getBikeQuantity()) {
TerminalReturnController.getTerminalReturnController().doReturn(bikeSerialNumbers);
} else {
TerminalController.getMainVue().showWarning("Vous avez séléctionné des numéros de vélos en double.");
}
}
});
}
this.getPanelActions().add(this.btnReturn);
}
}
@Override
public void init() {
this.cboNbBikes.removeAllItems();
for (int i = 1; i <= TerminalReturnController.getTerminalReturnController().getMaxAvailableStorages(); i++) {
this.cboNbBikes.addItem(new Integer(i));
}
panelBikes.setBikeQuantity(1);
scrollPane.validate();
}
}