Statistics
| Revision:

svn-gvsig-desktop / tags / v2_0_0_Build_2061 / applications / appgvSIG / src / org / gvsig / app / project / documents / view / toc / actions / PasteLayersTocMenuEntry.java @ 39427

History | View | Annotate | Download (2.87 KB)

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

    
3
import java.awt.Component;
4

    
5
import javax.swing.JOptionPane;
6

    
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9

    
10
import org.gvsig.andami.PluginServices;
11
import org.gvsig.app.extension.ProjectExtension;
12
import org.gvsig.app.project.Project;
13
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
14
import org.gvsig.app.project.documents.view.toc.ITocItem;
15
import org.gvsig.fmap.mapcontext.layers.FLayer;
16
import org.gvsig.fmap.mapcontext.layers.FLayers;
17
import org.gvsig.i18n.Messages;
18
import org.gvsig.tools.persistence.exception.PersistenceException;
19

    
20

    
21
public class PasteLayersTocMenuEntry extends AbstractTocContextMenuAction {
22
    
23
    private static Logger logger =
24
        LoggerFactory.getLogger(PasteLayersTocMenuEntry.class);
25

    
26
        public String getGroup() {
27
                return "copyPasteLayer";
28
        }
29

    
30
        public int getGroupOrder() {
31
                return 60;
32
        }
33

    
34
        public int getOrder() {
35
                return 2;
36
        }
37

    
38
        public String getText() {
39
                return PluginServices.getText(this, "pegar");
40
        }
41

    
42
        public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
43
                if (isTocItemBranch(item)) {
44
                        FLayer lyr = getNodeLayer(item);
45
                        if (lyr instanceof FLayers) {
46
                            FLayers aux = this.getFLayersFromClipboard();
47
                                return aux != null;
48
                        }
49

    
50
                } else if (!isTocItemLeaf(item)) {
51
                        if (getNodeLayer(item) == null) {
52
                FLayers aux = this.getFLayersFromClipboard();
53
                return aux != null;
54
                        }
55
                }
56
                return false;
57
        }
58

    
59
        private FLayers getFLayersFromClipboard() {
60
            
61
                FLayers resp = null;
62
        try {
63
            resp = CopyPasteLayersUtils.getClipboardAsFLayers();
64
        } catch (PersistenceException e) {
65
            logger.info("While parsing clipboard data as FLayers.", e);
66
            resp = null;
67
        }
68
                return resp;
69
        }
70

    
71
        public void execute(ITocItem item, FLayer[] selectedItems) {
72
                FLayers target_root;
73

    
74
        FLayers clipboard_root = this.getFLayersFromClipboard();
75
        if (clipboard_root == null) {
76
            JOptionPane.showMessageDialog(
77
                (Component)PluginServices.getMainFrame(),
78
                Messages.getText("No_ha_sido_posible_realizar_la_operacion"),
79
                Messages.getText("pegar"),
80
                JOptionPane.ERROR_MESSAGE
81
                );
82
            logger.info("Unable to parse clipboard as flayers");
83
            return;
84
        }
85

    
86
                if (isTocItemBranch(item)) {
87
                    target_root = (FLayers)getNodeLayer(item);
88
                } else if (getNodeLayer(item) == null){
89
                    target_root = getMapContext().getLayers();
90
                } else {
91
                        return;
92
                }
93
                
94
                getMapContext().beginAtomicEvent();
95

    
96
                boolean isOK = CopyPasteLayersUtils.addLayers(clipboard_root, target_root);
97

    
98
                getMapContext().endAtomicEvent();
99

    
100
                if (isOK) {
101
                        getMapContext().invalidate();
102
                        Project project=((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject();
103
                        project.setModified(true);
104
                }
105
        }
106

    
107

    
108
}