⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingweekcalendar.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 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 + -