Project

General

Profile

1
package eu.dnetlib.client.leftColumn;
2

    
3
import com.github.gwtbootstrap.client.ui.Form;
4
import com.github.gwtbootstrap.client.ui.Image;
5
import com.github.gwtbootstrap.client.ui.Modal;
6
import com.github.gwtbootstrap.client.ui.ModalFooter;
7
import com.github.gwtbootstrap.client.ui.constants.BackdropType;
8
import com.github.gwtbootstrap.client.ui.constants.FormType;
9
import com.google.gwt.dom.client.Style.Overflow;
10
import com.google.gwt.event.dom.client.ClickEvent;
11
import com.google.gwt.event.dom.client.ClickHandler;
12
import com.google.gwt.user.client.ui.FlowPanel;
13
import com.google.gwt.user.client.ui.HTML;
14
import com.google.gwt.user.client.ui.IsWidget;
15
import com.google.gwt.user.client.ui.Label;
16
import com.google.gwt.user.client.ui.Widget;
17

    
18
import eu.dnetlib.client.Generate;
19
import eu.dnetlib.client.leftColumn.FilterWidget.AppliedListener;
20
import eu.dnetlib.client.leftColumn.FilterWidget.CancelListener;
21
import eu.dnetlib.client.widgets.FormFieldSet;
22
import eu.dnetlib.shared.SchemaAnswer;
23
import eu.dnetlib.shared.ValuesOfFields;
24
import eu.dnetlib.shared.ValuesOfFields.Data.FilterClass;
25

    
26
public class SingleFilterWidget implements IsWidget{
27

    
28
	private FlowPanel flowPanel = new FlowPanel();
29
	private FlowPanel innerPanel = new FlowPanel();
30
	private Modal masterModal = new Modal();
31
	private ModalFooter modalFooter = new ModalFooter();
32
	private FilterWidget filterWidget;
33
	private FilterClass filtersData;
34
	private int numberOfFilter;
35
	private int numberOfCurrentColumn;
36
	
37
	public interface DeletedListener{
38
		public void onEvent();
39
	}
40
	
41
	private DeletedListener deletedListener;
42
	
43
	public void setDeletedListener(DeletedListener deletedListener){
44
		this.deletedListener = deletedListener;
45
	}
46
	
47
	public SingleFilterWidget(SchemaAnswer schemaFromServer , final int numberOfCurrentColumn, final int numberOfFilter){
48
		
49
		this.numberOfCurrentColumn = numberOfCurrentColumn;
50
		this.numberOfFilter = numberOfFilter;
51
		
52
		
53
		flowPanel.addStyleName("singleFilter-panel");
54
		flowPanel.add(innerPanel);
55
		filterWidget = new FilterWidget(schemaFromServer, numberOfCurrentColumn,modalFooter);
56
		masterModal.add(filterWidget.asWidget());
57
		masterModal.add(modalFooter);
58
		masterModal.addStyleName("filterModal");
59
		masterModal.setBackdrop(BackdropType.STATIC);
60
		
61
		masterModal.show();
62
		
63
		CancelListener cancelListener = new CancelListener() {
64
			
65
			@Override
66
			public void onEvent() {
67
				if(!filterWidget.getIsForEdit())
68
					flowPanel.clear();
69
				masterModal.hide();
70
			}
71
		};
72
		filterWidget.setCancelListener(cancelListener);
73
		
74
		AppliedListener listener = new AppliedListener() {
75
			
76
			@Override
77
			public void onEvent() {
78
	
79
				filtersData = ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getFilters().get(numberOfFilter);
80
				if(filterWidget.getIsForEdit()){
81
					innerPanel.clear();
82
				}
83
				designFinalContainer();
84
				masterModal.hide();
85
				filterWidget.setIndexForEdit(numberOfFilter);
86
				Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
87
			}
88
		};
89
		filterWidget.setAppliedListener(listener);
90
		
91
		
92
	}
93
	
94
	public void designFinalContainer(){
95
		
96
		
97
		Form containerForm = new Form();
98
		containerForm.setType(FormType.HORIZONTAL);
99
		
100
		containerForm.add(new HTML("<h4 style=\"letter-spacing:1.5px;text-align:center;\">"+filtersData.getType()+"</h4>"));
101
		
102
		FormFieldSet fieldChosenFormField = new FormFieldSet("Field chosen:", new Label("Year"));
103
		containerForm.add(fieldChosenFormField);
104
		
105
		
106
		if(filtersData.getType().equals("Continuous")){
107
			FormFieldSet fromFormFiled = new FormFieldSet("From:", new Label(filtersData.getValueFrom()));
108
			FormFieldSet toFormField = new FormFieldSet("To:", new Label(filtersData.getValueTo()));
109
			
110
			containerForm.add(fromFormFiled);
111
			containerForm.add(toFormField);
112
			
113
		}else if(filtersData.getType().equals("Discrete")){
114
			String finalValues = new String();
115
			for(int i=0;i<filtersData.getDiscreteValues().size();i++){
116
				finalValues = finalValues.concat(filtersData.getDiscreteValues().get(i));
117
				if(i!=filtersData.getDiscreteValues().size()-1){
118
					finalValues = finalValues.concat(",");
119
				}
120
			}
121
			
122
			FormFieldSet valuesFormField = new FormFieldSet("Values:", new Label(finalValues));
123
			containerForm.add(valuesFormField);
124
		}
125
		
126
		final Image removeImage = new Image("http://ls-koeln.de/wp-content/uploads/2014/01/minus-4-256.png");
127
 		removeImage.addStyleName("delete-icon-filters");
128
 		removeImage.addClickHandler(new ClickHandler() {
129
			
130
			@Override
131
			public void onClick(ClickEvent event) {
132
				ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getFilters().remove(numberOfFilter);
133
				flowPanel.removeFromParent();
134
				if(deletedListener!=null)
135
					deletedListener.onEvent();
136
				Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
137
			}
138
		});
139
 		
140
 		final Image editImage = new Image("http://www.clker.com/cliparts/V/N/W/7/1/H/edit-pencil-icon-md.png");
141
		editImage.addStyleName("checked-icon-filters");
142
		editImage.addClickHandler(new ClickHandler() {
143
			
144
			@Override
145
			public void onClick(ClickEvent event) {
146
				masterModal.show();
147
			}
148
		});
149
		
150
		innerPanel.add(containerForm);
151
		
152
		flowPanel.add(removeImage);
153
		flowPanel.add(editImage);
154
	}
155
	
156
	@Override
157
	public Widget asWidget() {
158
		return flowPanel;
159
	}
160

    
161
}
(7-7/7)