/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.sparkimpl.plugin.scratchpad;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.font.TextAttribute;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.jdesktop.swingx.calendar.DateUtils;
import org.jivesoftware.resource.SparkRes;
/**
*
*/
public class TaskUI extends JPanel implements ActionListener {
private static final long serialVersionUID = -8443764502684168188L;
private Task task;
private JCheckBox box;
private String dateShortFormat = ((SimpleDateFormat)SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT)).toPattern();
public TaskUI(final Task task) {
setLayout(new BorderLayout());
setOpaque(false);
this.task = task;
box = new JCheckBox();
box.setOpaque(false);
JLabel dueLabel = new JLabel();
dueLabel.setOpaque(false);
JPanel p_east = new JPanel(new BorderLayout());
p_east.setBackground(Color.white);
JLabel btn_del = new JLabel(SparkRes.getImageIcon(SparkRes.TASK_DELETE_IMAGE));
p_east.add(btn_del, BorderLayout.EAST);
p_east.add(new JLabel(" "), BorderLayout.CENTER);
p_east.add(dueLabel, BorderLayout.WEST);
add(box, BorderLayout.WEST);
//add(dueLabel, BorderLayout.EAST);
add(p_east, BorderLayout.EAST);
long dueDate = task.getDueDate();
if (dueDate != -1) {
Date d = new Date(dueDate);
SimpleDateFormat formatter = new SimpleDateFormat(dateShortFormat);
String theDate = formatter.format(d);
dueLabel.setText(theDate);
}
int diff = DateUtils.getDaysDiff(dueDate, new Date().getTime());
if (diff > 0){
dueLabel.setForeground(Color.red);
}
box.setText(task.getTitle());
updateTitleFont();
box.addActionListener(this);
btn_del.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
Tasks.deleteTask(task);
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
});
}
public boolean isSelected() {
return box.isSelected();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void updateTitleFont() {
if (task.isCompleted()) {
Font font = box.getFont();
Map attribs = font.getAttributes();
attribs.put(TextAttribute.STRIKETHROUGH, true);
box.setFont(new Font(attribs));
box.setSelected(true);
}
else {
Font font = box.getFont();
Map Attribs = font.getAttributes();
Attribs.put(TextAttribute.STRIKETHROUGH, false);
box.setFont(new Font(Attribs));
box.setSelected(false);
}
}
public void actionPerformed(ActionEvent e) {
if (isSelected()) {
task.setCompleted(true);
}
else {
task.setCompleted(false);
}
updateTitleFont();
if (ScratchPadPlugin.SHOW_ALL_TASKS) {
setVisible(true);
}
else if (task.isCompleted()) {
setVisible(false);
}
}
public Task getTask() {
return task;
}
}