📄 abstracthtmlcalendarpage.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=\"<<\"/> ");
out.println( "<span class=\"spacer\"> </span> ");
out.println( getDateChooserHTML( currentDate ));
out.println( " <input type=\"submit\" name=\"goto\" value=\""+getString("goto_date") + "\"/>");
out.println( "<span class=\"spacer\"> </span>");
out.println( "<span class=\"spacer\"> </span>");
out.println( "<input type=\"submit\" name=\"today\" value=\""+ getString("today") + "\"/>");
out.println( "<span class=\"spacer\"> </span>");
out.println( "<input type=\"submit\" name=\"next\" value=\">>\"/>");
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 + -