📄 swingweekcalendar.java
字号:
/*--------------------------------------------------------------------------*
| Copyright (C) 2006 Christopher Kohlhaas |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by the |
| Free Software Foundation. A copy of the license has been included with |
| these distribution in the COPYING file, if not go to www.fsf.org |
| |
| As a special exception, you are granted the permissions to link this |
| program with every library, which license fulfills the Open Source |
| Definition as published by the Open Source Initiative (OSI). |
*--------------------------------------------------------------------------*/
package org.rapla.plugin.weekview;
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;
import java.util.Date;
import java.util.Set;
import javax.swing.JComponent;
import org.rapla.components.calendar.DateChangeEvent;
import org.rapla.components.calendar.DateRenderer;
import org.rapla.components.calendar.DateRendererAdapter;
import org.rapla.components.calendarview.swing.AbstractSwingCalendar;
import org.rapla.components.calendarview.swing.SwingWeekView;
import org.rapla.components.util.DateTools;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;
import org.rapla.gui.CalendarModel;
import org.rapla.gui.CalendarOptions;
import org.rapla.plugin.abstractcalendar.AbstractRaplaSwingCalendar;
import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy;
import org.rapla.plugin.abstractcalendar.RaplaBuilder;
import org.rapla.plugin.abstractcalendar.SwingRaplaBuilder;
public class SwingWeekCalendar extends AbstractRaplaSwingCalendar
{
public SwingWeekCalendar( RaplaContext sm, CalendarModel model, boolean editable ) throws RaplaException
{
super( sm, model, editable );
}
protected AbstractSwingCalendar createView(boolean editable) {
boolean showScrollPane = editable;
/** renderer for dates in weekview */
final DateRendererAdapter dateRenderer = new DateRendererAdapter((DateRenderer) getService(DateRenderer.class.getName()), getRaplaLocale().getTimeZone(), getRaplaLocale().getLocale());
SwingWeekView wv = new SwingWeekView( showScrollPane ) {
private static final long serialVersionUID = 1L;
protected JComponent createSlotHeader(Date date) {
JComponent component = super.createSlotHeader(date);
boolean today = DateTools.isSameDay(getQuery().today().getTime(), date.getTime());
if ( today)
{
component.setFont(component.getFont().deriveFont( Font.BOLD));
}
if (isEditable() && dateRenderer != null ) {
component.setOpaque(true);
Color color = dateRenderer.getBackgroundColor(date);
String toolTip = dateRenderer.getToolTipText(date);
component.setBackground(color);
component.setToolTipText(toolTip);
}
return component;
}
};
return wv;
}
public void dateChanged(DateChangeEvent evt) {
super.dateChanged( evt );
((SwingWeekView)view).scrollDateVisible( evt.getDate());
}
protected RaplaBuilder createBuilder() throws RaplaException
{
RaplaBuilder builder = new SwingRaplaBuilder(getContext());
builder.setRepeatingVisible( view.isEditable());
builder.setEditingUser( getUser() );
builder.setExceptionsExcluded( !getCalendarOptions().isExceptionsVisible() || !view.isEditable());
builder.setFromModel( model, view.getStartDate(), view.getEndDate() );
GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() );
boolean compactColumns = getCalendarOptions().isCompactColumns() || builder.getAllocatables().size() ==0 ;
strategy.setFixedSlotsEnabled( !compactColumns);
strategy.setResolveConflictsEnabled( true );
builder.setBuildStrategy( strategy );
return builder;
}
protected void configureView() {
SwingWeekView view = (SwingWeekView) this.view;
CalendarOptions calendarOptions = getCalendarOptions();
Set excludeDays = calendarOptions.getExcludeDays();
view.setExcludeDays( excludeDays );
int rowsPerHour = calendarOptions.getRowsPerHour();
view.setRowsPerHour( rowsPerHour );
if ( rowsPerHour == 1 ) {
view.setRowSize( 30);
} else if ( rowsPerHour == 2 ) {
view.setRowSize( 20);
} else if ( rowsPerHour <= 4 ) {
view.setRowSize( 15);
} else {
view.setRowSize( 10);
}
view.setWorktime( calendarOptions.getWorktimeStart(), calendarOptions.getWorktimeEnd());
view.setShowNonEmptyExcludedDays( true );
if ( !view.isEditable() ) {
view.setSlotSize( model.getSize());
} else {
view.setSlotSize( 135 );
}
view.setToDate(model.getSelectedDate());
}
public void scrollToStart()
{
((SwingWeekView)view).scrollToStart();
}
public int getIncrementSize() {
return Calendar.WEEK_OF_YEAR;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -