Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extEditing / src / org / gvsig / editing / StartEditing.java @ 39138

History | View | Annotate | Download (6.46 KB)

1 29616 jpiera
package org.gvsig.editing;
2 3698 caballero
3 6856 fjp
import java.awt.Component;
4
5
import javax.swing.JOptionPane;
6
7 38381 jldominguez
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9
10 29616 jpiera
import org.gvsig.andami.PluginServices;
11 38381 jldominguez
import org.gvsig.andami.messages.Messages;
12 29616 jpiera
import org.gvsig.andami.messages.NotificationManager;
13
import org.gvsig.andami.plugins.Extension;
14 38381 jldominguez
import org.gvsig.app.ApplicationLocator;
15 31496 jjdelcerro
import org.gvsig.app.project.documents.view.ViewDocument;
16
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
17 29616 jpiera
import org.gvsig.editing.gui.cad.CADTool;
18
import org.gvsig.editing.gui.tokenmarker.ConsoleToken;
19 38885 jldominguez
import org.gvsig.fmap.dal.exception.DataException;
20 24500 jmvivo
import org.gvsig.fmap.dal.exception.ReadException;
21 21666 vcaballero
import org.gvsig.fmap.mapcontext.layers.FLayer;
22
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
23
import org.gvsig.fmap.mapcontrol.MapControl;
24 29616 jpiera
import org.gvsig.utils.console.jedit.KeywordMap;
25
import org.gvsig.utils.console.jedit.Token;
26 21666 vcaballero
27 3698 caballero
28
/**
29
 * DOCUMENT ME!
30 4892 caballero
 *
31 3698 caballero
 * @author Vicente Caballero Navarro
32
 */
