OOP-Projects-Java

Log | Files | Refs | README

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 }