Project

General

Profile

1
package eu.dnetlib.repo.manager.client.enrichcontent.advancedsearch;
2

    
3
import com.google.gwt.dom.client.Style;
4
import com.google.gwt.event.dom.client.ClickEvent;
5
import com.google.gwt.event.dom.client.ClickHandler;
6
import com.google.gwt.i18n.client.DateTimeFormat;
7
import com.google.gwt.query.client.css.CSS;
8
import com.google.gwt.user.client.ui.FlowPanel;
9
import com.google.gwt.user.client.ui.IsWidget;
10
import com.google.gwt.user.client.ui.Widget;
11
import eu.dnetlib.repo.manager.shared.broker.Range;
12
import org.gwtbootstrap3.client.shared.event.ShowEvent;
13
import org.gwtbootstrap3.client.shared.event.ShowHandler;
14
import org.gwtbootstrap3.client.ui.Anchor;
15
import org.gwtbootstrap3.client.ui.constants.IconType;
16
import org.gwtbootstrap3.extras.datepicker.client.ui.DatePicker;
17

    
18
import java.util.Date;
19

    
20
import static com.google.gwt.query.client.GQuery.$;
21

    
22
/**
23
 * Created by stefania on 11/2/16.
24
 */
25
public class DateRangePickerField implements IsWidget {
26

    
27
    private FlowPanel dateRangePickerPanel = new FlowPanel();
28

    
29
    private DatePicker from = new DatePicker();
30
    private DatePicker to = new DatePicker();
31

    
32
    private Anchor deleteIcon = new Anchor();
33

    
34
    private DeleteDateRangeListener deleteDateRangeListener;
35

    
36
    private DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy-MM-dd");
37

    
38
    public DateRangePickerField() {
39

    
40
        from.setAutoClose(true);
41
        from.addStyleName("inlineBlock");
42
        from.addStyleName("fromDate");
43
        from.setHighlightToday(true);
44
        from.setShowTodayButton(true);
45
        from.setPlaceholder("From");
46
        from.addShowHandler(new ShowHandler() {
47
            @Override
48
            public void onShow(ShowEvent showEvent) {
49
                $(".datepicker-days").css(CSS.DISPLAY.with(Style.Display.BLOCK));
50
            }
51
        });
52

    
53
        to.setAutoClose(true);
54
        to.addStyleName("inlineBlock");
55
        to.addStyleName("toDate");
56
        to.setHighlightToday(true);
57
        to.setShowTodayButton(true);
58
        to.setPlaceholder("To");
59
        to.addShowHandler(new ShowHandler() {
60
            @Override
61
            public void onShow(ShowEvent showEvent) {
62
                $(".datepicker-days").css(CSS.DISPLAY.with(Style.Display.BLOCK));
63
            }
64
        });
65

    
66
        deleteIcon.setIcon(IconType.REMOVE);
67
        deleteIcon.addStyleName("inlineBlock");
68
        deleteIcon.addStyleName("deleteIcon");
69
        deleteIcon.addClickHandler(new ClickHandler() {
70
            @Override
71
            public void onClick(ClickEvent clickEvent) {
72

    
73
                if(deleteDateRangeListener !=null)
74
                    deleteDateRangeListener.deleteKeyword();
75
            }
76
        });
77

    
78
        dateRangePickerPanel.add(from);
79
        dateRangePickerPanel.add(to);
80
        dateRangePickerPanel.add(deleteIcon);
81
    }
82

    
83
    @Override
84
    public Widget asWidget() {
85
        return dateRangePickerPanel;
86
    }
87

    
88
    public interface DeleteDateRangeListener {
89
        void deleteKeyword();
90
    }
91

    
92
    public void setDeleteDateRangeListener(DeleteDateRangeListener deleteDateRangeListener) {
93
        this.deleteDateRangeListener = deleteDateRangeListener;
94
    }
95

    
96
    public void clear() {
97
        from.setValue(new Date());
98
        to.setValue(new Date());
99
    }
100

    
101
    public void loadSelectedDateRange(Range selectedDateRange) {
102

    
103
        if(selectedDateRange !=null) {
104

    
105
            if(selectedDateRange.getMin()!=null || !selectedDateRange.getMin().trim().equals(""))
106
                from.setValue(dtf.parse(selectedDateRange.getMin()));
107

    
108
            if(selectedDateRange.getMax()!=null || !selectedDateRange.getMax().trim().equals(""))
109
                to.setValue(dtf.parse(selectedDateRange.getMax()));
110

    
111
        }
112
    }
113

    
114
    public Range getSelectedDateRange() {
115

    
116
        if(from.getValue()!=null && to.getValue()!=null) {
117

    
118
            Range selectedDateRange = new Range();
119
            selectedDateRange.setMin(dtf.format(from.getValue()));
120
            selectedDateRange.setMax(dtf.format(to.getValue()));
121

    
122
            return selectedDateRange;
123
        }
124

    
125
        return null;
126
    }
127
}
(1-1/5)