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.Button;
7
import com.github.gwtbootstrap.client.ui.Form;
8
import com.github.gwtbootstrap.client.ui.Image;
9
import com.github.gwtbootstrap.client.ui.ListBox;
10
import com.github.gwtbootstrap.client.ui.RadioButton;
11
import com.github.gwtbootstrap.client.ui.Tab;
12
import com.github.gwtbootstrap.client.ui.TabPanel;
13
import com.github.gwtbootstrap.client.ui.TextBox;
14
import com.github.gwtbootstrap.client.ui.base.IconAnchor;
15
import com.github.gwtbootstrap.client.ui.constants.AlternateSize;
16
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
17
import com.github.gwtbootstrap.client.ui.constants.IconSize;
18
import com.github.gwtbootstrap.client.ui.constants.IconType;
19
import com.github.gwtbootstrap.client.ui.event.HideEvent;
20
import com.github.gwtbootstrap.client.ui.event.HideHandler;
21
import com.github.gwtbootstrap.client.ui.event.ShowEvent;
22
import com.github.gwtbootstrap.client.ui.event.ShowHandler;
23
import com.google.gwt.dom.client.Element;
24
import com.google.gwt.dom.client.Style.Display;
25
import com.google.gwt.dom.client.Style.Overflow;
26
import com.google.gwt.dom.client.Style.Unit;
27
import com.google.gwt.event.dom.client.BlurEvent;
28
import com.google.gwt.event.dom.client.BlurHandler;
29
import com.google.gwt.event.dom.client.ChangeEvent;
30
import com.google.gwt.event.dom.client.ChangeHandler;
31
import com.google.gwt.event.dom.client.ClickEvent;
32
import com.google.gwt.event.dom.client.ClickHandler;
33
import com.google.gwt.event.dom.client.DoubleClickEvent;
34
import com.google.gwt.event.dom.client.DoubleClickHandler;
35
import com.google.gwt.event.dom.client.KeyCodes;
36
import com.google.gwt.event.dom.client.KeyDownEvent;
37
import com.google.gwt.event.dom.client.KeyDownHandler;
38
import com.google.gwt.event.dom.client.LoadEvent;
39
import com.google.gwt.event.dom.client.LoadHandler;
40
import com.google.gwt.event.logical.shared.SelectionEvent;
41
import com.google.gwt.event.logical.shared.SelectionHandler;
42
import com.google.gwt.user.client.Timer;
43
import com.google.gwt.user.client.ui.FlowPanel;
44
import com.google.gwt.user.client.ui.Tree;
45
import com.google.gwt.user.client.ui.TreeItem;
46
import com.google.gwt.user.client.ui.Widget;
47

    
48
import eu.dnetlib.client.Generate;
49
import eu.dnetlib.client.leftColumn.AppearancePanel.ChangingNameListener;
50
import eu.dnetlib.client.widgets.DropdownListWidget;
51
import eu.dnetlib.client.widgets.DropdownListWidget.TreeListener;
52
import eu.dnetlib.client.widgets.FormFieldSet;
53
import eu.dnetlib.shared.SchemaAnswer;
54
import eu.dnetlib.shared.ValuesOfFields;
55
import eu.dnetlib.shared.ValuesOfFields.Data;
56

    
57
public class DataserieWidget extends Widget {
58

    
59
	private final FlowPanel masterPanel = new FlowPanel();
60
	private int totalColumns;
61
	private int specialColumnCounter;
62
	private TabPanel mainTabPanel;
63
	private ArrayList<Image> deleteImageList = new ArrayList<Image>();
64
	private SchemaAnswer schemaFromServer;
65
	private ArrayList<DropdownListWidget> listBoxes = new ArrayList<DropdownListWidget>();
66
	private boolean isFromLoad;
67
	private Tab dataSeriesTab;
68
	private FiltersPanel filtersPanel;
69
	private final AccordionGroup generalOptionsGroupPanel = new AccordionGroup();
70
	private Tab singleColumn = new Tab();
71
	private boolean loadPresets;
72
	private ListBox tableListBox = new ListBox();
73
	private int numberOfCurrentColumn;
74
	private DropdownListWidget typeOfChart = new DropdownListWidget(true);
75
	private Timer timer;
76
	private final ListBox aggregateListBox = new ListBox();
77
	private AppearancePanel appearancePanel;
78
	private int comingFromSetState = 0;
79
	private boolean prevOpenState = true;
80
	private final IconAnchor edit = new IconAnchor();
81
	private final DropdownListWidget splitBy = new DropdownListWidget();
82
	private ArrayList<FiltersPanel> filtersPanels = new ArrayList<FiltersPanel>();
83
	private final Button applyChanges = new Button();
84
	private final TextBox renameTextBox = new TextBox();
85
	
86
	private final Image enabled = new Image(
87
			"https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/512/checked_checkbox.png");
88
	private Image deleteImage = new Image(
89
			"https://live.amcharts.com/static/img/icons/circle_x.png");
90
	private final AccordionGroup filtersGroupPanel = new AccordionGroup();
91

    
92
	public int getNumberOfCurrentColumn() {
93
		return numberOfCurrentColumn;
94
	}
95

    
96
	public void setNumberOfCurrentColumn(int numberOfCurrentColumn) {
97
		this.numberOfCurrentColumn = numberOfCurrentColumn;
98
	}
99

    
100
	
101
	public Tab getSingleColumn() {
102
		return singleColumn;
103
	}
104

    
105
	public TextBox getRenameTextBox(){
106
		return renameTextBox;
107
	}
108

    
109
	public interface DeleteListener {
110
		public void onEvent(int numberOfColumn);
111
	}
112

    
113
	private DeleteListener deleteListener;
114

    
115
	public void setDeleteListener(DeleteListener deleteListener) {
116
		this.deleteListener = deleteListener;
117
	}
118

    
119
	public DataserieWidget(TabPanel mainTabPanel, SchemaAnswer schemaFroAnswer,
120
			final int totalColumns, final int specialColumnCounter,
121
			ArrayList<Image> deleteImageList,
122
			ArrayList<DropdownListWidget> listboxes, boolean isFromLoad,
123
			Tab dataSeriesTab, boolean loadPresets,
124
			AppearancePanel apperancePanel, int optionsSelected,
125
			ArrayList<FiltersPanel> filtersPanels) {
126

    
127
		this.filtersPanels = filtersPanels;
128
		this.mainTabPanel = mainTabPanel;
129
		this.schemaFromServer = schemaFroAnswer;
130
		this.totalColumns = totalColumns;
131

    
132
		if (!isFromLoad)
133
			this.specialColumnCounter = ValuesOfFields.getInstance().getColumnsDataList().size();
134
		else
135
			this.specialColumnCounter = specialColumnCounter;
136

    
137
		this.deleteImageList = deleteImageList;
138
		this.listBoxes = listboxes;
139
		this.isFromLoad = isFromLoad;
140
		this.dataSeriesTab = dataSeriesTab;
141
		this.loadPresets = loadPresets;
142
		this.numberOfCurrentColumn = specialColumnCounter;
143

    
144
		ChangingNameListener changingNameListener = new ChangingNameListener() {
145

    
146
			@Override
147
			public void onEvent(String name) {
148
				if (name.equals("")) {
149
					generalOptionsGroupPanel
150
							.setHeading("DATASERIES untitled");
151
					singleColumn.setHeading("Dataseries untitled");
152
				} else {
153
					generalOptionsGroupPanel
154
							.setHeading("DATASERIES \""
155
									+ name + "\"");
156
					singleColumn.setHeading(name);
157
				}
158
			}
159
		};
160
		apperancePanel.setChaningNameListenr(changingNameListener);
161
		this.appearancePanel = apperancePanel;
162

    
163
		addDataserie();
164
		this.isFromLoad = false;
165
		if (loadPresets && (specialColumnCounter == 0 || specialColumnCounter == 1)) {
166
			loadPresetChartTypes(optionsSelected);
167
		}
168
		
169
		
170
	}
171

    
172
	public void addDataserie() {
173

    
174
		if (!isFromLoad) {
175
			ValuesOfFields.getInstance().getColumnsDataList().add(new Data());
176
		}
177
		singleColumn.setHeading("untitled");
178

    
179
		masterPanel.addStyleName("dataseries-content");
180

    
181
		
182
		renameTextBox.setAlternateSize(AlternateSize.MEDIUM);
183
		singleColumn.addDecorate(renameTextBox);
184
		renameTextBox.setVisible(false);
185
		renameTextBox.setHeight("15px");
186

    
187
		renameTextBox.addKeyDownHandler(new KeyDownHandler() {
188

    
189
			@Override
190
			public void onKeyDown(KeyDownEvent event) {
191
				if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
192
					renameTextBox.setFocus(false);
193
			}
194
		});
195

    
196
		renameTextBox.addBlurHandler(new BlurHandler() {
197

    
198
			@Override
199
			public void onBlur(BlurEvent event) {
200
				if (renameTextBox.getText().trim().length() > 0) {
201
					String finalTitle = new String();
202
					if(renameTextBox.getText().length()>13){
203
						finalTitle = renameTextBox.getText().substring(0,13) + "...";
204
					}else{
205
						finalTitle = renameTextBox.getText();
206
					}
207
				
208
					singleColumn.setHeading(finalTitle);
209
					singleColumn.asWidget().setTitle(renameTextBox.getText());
210
					generalOptionsGroupPanel.setHeading("DATASERIES \"" + singleColumn.asWidget().getTitle() + "\"");
211
					appearancePanel
212
					.getAppearancePanels()
213
					.get(numberOfCurrentColumn)
214
					.setHeading(
215
							"APPEARANCE FOR \""+singleColumn.asWidget().getTitle()+"\"" );
216
					
217
					applyChanges.addStyleName("flashing-button-apply");
218

    
219
				} else {// if only contains whitespaces
220
					singleColumn.setHeading("untitled");
221
					singleColumn.asWidget().setTitle("untitled");
222
					generalOptionsGroupPanel
223
							.setHeading("DATASERIES untitled");
224
					appearancePanel
225
					.getAppearancePanels()
226
					.get(numberOfCurrentColumn)
227
					.setHeading(
228
							"APPEARANCE FOR \"untitled\"" );
229
				}
230
				
231
				ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setDataserieNaming(singleColumn.asWidget().getTitle());
232
				renameTextBox.setVisible(false);
233
				edit.setVisible(true);
234
				enabled.setVisible(true);
235
				deleteImage.setVisible(true);
236
			}
237

    
238
		});
239

    
240
		singleColumn.addClickHandler(new ClickHandler() {
241
			
242
			@Override
243
			public void onClick(ClickEvent event) {
244
				// TODO Auto-generated method stub
245
				if(singleColumn.isActive()){
246
					renameTextBox.setText(singleColumn.asWidget().getTitle());
247
					singleColumn.setHeading("");
248
					renameTextBox.setSelectionRange(0, renameTextBox.getText()
249
							.length());
250
					renameTextBox.setVisible(true);
251
					renameTextBox.setFocus(true);
252
					edit.setVisible(false);
253
					enabled.setVisible(false);
254
					deleteImage.setVisible(false);
255
				}
256
			}
257
		});
258
		
259
		singleColumn.asWidget().addStyleName("dataserie-tab");
260
		singleColumn.asWidget().addDomHandler(new DoubleClickHandler() {
261

    
262
			@Override
263
			public void onDoubleClick(DoubleClickEvent event) {
264

    
265
				renameTextBox.setText(singleColumn.asWidget().getTitle());
266
				singleColumn.setHeading("");
267
				renameTextBox.setSelectionRange(0, renameTextBox.getText()
268
						.length());
269
				renameTextBox.setVisible(true);
270
				renameTextBox.setFocus(true);
271
				edit.setVisible(false);
272
				enabled.setVisible(false);
273
				deleteImage.setVisible(false);
274
			}
275
		}, DoubleClickEvent.getType());
276

    
277
		enabled.addStyleName("dataserie-checkbox");
278

    
279
		enabled.addClickHandler(new ClickHandler() {
280

    
281
			@Override
282
			public void onClick(ClickEvent event) {
283
				if (enabled.getUrl().equals("https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/512/unchecked_checkbox.png")) {
284
					enabled.setUrl("https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/512/checked_checkbox.png");
285
					ValuesOfFields.getInstance().getColumnsDataList()
286
							.get(numberOfCurrentColumn).setEnabled(true);
287
				} else {
288
					enabled.setUrl("https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/512/unchecked_checkbox.png");
289
					ValuesOfFields.getInstance().getColumnsDataList()
290
							.get(numberOfCurrentColumn).setEnabled(false);
291
				}
292
				Generate.getInstance().generateURLs(
293
						ValuesOfFields.getInstance(), 1);
294
			}
295
		});
296

    
297
		edit.setIcon(IconType.EDIT);
298
		edit.setIconSize(IconSize.DEFAULT);
299
		edit.addStyleName("editname");
300
		edit.addClickHandler(new ClickHandler() {
301
			@Override
302
			public void onClick(ClickEvent clickEvent) {
303

    
304
				renameTextBox.setText(singleColumn.asWidget().getTitle());
305
				singleColumn.setHeading("");
306
				renameTextBox.setSelectionRange(0, renameTextBox.getText().length());
307
				renameTextBox.setVisible(true);
308
				renameTextBox.setFocus(true);
309
				edit.setVisible(false);
310
				enabled.setVisible(false);
311
				deleteImage.setVisible(false);
312

    
313
			}
314
		});
315

    
316
		deleteImage.addStyleName("delete-icon");
317

    
318
		deleteImage.addClickHandler(new ClickHandler() {
319

    
320
			@Override
321
			public void onClick(ClickEvent arg0) {
322
				// TODO Auto-generated method stub
323
			
324
				int index = deleteImageList.indexOf(arg0.getSource());
325
				deleteImageList.remove(index);
326
				listBoxes.remove(index);
327
				ValuesOfFields.getInstance().getColumnsDataList().remove(index);
328
				if (deleteListener != null) {
329
					deleteListener.onEvent(numberOfCurrentColumn);
330
				}
331
				numberOfCurrentColumn--;
332
				if (specialColumnCounter == 1) {
333
					bringAllOfCertainTable(listBoxes.get(0), false);
334
				} else if (specialColumnCounter > 1) {
335
					bringSameOriginOptions();
336
				}
337

    
338
				Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
339

    
340
			}
341
		});
342
		
343
		
344
		
345

    
346
		designOptionsForDataserie(singleColumn, totalColumns,
347
				specialColumnCounter);
348

    
349
		deleteImageList.add(deleteImage);
350
		singleColumn.addDecorate(deleteImage);
351
		singleColumn.asTabLink().add(enabled);
352
		//singleColumn.asTabLink().add(edit);
353
	
354
		if(!isFromLoad){
355
			renameTextBox.setText("");
356
			renameTextBox.setPlaceholder("Name your dataseries..");
357
			singleColumn.setHeading("");
358
			renameTextBox.setSelectionRange(0, renameTextBox.getText()
359
					.length());
360
			renameTextBox.setVisible(true);
361
			
362
			edit.setVisible(false);
363
			enabled.setVisible(false);
364
			deleteImage.setVisible(false);
365
			renameTextBox.setFocus(true);
366
		}
367
	}
368
	
369

    
370
	public void designOptionsForDataserie(Tab whereToAttach, int certainColumn,
371
			final int numberOfCurrentColumn) {
372

    
373
		FlowPanel overallPanel = new FlowPanel();
374
		FlowPanel aggPanel = new FlowPanel();
375
		final DropdownListWidget x_axisListBox = new DropdownListWidget();
376
		final RadioButton totalNumberRadio = new RadioButton("Total number");
377
		totalNumberRadio.setText("Total number");
378
		final RadioButton aggRadio = new RadioButton("");
379
		final DropdownListWidget y_axisListBox = new DropdownListWidget();
380
		aggRadio.addStyleName("radio-button-accordion");
381
		totalNumberRadio.addStyleName("radio-button-accordion");
382
		
383

    
384
		typeOfChart.getListBox().getElement().getStyle().setWidth(90.0, Unit.PCT);
385
		tableListBox.getElement().getStyle().setWidth(90.0, Unit.PCT);
386
		splitBy.getListBox().getElement().getStyle().setWidth(90.0, Unit.PCT);
387
		x_axisListBox.getListBox().getElement().getStyle().setWidth(90.0, Unit.PCT);
388
		
389
		
390
		totalNumberRadio.addClickHandler(new ClickHandler() {
391

    
392
			@Override
393
			public void onClick(ClickEvent event) {
394
				aggRadio.setValue(false);
395
				y_axisListBox.getListBox().setEnabled(false);
396
				aggregateListBox.setEnabled(false);
397
				ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setY_values("*");
398
				ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setTypeOf("count");
399
				ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setIndexOfTypeOf(0);
400
				ValuesOfFields.getInstance().setYaxis(totalNumberRadio.getText());
401
				applyChanges.addStyleName("flashing-button-apply");
402

    
403
			}
404
		});
405

    
406
		aggRadio.addClickHandler(new ClickHandler() {
407

    
408
			@Override
409
			public void onClick(ClickEvent event) {
410
				totalNumberRadio.setValue(false);
411
				y_axisListBox.getListBox().setEnabled(true);
412
				aggregateListBox.setEnabled(true);
413
			}
414
		});
415

    
416
				
417
		Form generalOptionsForm = new Form();
418
		//generalOptionsForm.setType(FormType.HORIZONTAL);
419

    
420
		designOptionsForTypeOfChart(typeOfChart);
421

    
422
		
423
		
424
		listBoxes.add(x_axisListBox);
425

    
426
		TreeListener treeListener = new TreeListener() {
427

    
428
			@Override
429
			public void onEvent() {
430
				filtersPanel.getInfoAlert().setVisible(false);
431
				filtersPanel.getAddNewFilter().setVisible(true);
432
			}
433
		};
434

    
435
		x_axisListBox.setTreeListener(treeListener);
436

    
437
		y_axisListBox.getListBox().setSize(2);
438
	
439

    
440
		aggPanel.add(aggRadio);
441
		aggPanel.add(aggregateListBox);
442
		aggPanel.add(y_axisListBox);
443
		// tempPanel.getElement().getStyle().setMarginLeft(-82.0, Unit.PX);
444
		aggregateListBox.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
445
		y_axisListBox.asWidget().getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
446

    
447
		overallPanel.add(totalNumberRadio);
448
		overallPanel.add(aggPanel);
449

    
450
		FormFieldSet finalFieldSet = new FormFieldSet("", overallPanel);
451
		generalOptionsForm.add(new FormFieldSet("Type of chart", typeOfChart.asWidget()));
452
		generalOptionsForm.add(new FormFieldSet("What do you want to see?", tableListBox));
453
		
454
		generalOptionsForm.add(finalFieldSet);
455

    
456
		generalOptionsForm.add(new FormFieldSet("How do you want to break down?", x_axisListBox.asWidget()));
457
		aggregateListBox.setSize(2);
458
		aggregateListBox.addItem("avg of");
459
		aggregateListBox.addItem("count of");
460
		aggregateListBox.addItem("sum of");
461
		aggregateListBox.addItem("max of");
462
		aggregateListBox.addItem("min of");
463
		aggregateListBox.setSelectedIndex(1);
464
		// generalOptionsForm.add(new FormFieldSet("Aggregate",
465
		// aggregateListBox));
466
		aggregateListBox.addChangeHandler(new ChangeHandler() {
467

    
468
			@Override
469
			public void onChange(ChangeEvent arg0) {
470
				// TODO Auto-generated method stub
471
				ValuesOfFields
472
						.getInstance()
473
						.getColumnsDataList()
474
						.get(numberOfCurrentColumn)
475
						.setTypeOf(
476
								aggregateListBox.getItemText(aggregateListBox
477
										.getSelectedIndex()));
478
				ValuesOfFields.getInstance().getColumnsDataList()
479
						.get(numberOfCurrentColumn)
480
						.setIndexOfTypeOf(aggregateListBox.getSelectedIndex());
481
				ValuesOfFields.getInstance().setYaxis(aggregateListBox.getSelectedItemText() + " " + y_axisListBox.getListBox().getSelectedItemText());
482
				//Generate.getInstance().generateURLs(
483
				//		ValuesOfFields.getInstance(), 1);
484
				applyChanges.addStyleName("flashing-button-apply");
485
			}
486
		});
487

    
488
		ValuesOfFields.getInstance().getColumnsDataList()
489
				.get(numberOfCurrentColumn)
490
				.setTypeOf(aggregateListBox.getItemText(1));
491
		ValuesOfFields.getInstance().getColumnsDataList()
492
				.get(numberOfCurrentColumn).setIndexOfTypeOf(1);
493

    
494
		bringAllForSplitted(splitBy);
495

    
496
		if (isFromLoad) {
497
			splitBy.getListBox().addItem(
498
					ValuesOfFields.getInstance().getColumnsDataList()
499
							.get(numberOfCurrentColumn).getSplitBy());
500
			splitBy.getListBox().setSelectedIndex(0);
501
		}
502

    
503
		generalOptionsForm
504
				.add(new FormFieldSet("Split by", splitBy.asWidget()));
505
		splitBy.getMasterTree().addSelectionHandler(
506
				new SelectionHandler<TreeItem>() {
507

    
508
					@Override
509
					public void onSelection(SelectionEvent<TreeItem> event) {
510
						String[] splitted = event.getSelectedItem()
511
								.getElement().getAttribute("value")
512
								.split(" type ");
513

    
514
						if (!event.getSelectedItem().getText().equals("none")) {
515
							ValuesOfFields.getInstance().getColumnsDataList()
516
									.get(numberOfCurrentColumn)
517
									.setSplitBy(splitted[0]);
518
						} else {
519
							ValuesOfFields.getInstance().getColumnsDataList()
520
									.get(numberOfCurrentColumn).setSplitBy("");
521
						}
522

    
523
					//	Generate.getInstance().generateURLs(
524
					//			ValuesOfFields.getInstance(), 1);
525
						applyChanges.addStyleName("flashing-button-apply");
526
					}
527
				});
528

    
529
		ValuesOfFields.getInstance().getColumnsDataList()
530
				.get(numberOfCurrentColumn).setDesignAs("column");
531
		ValuesOfFields.getInstance().getColumnsDataList()
532
				.get(numberOfCurrentColumn).setSplitBy("");
533

    
534
		generalOptionsGroupPanel.addStyleName("accordionPanel");
535
		generalOptionsGroupPanel.setId("accordionGeneral");
536
		generalOptionsGroupPanel.getElement().getStyle()
537
				.setOverflow(Overflow.VISIBLE);
538
		generalOptionsGroupPanel.setHeading("DATASERIES untitled");
539
		generalOptionsGroupPanel.getHeading().addStyleName("accordionHeading");
540
		generalOptionsGroupPanel.add(generalOptionsForm);
541
		generalOptionsGroupPanel.setIcon(IconType.MINUS);
542
		generalOptionsGroupPanel.setDefaultOpen(true);
543
		generalOptionsGroupPanel.addShowHandler(new ShowHandler() {
544
			@Override
545
			public void onShow(ShowEvent showEvent) {
546
				generalOptionsGroupPanel.setIcon(IconType.MINUS);
547

    
548
				Timer timer = new Timer() {
549

    
550
					@Override
551
					public void run() {
552
						generalOptionsGroupPanel.getElement().getStyle()
553
								.setOverflow(Overflow.VISIBLE);
554
					}
555
				};
556
				timer.schedule(300);
557
			}
558
		});
559
		generalOptionsGroupPanel.addHideHandler(new HideHandler() {
560
			@Override
561
			public void onHide(HideEvent hideEvent) {
562
				generalOptionsGroupPanel.setIcon(IconType.PLUS);
563
				generalOptionsGroupPanel.getElement().getStyle()
564
						.setOverflow(Overflow.HIDDEN);
565
			}
566
		});
567

    
568
		masterPanel.add(generalOptionsGroupPanel);
569

    
570
		
571

    
572
		filtersGroupPanel.addStyleName("accordionPanel");
573
		Element element = (Element) filtersGroupPanel.getElement().getChild(1);
574
		element.getStyle().setOverflow(Overflow.AUTO);
575
		filtersGroupPanel.setHeading("FILTERS");
576
		filtersGroupPanel.getHeading().addStyleName("accordionHeading");
577

    
578
		filtersPanel = new FiltersPanel(schemaFromServer,
579
				numberOfCurrentColumn, isFromLoad, filtersPanels);
580
		filtersPanels.add(filtersPanel);
581

    
582
		filtersGroupPanel.add(filtersPanel.asWidget());
583
		filtersGroupPanel.setIcon(IconType.PLUS);
584
		filtersGroupPanel.addShowHandler(new ShowHandler() {
585
			@Override
586
			public void onShow(ShowEvent showEvent) {
587
				filtersGroupPanel.setIcon(IconType.MINUS);
588
				Timer timer = new Timer() {
589

    
590
					@Override
591
					public void run() {
592
						// filtersGroupPanel.getElement().getStyle().setOverflow(Overflow.VISIBLE);
593
						Element element = (Element) filtersGroupPanel
594
								.getElement().getChild(1);
595
						element.getStyle().setOverflow(Overflow.VISIBLE);
596
					}
597
				};
598
				timer.schedule(300);
599
			}
600
		});
601
		filtersGroupPanel.addHideHandler(new HideHandler() {
602
			@Override
603
			public void onHide(HideEvent hideEvent) {
604
				filtersGroupPanel.setIcon(IconType.PLUS);
605
				Element element = (Element) filtersGroupPanel.getElement()
606
						.getChild(1);
607
				element.getStyle().setOverflow(Overflow.AUTO);
608
			}
609
		});
610
		masterPanel.add(filtersGroupPanel);
611

    
612
		addOptionsForTable(tableListBox, x_axisListBox, y_axisListBox,
613
				numberOfCurrentColumn);
614
	
615
		applyChanges.setText("Apply");
616
		applyChanges.addStyleName("applychanges");
617
		applyChanges.setType(ButtonType.PRIMARY);
618
		applyChanges.addClickHandler(new ClickHandler() {
619
			
620
			@Override
621
			public void onClick(ClickEvent event) {
622
				// TODO Auto-generated method stub
623
				applyChanges.setEnabled(false);
624
				applyChanges.removeStyleName("flashing-button-apply");
625
				Generate.getInstance().getTheme1().addLoadHandler(new LoadHandler() {
626
					
627
					@Override
628
					public void onLoad(LoadEvent event) {
629
						applyChanges.setEnabled(true);
630
					}
631
				});
632
				Generate.getInstance().generateURLs(ValuesOfFields.getInstance(),1);
633
			}
634
		});
635
		totalNumberRadio.setValue(true);
636
		y_axisListBox.getListBox().setEnabled(false);
637
		aggregateListBox.setEnabled(false);
638
		generalOptionsGroupPanel.add(applyChanges);
639
		
640
		whereToAttach.add(masterPanel);
641

    
642
	}
643

    
644
	public void addOptionsForTable(final ListBox tableListBox,
645
			final DropdownListWidget x_axisListBox,
646
			final DropdownListWidget y_axisListBox,
647
			final int numberOfCurrentColumn) {
648

    
649
		for (int i = 0; i < schemaFromServer.getSchema().length(); i++) {
650
			tableListBox
651
					.addItem(schemaFromServer.getSchema().get(i).getLabel());
652
			tableListBox.setSelectedIndex(i);
653
		}
654

    
655
		if (isFromLoad) {
656
			tableListBox.setSelectedIndex(ValuesOfFields.getInstance()
657
					.getColumnsDataList().get(numberOfCurrentColumn)
658
					.getIndexOfDataSource());
659
		}
660

    
661
		tableListBox.addChangeHandler(new ChangeHandler() {
662

    
663
			@Override
664
			public void onChange(ChangeEvent arg0) {
665
				// TODO Auto-generated method stub
666
				ValuesOfFields
667
						.getInstance()
668
						.getColumnsDataList()
669
						.get(numberOfCurrentColumn)
670
						.setDataSource(
671
								tableListBox.getItemText(tableListBox
672
										.getSelectedIndex()));
673
				ValuesOfFields.getInstance().getColumnsDataList()
674
						.get(numberOfCurrentColumn)
675
						.setIndexOfDataSource(tableListBox.getSelectedIndex());
676

    
677
				addOptionsForX_axis(numberOfCurrentColumn, x_axisListBox);
678
				addOptionsForY_axis(y_axisListBox, numberOfCurrentColumn);
679

    
680
				// clear all filters if the table has changed
681
				ValuesOfFields.getInstance().getColumnsDataList()
682
						.get(numberOfCurrentColumn).getFilters().clear();
683
				filtersPanel.asWidget().removeFromParent();
684
				filtersPanel.getFiltersPanel().clear();
685
				filtersPanel = new FiltersPanel(schemaFromServer,
686
						numberOfCurrentColumn, false, filtersPanels);
687
				filtersGroupPanel.add(filtersPanel.asWidget());
688

    
689
			}
690
		});
691

    
692
		ValuesOfFields
693
				.getInstance()
694
				.getColumnsDataList()
695
				.get(numberOfCurrentColumn)
696
				.setDataSource(
697
						tableListBox.getItemText(tableListBox
698
								.getSelectedIndex()));
699
		ValuesOfFields.getInstance().getColumnsDataList()
700
				.get(numberOfCurrentColumn)
701
				.setIndexOfDataSource(tableListBox.getSelectedIndex());
702

    
703
		addOptionsForX_axis(numberOfCurrentColumn, x_axisListBox);
704
		addOptionsForY_axis(y_axisListBox, numberOfCurrentColumn);
705
	}
706

    
707
	public void addOptionsForX_axis(final int numberOfCurrentColumn,
708
			DropdownListWidget x_axisListBox) {
709

    
710
		x_axisListBox.clear();
711

    
712
		
713
		if (ValuesOfFields.getInstance().getColumnsDataList().size() == 1) {
714
			// ferta ola
715

    
716
			if (!isFromLoad) {
717
				bringAllOfCertainTable(x_axisListBox, false);
718
			} else {
719
				bringAllOfCertainTable(x_axisListBox, false);
720
				x_axisListBox.getListBox().addItem(	ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getXaxisTitle());
721
				x_axisListBox.getListBox().setSelectedIndex(0);
722
			}
723
		} else if (ValuesOfFields.getInstance().getColumnsDataList().size() > 1) {
724
			// fere ta koina
725
			if (!isFromLoad) {
726
				 bringSameOriginOptions();
727
//				bringAllOfCertainTable(x_axisListBox, false);
728
			} else {
729
				 bringSameOriginOptions();
730
//				bringAllOfCertainTable(x_axisListBox, false);
731
				listBoxes.get(numberOfCurrentColumn).getListBox().addItem(ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getXaxisTitle());
732
				listBoxes.get(numberOfCurrentColumn).getListBox().setSelectedIndex(0);
733
			}
734
		} else {
735
			// min fereis tpt
736
		}
737

    
738
		x_axisListBox.getMasterTree().addSelectionHandler(
739
				new SelectionHandler<TreeItem>() {
740

    
741
					@Override
742
					public void onSelection(SelectionEvent<TreeItem> event) {
743
						if (event.getSelectedItem().getChildCount() == 0) {// ara
744
																			// den
745
																			// eimai
746
																			// se
747
																			// riza
748
																			// alla
749
																			// se
750
																			// fullo
751
							String[] splitted = event.getSelectedItem()
752
									.getElement().getAttribute("value")
753
									.split(" type ");
754
							ValuesOfFields.getInstance().getColumnsDataList()
755
									.get(numberOfCurrentColumn)
756
									.setExtra_type(splitted[1]);
757
							if (numberOfCurrentColumn == 0) {
758
								ValuesOfFields.getInstance()
759
										.getColumnsDataList()
760
										.get(numberOfCurrentColumn)
761
										.setMain_extra_type(splitted[1]);
762
							}
763

    
764
							ValuesOfFields.getInstance().getColumnsDataList()
765
									.get(numberOfCurrentColumn)
766
									.setX_values(splitted[0]);
767
							ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setXaxisTitle(event.getSelectedItem().getText());
768
						//	Generate.getInstance().generateURLs(
769
						//			ValuesOfFields.getInstance(), 1);
770
							applyChanges.addStyleName("flashing-button-apply");
771
						}
772

    
773
					}
774
				});
775

    
776
		bringAllForSplitted(splitBy);
777

    
778
		if (isFromLoad) {
779
			splitBy.getListBox().addItem(
780
					ValuesOfFields.getInstance().getColumnsDataList()
781
							.get(numberOfCurrentColumn).getSplitBy());
782
			splitBy.getListBox().setSelectedIndex(0);
783
		}
784

    
785
		splitBy.getMasterTree().addSelectionHandler(
786
				new SelectionHandler<TreeItem>() {
787

    
788
					@Override
789
					public void onSelection(SelectionEvent<TreeItem> event) {
790
						String[] splitted = event.getSelectedItem()
791
								.getElement().getAttribute("value")
792
								.split(" type ");
793

    
794
						if (!event.getSelectedItem().getText().equals("none")) {
795
							ValuesOfFields.getInstance().getColumnsDataList()
796
									.get(numberOfCurrentColumn)
797
									.setSplitBy(splitted[0]);
798
						} else {
799
							ValuesOfFields.getInstance().getColumnsDataList()
800
									.get(numberOfCurrentColumn).setSplitBy("");
801
						}
802

    
803
					//	Generate.getInstance().generateURLs(
804
						//		ValuesOfFields.getInstance(), 1);
805
						applyChanges.addStyleName("flashing-button-apply");
806
					}
807
				});
808

    
809
//		if (loadPresets) {
810
//			loadPresets();
811
//			loadPresets = false;
812
//		}
813

    
814
	}
815

    
816
	public void addOptionsForY_axis(final DropdownListWidget y_axisListBox,
817
			final int numberOfCurrentColumn) {
818

    
819
//		y_axisListBox.getListBox().setEnabled(true);
820
//		aggregateListBox.setEnabled(true);
821
		y_axisListBox.clear();
822
		if (isFromLoad) {
823
			y_axisListBox.getListBox().addItem(
824
					ValuesOfFields.getInstance().getColumnsDataList()
825
							.get(numberOfCurrentColumn).getY_values());
826
		}
827
		Tree root = new Tree();
828
		for (int i = 0; i < schemaFromServer.getSchema().get(ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).getIndexOfDataSource()).getCol().length(); i++) {
829
			String temp = null;
830
			temp = schemaFromServer
831
					.getSchema()
832
					.get(ValuesOfFields.getInstance().getColumnsDataList()
833
							.get(numberOfCurrentColumn).getIndexOfDataSource())
834
					.getCol().get(i).getData().toString();
835
			if (temp != null
836
					&& !schemaFromServer
837
							.getSchema()
838
							.get(ValuesOfFields.getInstance()
839
									.getColumnsDataList()
840
									.get(numberOfCurrentColumn)
841
									.getIndexOfDataSource()).getCol().get(i)
842
							.getExtra_type().equals("none")
843
					&& !schemaFromServer
844
							.getSchema()
845
							.get(ValuesOfFields.getInstance()
846
									.getColumnsDataList()
847
									.get(numberOfCurrentColumn)
848
									.getIndexOfDataSource()).getCol().get(i)
849
							.getExtra_type().equals("boolean")) {
850
				TreeItem tempItem = new TreeItem();
851
				tempItem.setText(schemaFromServer
852
						.getSchema()
853
						.get(ValuesOfFields.getInstance().getColumnsDataList()
854
								.get(numberOfCurrentColumn)
855
								.getIndexOfDataSource()).getCol().get(i)
856
						.getLabel());
857
				tempItem.getElement().setAttribute(
858
						"value",
859
						schemaFromServer
860
								.getSchema()
861
								.get(ValuesOfFields.getInstance()
862
										.getColumnsDataList()
863
										.get(numberOfCurrentColumn)
864
										.getIndexOfDataSource()).getCol()
865
								.get(i).getName()
866
								+ " " + temp);
867

    
868
				root.addItem(tempItem);
869
			}
870
		}
871
		y_axisListBox.setTreeOptions(root);
872
		if (root.getItemCount() == 0) {
873
			y_axisListBox.getListBox().setEnabled(false);
874
			aggregateListBox.setEnabled(false);
875
			y_axisListBox.getListBox().addItem("No aggregation available");
876
		}
877

    
878
		y_axisListBox.getMasterTree().addSelectionHandler(
879
				new SelectionHandler<TreeItem>() {
880

    
881
					@Override
882
					public void onSelection(SelectionEvent<TreeItem> event) {
883
						String[] split = event.getSelectedItem().getElement()
884
								.getAttribute("value").split(" ");
885
						ValuesOfFields.getInstance().getColumnsDataList()
886
								.get(numberOfCurrentColumn)
887
								.setY_values(split[0]);
888
						aggregateListBox.clear();
889
						if (split[1].equals("nominal")) {
890
							aggregateListBox.addItem("count of");
891
						} else if (split[1].equals("ordinal")) {
892
							aggregateListBox.addItem("min of");
893
							aggregateListBox.addItem("max of");
894
							aggregateListBox.addItem("count of");
895
						} else {
896
							aggregateListBox.addItem("count of");
897
							aggregateListBox.addItem("min of");
898
							aggregateListBox.addItem("max of");
899
							aggregateListBox.addItem("avg of");
900
							aggregateListBox.addItem("sum of");
901

    
902
						}
903
						ValuesOfFields.getInstance().setYaxis(aggregateListBox.getSelectedItemText() + " " + y_axisListBox.getListBox().getSelectedItemText());
904
						masterPanel.getElement().getStyle().clearOverflow();
905
						masterPanel.getElement().getStyle().setOverflow(Overflow.AUTO);
906

    
907
						applyChanges.addStyleName("flashing-button-apply");
908
					}
909
				});
910
//		String[] split = y_axisListBox.getMasterTree().getItem(0).getElement()
911
//				.getAttribute("value").split(" ");
912
//		ValuesOfFields.getInstance().getColumnsDataList()
913
//				.get(numberOfCurrentColumn).setY_values(split[0]);
914
		ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setY_values("*");
915
		ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setTypeOf("count");
916
		ValuesOfFields.getInstance().getColumnsDataList().get(numberOfCurrentColumn).setIndexOfTypeOf(0);
917
		ValuesOfFields.getInstance().setYaxis("Total number");
918

    
919
	}
