Revision 43167 trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/ui/mdiFrame/DefaultThreadSafeDialogs.java
DefaultThreadSafeDialogs.java | ||
---|---|---|
31 | 31 |
import java.awt.event.ComponentListener; |
32 | 32 |
import java.io.File; |
33 | 33 |
import java.lang.reflect.Constructor; |
34 |
import javax.swing.JCheckBox; |
|
34 | 35 |
|
35 | 36 |
import javax.swing.JFileChooser; |
37 |
import javax.swing.JLabel; |
|
36 | 38 |
import javax.swing.JOptionPane; |
37 | 39 |
import javax.swing.JPanel; |
38 | 40 |
import javax.swing.SwingUtilities; |
39 | 41 |
import javax.swing.filechooser.FileFilter; |
40 | 42 |
|
41 | 43 |
import org.gvsig.andami.PluginServices; |
44 |
import org.gvsig.andami.PluginsLocator; |
|
42 | 45 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
43 | 46 |
import org.gvsig.andami.ui.mdiManager.MDIManager; |
44 | 47 |
import org.gvsig.andami.ui.mdiManager.WindowInfo; |
48 |
import org.gvsig.dialogremember.DialogRememeber; |
|
49 |
import org.gvsig.tools.ToolsLocator; |
|
45 | 50 |
import org.gvsig.tools.task.CancellableTask; |
46 | 51 |
import org.gvsig.tools.task.RunnableWithParameters; |
47 | 52 |
import org.slf4j.Logger; |
... | ... | |
114 | 119 |
return msg; |
115 | 120 |
} |
116 | 121 |
|
122 |
@Override |
|
117 | 123 |
public int confirmDialog(final String message, final String title, final int optionType, |
118 | 124 |
final int messageType) { |
125 |
return this.confirmDialog(message, title, optionType, messageType, null); |
|
126 |
} |
|
127 |
|
|
128 |
private static class JMessageWithCheck extends JPanel { |
|
129 |
private final JLabel label; |
|
130 |
private final JCheckBox check; |
|
131 |
|
|
132 |
public JMessageWithCheck(String msg, String msgchk) { |
|
133 |
if( !msg.toLowerCase().trim().startsWith("<html>") ) { |
|
134 |
msg = "<html>" + msg.replace("\n", "<br>\n") + "</html>"; |
|
135 |
} |
|
136 |
this.label = new JLabel(msg); |
|
137 |
this.check = new JCheckBox(msgchk); |
|
138 |
this.setLayout(new BorderLayout(10,10)); |
|
139 |
this.add(this.label,BorderLayout.CENTER); |
|
140 |
this.add(this.check,BorderLayout.PAGE_END); |
|
141 |
} |
|
142 |
|
|
143 |
public boolean isCheckSelected() { |
|
144 |
return this.check.isSelected(); |
|
145 |
} |
|
146 |
} |
|
147 |
|
|
148 |
@Override |
|
149 |
public int confirmDialog(final String message, final String title, final int optionType, |
|
150 |
final int messageType, final String msgid) { |
|
119 | 151 |
RunnableWithParameters runnable = new RunnableWithParameters() { |
152 |
@Override |
|
120 | 153 |
public void run() { |
121 |
this.returnValue = JOptionPane.showConfirmDialog( |
|
122 |
getRootComponent(), message,title, optionType, messageType); |
|
154 |
DialogRememeber r = null; |
|
155 |
Object msg = message; |
|
156 |
if( msgid != null ) { |
|
157 |
r = PluginsLocator.getDialogRemembereManager().add(msgid); |
|
158 |
if( r.hasValue() ) { |
|
159 |
this.returnValue = r.getValue(); |
|
160 |
return; |
|
161 |
} |
|
162 |
msg = new JMessageWithCheck( |
|
163 |
message, |
|
164 |
ToolsLocator.getI18nManager().getTranslation("_Remember_answer_and_do_not_ask_again") |
|
165 |
); |
|
166 |
} |
|
167 |
this.returnValue = JOptionPane.showConfirmDialog( |
|
168 |
getRootComponent(), |
|
169 |
msg, |
|
170 |
title, |
|
171 |
optionType, |
|
172 |
messageType |
|
173 |
); |
|
174 |
if( r!=null ) { |
|
175 |
if( ((JMessageWithCheck)msg).isCheckSelected() ) { |
|
176 |
r.setValue(this.returnValue); |
|
177 |
} else { |
|
178 |
r.reset(); |
|
179 |
} |
|
180 |
} |
|
123 | 181 |
} |
124 | 182 |
}; |
125 | 183 |
if (SwingUtilities.isEventDispatchThread()) { |
... | ... | |
182 | 240 |
return (String) runnable.getReturnValue(); |
183 | 241 |
} |
184 | 242 |
|
243 |
@Override |
|
185 | 244 |
public void messageDialog(String message, String title, int messageType) { |
186 | 245 |
messageDialog(message, null, title, messageType); |
187 | 246 |
} |
188 | 247 |
|
189 | 248 |
public void messageDialog(final String message, final String messageArgs[], |
190 | 249 |
final String title, final int messageType) { |
191 |
if (!SwingUtilities.isEventDispatchThread()) { |
|
192 |
try { |
|
193 |
SwingUtilities.invokeAndWait(new Runnable() { |
|
194 |
public void run() { |
|
195 |
messageDialog(message, messageArgs, title, messageType); |
|
196 |
} |
|
197 |
}); |
|
198 |
} catch (Exception e) { |
|
199 |
logger.info("Can't show message dialog '" + message |
|
200 |
+ "'. redirect to status bar", e); |
|
201 |
this.message(message, messageType); |
|
202 |
} |
|
203 |
return; |
|
204 |
} |
|
250 |
} |
|
251 |
|
|
252 |
@Override |
|
253 |
public void messageDialog(final String message, final String messageArgs[], |
|
254 |
final String title, final int messageType, final String msgid) { |
|
255 |
if (!SwingUtilities.isEventDispatchThread()) { |
|
256 |
try { |
|
257 |
SwingUtilities.invokeAndWait(new Runnable() { |
|
258 |
@Override |
|
259 |
public void run() { |
|
260 |
messageDialog(message, messageArgs, title, messageType, msgid); |
|
261 |
} |
|
262 |
}); |
|
263 |
} catch (Exception e) { |
|
264 |
logger.info("Can't show message dialog '" + message |
|
265 |
+ "'. redirect to status bar", e); |
|
266 |
this.message(message, messageType); |
|
267 |
} |
|
268 |
return; |
|
269 |
} |
|
205 | 270 |
|
206 |
if (message == null) { |
|
207 |
logger.info("message if null, message dialog not show."); |
|
208 |
return; |
|
209 |
} |
|
210 |
JOptionPane.showMessageDialog(getRootComponent(), |
|
211 |
translate(message, messageArgs), translate(title), messageType); |
|
212 |
} |
|
271 |
if (message == null) { |
|
272 |
logger.info("message if null, message dialog not show."); |
|
273 |
return; |
|
274 |
} |
|
275 |
DialogRememeber r = null; |
|
276 |
Object msg = message; |
|
277 |
if (msgid != null) { |
|
278 |
r = PluginsLocator.getDialogRemembereManager().add(msgid); |
|
279 |
if (r.hasValue() && ((boolean)r.getValue()) ) { |
|
280 |
return; |
|
281 |
} |
|
282 |
msg = new JMessageWithCheck( |
|
283 |
message, |
|
284 |
ToolsLocator.getI18nManager().getTranslation("_do_not_show_again") |
|
285 |
); |
|
286 |
} |
|
287 |
JOptionPane.showMessageDialog(getRootComponent(), |
|
288 |
translate(message, messageArgs), translate(title), messageType); |
|
213 | 289 |
|
290 |
if (r != null) { |
|
291 |
if (((JMessageWithCheck) msg).isCheckSelected()) { |
|
292 |
r.setValue(true); |
|
293 |
} else { |
|
294 |
r.reset(); |
|
295 |
} |
|
296 |
} |
|
297 |
|
|
298 |
} |
|
299 |
|
|
214 | 300 |
public void showDialog(final Component contents, final String title) { |
215 | 301 |
if (SwingUtilities.isEventDispatchThread()) { |
216 | 302 |
final DialogWindow window = new DialogWindow(); |
Also available in: Unified diff