package nl.fontys.sofa.limo.view.wizard.leg.scheduled; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.util.List; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import nl.fontys.sofa.limo.domain.component.leg.Leg; import nl.fontys.sofa.limo.domain.component.leg.ScheduledLeg; import nl.fontys.sofa.limo.view.custom.panel.AcceptanceTimePanel; import nl.fontys.sofa.limo.view.util.LIMOResourceBundle; import nl.fontys.sofa.limo.view.wizard.leg.normal.NormalLegWizardAction; /** * Panel to create ScheduledLeg * * @author Pascal Lindner */ public final class ScheduledLegPanel extends JPanel { private JPanel panelCenter; private AcceptanceTimePanel acceptancePanel; private JButton btnAddAlt; private JLabel lblAlt, lblExpected, lblWaiting, lblAltName, lblMessage; private JTextField tfExpected, tfWaiting; private Leg altLeg; public ScheduledLegPanel() { initComponents(); } @Override public String getName() { return LIMOResourceBundle.getString("SCHEDULE"); } private void initComponents() { panelCenter = new JPanel(); acceptancePanel = new AcceptanceTimePanel(); lblAlt = new JLabel(LIMOResourceBundle.getString("ALTERNATIVE")); lblMessage = new JLabel(LIMOResourceBundle.getString("VALUES_IN_MINUTES")); lblAltName = new JLabel(""); lblExpected = new JLabel(LIMOResourceBundle.getString("EXPECTED_TIME")); lblWaiting = new JLabel(LIMOResourceBundle.getString("WAITING_TIME")); tfExpected = new JTextField(); tfExpected.setText("0"); tfExpected.setMinimumSize(new Dimension(60, tfExpected.getHeight())); tfWaiting = new JTextField(); tfWaiting.setText("0"); btnAddAlt = new JButton(LIMOResourceBundle.getString("ADD")); setLayout(new BorderLayout()); setLayoutConstraints(); add(panelCenter, BorderLayout.CENTER); setActionListener(); add(acceptancePanel, BorderLayout.EAST); } public void update(long expectedTime, long waitingTime, List<Long> acceptanceTimes, Leg alternativeLeg) { tfExpected.setText("" + expectedTime); tfWaiting.setText("" + waitingTime); altLeg = alternativeLeg; remove(acceptancePanel); acceptancePanel = new AcceptanceTimePanel(acceptanceTimes); add(acceptancePanel, BorderLayout.EAST); if (altLeg != null) { lblAltName.setText(altLeg.getName()); btnAddAlt.setText(LIMOResourceBundle.getString("EDIT")); } } public ScheduledLeg getSchedueldLeg() { ScheduledLeg leg = new ScheduledLeg(); leg.setExpectedTime(Long.parseLong(tfExpected.getText().replace(",", "."))); leg.setWaitingTimeLimit(Long.parseLong(tfWaiting.getText().replace(",", "."))); List<Long> times = acceptancePanel.getAcceptanceTimes(); if (times.size() > 0) { leg.setAcceptanceTimes(times); } if (altLeg != null) { leg.setAlternative(altLeg); } return leg; } public long getExpcetedTime() { return Long.parseLong(tfExpected.getText().replace(",", ".")); } public long getWaitingTimeLimit() { return Long.parseLong(tfWaiting.getText().replace(",", ".")); } public List<Long> getAcceptanceTimes() { return acceptancePanel.getAcceptanceTimes(); } public Leg getAlternativeLeg() { return altLeg; } public void setActionListener() { btnAddAlt.addActionListener((ActionEvent e) -> { NormalLegWizardAction wiz = new NormalLegWizardAction((Leg leg) -> { altLeg = leg; lblAltName.setText(leg.getName()); btnAddAlt.setText(LIMOResourceBundle.getString("EDIT")); }); if (altLeg != null) { wiz.setUpdate(altLeg); } wiz.actionPerformed(e); }); } //SetLayoutConstraints public void setLayoutConstraints() { panelCenter.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 3; c.gridx = 0; c.gridy = 0; panelCenter.add(lblMessage, c); c.gridwidth = 1; c.gridx = 0; c.gridy = 1; panelCenter.add(lblExpected, c); c.gridx = 1; c.gridy = 1; c.gridwidth = 2; panelCenter.add(tfExpected, c); c.gridwidth = 1; c.gridx = 0; c.gridy = 2; panelCenter.add(lblWaiting, c); c.gridx = 1; c.gridy = 2; c.gridwidth = 2; panelCenter.add(tfWaiting, c); c.gridwidth = 1; c.gridx = 0; c.gridy = 3; panelCenter.add(lblAlt, c); c.gridwidth = 3; c.gridx = 0; c.gridy = 4; panelCenter.add(lblAltName, c); c.gridwidth = 2; c.gridx = 1; c.gridy = 3; panelCenter.add(btnAddAlt, c); } }