View Javadoc

1   /*
2    *  File: SwingCalendarExample.java 
3    *  Copyright (c) 2004-2007  Peter Kliem (Peter.Kliem@jaret.de)
4    *  A commercial license is available, see http://www.jaret.de.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation; either version 2 of the License, or
9    *  (at your option) any later version.
10   *
11   *  This program is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   *  GNU General Public License for more details.
15   *
16   *  You should have received a copy of the GNU General Public License
17   *  along with this program; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */
20  package de.jaret.examples.timebars.calendar.swing;
21  
22  import java.awt.BorderLayout;
23  
24  import javax.swing.JFrame;
25  
26  import de.jaret.examples.timebars.calendar.model.Appointment;
27  import de.jaret.examples.timebars.calendar.model.AppointmentModificator;
28  import de.jaret.examples.timebars.calendar.model.CalendarModel;
29  import de.jaret.examples.timebars.calendar.model.ModelCreator;
30  import de.jaret.examples.timebars.calendar.swing.renderer.AppointmentRenderer;
31  import de.jaret.examples.timebars.calendar.swing.renderer.CalendarGridRenderer;
32  import de.jaret.util.date.IntervalImpl;
33  import de.jaret.util.date.JaretDate;
34  import de.jaret.util.ui.timebars.TimeBarViewerInterface;
35  import de.jaret.util.ui.timebars.mod.DefaultIntervalModificator;
36  import de.jaret.util.ui.timebars.model.DefaultRowHeader;
37  import de.jaret.util.ui.timebars.model.DefaultTimeBarModel;
38  import de.jaret.util.ui.timebars.model.DefaultTimeBarRowModel;
39  import de.jaret.util.ui.timebars.model.TimeBarModel;
40  import de.jaret.util.ui.timebars.swing.TimeBarViewer;
41  import de.jaret.util.ui.timebars.swing.renderer.OldDefaultTimeScaleRenderer;
42  
43  /***
44   * Swing: the swing version of the calendar example (without drag and drop).
45   * 
46   * @author Peter Kliem
47   * @version $Id: SwingCalendarExample.java 1104 2012-02-07 22:03:30Z kliem $
48   */
49  public class SwingCalendarExample {
50      static TimeBarViewer _tbv;
51      
52      public static void main(String[] args) {
53          JFrame f = new JFrame(SwingCalendarExample.class.getName());
54          f.setSize(800, 500);
55          f.getContentPane().setLayout(new BorderLayout());
56          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
57  
58          TimeBarModel model = ModelCreator.createCalendarModel();;
59          _tbv = new TimeBarViewer(model);
60  
61          _tbv.addIntervalModificator(new DefaultIntervalModificator());
62  
63          _tbv.setPixelPerSecond(0.018);
64          _tbv.setDrawRowGrid(true);
65  
66          _tbv.setSelectionDelta(6);
67          // this is the col width!
68          _tbv.setRowHeight(150);
69          
70          _tbv.setTBOrientation(TimeBarViewerInterface.Orientation.VERTICAL);
71          // vertical: the y axiswidth is the height of the row headers!
72          _tbv.setYAxisWidth(20);
73          
74          // do not adjust the displayed time according to the model 
75          // use the basedate day!
76          _tbv.setAdjustMinMaxDatesByModel(false);
77          _tbv.setMinDate(CalendarModel.BASEDATE.copy());
78          _tbv.setMaxDate(CalendarModel.BASEDATE.copy().advanceDays(1));
79  
80          _tbv.setDrawOverlapping(false);
81          _tbv.setSelectionDelta(6);
82          _tbv.setTimeScalePosition(TimeBarViewerInterface.TIMESCALE_POSITION_TOP);
83  
84          // modifications are restricted
85          _tbv.addIntervalModificator(new AppointmentModificator());
86  
87          _tbv.setTimeScaleRenderer(new OldDefaultTimeScaleRenderer());
88          
89          _tbv.setGridRenderer(new CalendarGridRenderer());
90          
91          _tbv.registerTimeBarRenderer(Appointment.class, new AppointmentRenderer());
92    
93          
94          
95          f.getContentPane().add(_tbv, BorderLayout.CENTER);
96  
97          f.getContentPane().add(new CalendarControlPanel(_tbv), BorderLayout.SOUTH);
98          
99          f.setVisible(true);
100 
101 
102     }
103     public static TimeBarModel createModel() {
104         DefaultTimeBarModel model = new DefaultTimeBarModel();
105 
106         JaretDate date = new JaretDate();
107 
108         int length = 120;
109 
110         DefaultRowHeader header = new DefaultRowHeader("r1");
111         DefaultTimeBarRowModel tbr = new DefaultTimeBarRowModel(header);
112         IntervalImpl interval = new IntervalImpl();
113         interval.setBegin(date.copy());
114         interval.setEnd(date.copy().advanceMinutes(length));
115         tbr.addInterval(interval);
116 
117         interval = new IntervalImpl();
118         interval.setBegin(date.copy().advanceMinutes(30));
119         interval.setEnd(date.copy().advanceMinutes(length));
120         tbr.addInterval(interval);
121 
122         interval = new IntervalImpl();
123         interval.setBegin(date.copy().advanceMinutes(60));
124         interval.setEnd(interval.getBegin().copy().advanceMinutes(length));
125         tbr.addInterval(interval);
126 
127         model.addRow(tbr);
128 
129         header = new DefaultRowHeader("r2");
130         tbr = new DefaultTimeBarRowModel(header);
131         interval = new IntervalImpl();
132         interval.setBegin(date.copy());
133         interval.setEnd(date.copy().advanceMinutes(length));
134         tbr.addInterval(interval);
135 
136         interval = new IntervalImpl();
137         interval.setBegin(date.copy().advanceMinutes(120));
138         interval.setEnd(date.copy().advanceMinutes(length + length));
139         tbr.addInterval(interval);
140 
141         model.addRow(tbr);
142 
143         header = new DefaultRowHeader("r3");
144         tbr = new DefaultTimeBarRowModel(header);
145         interval = new IntervalImpl();
146         interval.setBegin(date.copy());
147         interval.setEnd(date.copy().advanceMinutes(length));
148         tbr.addInterval(interval);
149 
150         interval = new IntervalImpl();
151         interval.setBegin(date.copy().advanceMinutes(30));
152         interval.setEnd(date.copy().advanceMinutes(length));
153         tbr.addInterval(interval);
154 
155         interval = new IntervalImpl();
156         interval.setBegin(date.copy().advanceMinutes(60));
157         interval.setEnd(interval.getBegin().copy().advanceMinutes(length));
158         tbr.addInterval(interval);
159 
160         interval = new IntervalImpl();
161         interval.setBegin(date.copy().advanceMinutes(90));
162         interval.setEnd(interval.getBegin().copy().advanceMinutes(length));
163         tbr.addInterval(interval);
164 
165         model.addRow(tbr);
166 
167         // add some empty rows for drag&drop fun
168         header = new DefaultRowHeader("r4");
169         tbr = new DefaultTimeBarRowModel(header);
170         model.addRow(tbr);
171 
172         header = new DefaultRowHeader("r5");
173         tbr = new DefaultTimeBarRowModel(header);
174         model.addRow(tbr);
175 
176         header = new DefaultRowHeader("r6");
177         tbr = new DefaultTimeBarRowModel(header);
178         model.addRow(tbr);
179 
180         header = new DefaultRowHeader("r7");
181         tbr = new DefaultTimeBarRowModel(header);
182         model.addRow(tbr);
183 
184         header = new DefaultRowHeader("r8");
185         tbr = new DefaultTimeBarRowModel(header);
186         model.addRow(tbr);
187 
188         header = new DefaultRowHeader("r9");
189         tbr = new DefaultTimeBarRowModel(header);
190         model.addRow(tbr);
191 
192         return model;
193     }
194 }