1 19 package org.lucane.applications.calendar.widget.freebusy; 20 21 import java.awt.Color ; 22 import java.awt.Dimension ; 23 import java.awt.Graphics ; 24 import java.util.ArrayList ; 25 import java.util.Iterator ; 26 27 import javax.swing.JPanel ; 28 29 import org.lucane.applications.calendar.widget.BasicEvent; 30 31 public class FreeBusyItem extends JPanel 32 { 33 private ArrayList events; 34 private int workStart; 35 private int workEnd; 36 private long startTime; 37 private long endTime; 38 39 public FreeBusyItem(ArrayList events, int workStart, int workEnd, long startTime, long endTime) 40 { 41 this.events = events; 42 this.workStart = workStart; 43 this.workEnd = workEnd; 44 this.startTime = startTime; 45 this.endTime = endTime; 46 47 setPreferredSize(new Dimension (24*FreeBusyPanel.HOUR_WIDTH, FreeBusyPanel.HEIGHT)); 48 49 setOpaque(true); 50 setBackground(Color.WHITE); 51 } 52 53 protected void paintComponent(Graphics g) 54 { 55 super.paintComponent(g); 56 57 g.setColor(Color.LIGHT_GRAY); 59 for(int i=0;i<24;i++) 60 { 61 int x = i*FreeBusyPanel.HOUR_WIDTH; 62 g.drawLine(x, 0, x, FreeBusyPanel.HEIGHT); 63 } 64 65 g.setColor(Color.RED); 67 int xStart = workStart*FreeBusyPanel.HOUR_WIDTH; 68 g.drawLine(xStart, 0, xStart, FreeBusyPanel.HEIGHT); 69 int xEnd = workEnd*FreeBusyPanel.HOUR_WIDTH; 70 g.drawLine(xEnd, 0, xEnd, FreeBusyPanel.HEIGHT); 71 72 Iterator events = this.events.iterator(); 74 while(events.hasNext()) 75 paintEvent(g, (BasicEvent)events.next()); 76 } 77 78 private void paintEvent(Graphics g, BasicEvent e) 79 { 80 int hour = e.getStartHour(); 81 int minute = e.getStartMinute(); 82 int start = hour*FreeBusyPanel.HOUR_WIDTH + minute*FreeBusyPanel.HOUR_WIDTH/60; 83 if(e.getStartDate().getTime() < startTime) 84 start = 0; 85 86 hour = e.getEndHour(); 87 minute = e.getEndMinute(); 88 int end = hour*FreeBusyPanel.HOUR_WIDTH + minute*FreeBusyPanel.HOUR_WIDTH/60; 89 if(e.getEndDate().getTime() > endTime) 90 end = FreeBusyPanel.HOUR_WIDTH*24; 91 92 g.setColor(e.getColor()); 93 g.fillRect(start, 0, end-start, FreeBusyPanel.HEIGHT); 94 } 95 } | Popular Tags |