3fa7cc330e4bacb49bff572037b8f826665aeb7d
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / wizards / SortFilterPage.java
1 package net.sourceforge.phpdt.sql.wizards;
2
3 import org.eclipse.jface.wizard.WizardPage;
4 import org.eclipse.swt.SWT;
5 import org.eclipse.swt.events.ModifyEvent;
6 import org.eclipse.swt.events.ModifyListener;
7 import org.eclipse.swt.events.SelectionEvent;
8 import org.eclipse.swt.events.SelectionListener;
9 import org.eclipse.swt.layout.GridData;
10 import org.eclipse.swt.layout.GridLayout;
11 import org.eclipse.swt.widgets.Button;
12 import org.eclipse.swt.widgets.Combo;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Label;
15 import org.eclipse.swt.widgets.Text;
16
17 import net.sourceforge.phpdt.sql.sql.FilterSort;
18 import net.sourceforge.phpdt.sql.sql.TableRow;
19 import net.sourceforge.phpdt.sql.view.TableView;
20 import net.sourceforge.phpdt.sql.view.tableview.TableAdapter;
21
22 public class SortFilterPage extends WizardPage implements SQLPage {
23   TableRow row;
24   TableAdapter adapter;
25   Button[] filter;
26   Combo[] operator;
27   Text[] filterValues;
28   Button[] stringFlags;
29   Button[] sort;
30
31   String columnNames[];
32   Label query;
33   FilterSort filterSort = new FilterSort();
34   public SortFilterPage(String pageName) {
35     super(pageName);
36   }
37
38   public void init(TableRow row, TableAdapter adapter) {
39     this.row = row;
40     this.adapter = adapter;
41   }
42
43   public void createControl(Composite parent) {
44     if (DEBUG) {
45       System.out.println("page create control");
46     }
47     Composite container = new Composite(parent, SWT.NULL);
48     GridLayout layout = new GridLayout();
49     container.setLayout(layout);
50     int layoutColumns = 5;
51     layout.numColumns = layoutColumns;
52
53     if (DEBUG) {
54       if (row == null) {
55         System.out.println("Row is null");
56       }
57       if (row.getColumnNames() == null) {
58         System.out.println("Columns are null");
59       }
60       if (row.getTableData() == null) {
61         System.out.println("Data is null");
62       }
63     }
64
65     columnNames = row.getColumnNames();
66     String[] data = row.getTableData();
67     if (DEBUG) {
68       for (int i = 0; i < row.getColumnCount(); i++) {
69         System.out.println("data = " + i + "=" + data[i]);
70         System.out.println("column = " + i + "=" + columnNames[i]);
71       }
72     }
73     int size = row.getColumnCount();
74     filter = new Button[size];
75     operator = new Combo[size];
76     filterValues = new Text[size];
77     stringFlags = new Button[size];
78     sort = new Button[size];
79     for (int i = 0; i < row.getColumnCount(); i++) {
80       filter[i] = new Button(container, SWT.CHECK);
81       filter[i].setText(columnNames[i]);
82       filter[i].addSelectionListener(new SelectionListener() {
83         public void widgetDefaultSelected(SelectionEvent e) {
84         }
85         public void widgetSelected(SelectionEvent e) {
86           updateQuery();
87         }
88       });
89
90       operator[i] = new Combo(container, SWT.SINGLE | SWT.READ_ONLY);
91       operator[i].add("=");
92       operator[i].add("<>");
93       operator[i].add("<");
94       operator[i].add(">");
95       operator[i].addSelectionListener(new SelectionListener() {
96         public void widgetDefaultSelected(SelectionEvent e) {
97         }
98         public void widgetSelected(SelectionEvent e) {
99           updateQuery();
100         }
101       });
102
103       filterValues[i] = new Text(container, SWT.BORDER);
104       filterValues[i].setText(data[i]);
105       filterValues[i].addModifyListener(new ModifyListener() {
106         public void modifyText(ModifyEvent e) {
107           updateQuery();
108         }
109       });
110
111       stringFlags[i] = new Button(container, SWT.CHECK);
112       stringFlags[i].setText("String");
113       stringFlags[i].addSelectionListener(new SelectionListener() {
114         public void widgetDefaultSelected(SelectionEvent e) {
115         }
116         public void widgetSelected(SelectionEvent e) {
117           updateQuery();
118         }
119       });
120
121       final int index = i;
122       sort[i] = new Button(container, SWT.CHECK);
123       sort[i].setText(columnNames[i]);
124       sort[i].addSelectionListener(new SelectionListener() {
125         public void widgetDefaultSelected(SelectionEvent e) {
126         }
127         public void widgetSelected(SelectionEvent e) {
128           if (sort[index].getSelection()) {
129             filterSort.addSort(columnNames[index]);
130           } else {
131             filterSort.removeSort(columnNames[index]);
132           }
133           updateQuery();
134         }
135       });
136     }
137     query = new Label(container, SWT.WRAP);
138     GridData gridData = new GridData();
139     gridData.horizontalSpan = layoutColumns;
140     gridData.horizontalAlignment = GridData.FILL;
141     gridData.verticalAlignment = GridData.FILL;
142     gridData.grabExcessHorizontalSpace = true;
143     gridData.grabExcessVerticalSpace = true;
144     query.setLayoutData(gridData);
145
146     setControl(container);
147
148     setPageComplete(true);
149   }
150
151   public void updateQuery() {
152     filterSort.clearFilters();
153     for (int i = 0; i < filter.length; i++) {
154       if (filter[i].getSelection()) {
155         filterSort.addFilter(
156           filter[i].getText(),
157           operator[i].getText(),
158           filterValues[i].getText(),
159           stringFlags[i].getSelection());
160       }
161     }
162     query.setText(filterSort.toString());
163   }
164
165   public boolean performFinish() {
166     adapter.setFilterSort(filterSort);
167     TableView.getInstance().refreshCurrent();
168     return true;
169   }
170 }