package nl.fontys.sofa.limo.view.wizard.leg.normal; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JPanel; import javax.swing.JRadioButton; import nl.fontys.sofa.limo.api.service.provider.LegTypeService; import nl.fontys.sofa.limo.domain.component.type.LegType; import nl.fontys.sofa.limo.view.util.LIMOResourceBundle; import org.openide.util.Lookup; /** * Selection for new or from LegType panel * * @author Pascal Lindner */ public final class NewOrFromTypePanel extends JPanel { private ButtonGroup buttonGroup1; private JComboBox cmbLegType; private JRadioButton rbFromLegType; private JRadioButton rbFromScratch; private List<LegType> htl; public NewOrFromTypePanel() { initComponents(); } @Override public String getName() { return LIMOResourceBundle.getString("CREATE_LEG"); } private void initComponents() { buttonGroup1 = new ButtonGroup(); rbFromScratch = new JRadioButton(); rbFromLegType = new JRadioButton(); cmbLegType = new JComboBox(); setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1; c.gridx = 0; c.gridy = 0; buttonGroup1.add(rbFromScratch); rbFromScratch.setText(LIMOResourceBundle.getString("FROM_SCRATCH")); add(rbFromScratch, c); rbFromScratch.setSelected(true); buttonGroup1.add(rbFromLegType); rbFromLegType.setText(LIMOResourceBundle.getString("FROM_LEGTYPE")); c.weightx = 1; c.gridx = 0; c.gridy = 3; add(rbFromLegType, c); setActionListener(); LegTypeService legTypeService = Lookup.getDefault().lookup(LegTypeService.class); htl = legTypeService.findAll(); ArrayList<String> legTypeList = new ArrayList<>(); htl.stream().forEach((legType) -> { legTypeList.add(legType.getName()); }); cmbLegType.setModel(new DefaultComboBoxModel(legTypeList.toArray())); c.weightx = 1; c.gridx = 0; c.gridy = 4; add(cmbLegType, c); cmbLegType.setEnabled(false); if (htl.isEmpty()) { rbFromLegType.setEnabled(false); cmbLegType.setEditable(false); } } public void setActionListener() { rbFromScratch.addActionListener((ActionEvent e) -> { if (rbFromScratch.isSelected()) { cmbLegType.setEnabled(false); } }); rbFromLegType.addActionListener((ActionEvent e) -> { if (rbFromLegType.isSelected()) { cmbLegType.setEnabled(true); } }); } public LegType getLegType() { if (rbFromLegType.isSelected()) { return htl.get(cmbLegType.getSelectedIndex()); } else { return null; } } }