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

View differences:

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