A lot of changes
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / wizards / PHPDeleteRowPage.java
1 package net.sourceforge.phpdt.sql.wizards;
2
3 import java.text.MessageFormat;
4
5 import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin;
6 import net.sourceforge.phpdt.sql.sql.TableRow;
7 import net.sourceforge.phpdt.sql.view.PHPSourceConsole;
8 import net.sourceforge.phpdt.sql.view.tableview.TableAdapter;
9
10 import org.eclipse.jface.preference.IPreferenceStore;
11 import org.eclipse.jface.wizard.WizardPage;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.events.ModifyEvent;
14 import org.eclipse.swt.events.ModifyListener;
15 import org.eclipse.swt.events.SelectionEvent;
16 import org.eclipse.swt.events.SelectionListener;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Button;
20 import org.eclipse.swt.widgets.Composite;
21 import org.eclipse.swt.widgets.Label;
22 import org.eclipse.swt.widgets.Text;
23
24 public class PHPDeleteRowPage extends WizardPage implements SQLPage {
25   TableRow row;
26   String[] columnNames;
27   Text[] values;
28   Button[] whereValues;
29   Label query;
30   IPreferenceStore fStore;
31
32   public PHPDeleteRowPage(String pageName) {
33     super(pageName);
34   }
35
36   public void init(TableRow row, TableAdapter adapter) {
37     this.row = row;
38   }
39
40   public void createControl(Composite parent) {
41     if (DEBUG) {
42       System.out.println("page create control");
43     }
44     fStore = PHPEclipseSQLPlugin.getDefault().getPreferenceStore();
45     Composite container = new Composite(parent, SWT.NULL);
46     GridLayout layout = new GridLayout();
47     container.setLayout(layout);
48     int layoutColumns = 3;
49     layout.numColumns = layoutColumns;
50
51     if (DEBUG) {
52       if (row == null) {
53         System.out.println("Row is null");
54       }
55
56       if (row.getColumnNames() == null) {
57         System.out.println("Columns are null");
58       }
59       if (row.getTableData() == null) {
60         System.out.println("Data is null");
61       }
62     }
63     columnNames = row.getColumnNames();
64     String[] data = row.getTableData();
65     if (DEBUG) {
66       for (int i = 0; i < row.getColumnCount(); i++) {
67         System.out.println("data = " + i + "=" + data[i]);
68         System.out.println("column = " + i + "=" + columnNames[i]);
69       }
70     }
71     values = new Text[row.getColumnCount()];
72     whereValues = new Button[row.getColumnCount()];
73     Label temp = new Label(container, SWT.NULL);
74     temp.setText("Column Name");
75     temp = new Label(container, SWT.NULL);
76     temp.setText("Value");
77     temp = new Label(container, SWT.NULL);
78     temp.setText("Include in?");
79     for (int i = 0; i < row.getColumnCount(); i++) {
80       Label label = new Label(container, SWT.NULL);
81       label.setText(columnNames[i]);
82       values[i] = new Text(container, SWT.BORDER | SWT.SINGLE);
83       GridData fullHorizontal = new GridData();
84       fullHorizontal.horizontalAlignment = GridData.FILL;
85       values[i].setLayoutData(fullHorizontal);
86
87       if (data[i] == null || data[i].equals("")) {
88         values[i].setText('$' + columnNames[i]);
89       } else {
90         values[i].setText(data[i]);
91       }
92
93       values[i].addModifyListener(new ModifyListener() {
94         public void modifyText(ModifyEvent e) {
95           updateQuery();
96         }
97       });
98
99       whereValues[i] = new Button(container, SWT.CHECK);
100       whereValues[i].setText("Where clause");
101       whereValues[i].addSelectionListener(new SelectionListener() {
102         public void widgetDefaultSelected(SelectionEvent e) {
103         }
104         public void widgetSelected(SelectionEvent e) {
105           updateQuery();
106         }
107       });
108     }
109     query = new Label(container, SWT.WRAP);
110     GridData gridData = new GridData();
111     gridData.horizontalSpan = layoutColumns;
112     gridData.horizontalAlignment = GridData.FILL;
113     gridData.verticalAlignment = GridData.FILL;
114     gridData.grabExcessHorizontalSpace = true;
115     gridData.grabExcessVerticalSpace = true;
116     query.setLayoutData(gridData);
117
118     setControl(container);
119     updateQuery();
120
121     setPageComplete(true);
122   }
123   public void updateQuery() {
124     if (DEBUG) {
125       System.out.println("Updating delete query");
126     }
127     StringBuffer whereClause = new StringBuffer();
128     int numSelected = 0;
129     boolean first = false;
130     for (int i = 0; i < columnNames.length; i++) {
131       if (whereValues[i].getSelection()) {
132         numSelected++;
133         if (first) {
134           whereClause.append(", ");
135         }
136
137         whereClause.append(columnNames[i]);
138         whereClause.append(" = ");
139         whereClause.append("'" + values[i].getText() + "'");
140
141         first = true;
142       }
143     }
144     //    if (whereClause.length() > 1) {
145     //      whereClause.deleteCharAt(whereClause.length() - 1);
146     //      whereClause.deleteCharAt(whereClause.length() - 1);
147     //    }
148     
149     
150     String[] arguments = { row.getTable(), whereClause.toString() };
151     MessageFormat form = new MessageFormat(fStore.getString("phpeclipse.sql.delete.template"));
152
153     String query = form.format(arguments);
154     
155 //    String query = "$results = mysql_query(\"DELETE FROM " + row.getTable();
156 //    if (numSelected > 0) {
157 //      query += " WHERE " + whereClause.toString() + "\");";
158 //    } else {
159 //      query += "\");";
160 //    }
161
162     if (numSelected > 0) {
163       setMessage("");
164     } else {
165       setMessage("Warning: no \"where clause\" columns selected, all rows will be deleted");
166     }
167
168     this.getControl().pack();
169     this.query.setText(query);
170   }
171   public boolean performFinish() {
172     PHPSourceConsole console = PHPSourceConsole.getInstance();
173     console.clear();
174     console.print(query.getText());
175     return true;
176   }
177 }