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

📄 htmlperiodviewpage.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.periodview;

import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;

import org.rapla.components.calendarview.Block;
import org.rapla.components.calendarview.html.AbstractHTMLView;
import org.rapla.components.calendarview.html.HTMLPeriodView;
import org.rapla.components.util.DateTools;
import org.rapla.entities.domain.Period;
import org.rapla.facade.PeriodModel;
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.AbstractHTMLCalendarPage;
import org.rapla.plugin.abstractcalendar.AbstractRaplaBlock;
import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy;
import org.rapla.plugin.abstractcalendar.RaplaBuilder;

public class HTMLPeriodViewPage extends AbstractHTMLCalendarPage
{
    public HTMLPeriodViewPage( RaplaContext context, CalendarModel calendarModel ) throws RaplaException
    {
        super( context, calendarModel );
    }

    protected AbstractHTMLView createCalendarView() {
        HTMLPeriodView periodView = new HTMLPeriodView() {
          public Block sameAppointment(int day, Block bl) {
                Iterator it2 = slots[day].iterator();
                Block b;
                while (it2.hasNext()) {
                    b = (Block)it2.next();
                    if ( ((AbstractRaplaBlock)b).getAppointment()
                         ==  ((AbstractRaplaBlock)bl).getAppointment()
                        ) {
                        return b;
                    }
                }
                return null;
            }
        };
        CalendarOptions opt = getCalendarOptions();
        Set excludeDays = opt.getExcludeDays();

        periodView.setExcludeDays( excludeDays );
        periodView.setLocale( getRaplaLocale().getLocale() );
        periodView.setTimeZone(getRaplaLocale().getTimeZone());

        Date start = model.getStartDate();
        Date end = model.getEndDate();
	Date selectedDate = model.getSelectedDate();
        PeriodModel periodModel =getPeriodModel();
        Period selectedPeriod = periodModel.getNearestPeriodForStartDate( start, end);

	/*
	 * If the user does not change the start date then
	 * the choosen period is displayed.
	 * If the user choose another date, then 7 weeks are displayed.
	 */
	if ( start == null ) {
	    start = getQuery().today();
            end = DateTools.addDays(start, 7 * 7);
	} else {
	    if ( selectedPeriod == null
		 || selectedPeriod.getStart().getTime()
		 != selectedDate.getTime()) {
		end = DateTools.addDays(selectedDate, 7 * 7);
	    } else {
		start = selectedPeriod.getStart();
		end  = selectedPeriod.getEnd();
	    }
	}

        periodView.setToDate( start );
        periodView.setEndDate( end );

        return periodView;
    }

    protected RaplaBuilder createBuilder() throws RaplaException {
        RaplaBuilder builder = super.createBuilder();

        GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() );
        boolean compactColumns = getCalendarOptions().isCompactColumns() ||  builder.getAllocatables().size() ==0 ;
        strategy.setFixedSlotsEnabled( !compactColumns);
        builder.setBuildStrategy( strategy );

        return builder;
    }

    protected int getIncrementSize() {
        return Calendar.WEEK_OF_YEAR;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -