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 / legend / gui / legendactions / LoadLegendAction.java @ 43392

History | View | Annotate | Download (2.94 KB)

1
package org.gvsig.app.project.documents.view.legend.gui.legendactions;
2

    
3
import java.awt.Component;
4
import java.awt.event.ActionEvent;
5
import java.io.File;
6
import java.util.ArrayList;
7
import java.util.List;
8
import javax.swing.AbstractAction;
9
import javax.swing.Action;
10
import javax.swing.JFileChooser;
11
import javax.swing.JOptionPane;
12
import org.gvsig.andami.PluginServices;
13
import org.gvsig.app.ApplicationLocator;
14
import org.gvsig.app.project.documents.view.legend.gui.LegendFileFilter;
15
import org.gvsig.app.project.documents.view.legend.gui.LegendsPanel;
16
import org.gvsig.fmap.geom.Geometry;
17
import org.gvsig.fmap.mapcontext.MapContextLocator;
18
import org.gvsig.fmap.mapcontext.MapContextManager;
19
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
20
import org.gvsig.fmap.mapcontext.rendering.legend.driver.ILegendReader;
21
import org.gvsig.i18n.Messages;
22

    
23
public class LoadLegendAction extends AbstractLoadSaveLegendAction {
24

    
25
    private static final long serialVersionUID = 8023893921676942206L;
26

    
27
    public LoadLegendAction() {
28
        super();
29
        this.putValue(Action.NAME, PluginServices.getText(this, "Recuperar_leyenda") + "...");
30
    }
31

    
32
    @Override
33
    public void actionPerformed(ActionEvent e) {
34
        if( ! (e.getSource() instanceof LegendsPanel) ) {
35
            return;
36
        }
37
        try {
38
            loadLegend((LegendsPanel) e.getSource());
39
        } catch (Exception e1) {
40
            JOptionPane.showMessageDialog(
41
                ApplicationLocator.getManager().getRootComponent(),
42
                Messages.getText("_Unable_to_read_legend")
43
                + "\n\n" + e1.getMessage(),
44
                Messages.getText("legend"),
45
                JOptionPane.WARNING_MESSAGE);
46
        }
47
    }
48

    
49
    private void loadLegend(LegendsPanel legends) throws Exception {
50

    
51
        List<LegendFileFilter> filters = getLegendFileFilters(false);
52
        if( filters.isEmpty() ) {
53
            JOptionPane.showMessageDialog(
54
                ApplicationLocator.getManager().getRootComponent(),
55
                Messages.getText("_No_input_format_available"),
56
                Messages.getText("legend"),
57
                JOptionPane.WARNING_MESSAGE);
58
            return;
59
        }
60

    
61
        JFileChooser fileChooser = new JFileChooser();
62
        fileChooser.setAcceptAllFileFilterUsed(false);
63

    
64
        for( int i = 0; i < filters.size(); i++ ) {
65
            fileChooser.addChoosableFileFilter(filters.get(i));
66
        }
67

    
68
        // open a file
69
        if( fileChooser.showOpenDialog((Component) PluginServices
70
            .getMainFrame()) == JFileChooser.APPROVE_OPTION ) {
71

    
72
            File file = fileChooser.getSelectedFile();
73
            LegendFileFilter lff = (LegendFileFilter) fileChooser.getFileFilter();
74
            MapContextManager mcoman = MapContextLocator.getMapContextManager();
75
            ILegendReader lr = mcoman.createLegendReader(lff.getFileExtension());
76

    
77
            ILegend leg = lr.read(file, Geometry.TYPES.GEOMETRY);
78
            legends.setLegend(leg);
79
        }
80
    }
81

    
82
}