920

    
921
	public void designOptionsForTypeOfChart(DropdownListWidget typeOfChart) {
922

    
923
		Tree mainRoot = new Tree();
924
		TreeItem rootColumn = new TreeItem();
925
		TreeItem rootBar = new TreeItem();
926
		TreeItem rootLine = new TreeItem();
927
		TreeItem rootArea = new TreeItem();
928
		TreeItem rootPie = new TreeItem();
929

    
930
		rootColumn.setText("Column");
931
		rootBar.setText("Bar");
932
		rootLine.setText("Line");
933
		rootArea.setText("Area");
934
		rootPie.setText("Pie");
935

    
936
		TreeItem temp = new TreeItem();
937
		temp.setText("Column - Clustered");
938
		temp.setTitle("column-none");
939
		rootColumn.addItem(temp);
940

    
941
		TreeItem temp1 = new TreeItem();
942
		temp1.setText("Column - Stacked");
943
		temp1.setTitle("column-normal");
944
		rootColumn.addItem(temp1);
945

    
946
		TreeItem temp2 = new TreeItem();
947
		temp2.setText("Column - Full stacked");
948
		temp2.setTitle("column-percent");
949
		rootColumn.addItem(temp2);
950

    
951
		TreeItem temp3 = new TreeItem();
952
		temp3.setText("Bar - Clustered");
953
		temp3.setTitle("bar-none");
954
		rootBar.addItem(temp3);
955

    
956
		TreeItem temp4 = new TreeItem();
957
		temp4.setText("Bar - Stacked");
958
		temp4.setTitle("bar-normal");
959
		rootBar.addItem(temp4);
960

    
961
		TreeItem temp5 = new TreeItem();
962
		temp5.setText("Bar - Full stacked");
963
		temp5.setTitle("bar-percent");
964
		rootBar.addItem(temp5);
965

    
966
		TreeItem temp6 = new TreeItem();
967
		temp6.setText("Simple line");
968
		temp6.setTitle("line-none");
969
		rootLine.addItem(temp6);
970

    
971
		TreeItem temp7 = new TreeItem();
972
		temp7.setText("Spline");
973
		temp7.setTitle("spline-none");
974
		rootLine.addItem(temp7);
975

    
976
		TreeItem temp8 = new TreeItem();
977
		temp8.setText("Line with steps");
978
		temp8.setTitle("line-steps");
979
		rootLine.addItem(temp8);
980

    
981
		TreeItem temp9 = new TreeItem();
982
		temp9.setText("Simple area");
983
		temp9.setTitle("area-none");
984
		rootArea.addItem(temp9);
985

    
986
		TreeItem temp10 = new TreeItem();
987
		temp10.setText("Area-Full stacked");
988
		temp10.setTitle("area-percent");
989
		rootArea.addItem(temp10);
990

    
991
		TreeItem temp11 = new TreeItem();
992
		temp11.setText("Area - Stacked");
993
		temp11.setTitle("area-normal");
994
		rootArea.addItem(temp11);
995

    
996
		TreeItem temp12 = new TreeItem();
997
		temp12.setText("Simple Pie");
998
		temp12.setTitle("pie-none");
999
		rootPie.addItem(temp12);
1000

    
1001
		TreeItem temp13 = new TreeItem();
1002
		temp13.setText("3D Pie");
1003
		temp13.setTitle("pie-3D");
1004
		rootPie.addItem(temp13);
1005

    
1006
		TreeItem temp14 = new TreeItem();
1007
		temp12.setText("Donut");
1008
		temp12.setTitle("pie-donut");
1009
		rootPie.addItem(temp14);
1010

    
1011
		mainRoot.addItem(rootColumn);
1012
		mainRoot.addItem(rootBar);
1013
		mainRoot.addItem(rootLine);
1014
		mainRoot.addItem(rootArea);
1015
		mainRoot.addItem(rootPie);
1016

    
1017
		typeOfChart.setTreeOptions(mainRoot);
1018

    
1019
		typeOfChart.getMasterTree().addSelectionHandler(
1020
				new SelectionHandler<TreeItem>() {
1021

    
1022
					@Override
1023
					public void onSelection(SelectionEvent<TreeItem> event) {
1024
						if (event.getSelectedItem().getChildCount() == 0) {
1025
							String[] splitted = event.getSelectedItem()
1026
									.getTitle().split("-");
1027

    
1028
							ValuesOfFields.getInstance().getColumnsDataList()
1029
									.get(numberOfCurrentColumn)
1030
									.setTypeOfChart(splitted[0]);
1031

    
1032
							ValuesOfFields.getInstance().getColumnsDataList()
1033
									.get(numberOfCurrentColumn)
1034
									.setStacking(splitted[1]);
1035

    
1036
							//Generate.getInstance().generateURLs(
1037
							//		ValuesOfFields.getInstance(), 1);
1038
							applyChanges.addStyleName("flashing-button-apply");
1039
						}
1040
					}
1041
				});
1042

    
1043
		if (isFromLoad) {
1044
			if (ValuesOfFields.getInstance().getColumnsDataList()
1045
					.get(numberOfCurrentColumn).getTypeOfChart().equals("")) {
1046
				typeOfChart.getListBox().addItem("Line");
1047
			} else {
1048
				typeOfChart.getListBox().addItem(
1049
						ValuesOfFields.getInstance().getColumnsDataList()
1050
								.get(numberOfCurrentColumn).getTypeOfChart());
1051
			}
1052

    
1053
			typeOfChart.getListBox().setSelectedIndex(0);
1054
		}
1055
	}
