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

📄 abstracthtmlcalendarpage.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.abstractcalendar;

import java.io.IOException;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.rapla.components.calendarview.html.AbstractHTMLView;
import org.rapla.components.util.SerializableDateTimeFormat;
import org.rapla.entities.User;
import org.rapla.entities.configuration.RaplaConfiguration;
import org.rapla.facade.RaplaComponent;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;
import org.rapla.framework.RaplaLocale;
import org.rapla.gui.CalendarModel;
import org.rapla.gui.CalendarOptions;
import org.rapla.gui.CalendarOptionsImpl;
import org.rapla.servletpages.RaplaPageGenerator;

public abstract class AbstractHTMLCalendarPage extends RaplaComponent implements RaplaPageGenerator
{
    public static final String SHOW_NAVIGATION_ENTRY = "org.rapla.plugin.abstractcalendar.show_navigation";
    protected AbstractHTMLView view;
    String calendarviewHTML;
    protected CalendarModel model = null;
    RaplaBuilder builder;

    public AbstractHTMLCalendarPage(RaplaContext context, CalendarModel calendarModel) throws RaplaException {
        super( context);
        this.model = (CalendarModel) calendarModel.clone();
    }

    protected RaplaBuilder createBuilder() throws RaplaException {
        RaplaBuilder builder = new HTMLRaplaBuilder( getContext());
        builder.setRepeatingVisible( false);
        builder.setExceptionsExcluded( true );
        builder.setFromModel( model, view.getStartDate(), view.getEndDate()  );
        return builder;
    }

    abstract protected AbstractHTMLView createCalendarView();
    abstract protected int getIncrementSize();

    public String getCalendarHTML() {
        return calendarviewHTML;
    }

    public String getDateChooserHTML( Date date) {
        Calendar calendar = getRaplaLocale().createCalendar();
        calendar.setTime( date );
        return HTMLDateComponents.getDateSelection( "", calendar,getLocale());
    }

    public Date getStartDate() {
        return view.getStartDate();
    }

    public Date getEndDate() {
        return view.getEndDate();
    }

    public String getTitle() {
        return model.getNonEmptyTitle();
    }

    public int getDay( Date date) {
        Calendar calendarview = getRaplaLocale().createCalendar();
        calendarview.setTime( date);
        return calendarview.get( Calendar.DATE);
    }

    public int getMonth( Date date) {
        Calendar calendarview = getRaplaLocale().createCalendar();
        calendarview.setTime( date);
        return calendarview.get( Calendar.MONTH) + 1;
    }

    public int getYear( Date date) {
        Calendar calendarview = getRaplaLocale().createCalendar();
        calendarview.setTime( date);
        return calendarview.get( Calendar.YEAR);
    }

    public void generatePage( ServletContext context,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html; charset=" + getRaplaLocale().getCharsetNonUtf() );
        java.io.PrintWriter out = response.getWriter();
        
        String filename = getFilename( request );
        boolean navigationVisible = isNavigationVisible( request );

        RaplaLocale raplaLocale= getRaplaLocale();
        Calendar calendarview = raplaLocale.createCalendar();
        calendarview.setTime( model.getSelectedDate() );
        if ( request.getParameter("today") != null ) {
            calendarview.setTime( getQuery().today() );
        } else if ( request.getParameter("day") != null ) {
            String dateString = request.getParameter("year") + "-"
                               + request.getParameter("month") + "-"
                               + request.getParameter("day");
            try {
                SerializableDateTimeFormat format = new SerializableDateTimeFormat( raplaLocale.createCalendar());
                calendarview.setTime( format.parseDate( dateString, false ) );
            } catch (ParseException ex) {
                throw new ServletException( ex);
            }
            if ( request.getParameter("next") != null)
                calendarview.add( getIncrementSize(), 1);
            if ( request.getParameter("prev") != null)
                calendarview.add( getIncrementSize(), -1);
        }

        Date currentDate = calendarview.getTime();
        model.setSelectedDate( currentDate );
        view = createCalendarView();
        view.setLocale( getRaplaLocale().getLocale() );
        view.setTimeZone(getRaplaLocale().getTimeZone());
        view.setToDate(model.getSelectedDate());
        model.setStartDate( view.getStartDate() );
        model.setEndDate( view.getEndDate() );

        try {
            builder = createBuilder();
        } catch (RaplaException ex) {
            getLogger().error("Can't create builder ", ex);
            throw new ServletException( ex );
        }
        view.rebuild( builder);

        calendarviewHTML = view.getHtml();


        out.println("<html>");
        out.println("<head>");
        out.println("  <title>" + getTitle() + "</title>");
        out.println("  <link REL=\"stylesheet\" href=\"rapla?page=resource&name=calendar.css\" type=\"text/css\">");
        //out.println("  <link REL=\"stylesheet\" href=\"calendar.css\" type=\"text/css\">");
        out.println("  <link REL=\"stylesheet\" href=\"default.css\" type=\"text/css\">");
        out.println("  <meta HTTP-EQUIV=\"Content-Type\" content=\"text/html; charset=" + raplaLocale.getCharsetNonUtf()+ "\">");
        out.println("</head>");
        out.println("<body>");

        // Start DateChooser
        if ( navigationVisible) {
            out.println("<div class=\"datechooser\">");

            /*
            out.println("<form action=\"rapla\" method=\"get\" style=\"float:right;\">");
            out.println( getHiddenField( "page", "report"));
            out.println( getHiddenField( "user", b.getUsername()));
            out.println( getHiddenField( "file", b.getFilename()));
            out.println( getHiddenField( "start_day", b.getDay(b.getStart())));
            out.println( getHiddenField( "start_month", b.getMonth(b.getStart())));
            out.println( getHiddenField( "start_year", b.getYear(b.getStart())));
            out.println( getHiddenField( "end_day", b.getDay(b.getEnd())));
            out.println( getHiddenField( "end_month", b.getMonth(b.getEnd())));
            out.println( getHiddenField( "end_year", b.getYear(b.getEnd())));
            out.println( "<input type=\"submit\" value=\""+b.getString("report") + "\"/>");
            out.println("</form>");*/


            out.println("<form action=\"rapla\" method=\"get\">");
            out.println(  getHiddenField( "page", "calendar"));
            out.println(  getHiddenField( "user", model.getUser().getUsername()));
            out.println(  getHiddenField( "file", filename));
            out.println( "<input type=\"submit\" name=\"prev\" value=\"&lt;&lt;\"/> ");
            out.println( "<span class=\"spacer\">&nbsp;</span> ");
            out.println( getDateChooserHTML( currentDate ));
            out.println( " <input type=\"submit\" name=\"goto\" value=\""+getString("goto_date") + "\"/>");
            out.println( "<span class=\"spacer\">&nbsp;</span>");
            out.println( "<span class=\"spacer\">&nbsp;</span>");
            out.println( "<input type=\"submit\" name=\"today\" value=\""+ getString("today") + "\"/>");
            out.println( "<span class=\"spacer\">&nbsp;</span>");
            out.println( "<input type=\"submit\" name=\"next\" value=\"&gt;&gt;\"/>");
            out.println("</form>");

            out.println("</div>");
        }

        // End DateChooser

        // Start weekview

        out.println("<h2 class=\"title\">");
        out.println( getTitle());
        out.println("</h2>");
        out.println("<div id=\"calendar\">");
        out.println( getCalendarHTML() );
        out.println("</div>");

        /*
        out.println("<div id=\"legend\">");
        out.println( getLegend() );
        out.println("</div>");
        */
        // end weekview
        out.println("</body>");
        out.println("</html>");

    }

