tasknotification.java.svn-base
来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 117 行
SVN-BASE
117 行
/** * $Revision$ * $Date$ * * Copyright (C) 1999-2005 Jive Software. All rights reserved. * This software is the proprietary information of Jive Software. Use is subject to license terms. */package org.jivesoftware.sparkimpl.plugin.scratchpad;import org.jivesoftware.spark.SparkManager;import org.jivesoftware.spark.component.VerticalFlowLayout;import org.jivesoftware.spark.util.TaskEngine;import org.jivesoftware.sparkimpl.plugin.alerts.SparkToaster;import javax.swing.BorderFactory;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Graphics;import java.awt.Graphics2D;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.TimerTask;/** * */public class TaskNotification { private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy"); public TaskNotification() { TimerTask task = new TimerTask() { public void run() { notifyUser(); } }; long twoHours = (60 * 1000) * 120; TaskEngine.getInstance().scheduleAtFixedRate(task, (10 * 1000), twoHours); } private void notifyUser() { final JPanel mainPanel = new JPanel(); mainPanel.setLayout(new VerticalFlowLayout(VerticalFlowLayout.TOP, 0, 0, true, false)); mainPanel.setBackground(Color.white); long now = System.currentTimeMillis(); Tasks tasks = Tasks.getTaskList(SparkManager.getConnection()); Iterator taskIter = tasks.getTasks().iterator(); final JPanel titlePanel = new JPanel(new BorderLayout()) { public void paintComponent(Graphics g) { Color startColor = Color.white; Color endColor = new Color(198, 211, 247); Graphics2D g2 = (Graphics2D)g; int w = getWidth(); int h = getHeight(); GradientPaint gradient = new GradientPaint(0, 0, startColor, w, h, endColor, true); g2.setPaint(gradient); g2.fillRect(0, 0, w, h); } }; final JLabel taskLabel = new JLabel("Due "); taskLabel.setFont(taskLabel.getFont().deriveFont(Font.BOLD)); titlePanel.add(taskLabel, BorderLayout.EAST); mainPanel.add(titlePanel); boolean hasItems = false; while (taskIter.hasNext()) { Task task = (Task)taskIter.next(); if (task.isCompleted()) { continue; } long dueDate = task.getDueDate(); if (dueDate != -1) { if (now > dueDate) { final JPanel item = new JPanel(new BorderLayout()); item.setOpaque(false); JLabel label = new JLabel(task.getTitle()); item.add(label, BorderLayout.CENTER); JLabel dueItem = new JLabel(formatter.format(new Date(task.getDueDate()))); item.add(dueItem, BorderLayout.EAST); mainPanel.add(item); hasItems = true; } } } if (hasItems) { SparkToaster toaster = new SparkToaster(); toaster.setDisplayTime(30000); toaster.setToasterHeight(175); toaster.setToasterWidth(300); toaster.setBorder(BorderFactory.createBevelBorder(0)); JScrollPane pane = new JScrollPane(mainPanel); pane.getViewport().setBackground(Color.white); toaster.showToaster("Task Notification", pane); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?