1056

    
1057
	public void bringAllOfCertainTable(DropdownListWidget x_optionsListBox,
1058
			boolean isForSplitBy) {
1059

    
1060
		x_optionsListBox.clear();
1061
		Tree mainRoot = new Tree();
1062
		TreeItem root = new TreeItem();
1063

    
1064
		root.setText("more");
1065

    
1066
		int i = ValuesOfFields.getInstance().getColumnsDataList()
1067
				.get(numberOfCurrentColumn).getIndexOfDataSource();
1068

    
1069
		for (int j = 0; j < schemaFromServer.getSchema().get(i).getCol()
1070
				.length(); j++) {
1071
			String temp = null;
1072
			temp = schemaFromServer.getSchema().get(i).getCol().get(j)
1073
					.getData();
1074
			if (temp == null) {
1075
				ArrayList<String> tempList = new ArrayList<String>();
1076
				ArrayList<String> predecessors = new ArrayList<String>();
1077
				tempList.add(schemaFromServer.getSchema().get(i).getName());
1078

    
1079
				if (!schemaFromServer.getSchema().get(i).getCol().get(j)
1080
						.getName().equals("")) {
1081
					predecessors.add(schemaFromServer.getSchema().get(i)
1082
							.getName()
1083
							+ "("
1084
							+ schemaFromServer.getSchema().get(i).getCol()
1085
									.get(j).getToColumn() + ")");
1086
					predecessors.add("("
1087
							+ schemaFromServer.getSchema().get(i).getCol()
1088
									.get(j).getFromColumn()
1089
							+ ")"
1090
							+ schemaFromServer.getSchema().get(i).getCol()
1091
									.get(j).getName()
1092
							+ "("
1093
							+ schemaFromServer.getSchema().get(i).getCol()
1094
									.get(j).getFromColumnAfter() + ")");
1095
				} else {
1096
					predecessors.add(schemaFromServer.getSchema().get(i)
1097
							.getName()
1098
							+ "("
1099
							+ schemaFromServer.getSchema().get(i).getCol()
1100
									.get(j).getFromColumnAfter() + ")");
1101
				}
1102
				if (!schemaFromServer.getSchema().get(i).getName().equals(schemaFromServer.getSchema().get(i).getCol().get(j).getToTable())){
1103
					recursiveExport(schemaFromServer, schemaFromServer.getSchema().get(i).getCol().get(j).getToTable(),schemaFromServer.getSchema().get(i).getName(),tempList, root, predecessors, schemaFromServer.getSchema().get(i).getCol().get(j).getToColumnAfter());
1104
				}
1105
			} else {
1106
				TreeItem tempItem = new TreeItem();
1107
				if (!schemaFromServer.getSchema().get(i).getCol().get(j)
1108
						.getExtra_type().equals("none")
1109
						&& !schemaFromServer.getSchema().get(i).getCol().get(j)
1110
								.getExtra_type().equals("none")
1111
						&& schemaFromServer.getSchema().get(i).getCol().get(j)
1112
								.getDisplayed().equals("true")) {
1113
					tempItem.setText(schemaFromServer.getSchema().get(i)
1114
							.getCol().get(j).getLabel());
1115
					tempItem.setTitle(schemaFromServer.getSchema().get(i)
1116
							.getCol().get(j).getHint());
1117
					tempItem.getElement().setAttribute(
1118
							"value",
1119
							schemaFromServer.getSchema().get(i).getCol().get(j)
1120
									.getName()
1121
									+ " type "
1122
									+ schemaFromServer.getSchema().get(i)
1123
											.getCol().get(j).getExtra_type());
1124

    
1125
					mainRoot.addItem(tempItem);
1126
				}
1127
			}
1128
		}
1129
		if (root.getChildCount() != 0) {
1130
			for (int l = root.getChildCount() - 1; l >= 0; l--)
1131
				mainRoot.addItem(root.getChild(l));
1132

    
1133
		}
1134

    
1135
		mainRoot.setAnimationEnabled(true);
1136

    
1137
		x_optionsListBox.setTreeOptions(mainRoot);
1138

    
1139
		x_optionsListBox.getMasterTree().addSelectionHandler(
1140
				new SelectionHandler<TreeItem>() {
1141

    
1142
					@Override
1143
					public void onSelection(final SelectionEvent<TreeItem> event) {
1144

    
1145
						if (event.getSelectedItem().getChildCount() == 0) {// ara
1146
																			// den
1147
																			// eimai
1148
																			// se
1149
																			// riza
1150
																			// alla
1151
																			// se
1152
																			// fullo
1153
							String[] splitted = event.getSelectedItem()
1154
									.getElement().getAttribute("value")
1155
									.split(" type ");
1156
							ValuesOfFields.getInstance().getColumnsDataList()
1157
									.get(numberOfCurrentColumn)
1158
									.setExtra_type(splitted[1]);
1159
							if (numberOfCurrentColumn == 0) {
1160
								ValuesOfFields.getInstance()
1161
										.getColumnsDataList()
1162
										.get(numberOfCurrentColumn)
1163
										.setMain_extra_type(splitted[1]);
1164
							}
1165
							ValuesOfFields.getInstance().getColumnsDataList()
1166
									.get(numberOfCurrentColumn)
1167
									.setX_values(splitted[0]);
1168

    
1169
							ValuesOfFields
1170
									.getInstance()
1171
									.getColumnsDataList()
1172
									.get(numberOfCurrentColumn)
1173
									.setXaxisTitle(
1174
											event.getSelectedItem().getText());
1175
							//Generate.getInstance().generateURLs(
1176
							//		ValuesOfFields.getInstance(), 1);
1177
							applyChanges.addStyleName("flashing-button-apply");
1178
						} else {
1179
							if (comingFromSetState == 1 && prevOpenState) {
1180
								comingFromSetState++;
1181
							}
1182
							if (comingFromSetState != 2) {
1183
								comingFromSetState++;
1184
								event.getSelectedItem().setState(
1185
										!event.getSelectedItem().getState());
1186
								prevOpenState = !event.getSelectedItem()
1187
										.getState();
1188

    
1189
							} else {
1190
								comingFromSetState = 0;
1191
								prevOpenState = true;
1192
							}
1193
						}
1194
					}
1195
				});
1196
	}
