package nl.fontys.sofa.limo.view.wizard.event;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import nl.fontys.sofa.limo.domain.component.event.Event;
import nl.fontys.sofa.limo.domain.component.event.ExecutionState;
import nl.fontys.sofa.limo.view.custom.panel.EventsPanel;
import nl.fontys.sofa.limo.view.util.LIMOResourceBundle;
/**
* Panel which extends the EventsPanel for the adding of events. The added
* events are sub events of the event which should be created or edited.
*
* @author Sven Mäurer
*/
public class SubEventsPanel extends EventsPanel {
private Event event;
public SubEventsPanel() {
super();
List<String> events = new ArrayList<>();
addButton.setEnabled(!allEvents.isEmpty());
allEvents.stream().filter((e) -> (event == null || (event != null && !e.getId().equals(event.getId())))).forEach((e) -> {
events.add(e.getName());
});
eventsComboBoxModel = new DefaultComboBoxModel(events.toArray());
eventsComboBox.setModel(eventsComboBoxModel);
}
/**
* Retrieve the selected event from the combo box and add it to the table.
*/
@Override
protected void setAddButtonListener() {
addButton.addActionListener((ActionEvent e) -> {
Event selected = null;
for (Event allEvent : allEvents) {
if (((String) eventsComboBox.getSelectedItem()).equals(allEvent.getName())) {
selected = service.findById(allEvent.getId());
break;
}
}
if (selected != null) {
selected.setId(null);
selected.setDependency(ExecutionState.INDEPENDENT);
eventsTableModel.getEvents().add(selected);
eventsTableModel.fireTableDataChanged();
setTableAndCheckbox();
checkButtonsState();
}
});
deleteButton.addActionListener((ActionEvent e) -> {
setTableAndCheckbox();
});
}
@Override
protected void setTableModel() {
}
public void update(Event event) {
this.event = event;
update(event.getEvents());
}
@Override
public String getName() {
return LIMOResourceBundle.getString("SUB_EVENTS");
}
}