My favorites | Sign in
Project Logo
                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package maf.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.google.gwt.user.client.ui.VerticalPanel;

public class SqlRenderPanelBuilder {
private final static class LoadSampleDialog extends DialogBox {
public LoadSampleDialog() {
setText("Loading...");
final VerticalPanel contents = new VerticalPanel();
contents.setSpacing(4);
setWidget(contents);
final HTML details = new HTML("Fetching sample...");
contents.add(details);
contents.setCellHorizontalAlignment(details,
HasHorizontalAlignment.ALIGN_CENTER);
setAnimationEnabled(true);
center();
}
}

/**
* The message displayed to the user when the server cannot be reached or
* returns an error.
*/
private static final String SERVER_ERROR = "An error occurred while "
+ "attempting to contact the server. Please check your network "
+ "connection and try again.";
/**
* Create a remote service proxy to talk to the server-side Greeting
* service.
*/
private final SqlRenderServiceAsync sqlRenderService = GWT
.create(SqlRenderService.class);
DialogBox loadSampleDialog;
final AsyncCallback<String> getSampleClickHandlerCallBack = new AsyncCallback<String>() {
public void onFailure(final Throwable caught) {
throw new RuntimeException(caught);
}

public void onSuccess(final String result) {
loadSampleDialog.hide();
sql.setText(result);
}
};
ClickHandler getSampleClickHandler = new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
final int selectedIndex = dialect.getSelectedIndex();
final String dialectValue = dialect.getValue(selectedIndex);
sqlRenderService.getSampleSql(dialectValue,
getSampleClickHandlerCallBack);
loadSampleDialog = newDialogBox();
loadSampleDialog.show();
}
};
private ListBox dialect;
private TextArea sql;

public SqlRenderPanelBuilder(final Panel p) {
init(p, "select * from foo;", "sql2003");
}

private void init(final Panel p, final String sqlText,
final String dialectValue) {
p.clear();
final TextBoxBase sql = newSQLField(sqlText);
final ListBox dialect = newDialectField(dialectValue);
final Button getSampleButton = newGetSampleButton(sql, dialect);
final Button formatButton = newSendButton(sql, dialect, p);
final HorizontalPanel hp = new HorizontalPanel();
hp.add(dialect);
hp.add(new Label(" "));
hp.add(getSampleButton);
hp.add(formatButton);
p.add(hp);
p.add(sql);
}

private ListBox newDialectField(final String value) {
dialect = new ListBox(false);
dialect.addItem("SQL2003", "sql2003");
dialect.addItem("H2", "h2");
dialect.addItem("HSQLDB", "hsqldb");
dialect.addItem("Oracle", "oracle");
dialect.addItem("MySQL", "mysql");
dialect.addItem("PostgreSQL", "postgresql");
for (int i = 0; i < dialect.getItemCount(); i++)
if (dialect.getValue(i).equals(value)) {
dialect.setSelectedIndex(i);
break;
}
return dialect;
}

/**
* Create the dialog box for this example.
*
* @return the new dialog box
*/
private DialogBox newDialogBox() {
final DialogBox dialogBox = new LoadSampleDialog();
return dialogBox;
}

private Button newEditButton(final Panel panel, final String sqlText,
final String dialectValue) {
final Button editButton = new Button("Edit");
final ClickHandler editClickHandler = new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
init(panel, sqlText, dialectValue);
}
};
editButton.addClickHandler(editClickHandler);
return editButton;
}

private Button newGetSampleButton(final TextBoxBase sql,
final ListBox dialect) {
final Button b = new Button("Get Sample");
b.addClickHandler(getSampleClickHandler);
return b;
}

private Button newSendButton(final TextBoxBase sql, final ListBox dialect,
final Panel panel) {
final Button b = new Button("Format");
b.addStyleName("sendButton");
final AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(final Throwable caught) {
panel.clear();
panel.add(new Label(SERVER_ERROR));
}

public void onSuccess(final String result) {
panel.clear();
final String sqlText = sql.getText();
final int idx = dialect.getSelectedIndex();
final String dialectValue = dialect.getValue(idx);
final Button editButton = newEditButton(panel, sqlText,
dialectValue);
panel.add(editButton);
panel.add(new HTML(result));
}
};
final ClickHandler handler = new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
final int dialectIndex = dialect.getSelectedIndex();
final String dialectValue = dialect.getValue(dialectIndex);
final String sqlText = sql.getText();
sqlRenderService.renderSql(sqlText, dialectValue, callback);
}
};
b.addClickHandler(handler);
return b;
}

private TextArea newSQLField(final String sqlText) {
sql = new TextArea();
sql.setText(sqlText);
sql.setFocus(true);
sql.selectAll();
sql.setVisibleLines(12);
sql.setWidth("40em");
return sql;
}
}
Show details Hide details

Change log

r42 by farnsworth2008 on Jul 27, 2009   Diff
Cleanup
Go to: 
Project members, sign in to write a code review

Older revisions

r35 by farnsworth2008 on Jul 27, 2009   Diff
General work
r20 by farnsworth2008 on Jul 19, 2009   Diff
Now comments are placed on new lines
r19 by farnsworth2008 on Jul 18, 2009   Diff
Added sample files and resource
manager
All revisions of this file

File info

Size: 5896 bytes, 182 lines

File properties

svn:mime-type
text/plain
Hosted by Google Code