Lagt till så att man kan välja att visa alla events för ett år

git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@513 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
dan-kjel 2011-03-28 15:39:34 +00:00
parent fab064f10d
commit 53e0f42b6f
2 changed files with 33 additions and 18 deletions
src/main/java/se/su/dsv/scipro/components/monthpicker

@ -1,11 +1,10 @@
package se.su.dsv.scipro.components.monthpicker;
import java.util.Date;
import org.apache.wicket.IClusterable;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.joda.time.DateTime;
public interface IMonthChangedListener extends IClusterable {
public void onSelectionChange(AjaxRequestTarget target, Date date);
public void onSelectionChange(AjaxRequestTarget target, DateTime startDate, DateTime endDate);
}

@ -21,16 +21,20 @@ import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.joda.time.DateMidnight;
import org.joda.time.DateTime;
import org.joda.time.MutableDateTime;
import org.wicketstuff.minis.spinner.Spinner;
public class MonthPicker extends Panel {
private static final long serialVersionUID = 1L;
private MutableDateTime internalDate = new MutableDateTime();
private final static String[] MONTH_NAMES = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
private DateTime startDate;
private DateTime endDate;
private boolean yearView = false;
private final static String[] MONTH_NAMES = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "All year"};
private YearForm yearForm;
@ -45,14 +49,17 @@ public class MonthPicker extends Panel {
public MonthPicker(String id, Date defaultDate) {
super(id);
setOutputMarkupId(true);
internalDate = (defaultDate == null) ? new MutableDateTime() : new MutableDateTime(defaultDate);
startDate = (defaultDate == null) ? new DateMidnight(defaultDate).withDayOfMonth(1).toDateTime()
: new DateMidnight().withDayOfMonth(1).toDateTime();
endDate = startDate.plusMonths(1).minusMillis(1);
add(CSSPackageResource.getHeaderContribution(getClass(), "monthpicker.css"));
addSpinner();
addMonthList();
}
private void addSpinner(){
yearForm = new YearForm("yearForm", internalDate.getYear());
yearForm = new YearForm("yearForm", startDate.getYear());
add(yearForm);
}
@ -63,10 +70,12 @@ public class MonthPicker extends Panel {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<String> item) {
protected void populateItem(final ListItem<String> item) {
final Label month = new Label("month", item.getModelObject());
final int monthOfYear = item.getIndex() + 1;
if(monthOfYear == internalDate.getMonthOfYear()){
if(yearView && item.getIndex() == MONTH_NAMES.length - 1){
month.add(selectedCssClass);
} else if (!yearView && monthOfYear == startDate.getMonthOfYear()){
month.add(selectedCssClass);
}
@ -76,18 +85,24 @@ public class MonthPicker extends Panel {
@Override
protected void onSubmit(AjaxRequestTarget target) {
YearForm form = (YearForm) getForm();
internalDate.setYear(form.getModelObject().getYear());
internalDate.setMonthOfYear(monthOfYear);
for(IMonthChangedListener l : listenersList){
l.onSelectionChange(target, internalDate.toDate());
if(item.getIndex() == MONTH_NAMES.length - 1){
startDate = new DateMidnight().withDayOfYear(1).withYear(form.getModelObject().getYear()).toDateTime();
endDate = startDate.plusYears(1).minusMillis(1);
yearView = true;
} else {
startDate = new DateMidnight().withYear(form.getModelObject().getYear()).withMonthOfYear(monthOfYear).withDayOfMonth(1).toDateTime();
endDate = startDate.plusMonths(1).minusMillis(1);
yearView = false;
}
for(IMonthChangedListener l : listenersList){
l.onSelectionChange(target, startDate, endDate);
}
month.add(selectedCssClass);
target.addComponent(MonthPicker.this);
}
@Override
protected void onError(AjaxRequestTarget target) {
System.out.println("Error");
target.addComponent(MonthPicker.this);
}});
@ -165,9 +180,10 @@ public class MonthPicker extends Panel {
@Override
protected void onSubmit(AjaxRequestTarget target) {
YearForm form = (YearForm) getForm();
internalDate.setYear(form.getModelObject().getYear());
startDate = startDate.withYear(form.getModelObject().getYear());
endDate = endDate.withYear(form.getModelObject().getYear());
for(IMonthChangedListener l : listenersList){
l.onSelectionChange(target, internalDate.toDate());
l.onSelectionChange(target, startDate, endDate);
}
target.addComponent(MonthPicker.this);
}