56 lines
1.4 KiB
Java
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();
|
|
}
|
|
}
|