Project

General

Profile

1
package eu.dnetlib.client.leftColumn;
2

    
3
import java.util.ArrayList;
4

    
5
import com.github.gwtbootstrap.client.ui.AccordionGroup;
6
import com.github.gwtbootstrap.client.ui.Alert;
7
import com.github.gwtbootstrap.client.ui.Button;
8
import com.github.gwtbootstrap.client.ui.Image;
9
import com.github.gwtbootstrap.client.ui.constants.AlertType;
10
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
11
import com.github.gwtbootstrap.client.ui.constants.IconType;
12
import com.github.gwtbootstrap.client.ui.event.HideEvent;
13
import com.github.gwtbootstrap.client.ui.event.HideHandler;
14
import com.github.gwtbootstrap.client.ui.event.ShowEvent;
15
import com.github.gwtbootstrap.client.ui.event.ShowHandler;
16
import com.google.gwt.dom.client.Element;
17
import com.google.gwt.dom.client.Style.Overflow;
18
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.user.client.Timer;
21
import com.google.gwt.user.client.Window;
22
import com.google.gwt.user.client.ui.FlowPanel;
23
import com.google.gwt.user.client.ui.IsWidget;
24
import com.google.gwt.user.client.ui.Widget;
25

    
26
import eu.dnetlib.client.leftColumn.FilterWidget.AppliedListener;
27
import eu.dnetlib.client.leftColumn.SingleFilterWidget.ApplyFinalListener;
28
import eu.dnetlib.client.leftColumn.SingleFilterWidget.DeletedListener;
29
import eu.dnetlib.shared.SchemaAnswer;
30
import eu.dnetlib.shared.ValuesOfFields;
31

    
32

    
33
public class FiltersPanel implements IsWidget {
34

    
35
    private FlowPanel filtersPanel = new FlowPanel();
36
    private FlowPanel subFiltersPanel = new FlowPanel();
37
    private Button addNewFilter = new Button();
38
    private int numberOfFilters = 0;
39
    private int totalFilters = 0;
40
    private SchemaAnswer schemaFromServer;
41
    private int numberOfCurrentColumn;
42
    private ArrayList<FiltersPanel> filtersPanels = new ArrayList<FiltersPanel>();
43
    private Alert infoAlert = new Alert();
44
    
45
    public Alert getInfoAlert(){
46
    	return this.infoAlert;
47
    }
48
    
49
    public Button getAddNewFilter() {
50
		return this.addNewFilter;
51
	}
52

    
53
	private ArrayList <Image> listOfImages = new ArrayList<Image>();
54
    
55
    public FiltersPanel(SchemaAnswer schemaFromServer,int numberOfCurrentColumn,boolean loaded,ArrayList<FiltersPanel> filtersPanels) {
56
    	
57
    	this.filtersPanels = filtersPanels;
58
    	this.numberOfCurrentColumn = numberOfCurrentColumn;
59
    	this.schemaFromServer = schemaFromServer;
60
    	init();
61
    	if(loaded){
62
    		loaded();
63
    	}
64
    	
65
    }
66

    
67
    public FlowPanel getFiltersPanel(){
68
    	return this.filtersPanel;
69
    }
70
    
71
    public void init(){
72

    
73
    	
74
    	infoAlert.setVisible(false);
75
		addNewFilter.setVisible(true);
76
    	
77
    	
78
    	infoAlert.addStyleName("infoalert-add");
79
    	infoAlert.setText("Please add value for x-axis to proceed");
80
    	infoAlert.setType(AlertType.WARNING);
81
    	infoAlert.setClose(false);
82
    	addNewFilter.setText("Add new filter");
83
    	addNewFilter.addStyleName("addNewFilterButton");
84
    	addNewFilter.setType(ButtonType.PRIMARY);
85
    	
86
    	addNewFilter.addClickHandler(new ClickHandler() {
87
			
88
			@Override
89
			public void onClick(ClickEvent arg0) {
90
				final SingleFilterWidget singleFilterWidget = new SingleFilterWidget(schemaFromServer, numberOfCurrentColumn,numberOfFilters,false,filtersPanels);
91
				ApplyFinalListener applyFinalListener = new ApplyFinalListener(){
92

    
93
					@Override
94
					public void onEvent() {
95
							
96
							if(!singleFilterWidget.isForEdit){
97
								numberOfFilters++;
98
					        	totalFilters++;
99
					        	filtersPanel.add(singleFilterWidget);
100
							}
101

    
102
							if(singleFilterWidget.getFilterWidget().isApplyToAll()){
103
								for(int i=0;i<filtersPanels.size();i++){
104
									if(i!=numberOfCurrentColumn){
105
										filtersPanels.get(i).filtersPanel.clear();
106
										filtersPanels.get(i).init();
107
										filtersPanels.get(i).loaded();
108
									}
109
								}
110
								singleFilterWidget.getFilterWidget().setApplyToAll(false);
111
							}
112
					}
113
					
114
				};
115
				singleFilterWidget.setApplyFinalListener(applyFinalListener);
116
				
117
				DeletedListener deletedListener = new DeletedListener() {
118
					
119
					@Override
120
					public void onEvent() {
121
						numberOfFilters--;
122
						totalFilters--;
123
					}
124
				};
125
				singleFilterWidget.setDeletedListener(deletedListener);
126
				
127
				
128
			}
129
		});
130

    
131
    	filtersPanel.add(subFiltersPanel);
132
    	filtersPanel.add(infoAlert);
133
    	filtersPanel.add(addNewFilter);
134
    }
135

    
136
  
137
     public void loaded() {
138
    	 
139
    	
140
    	 numberOfFilters = ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getFilters().size();
141
    	 for(int i=0;i<numberOfFilters;i++){
142
    		 final SingleFilterWidget singleFilterWidget = new SingleFilterWidget(schemaFromServer, numberOfCurrentColumn,i,true,filtersPanels);
143
    		 ApplyFinalListener applyFinalListener = new ApplyFinalListener(){
144

    
145
					@Override
146
					public void onEvent() {
147
							filtersPanel.add(singleFilterWidget);
148
							if(!singleFilterWidget.isForEdit){
149
								numberOfFilters++;
150
								totalFilters++;
151
							}
152
					}
153
					
154
				};
155
				singleFilterWidget.setApplyFinalListener(applyFinalListener);
156
				
157
				DeletedListener deletedListener = new DeletedListener() {
158
					
159
					@Override
160
					public void onEvent() {
161
						numberOfFilters--;
162
					}
163
				};
164
				singleFilterWidget.setDeletedListener(deletedListener);
165
				filtersPanel.add(singleFilterWidget);
166
    	 }
167
	}
168
    
169
  
170
     
171
    @Override
172
    public Widget asWidget() {
173
        return filtersPanel;
174
    }
175
}
(5-5/8)