todoapp/src/main/java/de/dhsn/oop/ui/TodoItemPanel.java
2025-06-13 02:26:45 +02:00

56 lines
1.4 KiB
Java

package de.dhsn.oop.ui;
import de.dhsn.oop.data.TodoItem;
import de.dhsn.oop.data.TodoList;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TodoItemPanel extends JPanel implements ActionListener {
private TodoItem item;
private TodoList list;
private TodoListView view;
public TodoItemPanel(TodoItem i, TodoList l, TodoListView v){
item = i;
list = l;
view = v;
setLayout(new BorderLayout());
JCheckBox cb = new JCheckBox();
cb.setSelected(item.isDone());
cb.addActionListener(this);
add(cb, BorderLayout.LINE_START);
JLabel title = new JLabel(item.title);
add(title, BorderLayout.CENTER);
JButton delete = new JButton("X");
delete.addActionListener(this::deletePressed);
add(delete, BorderLayout.LINE_END);
setVisible(true);
}
/**
* checkbox action listener for done state of item
* @param e the event to be processed
*/
@Override
public void actionPerformed(ActionEvent e) {
item.setDone(((JCheckBox)(e.getSource())).isSelected());
}
/**
* delete item button callback function
* the current item has to be rmeoved from the list
* @param e
*/
public void deletePressed(ActionEvent e) {
list.getList().remove(item);
view.forceRerender();
}
}