Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / toc / actions / LayerErrorsPanel.java @ 42811

History | View | Annotate | Download (3.41 KB)

1
package org.gvsig.app.project.documents.view.toc.actions;
2

    
3
import java.awt.Dimension;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.util.List;
7
import org.apache.commons.lang3.exception.ExceptionUtils;
8
import org.gvsig.fmap.mapcontext.layers.FLayer;
9
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
10
import org.gvsig.fmap.mapcontrol.swing.dynobject.DynObjectEditor;
11
import org.gvsig.tools.ToolsLocator;
12
import org.gvsig.tools.i18n.I18nManager;
13
import org.slf4j.Logger;
14
import org.slf4j.LoggerFactory;
15

    
16
public class LayerErrorsPanel extends LayerErrorsView {
17

    
18
    private static final Logger logger = LoggerFactory.getLogger(LayerErrorsPanel.class);
19
    private static final long serialVersionUID = -5972995402218954892L;
20
    private FLayer layer;
21

    
22
    public LayerErrorsPanel(FLayer layer) {
23
        this.initComponents();
24
        this.setLayer(layer);
25
    }
26

    
27
    private void initComponents() {
28
        this.translate();
29
        this.txtMessage.setContentType("text/html");
30
        this.btnClose.addActionListener(new ActionListener() {
31

    
32
            @Override
33
            public void actionPerformed(ActionEvent e) {
34
                doClose();
35
            }
36
        });
37
        this.btnViewParameters.addActionListener(new ActionListener() {
38

    
39
            @Override
40
            public void actionPerformed(ActionEvent e) {
41
                doViewParameters();
42
            }
43
        });
44
        this.setPreferredSize(new Dimension(550, 400));
45
    }
46

    
47
    public void setLayer(FLayer layer) {
48
        this.layer = layer;
49
        this.txtLayerName.setText(layer.getName());
50
        this.txtMessage.setText(this.getMessageAsHTML(layer.getErrors()));
51
        this.btnViewParameters.setEnabled(this.layer instanceof SingleLayer);
52
    }
53

    
54
    private String getMessageAsHTML(List<Exception> exs) {
55
        StringBuilder html = new StringBuilder();
56
        //html.append("<html>\n");
57
        for (Exception ex : exs) {
58
            String lastmsg = "";
59
            html.append("<ul>\n");
60
            for( Throwable cause : ExceptionUtils.getThrowableList(ex) ) {
61
                String message = cause.getMessage();
62
                if (message != null) {
63
                    if (!message.equalsIgnoreCase(lastmsg)) {
64
                        lastmsg = message;
65
                        html.append("<li>");
66
                        html.append(message.replace("\n", "<br>\n"));
67
                        html.append("</li>\n");
68
                    }
69
                }
70
            }
71
            html.append("</ul><br>\n");
72
        }
73
        //html.append("</html>\n");
74
        return html.toString();
75
    }
76

    
77
    private void translate() {
78
        I18nManager i18nManager = ToolsLocator.getI18nManager();
79
        this.lblLayer.setText(i18nManager.getTranslation("_Layer") + ":");
80
        this.lblProblem.setText(i18nManager.getTranslation("_Problems") + ":");
81
        this.btnClose.setText(i18nManager.getTranslation("_Close"));
82
        this.btnViewParameters.setText(i18nManager.getTranslation("_View_properties_of_data_source"));
83
    }
84

    
85
    private void doClose() {
86
        this.setVisible(false);
87
    }
88

    
89
    private void doViewParameters() {
90
        try {
91
            DynObjectEditor editor = new DynObjectEditor( ((SingleLayer)layer).getDataStore().getParameters() );
92
            editor.editObject(true);
93
        } catch (Throwable th) {
94
            logger.warn("Can't show standard properties dialog for this parameters.",th);
95
        }    
96
    }
97

    
98
}