1197

    
1198
	public void recursiveExport(SchemaAnswer schemaFromServer, String to,
1199
			String from, ArrayList<String> circleAlert, TreeItem root,
1200
			ArrayList<String> predecessors, String toColumn) {
1201

    
1202
		for (int i = 0; i < schemaFromServer.getSchema().length(); i++) {
1203
			if (schemaFromServer.getSchema().get(i).getName().equals(to)) {// vres
1204
																			// poio
1205
																			// table
1206
																			// prepei
1207
																			// na
1208
																			// kanoume
1209
																			// expand,
1210
																			// sumfwna
1211
																			// me
1212
																			// tin
1213
																			// metavliti
1214
																			// "to"
1215

    
1216
				predecessors.add("(" + toColumn + ")"
1217
						+ schemaFromServer.getSchema().get(i).getName());
1218
				TreeItem newRoot = new TreeItem();
1219
				root.addItem(newRoot);
1220

    
1221
				newRoot.setText(schemaFromServer.getSchema().get(i).getLabel());
1222
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1223
						.getCol().length(); k++) {
1224
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1225
							.getToTable() == null) {
1226
						TreeItem tempItem = new TreeItem();
1227
						String contentString = predecessorsToString(predecessors);
1228
						if (!schemaFromServer.getSchema().get(i).getCol()
1229
								.get(k).getExtra_type().equals("boolean")
1230
								&& !schemaFromServer.getSchema().get(i)
1231
										.getCol().get(k).getExtra_type()
1232
										.equals("none")
1233
								&& schemaFromServer.getSchema().get(i).getCol()
1234
										.get(k).getDisplayed().equals("true")) {
1235
							tempItem.setText(schemaFromServer.getSchema()
1236
									.get(i).getCol().get(k).getLabel());
1237
							tempItem.setTitle(schemaFromServer.getSchema()
1238
									.get(i).getCol().get(k).getHint());
1239

    
1240
							tempItem.getElement().setAttribute(
1241
									"value",
1242
									contentString
1243
											+ "-"
1244
											+ schemaFromServer.getSchema()
1245
													.get(i).getCol().get(k)
1246
													.getName()
1247
											+ " type "
1248
											+ schemaFromServer.getSchema()
1249
													.get(i).getCol().get(k)
1250
													.getExtra_type());
1251

    
1252
							newRoot.addItem(tempItem);
1253
						}
1254
					}
1255
				}
1256

    
1257
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1258
						.getCol().length(); k++) {
1259
					// afou to vreis pare ena ena ta columns kai des poio
1260
					// xreiazetai expand
1261
					boolean found = false;
1262

    
1263
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1264
							.getToTable() != null) {
1265
						if (circleAlert.contains(schemaFromServer.getSchema()
1266
								.get(i).getCol().get(k).getToTable())) {// an
1267
																		// auto
1268
																		// pou
1269
																		// xreiazetai
1270
																		// expand
1271
																		// exei
1272
																		// ginei
1273
																		// expand
1274
																		// paliotera
1275
																		// tote
1276
																		// min
1277
																		// mpeis
1278
							found = true;
1279
						}
1280

    
1281
						if (!found) {// den to exoume kanei expand opote ksekina
1282
										// tin anadromi
1283

    
1284
							circleAlert.add(schemaFromServer.getSchema().get(i)
1285
									.getName());
1286
							if (!schemaFromServer.getSchema().get(i).getCol()
1287
									.get(k).getName().equals("")) {
1288
								predecessors.add(predecessors.get(
1289
										predecessors.size() - 1).concat(
1290
										"(" + toColumn + ")"));
1291
								predecessors.remove(predecessors.size() - 2);
1292
								predecessors.add("("
1293
										+ schemaFromServer.getSchema().get(i)
1294
												.getCol().get(k)
1295
												.getFromColumn()
1296
										+ ")"
1297
										+ schemaFromServer.getSchema().get(i)
1298
												.getCol().get(k).getName()
1299
										+ "("
1300
										+ schemaFromServer.getSchema().get(i)
1301
												.getCol().get(k)
1302
												.getFromColumnAfter() + ")");
1303

    
1304
							} else {
1305
								predecessors.add(predecessors.get(
1306
										predecessors.size() - 1).concat(
1307
										"("
1308
												+ schemaFromServer.getSchema()
1309
														.get(i).getCol().get(k)
1310
														.getFromColumnAfter()
1311
												+ ")"));
1312
								predecessors.remove(predecessors.size() - 2);
1313
							}
1314

    
1315
							if (!schemaFromServer
1316
									.getSchema()
1317
									.get(i)
1318
									.getName()
1319
									.equals(schemaFromServer.getSchema().get(i)
1320
											.getCol().get(k).getToTable()))
1321
								recursiveExport(schemaFromServer,
1322
										schemaFromServer.getSchema().get(i)
1323
												.getCol().get(k).getToTable(),
1324
										schemaFromServer.getSchema().get(i)
1325
												.getName(), circleAlert,
1326
										newRoot, predecessors, schemaFromServer
1327
												.getSchema().get(i).getCol()
1328
												.get(k).getToColumn());
1329
							if (newRoot.getChildCount() == 0)
1330
								root.removeItem(newRoot);
1331

    
1332
						} else {// to exoume ksanakanei expand opote proxwra sto
1333
								// epomeno
1334
								// do-nothing
1335
						}
1336
					}