33 5005 jorpiell
public class StartEditing extends Extension {
34 38381 jldominguez
35
    private static Logger logger = LoggerFactory.getLogger(StartEditing.class);
36 6312 caballero
37 6604 caballero
//        private class MyAction extends AbstractAction
38
//        {
39
//
40
//                public void actionPerformed(ActionEvent e) {
41
//                        System.err.println("F3");
42
//                }
43
//
44
//        }
45 5845 fjp
46 9371 jmvivo
        //View vista;
47 4727 fjp
        /**
48 29616 jpiera
         * @see org.gvsig.andami.plugins.IExtension#initialize()
49 4727 fjp
         */
50 5005 jorpiell
        public void initialize() {
51 4727 fjp
        }
52 3698 caballero
53 4727 fjp
        /**
54 29616 jpiera
         * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
55 4727 fjp
         */
56 38705 jldominguez
    public void execute(String actionCommand) {
57 10626 caballero
58 38705 jldominguez
        if (actionCommand.compareTo("layer-start-editing") == 0) {
59 10626 caballero
60 38705 jldominguez
            org.gvsig.andami.ui.mdiManager.IWindow f =
61
                PluginServices.getMDIManager().getActiveWindow();
62 10626 caballero
63 38705 jldominguez
            if (f instanceof DefaultViewPanel) {
64
                DefaultViewPanel vista = (DefaultViewPanel) f;
65 3698 caballero
66 38705 jldominguez
                MapControl mapControl = vista.getMapControl();
67
                ViewDocument model = vista.getModel();
68
                FLayer[] actives =
69
                    model.getMapContext().getLayers().getActives();
70 38381 jldominguez
71 38705 jldominguez
                if (actives.length == 1 && actives[0] instanceof FLyrVect) {
72 10626 caballero
73 38705 jldominguez
                    FLyrVect lv = (FLyrVect) actives[0];
74 10626 caballero
75 38705 jldominguez
                    if (!lv.getFeatureStore().getTransforms().isEmpty()) {
76 10626 caballero
77 38705 jldominguez
                        // cannot edit transformed
78
                        JOptionPane
79
                            .showMessageDialog(
80
                                (Component) f,
81
                                Messages
82
                                    .get("_Cannot_start_edition_in_transformed_layer")
83
                                    + ": '" + lv.getName() + "'",
84
                                PluginServices.getText(this, "warning_title"),
85
                                JOptionPane.INFORMATION_MESSAGE);
86
                        return;
87
                    }
88 38885 jldominguez
89
                    if (!lv.isWritable()) {
90
                        JOptionPane.showMessageDialog((Component) f,
91
                            PluginServices.getText(this,
92
                                "this_layer_is_not_self_editable"),
93
                            PluginServices.getText(this, "warning_title"),
94
                            JOptionPane.WARNING_MESSAGE);
95
                    }
96
97 38705 jldominguez
                    EditionManager editionManager =
98
                        CADExtension.getEditionManager();
99 38885 jldominguez
100 38705 jldominguez
                    try {
101 38885 jldominguez
                        editionManager.editLayer(lv, vista);
102
                    } catch (DataException e) {
103 38790 jldominguez
104 38705 jldominguez
                        logger.info(
105
                            "Error while starting edition: " + e.getMessage(),
106
                            e);
107 10626 caballero
108 38705 jldominguez
                        ApplicationLocator.getManager().message(
109
                            Messages.get("_Unable_to_start_edition_in_layer")
110
                                + ": " + lv.getName(),
111
                            JOptionPane.ERROR_MESSAGE);
112
                    }
113
                }
114
            }
115
        }
116
    }
117 10626 caballero
118 38790 jldominguez
119 5845 fjp
//         private void registerKeyStrokes() {
120
//                 JComponent theComponent = vista.getConsolePanel().getTxt();
121 6312 caballero
//
122 5845 fjp
//                 // The actions
123
//                 Action F3Action = new AbstractAction("REFENT") {
124
//                        public void actionPerformed(ActionEvent evt) {
125
//                                System.err.println("SOY F3");
126
//                        }
127
//                };
128
//
129
//                 InputMap inputMap = theComponent.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
130
//                 inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), F3Action.getValue(Action.NAME));
131
//
132
//                 ActionMap actionMap = theComponent.getActionMap();
133 6312 caballero
//                 // actionMap.put("REFENT", new MyAction());
134 5845 fjp
//                 actionMap.put(F3Action.getValue(Action.NAME), F3Action);
135 6312 caballero
//
136 5845 fjp
//        }
137
138 31496 jjdelcerro
        public static void startCommandsApplicable(DefaultViewPanel vista,FLyrVect lv) {
139 37518 jpiera
            if (vista==null)
140
                vista=(DefaultViewPanel)PluginServices.getMDIManager().getActiveWindow();
141
142
            CADTool[] cadtools = CADExtension.getCADTools();
143 5177 caballero
                KeywordMap keywordMap = new KeywordMap(true);
144
                for (int i = 0; i < cadtools.length; i++) {
145
                        try {
146
                                if (cadtools[i].isApplicable(lv.getShapeType())){
147
                                        keywordMap.add(cadtools[i].getName(), Token.KEYWORD2);
148
                                        keywordMap.add(cadtools[i].toString(), Token.KEYWORD3);
149
                                }
150 21666 vcaballero
                        } catch (ReadException e) {
151 12739 caballero
                                NotificationManager.addError(e.getMessage(),e);
152 5177 caballero
                        }
153
154
                }
155
                ConsoleToken consoletoken = new ConsoleToken(keywordMap);
156
                vista.getConsolePanel().setTokenMarker(consoletoken);
157
158
        }
159
160 22986 vcaballero
//        private void changeModelTable(ProjectTable pt, VectorialEditableAdapter vea){
161
//            com.iver.andami.ui.mdiManager.IWindow[] views = PluginServices.getMDIManager().getAllWindows();
162
//
163
//                for (int i=0 ; i<views.length ; i++){
164
//                        if (views[i] instanceof Table){
165
//                                Table table=(Table)views[i];
166
//                                ProjectTable model =table.getModel();
167
//                                if (model.equals(pt)){
168
//                                                table.setModel(pt);
169
//                                                vea.getCommandRecord().addCommandListener(table);
170
//                                }
171
//                        }
172
//                }
173
//   }
174 4727 fjp
        /**
175 29616 jpiera
         * @see org.gvsig.andami.plugins.IExtension#isEnabled()
176 4727 fjp
         */
177
        public boolean isEnabled() {
178 31404 vcaballero
                return true;
179 4727 fjp
        }
180 3698 caballero
181 4727 fjp
        /**
182 29616 jpiera
         * @see org.gvsig.andami.plugins.IExtension#isVisible()
183 4727 fjp
         */
184
        public boolean isVisible() {
185 29616 jpiera
                org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
186 6880 cesar
                                .getActiveWindow();
187 3698 caballero
188 4727 fjp
                if (f == null) {
189
                        return false;
190
                }
191 31496 jjdelcerro
                if (f instanceof DefaultViewPanel){
192
                        DefaultViewPanel view=(DefaultViewPanel)f;
193 31404 vcaballero
                        FLayer[] selected = view.getModel().getMapContext().getLayers()
194
                        .getActives();
195
                        if (selected.length == 1 && selected[0].isAvailable() && selected[0] instanceof FLyrVect) {
196
                                if (selected[0].isEditing())
197
                                        return false;
198
                                return true;
199
                        }
200
                }
201 6604 caballero
                return false;
202 4727 fjp
        }
203 3698 caballero
}