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:
parent
fab064f10d
commit
53e0f42b6f
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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user