-
Notifications
You must be signed in to change notification settings - Fork 3
/
Dialogs.java
136 lines (117 loc) · 4.95 KB
/
Dialogs.java
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
package org.flowgrid.swt;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.flowgrid.model.Artifact;
import org.flowgrid.model.Callback;
import org.flowgrid.swt.dialog.AlertDialog;
import org.flowgrid.swt.dialog.DialogInterface;
import org.kobjects.swt.Validator;
public class Dialogs {
public static void confirm(Shell context, String title, String message, final Runnable callback) {
AlertDialog alert = new AlertDialog(context);
alert.setTitle(title);
new Label(alert.getContentContainer(), SWT.NONE).setText(message);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
callback.run();
}
});
alert.setNegativeButton("Cancel", null);
alert.show();
}
public static void info(Shell context, String title, String text) {
AlertDialog alert = new AlertDialog(context);
alert.setTitle(title);
new Label(alert.getContentContainer(), SWT.NONE).setText(text);
alert.setPositiveButton("Ok", null);
alert.show();
}
public static void promptIdentifier(final Shell context, final String title, final String label, String value, final Callback<String> callback) {
prompt(context, title, label, -1, value, new Callback<String>() {
@Override
public void run(final String newValue) {
if (Artifact.isIdentifier(newValue)) {
callback.run(newValue);
} else {
confirm(context, "Invalid identifier",
Artifact.IDENTIFIER_CONSTRAINT_MESSAGE, new Runnable() {
@Override
public void run() {
promptIdentifier(context, title, label, newValue, callback);
}
});
}
}
});
}
public static void prompt(Shell context, String title, String label, int inputType, String value, final Callback<String> callback) {
AlertDialog alert = new AlertDialog(context);
alert.setTitle(title);
if (label != null) {
new Label(alert.getContentContainer(), SWT.NONE).setText(label);
}
final Text input = new Text(alert.getContentContainer(), SWT.NONE);
input.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
if (value != null) {
input.setText(value);
}
Validator.add(input, inputType);
System.out.println("FIXME: Dialogs.prompt(): constraints, multiline");
/*
boolean multiLine = false;
if (constraints == -1) {
input.addTextChangedListener(new IdentifierValidator(input));
} else if (constraints != 0) {
input.setInputType(constraints);
multiLine = (constraints & InputType.TYPE_TEXT_FLAG_MULTI_LINE) != 0;
}
if (multiLine) {
input.setLines(5);
input.setGravity(Gravity.START|Gravity.BOTTOM);
// ((LinearLayout.LayoutParams) input.getLayoutParams()).gravity = Gravity.START | Gravity.BOTTOM;
}
*/
/* if (multiLine) {
((ColumnLayout.LayoutParams) input.getLayoutParams()).
}
*/
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
callback.run(input.getText().toString());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
callback.cancel();
}
});
alert.show();
}
public static void promptMultiline(Shell context, String title, String label, String value, final Callback<String> callback) {
AlertDialog alert = new AlertDialog(context);
alert.setTitle(title);
if (label != null) {
new Label(alert.getContentContainer(), SWT.NONE).setText(label);
}
final Text input = new Text(alert.getContentContainer(), SWT.MULTI);
input.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
if (value != null) {
input.setText(value);
}
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
callback.run(input.getText().toString());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
callback.cancel();
}
});
alert.show();
}
}