1337
				}
1338
				break;
1339
			}
1340
		}
1341

    
1342
	}
1343

    
1344
	public void recursiveExport_ForSplitted(SchemaAnswer schemaFromServer,
1345
			String to, String from, ArrayList<String> circleAlert,
1346
			TreeItem root, ArrayList<String> predecessors, String toColumn) {
1347

    
1348
		for (int i = 0; i < schemaFromServer.getSchema().length(); i++) {
1349
			if (schemaFromServer.getSchema().get(i).getName().equals(to)) {// vres
1350
																			// poio
1351
																			// table
1352
																			// prepei
1353
																			// na
1354
																			// kanoume
1355
																			// expand,
1356
																			// sumfwna
1357
																			// me
1358
																			// tin
1359
																			// metavliti
1360
																			// "to"
1361

    
1362
				predecessors.add("(" + toColumn + ")"
1363
						+ schemaFromServer.getSchema().get(i).getName());
1364
				TreeItem newRoot = new TreeItem();
1365
				root.addItem(newRoot);
1366

    
1367
				newRoot.setText(schemaFromServer.getSchema().get(i).getLabel());
1368
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1369
						.getCol().length(); k++) {
1370
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1371
							.getToTable() == null) {
1372
						TreeItem tempItem = new TreeItem();
1373
						String contentString = predecessorsToString(predecessors);
1374
						if (!schemaFromServer.getSchema().get(i).getCol()
1375
								.get(k).getExtra_type().equals("boolean")
1376
								&& !schemaFromServer.getSchema().get(i)
1377
										.getCol().get(k).getExtra_type()
1378
										.equals("none")
1379
								&& schemaFromServer.getSchema().get(i).getCol()
1380
										.get(k).getDisplayed().equals("true")) {
1381
							tempItem.setText(schemaFromServer.getSchema()
1382
									.get(i).getCol().get(k).getLabel());
1383
							tempItem.setTitle(schemaFromServer.getSchema()
1384
									.get(i).getCol().get(k).getHint());
1385

    
1386
							tempItem.getElement().setAttribute(
1387
									"value",
1388
									contentString
1389
											+ "-"
1390
											+ schemaFromServer.getSchema()
1391
													.get(i).getCol().get(k)
1392
													.getName()
1393
											+ " type "
1394
											+ schemaFromServer.getSchema()
1395
													.get(i).getCol().get(k)
1396
													.getExtra_type());
1397

    
1398
							newRoot.addItem(tempItem);
1399
						}
1400
					}
1401
				}
1402

    
1403
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1404
						.getCol().length(); k++) {
1405
					// afou to vreis pare ena ena ta columns kai des poio
1406
					// xreiazetai expand
1407
					boolean found = false;
1408

    
1409
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1410
							.getToTable() != null) {
1411
						if (circleAlert.contains(schemaFromServer.getSchema()
1412
								.get(i).getCol().get(k).getToTable())) {// an
1413
																		// auto
1414
																		// pou
1415
																		// xreiazetai
1416
																		// expand
1417
																		// exei
1418
																		// ginei
1419
																		// expand
1420
																		// paliotera
1421
																		// tote
1422
																		// min
1423
																		// mpeis
1424
							found = true;
1425
						}
1426

    
1427
						if (!found) {// den to exoume kanei expand opote ksekina
1428
										// tin anadromi
1429

    
1430
							circleAlert.add(schemaFromServer.getSchema().get(i)
1431
									.getName());
1432
							if (!schemaFromServer.getSchema().get(i).getCol()
1433
									.get(k).getName().equals("")) {
1434
								predecessors.add(predecessors.get(
1435
										predecessors.size() - 1).concat(
1436
										"(" + toColumn + ")"));
1437
								predecessors.remove(predecessors.size() - 2);
1438
								predecessors.add("("
1439
										+ schemaFromServer.getSchema().get(i)
1440
												.getCol().get(k)
1441
												.getFromColumn()
1442
										+ ")"
1443
										+ schemaFromServer.getSchema().get(i)
1444
												.getCol().get(k).getName()
1445
										+ "("
1446
										+ schemaFromServer.getSchema().get(i)
1447
												.getCol().get(k)
1448
												.getFromColumnAfter() + ")");
1449

    
1450
							} else {
1451
								predecessors.add(predecessors.get(
1452
										predecessors.size() - 1).concat(
1453
										"("
1454
												+ schemaFromServer.getSchema()
1455
														.get(i).getCol().get(k)
1456
														.getFromColumnAfter()
1457
												+ ")"));
1458
								predecessors.remove(predecessors.size() - 2);
1459
							}
1460

    
1461
							if (!schemaFromServer
1462
									.getSchema()
1463
									.get(i)
1464
									.getName()
1465
									.equals(schemaFromServer.getSchema().get(i)
1466
											.getCol().get(k).getToTable()))
1467
								recursiveExport_ForSplitted(schemaFromServer,
1468
										schemaFromServer.getSchema().get(i)
1469
												.getCol().get(k).getToTable(),
1470
										schemaFromServer.getSchema().get(i)
1471
												.getName(), circleAlert,
1472
										newRoot, predecessors, schemaFromServer
1473
												.getSchema().get(i).getCol()
1474
												.get(k).getToColumn());
1475
							if (newRoot.getChildCount() == 0)
1476
								root.removeItem(newRoot);
1477

    
1478
						} else {// to exoume ksanakanei expand opote proxwra sto
1479
								// epomeno
1480
								// do-nothing
1481
						}
1482
					}
