WorkTask.java (3289B)
1 package assignment2; 2 3 4 import java.awt.BorderLayout; 5 import java.awt.Color; 6 import java.awt.Component; 7 import java.awt.Dimension; 8 import java.awt.GridLayout; 9 import java.awt.event.ActionEvent; 10 import java.awt.event.ActionListener; 11 12 import javax.swing.JButton; 13 import javax.swing.JCheckBox; 14 import javax.swing.JLabel; 15 import javax.swing.JOptionPane; 16 import javax.swing.JPanel; 17 import javax.swing.JTextField; 18 import javax.swing.border.TitledBorder; 19 20 import se.his.it401g.todo.Task; 21 import se.his.it401g.todo.TaskInputListener; 22 import se.his.it401g.todo.TaskListener; 23 24 /** 25 * Implements a simple work task type, following the Task.java interface class. 26 * 27 * This file licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons (CC) BY 4.0 license</a>. 28 * 29 * @author Dr. Erik Billing, University of Skovde 30 * 31 */ 32 33 // Custom task 34 public class WorkTask extends JPanel implements Task { 35 36 /** 37 * The editable text field. 38 */ 39 private JTextField text; 40 41 /* 42 * Titled border 43 */ 44 private TitledBorder border; 45 46 /** 47 * The non editable text label. 48 */ 49 private JLabel textLabel; 50 51 /** 52 * Check box holding the completion status. 53 */ 54 JCheckBox completed = new JCheckBox(); 55 56 //comment 57 JPanel colourBlock = new JPanel(); 58 59 /** 60 * The task listener used for reporting changes to the main application. 61 */ 62 private TaskListener listener; 63 64 /** 65 * This is the constructor for the task, initiating the GUI component for the task. Several listeners are used to react to various events in the GUI. 66 */ 67 public WorkTask(String color) { 68 super(new BorderLayout()); 69 this.text = new JTextField("New task",20); 70 this.textLabel = new JLabel(); 71 this.textLabel.setVisible(false); 72 JPanel center = new JPanel(); 73 center.add(text); 74 center.add(textLabel); 75 add(center); 76 77 TaskInputListener inputListener = new TaskInputListener(this, text, textLabel); 78 this.text.addKeyListener(inputListener); 79 this.textLabel.addMouseListener(inputListener); 80 81 JButton remove = new JButton("Remove"); 82 add(remove,BorderLayout.EAST); 83 remove.addActionListener(inputListener); 84 85 add(completed,BorderLayout.WEST); 86 completed.addItemListener(inputListener); 87 88 setMaximumSize(new Dimension(1000,50)); 89 this.border = new TitledBorder(getTaskType()); 90 setBorderTextColour(color); 91 setBorder(border); 92 } 93 94 @Override 95 public String getText() { 96 return text.getText(); 97 } 98 99 @Override 100 public String getTaskType() { 101 return "Work"; 102 } 103 104 @Override 105 public void setTaskListener(TaskListener t) { 106 listener = t; 107 } 108 109 @Override 110 public TaskListener getTaskListener() { 111 return listener; 112 } 113 114 @Override 115 public boolean isComplete() { 116 // set strikethrough on text when iscomplete is true. 117 118 return completed.isSelected(); 119 } 120 121 @Override 122 public Component getGuiComponent() { 123 // Since this class extends JPanel, it is itself a GUI component, and thus we can return "this". 124 return this; 125 } 126 127 128 private void setBorderTextColour(String colour) { 129 switch(colour) { 130 case "BLACK": 131 border.setTitleColor(Color.black); 132 break; 133 case "RED": 134 border.setTitleColor(Color.red); 135 break; 136 case "BLUE": 137 border.setTitleColor(Color.blue); 138 break; 139 case "GREEN": 140 border.setTitleColor(Color.green); 141 break; 142 default: 143 break; 144 } 145 } 146 147 }