1 19 package org.lucane.applications.calendar.widget.freebusy; 20 21 import java.awt.BorderLayout ; 22 import java.awt.Color ; 23 import java.awt.GridLayout ; 24 import java.awt.Point ; 25 import java.util.ArrayList ; 26 27 import javax.swing.JLabel ; 28 import javax.swing.JPanel ; 29 import javax.swing.JScrollPane ; 30 31 import org.lucane.applications.calendar.widget.CalendarListener; 32 33 public class FreeBusyPanel extends JPanel 34 { 35 public static final int HOUR_WIDTH = 48; 36 public static final int HEIGHT = 24; 37 38 private FreeBusyRuler ruler; 39 40 private JPanel labels; 41 private JPanel items; 42 private JScrollPane scrollpane; 43 44 private int workStart; 45 private int workEnd; 46 47 public FreeBusyPanel(int workStart, int workEnd, Color unworkedHour, Color workedHour) 48 { 49 this.workStart = workStart; 50 this.workEnd = workEnd; 51 52 GridLayout layout = new GridLayout (0, 1); 53 layout.setVgap(1); 54 this.labels = new JPanel (layout); 55 this.items = new JPanel (layout); 56 57 this.ruler = new FreeBusyRuler(workStart, workEnd, unworkedHour, workedHour); 58 59 resetLines(); 60 61 JPanel itemContainer = new JPanel (new BorderLayout ()); 62 itemContainer.add(items, BorderLayout.NORTH); 63 this.scrollpane = new JScrollPane (itemContainer); 64 65 JPanel labelContainer = new JPanel (new BorderLayout ()); 66 labelContainer.add(labels, BorderLayout.NORTH); 67 this.setLayout(new BorderLayout ()); 68 this.add(labelContainer, BorderLayout.WEST); 69 this.add(scrollpane, BorderLayout.CENTER); 70 } 71 72 public void addCalendarListener(CalendarListener listener) 73 { 74 ruler.addCalendarListener(listener); 75 } 76 77 public void removeCalendarListener(CalendarListener listener) 78 { 79 ruler.removeCalendarListener(listener); 80 } 81 82 public void resetLines() 83 { 84 labels.removeAll(); 85 items.removeAll(); 86 87 labels.add(new JLabel ()); 88 items.add(ruler); 89 } 90 91 public void addLine(String user, ArrayList events, boolean isMandatory, long startTime, long endTime) 92 { 93 labels.add(new FreeBusyLabel(user, isMandatory)); 94 items.add(new FreeBusyItem(events, workStart, workEnd, startTime, endTime)); 95 } 96 97 101 public void scrollToHour(int hour) 102 { 103 scrollpane.getViewport().setViewPosition(new Point (hour*HOUR_WIDTH-HOUR_WIDTH/2, 0)); 104 } 105 } | Popular Tags |