1483
				}
1484
				break;
1485
			}
1486
		}
1487

    
1488
	}
1489

    
1490
	public void recursiveExport_ForCommon(SchemaAnswer schemaFromServer,
1491
			String to, String from, ArrayList<String> circleAlert,
1492
			TreeItem root, ArrayList<String> predecessors, String extra_type,
1493
			String toColumn) {
1494

    
1495
		for (int i = 0; i < schemaFromServer.getSchema().length(); i++) {
1496
			if (schemaFromServer.getSchema().get(i).getName().equals(to)) {// vres
1497
																			// poio
1498
																			// table
1499
																			// prepei
1500
																			// na
1501
																			// kanoume
1502
																			// expand,
1503
																			// sumfwna
1504
																			// me
1505
																			// tin
1506
																			// metavliti
1507
																			// "to"
1508
				predecessors.add("(" + toColumn + ")"
1509
						+ schemaFromServer.getSchema().get(i).getName());
1510
				TreeItem newRoot = new TreeItem();
1511
				root.addItem(newRoot);
1512
				newRoot.setText(schemaFromServer.getSchema().get(i).getLabel());
1513
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1514
						.getCol().length(); k++) {
1515

    
1516
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1517
							.getToTable() == null
1518
							&& schemaFromServer.getSchema().get(i).getCol()
1519
									.get(k).getExtra_type().equals(extra_type)) {
1520
						if (schemaFromServer.getSchema().get(i).getCol().get(k)
1521
								.getExtra_type().equals("free")) {
1522
							if (schemaFromServer
1523
									.getSchema()
1524
									.get(i)
1525
									.getCol()
1526
									.get(k)
1527
									.getName()
1528
									.equals(ValuesOfFields.getInstance()
1529
											.getColumnsDataList().get(0)
1530
											.getX_values())) {
1531
								TreeItem tempItem = new TreeItem();
1532
								String contentString = predecessorsToString(predecessors);
1533
								if (schemaFromServer.getSchema().get(i)
1534
										.getCol().get(k).getDisplayed()
1535
										.equals("true")) {
1536
									tempItem.setText(schemaFromServer
1537
											.getSchema().get(i).getCol().get(k)
1538
											.getLabel());
1539
									tempItem.setTitle(schemaFromServer
1540
											.getSchema().get(i).getCol().get(k)
1541
											.getHint());
1542
									tempItem.getElement().setAttribute(
1543
											"value",
1544
											contentString
1545
													+ "-"
1546
													+ schemaFromServer
1547
															.getSchema().get(i)
1548
															.getCol().get(k)
1549
															.getName()
1550
													+ " type "
1551
													+ schemaFromServer
1552
															.getSchema().get(i)
1553
															.getCol().get(k)
1554
															.getExtra_type());
1555

    
1556
									newRoot.addItem(tempItem);
1557
								}
1558
							}
1559
						} else {
1560
							TreeItem tempItem = new TreeItem();
1561
							String contentString = predecessorsToString(predecessors);
1562
							if (schemaFromServer.getSchema().get(i).getCol()
1563
									.get(k).getDisplayed().equals("true")) {
1564
								tempItem.setText(schemaFromServer.getSchema()
1565
										.get(i).getCol().get(k).getLabel());
1566
								tempItem.setTitle(schemaFromServer.getSchema()
1567
										.get(i).getCol().get(k).getHint());
1568
								tempItem.getElement().setAttribute(
1569
										"value",
1570
										contentString
1571
												+ "-"
1572
												+ schemaFromServer.getSchema()
1573
														.get(i).getCol().get(k)
1574
														.getName()
1575
												+ " type "
1576
												+ schemaFromServer.getSchema()
1577
														.get(i).getCol().get(k)
1578
														.getExtra_type());
1579

    
1580
								newRoot.addItem(tempItem);
1581
							}
1582
						}
1583

    
1584
					}
1585
				}
1586

    
1587
				for (int k = 0; k < schemaFromServer.getSchema().get(i)
1588
						.getCol().length(); k++) {
1589
					// afou to vreis pare ena ena ta columns kai des poio
1590
					// xreiazetai expand
1591
					boolean found = false;
1592
					if (schemaFromServer.getSchema().get(i).getCol().get(k)
1593
							.getToTable() != null) {
1594
						if (circleAlert.contains(schemaFromServer.getSchema()
1595
								.get(i).getCol().get(k).getToTable())) {// an
1596
																		// auto
1597
																		// pou
1598
																		// xreiazetai
1599
																		// expand
1600
																		// exei
1601
																		// ginei
1602
																		// expand
1603
																		// paliotera
1604
																		// tote
1605
																		// min
1606
																		// mpeis
1607
							found = true;
1608
						}
1609

    
1610
						if (!found) {// den to exoume kanei expand opote ksekina
1611
										// tin anadromi
1612
							// circleAlert.add(schemaFromServer.getSchema().get(i).getCol().get(k).getToTable());
1613
							circleAlert.add(schemaFromServer.getSchema().get(i)
1614
									.getName());
1615
							if (!schemaFromServer.getSchema().get(i).getCol()
1616
									.get(k).getName().equals("")) {
1617
								predecessors.add(predecessors.get(
1618
										predecessors.size() - 1).concat(
1619
										"(" + toColumn + ")"));
1620
								predecessors.remove(predecessors.size() - 2);
1621
								predecessors.add("("
1622
										+ schemaFromServer.getSchema().get(i)
1623
												.getName()
1624
										+ ")"
1625
										+ schemaFromServer.getSchema().get(i)
1626
												.getCol().get(k).getName()
1627
										+ "("
1628
										+ schemaFromServer.getSchema().get(i)
1629
												.getCol().get(k).getToTable()
1630
										+ ")");
1631
							}
1632
							if (!schemaFromServer
1633
									.getSchema()
1634
									.get(i)
1635
									.getName()
1636
									.equals(schemaFromServer.getSchema().get(i)
1637
											.getCol().get(k).getToTable()))
1638
								recursiveExport_ForCommon(schemaFromServer,
1639
										schemaFromServer.getSchema().get(i)
1640
												.getCol().get(k).getToTable(),
1641
										schemaFromServer.getSchema().get(i)
1642
												.getName(), circleAlert,
1643
										newRoot, predecessors, extra_type,
1644
										schemaFromServer.getSchema().get(i)
1645
												.getCol().get(k).getToColumn());
1646
							if (newRoot.getChildCount() == 0)
1647
								root.removeItem(newRoot);
1648
						} else {// to exoume ksanakanei expand opote proxwra sto
1649
								// epomeno
1650
								// do-nothing
1651
						}
1652
					}
1653
				}
1654
				if (newRoot.getChildCount() == 0) {
1655
					root.removeItem(newRoot);
1656
				}
1657
				break;
1658
			}
1659
		}
1660

    
1661
	}
1662

    
1663
	public String predecessorsToString(ArrayList<String> predecessors) {
1664

    
1665
		String contentString = new String("");
1666
		for (int i = 0; i < predecessors.size(); i++) {
1667
			contentString = contentString.concat(predecessors.get(i));
1668
			if (i != predecessors.size() - 1) {
1669
				contentString = contentString.concat("-");
1670
			}
1671
		}
1672

    
1673
		return contentString;
1674
	}