    public String getFilename(HttpServletRequest request) {
        return request.getParameter("file");
    }


    public boolean isNavigationVisible( HttpServletRequest request) {
        String config = (String)model.getOption( SHOW_NAVIGATION_ENTRY );
        if ( config == null || config.equals( "true" ))
        {
            return true;
        }
        return !config.equals( "false" ) && request.getParameter("hide_nav") == null;
    }

    String getHiddenField( String fieldname, String value) {
        return "<input type=\"hidden\" name=\"" + fieldname + "\" value=\"" + value + "\"/>";
    }

    String getHiddenField( String fieldname, int value) {
        return getHiddenField( fieldname, String.valueOf(value));
    }

    /*
    public String getLegend() {
        if ( !getCalendarOptions().isResourceColoring()) {
            return "";
        }
        Iterator it = view.getBlocks().iterator();
        LinkedList coloredAllocatables = new LinkedList();
        while (it.hasNext()) {
            List list = ((HTMLRaplaBlock)it.next()).getContext().getColoredAllocatables();
            for (int i=0;i<list.size();i++) {
                Object obj = list.get(i);
                if (!coloredAllocatables.contains(obj))
                    coloredAllocatables.add(obj);
            }
        }
        if (coloredAllocatables.size() < 1) {
            return "";
        }
        StringBuffer buf = new StringBuffer();
        it = coloredAllocatables.iterator();
        buf.append("<table>\n");
        buf.append("<tr>\n");
        buf.append("<td>");
        buf.append( getI18n().getString("legend"));
        buf.append(":");
        buf.append("</td>");
        try {
            AllocatableInfoUI allocatableInfo = new AllocatableInfoUI(getContext());
            while (it.hasNext()) {
                Allocatable allocatable = (Allocatable) it.next();
                String color = (String) builder.getColorMap().get(allocatable);
                if (color == null) // (!color_map.containsKey(allocatable))
                    continue;

                buf.append("<td style=\"background-color:");
                buf.append( color );
                buf.append("\">");
                buf.append("<a href=\"#\">");
                buf.append( allocatable.getName(getRaplaLocale().getLocale()) );
                buf.append("<span>");
                buf.append( allocatableInfo.getTooltip( allocatable));
                buf.append("</span>");
                buf.append("</a>");
                buf.append("</td>");
            }
        } catch (RaplaException ex) {
            getLogger().error( "Error generating legend",ex);
        }
        buf.append("</tr>\n");
        buf.append("</table>");
        return buf.toString();
    }
    */

    public CalendarOptions getCalendarOptions() {
        RaplaConfiguration conf = null;
        try {
            User user = model.getUser();
            if ( user != null)
            {
                conf = (RaplaConfiguration)getQuery().getPreferences( user ).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS);
            }
            if ( conf == null)
            {
                conf = (RaplaConfiguration)getQuery().getPreferences( null ).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS);
            }
            if ( conf != null)
            {
                return new CalendarOptionsImpl( conf.getConfig());
            }
        } catch (RaplaException ex) {

        }
        return (CalendarOptions)getService( CalendarOptions.ROLE);
    }

}

⌨️ 快捷键说明

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