/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vue.terminal;
import controller.terminal.controller.data.BikeReturnSummary;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
*
* @author Valentin SEITZ
*/
public class TerminalReturnSummaryBikesPanel extends JPanel {
private List<TerminalReturnBikeSummaryPanel> bikeSummaryPanels;
public TerminalReturnSummaryBikesPanel(LayoutManager lm, boolean bln) {
super(lm, bln);
this.initialize();
}
public TerminalReturnSummaryBikesPanel(LayoutManager lm) {
super(lm);
this.initialize();
}
public TerminalReturnSummaryBikesPanel(boolean bln) {
super(bln);
this.initialize();
}
public TerminalReturnSummaryBikesPanel() {
this.initialize();
}
private void initialize() {
this.bikeSummaryPanels = new ArrayList<>();
}
public void setSummary(List<BikeReturnSummary> bikeRentSummaries) {
GridBagLayout gbl;
int[] rowHeights;
double[] rowWeights;
GridBagConstraints gbc;
TerminalReturnBikeSummaryPanel bikeSummaryPanel;
{//Remove old panels
for (TerminalReturnBikeSummaryPanel panel : this.bikeSummaryPanels) {
//From GUI
this.remove(panel);
}
//From panel list
this.bikeSummaryPanels.clear();
}
{//Add new Panels
//One panel per line
gbl = new GridBagLayout();
{//Layout settings
gbl.columnWidths = new int[]{0, 0};
gbl.columnWeights = new double[]{1.0, Double.MIN_VALUE};
{//Rows
rowHeights = new int[bikeRentSummaries.size() + 1];
rowWeights = new double[bikeRentSummaries.size() + 1];
for (int i = 0; i < bikeRentSummaries.size(); i++) {
rowHeights[i] = 0;
rowWeights[i] = 0.0;
}
rowHeights[bikeRentSummaries.size()] = 0;
rowWeights[bikeRentSummaries.size()] = Double.MIN_VALUE;
gbl.rowHeights = rowHeights;
gbl.rowWeights = rowWeights;
}
}
this.setLayout(gbl);
//As many panels as bike summaries
for (int i = 0; i < bikeRentSummaries.size(); i++) {
bikeSummaryPanel = new TerminalReturnBikeSummaryPanel(bikeRentSummaries.get(i));
{//Constraints
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, 0);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = i;
}
//Add to panel list
this.add(bikeSummaryPanel, gbc);
//Add to GUI
this.bikeSummaryPanels.add(bikeSummaryPanel);
}
}
this.validate();
}
private class TerminalReturnBikeSummaryPanel extends JPanel {
BikeReturnSummary summary;
//Fields
private JTextField txtInitialDuration;
private JLabel lblInitialDurationUnit;
private JTextField txtInitialAmount;
private JTextField txtFinalDuration;
private JLabel lblFinalDurationUnit;
private JTextField txtFinalAmount;
private JTextField txtToPayAmount;
public TerminalReturnBikeSummaryPanel(BikeReturnSummary summary, LayoutManager lm, boolean bln) {
super(lm, bln);
this.initialize(summary);
}
public TerminalReturnBikeSummaryPanel(BikeReturnSummary summary, LayoutManager lm) {
super(lm);
this.initialize(summary);
}
public TerminalReturnBikeSummaryPanel(BikeReturnSummary summary, boolean bln) {
super(bln);
this.initialize(summary);
}
public TerminalReturnBikeSummaryPanel(BikeReturnSummary summary) {
this.initialize(summary);
}
private void initialize(BikeReturnSummary summary) {
this.summary = summary;
GridBagLayout gbl;
GridBagConstraints gbc;
gbl = new GridBagLayout();
{
gbl.columnWidths = new int[]{2 * TerminalMainFrame.ROW_HEIGHT, 0, 2 * TerminalMainFrame.ROW_HEIGHT, 0, 2 * TerminalMainFrame.ROW_HEIGHT, 0, 0, 0};
gbl.rowHeights = new int[]{TerminalMainFrame.ROW_HEIGHT, TerminalMainFrame.ROW_HEIGHT, TerminalMainFrame.ROW_HEIGHT, 0};
gbl.columnWeights = new double[]{0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, Double.MIN_VALUE};
gbl.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
}
this.setLayout(gbl);
JLabel lblVeloN = new JLabel("Velo N\u00B0");
{//position
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridheight = 3;
gbc.insets = new Insets(0, TerminalMainFrame.HORIZONTAL_GAP, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 0;
gbc.gridy = 0;
}
this.add(lblVeloN, gbc);
JLabel lblInitial = new JLabel("Pr\u00E9vu");
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 1;
gbc.gridy = 0;
}
this.add(lblInitial, gbc);
txtInitialDuration = new JTextField();
{
txtInitialDuration.setEnabled(false);
txtInitialDuration.setColumns(10);
{//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 = 1;
}
}
this.add(txtInitialDuration, gbc);
this.lblInitialDurationUnit = new JLabel("");
{//Position
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 2;
gbc.gridy = 1;
}
this.add(this.lblInitialDurationUnit, gbc);
txtInitialAmount = new JTextField();
{
txtInitialAmount.setEnabled(false);
txtInitialAmount.setColumns(10);
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 1;
gbc.gridy = 2;
}
}
this.add(txtInitialAmount, gbc);
JLabel lblInitialEuro = new JLabel("\u20AC");
{//Position
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(0, 0, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 2;
gbc.gridy = 2;
}
this.add(lblInitialEuro, gbc);
JLabel lblFinal = new JLabel("R\u00E9el");
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 3;
gbc.gridy = 0;
}
this.add(lblFinal, gbc);
txtFinalDuration = new JTextField();
{
txtFinalDuration.setEnabled(false);
txtFinalDuration.setColumns(10);
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 3;
gbc.gridy = 1;
}
}
this.add(txtFinalDuration, gbc);
this.lblFinalDurationUnit = new JLabel("");
{//Position
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 4;
gbc.gridy = 1;
}
add(this.lblFinalDurationUnit, gbc);
txtFinalAmount = new JTextField();
{
txtFinalAmount.setEnabled(false);
txtFinalAmount.setColumns(10);
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 3;
gbc.gridy = 2;
}
}
this.add(txtFinalAmount, gbc);
JLabel lblFinalEuro = new JLabel("\u20AC");
{//Position
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(0, 0, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.gridx = 4;
gbc.gridy = 2;
}
this.add(lblFinalEuro, gbc);
JLabel lblAPayer = new JLabel("A payer");
{
lblAPayer.setFont(new Font("Tahoma", Font.PLAIN, 9));
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, TerminalMainFrame.VERTICAL_GAP, 0);
gbc.anchor = GridBagConstraints.SOUTH;
gbc.gridwidth = 2;
gbc.gridx = 5;
gbc.gridy = 1;
}
}
this.add(lblAPayer, gbc);
txtToPayAmount = new JTextField();
{
txtToPayAmount.setEnabled(false);
txtToPayAmount.setColumns(10);
{//Position
gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 0, TerminalMainFrame.HORIZONTAL_GAP);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 5;
gbc.gridy = 2;
}
}
this.add(txtToPayAmount, gbc);
JLabel lblToPayEuro = new JLabel("\u20AC");
{//Position
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 6;
gbc.gridy = 2;
}
this.add(lblToPayEuro, gbc);
this.setValues();
}
private void setValues() {
if (this.summary != null) {
this.txtInitialDuration.setText("" + this.summary.getInitialDuration());
this.lblInitialDurationUnit.setText(this.summary.getInitialDurationUnit());
this.txtInitialAmount.setText("" + this.summary.getInitialAmount());
this.txtFinalDuration.setText("" + this.summary.getFinalDuration());
this.lblFinalDurationUnit.setText(this.summary.getFinalDurationUnit());
this.txtFinalAmount.setText("" + this.summary.getFinalAmount());
this.txtToPayAmount.setText("" + this.summary.getAmountToPay());
}
}
}
}