1675

    
1676
	public void bringSameOriginOptions() {
1677

    
1678
//		String extra_type = ValuesOfFields.getInstance().getColumnsDataList()
1679
//				.get(0).getMain_extra_type();
1680

    
1681
		for (int it = 0; it < ValuesOfFields.getInstance().getColumnsDataList()
1682
				.size(); it++) {
1683

    
1684
			Tree mainRoot = new Tree();
1685
			TreeItem root = new TreeItem();
1686
			int i = ValuesOfFields.getInstance().getColumnsDataList().get(it)
1687
					.getIndexOfDataSource();
1688

    
1689
			root.setText("more");
1690
			for (int j = 0; j < schemaFromServer.getSchema().get(i).getCol()
1691
					.length(); j++) {
1692
				String temp = null;
1693
				temp = schemaFromServer.getSchema().get(i).getCol().get(j)
1694
						.getData();
1695
				if (temp == null) {
1696
					ArrayList<String> tempList = new ArrayList<String>();
1697
					ArrayList<String> predecessors = new ArrayList<String>();
1698
					tempList.add(schemaFromServer.getSchema().get(i).getName());
1699
					if (!schemaFromServer.getSchema().get(i).getCol().get(j)
1700
							.getName().equals(""))
1701
						predecessors.add("("+ schemaFromServer.getSchema().get(i).getName()+ ")"+ schemaFromServer.getSchema().get(i).getCol().get(j).getName()+ "("+ schemaFromServer.getSchema().get(i).getCol().get(j).getToTable() + ")");
1702
					if (!schemaFromServer.getSchema().get(i).getName().equals(schemaFromServer.getSchema().get(i).getCol().get(j).getToTable()))
1703
						recursiveExport(schemaFromServer,schemaFromServer.getSchema().get(i).getCol().get(j).getToTable(), schemaFromServer.getSchema().get(i).getName(),tempList, root, predecessors,schemaFromServer.getSchema().get(i).getCol().get(j).getToColumn());
1704
				} else {
1705
					TreeItem tempItem = new TreeItem();
1706
//					if (schemaFromServer.getSchema().get(i).getCol().get(j).getExtra_type().equals(extra_type)) {
1707
//						if (schemaFromServer.getSchema().get(i).getCol().get(j).getExtra_type().equals("free")) {
1708
//							if (schemaFromServer.getSchema().get(i).getCol().get(j).getName().equals(ValuesOfFields.getInstance().getColumnsDataList().get(0).getX_values())) {
1709
//								tempItem.setText(schemaFromServer.getSchema().get(i).getCol().get(j).getLabel());
1710
//								tempItem.getElement().setAttribute(
1711
//										"value",
1712
//										schemaFromServer.getSchema().get(i)
1713
//												.getCol().get(j).getName()
1714
//												+ " type "
1715
//												+ schemaFromServer.getSchema()
1716
//														.get(i).getCol().get(j)
1717
//														.getExtra_type());
1718
//								tempItem.setTitle(schemaFromServer.getSchema()
1719
//										.get(i).getCol().get(j).getHint());
1720
//
1721
//								mainRoot.addItem(tempItem);
1722
//							}
1723
//						} else {
1724
//							tempItem.setText(schemaFromServer.getSchema()
1725
//									.get(i).getCol().get(j).getLabel());
1726
//							tempItem.getElement().setAttribute(
1727
//									"value",
1728
//									schemaFromServer.getSchema().get(i)
1729
//											.getCol().get(j).getName()
1730
//											+ " type "
1731
//											+ schemaFromServer.getSchema()
1732
//													.get(i).getCol().get(j)
1733
//													.getExtra_type());
1734
//							tempItem.setTitle(schemaFromServer.getSchema()
1735
//									.get(i).getCol().get(j).getHint());
1736
//
1737
//							mainRoot.addItem(tempItem);
1738
//						}
1739
//					}
1740
					
1741
					if (!schemaFromServer.getSchema().get(i).getCol().get(j).getExtra_type().equals("none") && !schemaFromServer.getSchema().get(i).getCol().get(j).getExtra_type().equals("none") && schemaFromServer.getSchema().get(i).getCol().get(j).getDisplayed().equals("true")) {
1742
						tempItem.setText(schemaFromServer.getSchema().get(i).getCol().get(j).getLabel());
1743
						tempItem.setTitle(schemaFromServer.getSchema().get(i).getCol().get(j).getHint());
1744
						tempItem.getElement().setAttribute(	"value",schemaFromServer.getSchema().get(i).getCol().get(j).getName()+ " type "	+ schemaFromServer.getSchema().get(i).getCol().get(j).getExtra_type());
1745

    
1746
						mainRoot.addItem(tempItem);
1747
					}
1748
				}
1749
			}
1750

    
1751
			if (root.getChildCount() == 0 && root.getTitle().equals("")) {
1752
				mainRoot.removeItem(root);
1753
			} else {
1754
				mainRoot.addItem(root);
1755
			}
1756
			mainRoot.setAnimationEnabled(true);
1757

    
1758
			listBoxes.get(it).setTreeOptions(mainRoot);
1759
			listBoxes.get(it).getMasterTree()
1760
					.addSelectionHandler(new SelectionHandler<TreeItem>() {
1761

    
1762
						@Override
1763
						public void onSelection(SelectionEvent<TreeItem> event) {
1764

    
1765
							if (event.getSelectedItem().getChildCount() == 0) {// ara
1766
																				// den
1767
																				// eimai
1768
																				// se
1769
																				// riza
1770
																				// alla
1771
																				// se
1772
																				// fullo
1773
								String[] splitted = event.getSelectedItem()
1774
										.getElement().getAttribute("value")
1775
										.split(" type ");
1776
								ValuesOfFields.getInstance()
1777
										.getColumnsDataList()
1778
										.get(numberOfCurrentColumn)
1779
										.setExtra_type(splitted[1]);
1780

    
1781
								if (numberOfCurrentColumn == 0) {
1782
									ValuesOfFields.getInstance()
1783
											.getColumnsDataList()
1784
											.get(numberOfCurrentColumn)
1785
											.setMain_extra_type(splitted[1]);
1786
								}
1787
								ValuesOfFields.getInstance()
1788
										.getColumnsDataList()
1789
										.get(numberOfCurrentColumn)
1790
										.setX_values(splitted[0]);
1791
								ValuesOfFields
1792
										.getInstance()
1793
										.getColumnsDataList()
1794
										.get(numberOfCurrentColumn)
1795
										.setXaxisTitle(
1796
												event.getSelectedItem()
1797
														.getText());
1798
							//	Generate.getInstance().generateURLs(
1799
							//			ValuesOfFields.getInstance(), 1);
1800
							}
1801
						}
1802
					});
1803

    
1804
		}
1805

    
1806
	}
1807

    
1808
	public void bringAllForSplitted(DropdownListWidget x_optionsListBox) {
1809

    
1810
		x_optionsListBox.clear();
1811
		Tree mainRoot = new Tree();
1812
		TreeItem root = new TreeItem();
1813
		root.setText("more");
1814
		TreeItem noneItem = new TreeItem();
1815
		noneItem.setText("none");
1816

    
1817
		mainRoot.addItem(noneItem);
1818

    
1819
		int i = ValuesOfFields.getInstance().getColumnsDataList()
1820
				.get(numberOfCurrentColumn).getIndexOfDataSource();
1821

    
1822
		for (int j = 0; j < schemaFromServer.getSchema().get(i).getCol()
1823
				.length(); j++) {
1824
			String temp = null;
1825
			temp = schemaFromServer.getSchema().get(i).getCol().get(j)
1826
					.getData();
1827
			if (temp == null) {
1828
				ArrayList<String> tempList = new ArrayList<String>();
1829
				ArrayList<String> predecessors = new ArrayList<String>();
1830
				tempList.add(schemaFromServer.getSchema().get(i).getName());
1831

    
1832
				if (!schemaFromServer.getSchema().get(i).getCol().get(j)
1833
						.getName().equals("")) {
1834
					predecessors.add(schemaFromServer.getSchema().get(i)
1835
							.getName()
1836
							+ "("
1837
							+ schemaFromServer.getSchema().get(i).getCol()
1838
									.get(j).getToColumn() + ")");
1839
					predecessors.add("("
1840
							+ schemaFromServer.getSchema().get(i).getCol()
1841
									.get(j).getFromColumn()
1842
							+ ")"
1843
							+ schemaFromServer.getSchema().get(i).getCol()
1844
									.get(j).getName()
1845
							+ "("
1846
							+ schemaFromServer.getSchema().get(i).getCol()
1847
									.get(j).getFromColumnAfter() + ")");
1848
				} else {
1849
					predecessors.add(schemaFromServer.getSchema().get(i)
1850
							.getName()
1851
							+ "("
1852
							+ schemaFromServer.getSchema().get(i).getCol()
1853
									.get(j).getFromColumnAfter() + ")");
1854
				}
1855
				if (!schemaFromServer
1856
						.getSchema()
1857
						.get(i)
1858
						.getName()
1859
						.equals(schemaFromServer.getSchema().get(i).getCol()
1860
								.get(j).getToTable()))
1861
					recursiveExport(schemaFromServer, schemaFromServer
1862
							.getSchema().get(i).getCol().get(j).getToTable(),
1863
							schemaFromServer.getSchema().get(i).getName(),
1864
							tempList, root, predecessors, schemaFromServer
1865
									.getSchema().get(i).getCol().get(j)
1866
									.getToColumnAfter());
1867
			} else {
1868
				TreeItem tempItem = new TreeItem();
1869
				if (!schemaFromServer.getSchema().get(i).getCol().get(j)
1870
						.getExtra_type().equals("none")
1871
						&& !schemaFromServer.getSchema().get(i).getCol().get(j)
1872
								.getExtra_type().equals("none")
1873
						&& schemaFromServer.getSchema().get(i).getCol().get(j)
1874
								.getDisplayed().equals("true")) {
1875
					tempItem.setText(schemaFromServer.getSchema().get(i)
1876
							.getCol().get(j).getLabel());
1877
					tempItem.setTitle(schemaFromServer.getSchema().get(i)
1878
							.getCol().get(j).getHint());
1879
					tempItem.getElement().setAttribute(
1880
							"value",
1881
							schemaFromServer.getSchema().get(i).getCol().get(j)
1882
									.getName()
1883
									+ " type "
1884
									+ schemaFromServer.getSchema().get(i)
1885
											.getCol().get(j).getExtra_type());
1886

    
1887
					mainRoot.addItem(tempItem);
1888
				}
1889
			}
1890
		}
1891

    
1892
		if (root.getChildCount() != 0) {
1893
			for (int l = root.getChildCount() - 1; l >= 0; l--)
1894
				mainRoot.addItem(root.getChild(l));
1895
		}
1896
		mainRoot.setAnimationEnabled(true);
1897

    
1898
		x_optionsListBox.setTreeOptions(mainRoot);
1899

    
1900
	}
1901

    
1902
	public Tree deduplicateTree(Tree root) {
1903

    
1904
		Tree newRoot = new Tree();
1905
		boolean found = false;
1906
		for (int itr = root.getItemCount() - 1; itr >= 0; itr--) {
1907
			TreeItem search = root.getItem(itr);
1908
			found = false;
1909
			for (int itr2 = 0; itr2 < newRoot.getItemCount(); itr2++) {
1910
				if (search.getText().equals(newRoot.getItem(itr2).getText())) {
1911
					found = true;
1912
					break;
1913
				}
1914
			}
1915
			if (!found) {
1916
				newRoot.addItem(search);
1917
			}
1918
		}
1919

    
1920
		return newRoot;
1921

    
1922
	}
1923

    
1924
	public ArrayList<String> removeDuplicates(ArrayList<String> results) {
1925
		ArrayList<String> temp = new ArrayList<String>();
1926
		for (int i = 0; i < results.size(); i++) {
1927
			if (!temp.contains(results.get(i))) {
1928
				temp.add(results.get(i));
1929
			}
1930
		}
1931

    
1932
		return temp;
1933
	}
1934

    
1935
	public void SwitchTabs(Tab previous, Tab next) {
1936

    
1937
		previous.setActive(false);
1938
		previous.setEnabled(true);
1939

    
1940
	}
1941

    
1942
	public void loadPresets() {
1943

    
1944
		tableListBox.setSelectedIndex(1);
1945

    
1946
		if (listBoxes.get(numberOfCurrentColumn).getMasterTree().getItemCount() == 0) {// i
1947
																						// prwti
1948
																						// klisi
1949
																						// tis
1950
																						// loadPresets
1951
			listBoxes.get(numberOfCurrentColumn).getListBox().addItem("name");
1952
			ValuesOfFields.getInstance().getColumnsDataList()
1953
					.get(numberOfCurrentColumn).setExtra_type("free");
1954
			if (numberOfCurrentColumn == 0) {
1955
				ValuesOfFields.getInstance().getColumnsDataList()
1956
						.get(numberOfCurrentColumn).setMain_extra_type("free");
1957
			}
1958
		} else {// i deuteri kai teleutaia
1959
			listBoxes
1960
					.get(numberOfCurrentColumn)
1961
					.getListBox()
1962
					.addItem(
1963
							listBoxes.get(numberOfCurrentColumn)
1964
									.getMasterTree().getItem(0).getText());
1965
			String[] splittedType = listBoxes.get(numberOfCurrentColumn)
1966
					.getMasterTree().getItem(0).getElement()
1967
					.getAttribute("value").split(" type ");
1968
			ValuesOfFields.getInstance().getColumnsDataList()
1969
					.get(numberOfCurrentColumn).setExtra_type(splittedType[1]);
1970
			if (numberOfCurrentColumn == 0) {
1971
				ValuesOfFields.getInstance().getColumnsDataList()
1972
						.get(numberOfCurrentColumn)
1973
						.setMain_extra_type(splittedType[1]);
1974
			}
1975
		}
1976

    
1977
		ValuesOfFields.getInstance().getColumnsDataList()
1978
				.get(numberOfCurrentColumn)
1979
				.setDataSource(tableListBox.getSelectedItemText());
1980
		ValuesOfFields.getInstance().getColumnsDataList()
1981
				.get(numberOfCurrentColumn).setIndexOfDataSource(1);
1982
		ValuesOfFields
1983
				.getInstance()
1984
				.getColumnsDataList()
1985
				.get(numberOfCurrentColumn)
1986
				.setX_values(
1987
						listBoxes.get(numberOfCurrentColumn).getListBox()
1988
								.getSelectedItemText());
1989
		ValuesOfFields
1990
				.getInstance()
1991
				.getColumnsDataList()
1992
				.get(numberOfCurrentColumn)
1993
				.setXaxisTitle(
1994
						listBoxes.get(numberOfCurrentColumn).getListBox()
1995
								.getSelectedItemText());
1996

    
1997
	}
