Revision 42811 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/gui/AbstractViewPanel.java
AbstractViewPanel.java | ||
---|---|---|
27 | 27 |
import java.awt.image.BufferedImage; |
28 | 28 |
import java.beans.PropertyChangeEvent; |
29 | 29 |
import java.beans.PropertyChangeListener; |
30 |
import java.util.Iterator; |
|
31 |
import java.util.List; |
|
30 | 32 |
import javax.swing.JComponent; |
31 | 33 |
|
32 | 34 |
import javax.swing.JPanel; |
33 | 35 |
import javax.swing.JSplitPane; |
36 |
import org.apache.commons.lang3.StringUtils; |
|
34 | 37 |
|
35 | 38 |
import org.cresques.cts.IProjection; |
36 | 39 |
import org.gvsig.andami.PluginServices; |
... | ... | |
41 | 44 |
import org.gvsig.app.project.documents.gui.WindowLayout; |
42 | 45 |
import org.gvsig.app.project.documents.view.MapOverview; |
43 | 46 |
import org.gvsig.app.project.documents.view.ViewDocument; |
47 |
import org.gvsig.app.project.documents.view.toc.actions.ShowLayerErrorsTocMenuEntry; |
|
44 | 48 |
import org.gvsig.app.project.documents.view.toc.gui.TOC; |
45 | 49 |
import org.gvsig.fmap.mapcontrol.MapControl; |
46 | 50 |
import org.gvsig.tools.swing.api.Component; |
... | ... | |
247 | 251 |
/** |
248 | 252 |
* @see com.iver.cit.gvsig.fmap.ExceptionListener#exceptionThrown(java.lang.Throwable) |
249 | 253 |
*/ |
254 |
@Override |
|
250 | 255 |
public void exceptionThrown(Throwable t) { |
251 |
NotificationManager.addError(t.getMessage(), t); |
|
256 |
|
|
257 |
NotificationManager.addError(getMessages(t), t); |
|
252 | 258 |
} |
259 |
|
|
260 |
private class ExceptionIterator implements Iterator { |
|
253 | 261 |
|
262 |
Throwable exception; |
|
263 |
|
|
264 |
ExceptionIterator(Throwable exception) { |
|
265 |
this.exception = exception; |
|
266 |
} |
|
267 |
|
|
268 |
@Override |
|
269 |
public boolean hasNext() { |
|
270 |
return this.exception != null; |
|
271 |
} |
|
272 |
|
|
273 |
@Override |
|
274 |
public Object next() { |
|
275 |
Throwable exception = this.exception; |
|
276 |
this.exception = exception.getCause(); |
|
277 |
return exception; |
|
278 |
} |
|
279 |
|
|
280 |
@Override |
|
281 |
public void remove() { |
|
282 |
throw new UnsupportedOperationException(); |
|
283 |
} |
|
284 |
} |
|
285 |
|
|
286 |
private String getMessages(Throwable ex) { |
|
287 |
StringBuilder msg = new StringBuilder(); |
|
288 |
boolean firstline = true; |
|
289 |
Iterator exceptions = new ExceptionIterator(ex); |
|
290 |
String lastmsg = ""; |
|
291 |
|
|
292 |
while (exceptions.hasNext()) { |
|
293 |
Throwable ex1 = ((Throwable) exceptions.next()); |
|
294 |
String message; |
|
295 |
message = ex1.getMessage(); |
|
296 |
if ( !StringUtils.isEmpty(message) ) { |
|
297 |
if( firstline ) { |
|
298 |
msg.append(message); |
|
299 |
msg.append("\n\n"); |
|
300 |
firstline = false; |
|
301 |
} else { |
|
302 |
if (!message.equalsIgnoreCase(lastmsg)) { |
|
303 |
msg.append("- "); |
|
304 |
msg.append(message.replace("\n","\n ")); |
|
305 |
msg.append("\n"); |
|
306 |
} |
|
307 |
} |
|
308 |
lastmsg = message; |
|
309 |
} |
|
310 |
} |
|
311 |
return msg.toString(); |
|
312 |
} |
|
313 |
|
|
254 | 314 |
} |
255 | 315 |
|
256 | 316 |
/** |
Also available in: Unified diff