Statistics
| Revision:

svn-gvsig-desktop / branches / org.gvsig.desktop-2018a / org.gvsig.desktop.plugin / org.gvsig.raster.app / org.gvsig.raster.app.mainplugin / src / main / java / org / gvsig / raster / app / mainplugin / StatisticsPage.java @ 43867

History | View | Annotate | Download (4.7 KB)

1
package org.gvsig.raster.app.mainplugin;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.awt.event.ComponentAdapter;
6
import java.awt.event.ComponentEvent;
7

    
8
import javax.swing.JComponent;
9
import javax.swing.SwingUtilities;
10
import javax.swing.event.AncestorEvent;
11
import javax.swing.event.AncestorListener;
12

    
13
import org.gvsig.fmap.mapcontext.layers.LayerEvent;
14
import org.gvsig.fmap.mapcontext.layers.LayerListener;
15
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
16
import org.gvsig.propertypage.PropertiesPage;
17
import org.gvsig.raster.lib.buffer.api.statistics.Statistics;
18
import org.gvsig.raster.swing.buffer.RasterSwingBufferLocator;
19
import org.gvsig.raster.swing.buffer.RasterSwingBufferManager;
20
import org.gvsig.raster.swing.buffer.statistics.StatisticsPanel;
21
import org.gvsig.tools.ToolsLocator;
22
import org.gvsig.tools.i18n.I18nManager;
23

    
24

    
25
/**
26
 * @author fdiaz
27
 *
28
 */
29
public class StatisticsPage extends javax.swing.JPanel implements PropertiesPage {
30

    
31
    /**
32
     *
33
     */
34
    private static final long serialVersionUID = 8264136278039978040L;
35
    private StatisticsPanel panel;
36
    private RasterLayer layer;
37

    
38

    
39
    /**
40
     * @param layer
41
     */
42
    public StatisticsPage(RasterLayer layer) {
43
        this.layer = layer;
44
        initializePanel();
45
    }
46

    
47
    private void initializePanel(){
48
        if (this.panel == null) {
49
            RasterSwingBufferManager manager = RasterSwingBufferLocator.getSwingManager();
50
            panel = manager.createStatisticsPanel();
51

    
52
            final LayerListener layerListener = new LayerListener() {
53
                @Override
54
                public void visibilityChanged(LayerEvent arg0) {
55
                    //Do nothing
56
                }
57
                @Override
58
                public void nameChanged(LayerEvent arg0) {
59
                    //Do nothing
60
                }
61
                @Override
62
                public void editionChanged(LayerEvent arg0) {
63
                    //Do nothing
64
                }
65
                @Override
66
                public void drawValueChanged(LayerEvent arg0) {
67
                    if(asJComponent().isVisible()){
68
                        updateStatisticsPanel();
69
                    }
70
                }
71
                @Override
72
                public void activationChanged(LayerEvent arg0) {
73
                    //Do nothing
74
                }
75
            };
76
            layer.addLayerListener(layerListener);
77

    
78
            this.asJComponent().addAncestorListener(new AncestorListener() {
79

    
80
                @Override
81
                public void ancestorRemoved(AncestorEvent event) {
82
                    layer.removeLayerListener(layerListener);
83
                }
84
                @Override
85
                public void ancestorMoved(AncestorEvent event) {
86
                    //Do nothing
87
                }
88
                @Override
89
                public void ancestorAdded(AncestorEvent event) {
90
                    layer.addLayerListener(layerListener);
91
                    updateStatisticsPanel();
92
                }
93
            });
94
            updateStatisticsPanel();
95
//            panel.set(this.layer.getStatistics(null));
96

    
97
            panel.addActionListener(new ActionListener() {
98

    
99
                @Override
100
                public void actionPerformed(ActionEvent e) {
101
                    if(e.getActionCommand().equalsIgnoreCase("_recalculate_statistics")){
102
                        layer.recalculateStatistics();
103
                        updateStatisticsPanel();
104
                    }
105

    
106
                }
107
            });
108
        }
109
    }
110

    
111
    @Override
112
    public JComponent asJComponent() {
113
        if (this.panel == null) {
114
            initializePanel();
115
        }
116
        return (JComponent)this.panel;
117
    }
118

    
119
    @Override
120
    public String getTitle() {
121
        I18nManager i18nManager = ToolsLocator.getI18nManager();
122
        return i18nManager.getTranslation("_statistics");
123
    }
124

    
125
    @Override
126
    public int getPriority() {
127
        return 500;
128
    }
129

    
130
    @Override
131
    public boolean whenAccept() {
132
        return true;
133
    }
134

    
135
    @Override
136
    public boolean whenApply() {
137
        return true;
138
    }
139

    
140
    @Override
141
    public boolean whenCancel() {
142
        return true;
143
    }
144

    
145
    /**
146
     *
147
     */
148
    private void updateStatisticsPanel() {
149
        Thread thread = new Thread(new Runnable() {
150
            @Override
151
            public void run() {
152
                final Statistics statistics = layer.getStatistics(null);
153
                SwingUtilities.invokeLater(new Runnable() {
154
                    @Override
155
                    public void run() {
156
                        panel.set(statistics);
157
                    }
158
                });
159
            }
160
        }, "Calculate statistics");
161

    
162
        thread.setDaemon(false);
163
        thread.start();
164
    }
165

    
166
}