1998

    
1999
	public void loadPresetChartTypes(int optionsSelected) {
2000

    
2001
		if (optionsSelected / 10 == 1) {
2002
			if (optionsSelected % 10 < 3) {
2003
				String[] splitted = typeOfChart.getMasterTree()
2004
						.getItem((optionsSelected / 10) - 1)
2005
						.getChild(optionsSelected % 10).getTitle().split("-");
2006
				ValuesOfFields.getInstance().getColumnsDataList()
2007
						.get(numberOfCurrentColumn).setTypeOfChart(splitted[0]);
2008
				ValuesOfFields.getInstance().getColumnsDataList()
2009
						.get(numberOfCurrentColumn).setStacking(splitted[1]);
2010
				typeOfChart.getListBox().addItem(
2011
						typeOfChart.getMasterTree()
2012
								.getItem((optionsSelected / 10) - 1)
2013
								.getChild(optionsSelected % 10).getText());
2014
			} else if (optionsSelected % 10 == 3) {
2015
				ValuesOfFields.getInstance().getColumnsDataList()
2016
						.get(numberOfCurrentColumn).setTypeOfChart("column");
2017
				ValuesOfFields.getInstance().getColumnsDataList()
2018
						.get(numberOfCurrentColumn).setStacking("none");
2019
				typeOfChart.getListBox().addItem("Column - Clustered");
2020
			} else if (optionsSelected % 10 == 4) {
2021
				if (numberOfCurrentColumn == 0) {
2022
					ValuesOfFields.getInstance().getColumnsDataList()
2023
							.get(numberOfCurrentColumn)
2024
							.setTypeOfChart("column");
2025
					ValuesOfFields.getInstance().getColumnsDataList()
2026
							.get(numberOfCurrentColumn).setStacking("none");
2027
					typeOfChart.getListBox().addItem("Column - Clustered");
2028
				} else {
2029
					ValuesOfFields.getInstance().getColumnsDataList()
2030
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2031
					ValuesOfFields.getInstance().getColumnsDataList()
2032
							.get(numberOfCurrentColumn).setStacking("none");
2033
					typeOfChart.getListBox().addItem("Simple line");
2034
				}
2035
			}
2036
		} else if (optionsSelected / 10 == 2) {
2037
			if (optionsSelected % 10 < 3) {
2038
				String[] splitted = typeOfChart.getMasterTree()
2039
						.getItem((optionsSelected / 10) - 1)
2040
						.getChild(optionsSelected % 10).getTitle().split("-");
2041
				ValuesOfFields.getInstance().getColumnsDataList()
2042
						.get(numberOfCurrentColumn).setTypeOfChart(splitted[0]);
2043
				ValuesOfFields.getInstance().getColumnsDataList()
2044
						.get(numberOfCurrentColumn).setStacking(splitted[1]);
2045
				typeOfChart.getListBox().addItem(
2046
						typeOfChart.getMasterTree()
2047
								.getItem((optionsSelected / 10) - 1)
2048
								.getChild(optionsSelected % 10).getText());
2049
			} else if (optionsSelected % 10 == 3) {
2050
				ValuesOfFields.getInstance().getColumnsDataList()
2051
						.get(numberOfCurrentColumn).setTypeOfChart("bar");
2052
				ValuesOfFields.getInstance().getColumnsDataList()
2053
						.get(numberOfCurrentColumn).setStacking("none");
2054
				typeOfChart.getListBox().addItem("Bar - Clustered");
2055
			} else if (optionsSelected % 10 == 4) {
2056
				if (numberOfCurrentColumn == 0) {
2057
					ValuesOfFields.getInstance().getColumnsDataList()
2058
							.get(numberOfCurrentColumn).setTypeOfChart("bar");
2059
					ValuesOfFields.getInstance().getColumnsDataList()
2060
							.get(numberOfCurrentColumn).setStacking("none");
2061
					typeOfChart.getListBox().addItem("Bar - Clustered");
2062
				} else {
2063
					ValuesOfFields.getInstance().getColumnsDataList()
2064
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2065
					ValuesOfFields.getInstance().getColumnsDataList()
2066
							.get(numberOfCurrentColumn).setStacking("none");
2067
					typeOfChart.getListBox().addItem("Simple line");
2068
				}
2069
			}
2070
		} else if (optionsSelected / 10 == 3) {
2071
			if (optionsSelected % 10 == 0) {
2072
				if (numberOfCurrentColumn == 0) {
2073
					ValuesOfFields.getInstance().getColumnsDataList()
2074
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2075
					ValuesOfFields.getInstance().getColumnsDataList()
2076
							.get(numberOfCurrentColumn).setStacking("none");
2077
					typeOfChart.getListBox().addItem("Simple line");
2078
				} else {
2079
					ValuesOfFields.getInstance().getColumnsDataList()
2080
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2081
					ValuesOfFields.getInstance().getColumnsDataList()
2082
							.get(numberOfCurrentColumn).setStacking("none");
2083
					typeOfChart.getListBox().addItem("Simple line");
2084
				}
2085
			} else if (optionsSelected % 10 == 1) {
2086
				if (numberOfCurrentColumn == 0) {
2087
					ValuesOfFields.getInstance().getColumnsDataList()
2088
							.get(numberOfCurrentColumn)
2089
							.setTypeOfChart("column");
2090
					ValuesOfFields.getInstance().getColumnsDataList()
2091
							.get(numberOfCurrentColumn).setStacking("none");
2092
					typeOfChart.getListBox().addItem("Column - Clustered");
2093
				} else {
2094
					ValuesOfFields.getInstance().getColumnsDataList()
2095
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2096
					ValuesOfFields.getInstance().getColumnsDataList()
2097
							.get(numberOfCurrentColumn).setStacking("none");
2098
					typeOfChart.getListBox().addItem("Simple line");
2099
				}
2100
			} else if (optionsSelected % 10 == 2) {
2101
				if (numberOfCurrentColumn == 0) {
2102
					ValuesOfFields.getInstance().getColumnsDataList()
2103
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2104
					ValuesOfFields.getInstance().getColumnsDataList()
2105
							.get(numberOfCurrentColumn).setStacking("steps");
2106
					typeOfChart.getListBox().addItem("Line with steps");
2107
				} else {
2108
					ValuesOfFields.getInstance().getColumnsDataList()
2109
							.get(numberOfCurrentColumn).setTypeOfChart("line");
2110
					ValuesOfFields.getInstance().getColumnsDataList()
2111
							.get(numberOfCurrentColumn).setStacking("steps");
2112
					typeOfChart.getListBox().addItem("Line with steps");
2113
				}
2114
			} else if (optionsSelected % 10 == 3) {
2115
				ValuesOfFields.getInstance().getColumnsDataList()
2116
						.get(numberOfCurrentColumn).setTypeOfChart("line");
2117
				ValuesOfFields.getInstance().getColumnsDataList()
2118
						.get(numberOfCurrentColumn).setStacking("none");
2119
				typeOfChart.getListBox().addItem("Simple line");
2120
			}
2121
		} else if (optionsSelected / 10 == 4) {
2122
			if (optionsSelected % 10 == 0) {
2123
				if (numberOfCurrentColumn == 0) {
2124
					ValuesOfFields.getInstance().getColumnsDataList()
2125
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2126
					ValuesOfFields.getInstance().getColumnsDataList()
2127
							.get(numberOfCurrentColumn).setStacking("none");
2128
					typeOfChart.getListBox().addItem("Simple area");
2129
				} else {
2130
					ValuesOfFields.getInstance().getColumnsDataList()
2131
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2132
					ValuesOfFields.getInstance().getColumnsDataList()
2133
							.get(numberOfCurrentColumn).setStacking("none");
2134
					typeOfChart.getListBox().addItem("Simple area");
2135
				}
2136
			} else if (optionsSelected % 10 == 1) {
2137
				if (numberOfCurrentColumn == 0) {
2138
					ValuesOfFields.getInstance().getColumnsDataList()
2139
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2140
					ValuesOfFields.getInstance().getColumnsDataList()
2141
							.get(numberOfCurrentColumn).setStacking("normal");
2142
					typeOfChart.getListBox().addItem("Area - Stacked");
2143
				} else {
2144
					ValuesOfFields.getInstance().getColumnsDataList()
2145
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2146
					ValuesOfFields.getInstance().getColumnsDataList()
2147
							.get(numberOfCurrentColumn).setStacking("normal");
2148
					typeOfChart.getListBox().addItem("Area - Stacked");
2149
				}
2150
			} else if (optionsSelected % 10 == 2) {
2151
				if (numberOfCurrentColumn == 0) {
2152
					ValuesOfFields.getInstance().getColumnsDataList()
2153
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2154
					ValuesOfFields.getInstance().getColumnsDataList()
2155
							.get(numberOfCurrentColumn).setStacking("percent");
2156
					typeOfChart.getListBox().addItem("Area - Full stacked");
2157
				} else {
2158
					ValuesOfFields.getInstance().getColumnsDataList()
2159
							.get(numberOfCurrentColumn).setTypeOfChart("area");
2160
					ValuesOfFields.getInstance().getColumnsDataList()
2161
							.get(numberOfCurrentColumn).setStacking("percent");
2162
					typeOfChart.getListBox().addItem("Area - Full stacked");
2163
				}
2164
			} else if (optionsSelected % 10 == 3) {
2165
				ValuesOfFields.getInstance().getColumnsDataList()
2166
						.get(numberOfCurrentColumn).setTypeOfChart("area");
2167
				ValuesOfFields.getInstance().getColumnsDataList()
2168
						.get(numberOfCurrentColumn).setStacking("none");
2169
				typeOfChart.getListBox().addItem("Simple area");
2170
			}
2171
		} else if (optionsSelected / 10 == 5) {
2172
			if (optionsSelected % 10 == 0) {
2173
				ValuesOfFields.getInstance().getColumnsDataList()
2174
						.get(numberOfCurrentColumn).setTypeOfChart("pie");
2175
				ValuesOfFields.getInstance().getColumnsDataList()
2176
						.get(numberOfCurrentColumn).setStacking("none");
2177
				typeOfChart.getListBox().addItem("Pie");
2178
			} else if (optionsSelected % 10 == 1) {
2179
				ValuesOfFields.getInstance().getColumnsDataList()
2180
						.get(numberOfCurrentColumn).setTypeOfChart("pie");
2181
				ValuesOfFields.getInstance().getColumnsDataList()
2182
						.get(numberOfCurrentColumn).setStacking("3D");
2183
				typeOfChart.getListBox().addItem("3D Pie");
2184
			} else if (optionsSelected % 10 == 2) {
2185
				ValuesOfFields.getInstance().getColumnsDataList()
2186
						.get(numberOfCurrentColumn).setTypeOfChart("pie");
2187
				ValuesOfFields.getInstance().getColumnsDataList()
2188
						.get(numberOfCurrentColumn).setStacking("donut");
2189
				typeOfChart.getListBox().addItem("Donut");
2190
			}
2191
		}
2192

    
2193
		//Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
2194
		//applyChanges.addStyleName("flashing-button-apply");
2195
	}
2196

    
2197
}
(3-3/8)