Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.app / org.gvsig.vcsgis.app.mainplugin / src / main / java / org / gvsig / vcsgis / app / VCSGisExtension.java @ 2573

History | View | Annotate | Download (13.2 KB)

1
/*
2
 * gvSIG. Desktop Geographic Information System.
3
 * 
4
 * Copyright (C) 2007-2020 gvSIG Association.
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License 
17
 * along with this program. If not, see <https://www.gnu.org/licenses/>. 
18
 * 
19
 * For any additional information, do not hesitate to contact us
20
 * at info AT gvsig.com, or visit our website www.gvsig.com.
21
 */
22
package org.gvsig.vcsgis.app;
23

    
24
import java.awt.event.ActionEvent;
25
import java.util.Map;
26
import javax.swing.JOptionPane;
27
import org.gvsig.andami.IconThemeHelper;
28
import org.gvsig.andami.plugins.Extension;
29
import org.gvsig.vcsgis.app.VCSGisSwingServicesImpl;
30
import org.gvsig.vcsgis.lib.client.VCSGisWorkspace;
31
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
32
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
33
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
34
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
35
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
36
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
37
import org.gvsig.fmap.dal.feature.FeatureStore;
38
import org.gvsig.tools.ToolsLocator;
39
import org.gvsig.tools.dynobject.DynObject;
40
import org.gvsig.tools.i18n.I18nManager;
41
import org.gvsig.tools.swing.api.ToolsSwingLocator;
42
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
43
import org.gvsig.tools.swing.api.windowmanager.Dialog;
44
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
45
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
46
import org.gvsig.vcsgis.lib.VCSGisLocator;
47
import org.gvsig.vcsgis.lib.client.VCSGisClientManager;
48
import org.gvsig.vcsgis.lib.client.VCSGisWorkspaceDescriptor;
49
import org.gvsig.vcsgis.swing.VCSGisJChanges;
50

    
51
/**
52
 *
53
 * @author gvSIG Team
54
 */
55
public class VCSGisExtension extends Extension {
56

    
57
    @Override
58
    public void initialize() {
59
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-server", this);
60
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-workspace", this);
61
        IconThemeHelper.registerIcon("action", "tools-vcsgis-add-to-workspace", this);
62
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout", this);
63
        IconThemeHelper.registerIcon("action", "tools-vcsgis-showchanges", this);
64
    }
65

    
66
    @Override
67
    public void postInitialize() {
68
        super.postInitialize();
69
        VCSGisClientManager manager = VCSGisLocator.getVCSGisClientManager();
70
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
71
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
72

    
73
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
74
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map<String, VCSGisWorkspaceDescriptor>) pluginProperties.getDynValue("workspaces");
75
        manager.restoreWorkspaces(workspaces);
76
    }
77

    
78
    @Override
79
    public void terminate() {
80
        VCSGisClientManager manager = VCSGisLocator.getVCSGisClientManager();
81
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
82
        pluginProperties.setDynValue("workspaces", manager.getWorkspaces());
83
    }
84

    
85
    @Override
86
    public void execute(String actionCommand) {
87

    
88
//        I18nManager i18nManager = ToolsLocator.getI18nManager();
89
//        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
90
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
91

    
92
        switch (actionCommand) {
93
            case "tools-vcsgis-showchanges":
94
                this.showChangesDialog();
95
                break;
96

    
97
            case "tools-vcsgis-init-server":
98
                showInitServerDialog();
99
                break;
100
            case "tools-vcsgis-init-workspace":
101
                showInitWorkspaceDialog();
102
                break;
103
            case "tools-vcsgis-add-to-workspace":
104
                showAddToWorkspaceDialog();
105
                break;
106
            case "tools-vcsgis-checkout":
107
                showCheckoutDialog();
108
                break;
109

    
110
        }
111
    }
112

    
113
    private void showAddToWorkspaceDialog() {
114
        I18nManager i18nManager = ToolsLocator.getI18nManager();
115
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
116
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
117

    
118
        final VCSGisJAddToWorkspace panelAddToWorkspace = swingManager.createAddToWorkspacePanel();
119
        final Dialog dialogAddToWorkspace = winManager.createDialog(
120
                panelAddToWorkspace.asJComponent(),
121
                i18nManager.getTranslation("add_to_workspace"),
122
                i18nManager.getTranslation("add_to_workspace"),
123
                WindowManager_v2.BUTTONS_OK_CANCEL
124
        );
125

    
126
        panelAddToWorkspace.setDialog(dialogAddToWorkspace);
127
        dialogAddToWorkspace.setButtonLabel(WindowManager_v2.BUTTON_OK, i18nManager.getTranslation("add"));
128
        dialogAddToWorkspace.addActionListener((ActionEvent e) -> {
129
            switch (dialogAddToWorkspace.getAction()) {
130
                case WindowManager_v2.BUTTON_OK:
131

    
132
                    int r = panelAddToWorkspace.add();
133

    
134
                    if (r != 0) {
135
                        FeatureStore featureStore = panelAddToWorkspace.getFeatureStore();
136
                        String targetName = panelAddToWorkspace.getTabletName();
137
                        VCSGisWorkspace workspace = panelAddToWorkspace.getWorkspace();
138

    
139
                        String message = "cant_add_{0}_as_{1}_in_{2}";
140

    
141
                        StringBuilder compoundMessage = new StringBuilder();
142
                        String[] messageArgs = new String[]{featureStore.getName(), targetName, workspace.getLabel()};
143

    
144
                        compoundMessage.append(i18nManager.getTranslation(
145
                                message,
146
                                messageArgs
147
                        ));
148
                        compoundMessage.append("\n");
149
                        compoundMessage.append(workspace.getErrorMessage(r));
150
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
151
                        dialogsManager.messageDialog(compoundMessage.toString(), i18nManager.getTranslation("add_to_workspace"), JOptionPane.WARNING_MESSAGE);
152
                    }
153
                    break;
154

    
155
            }
156
        });
157
        dialogAddToWorkspace.show(WindowManager.MODE.WINDOW);
158
    }
159

    
160
    private void showInitWorkspaceDialog() {
161
        I18nManager i18nManager = ToolsLocator.getI18nManager();
162
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
163
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
164

    
165
        final VCSGisJInitWorkspace panelInitWorkspace = swingManager.createInitWorkspacePanel();
166
        final Dialog dialogInitWorkspace = winManager.createDialog(
167
                panelInitWorkspace.asJComponent(),
168
                i18nManager.getTranslation("initialize_workspace"),
169
                i18nManager.getTranslation("initialize_workspace"),
170
                WindowManager_v2.BUTTONS_OK_CANCEL
171
        );
172

    
173
        panelInitWorkspace.setDialog(dialogInitWorkspace);
174
        dialogInitWorkspace.setButtonLabel(WindowManager_v2.BUTTON_OK, i18nManager.getTranslation("initialize"));
175
        dialogInitWorkspace.addActionListener((ActionEvent e) -> {
176
            switch (dialogInitWorkspace.getAction()) {
177
                case WindowManager_v2.BUTTON_OK:
178
                    int r = panelInitWorkspace.initializeWorkspace();
179
                    if (r != 0) {
180
                        String message = "cant_initialize_workspace_{0}";
181

    
182
                        StringBuilder compoundMessage = new StringBuilder();
183
                        String[] messageArgs = new String[]{panelInitWorkspace.getWorkspaceName()};
184

    
185
                        compoundMessage.append(i18nManager.getTranslation(
186
                                message,
187
                                messageArgs
188
                        ));
189

    
190
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
191
                        dialogsManager.messageDialog(compoundMessage.toString(), i18nManager.getTranslation("initialize_workspace"), JOptionPane.WARNING_MESSAGE);
192
                    }
193

    
194
                    break;
195

    
196
            }
197
        });
198
        dialogInitWorkspace.show(WindowManager.MODE.WINDOW);
199
    }
200

    
201
    private void showInitServerDialog() {
202
        I18nManager i18nManager = ToolsLocator.getI18nManager();
203
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
204
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
205

    
206
        final VCSGisJInitServer panel = swingManager.createInitServerPanel();
207
        final Dialog dialog = winManager.createDialog(
208
                panel.asJComponent(),
209
                i18nManager.getTranslation("initialize_server"),
210
                i18nManager.getTranslation("initialize_server"),
211
                WindowManager_v2.BUTTONS_OK_CANCEL
212
        );
213

    
214
        panel.setDialog(dialog);
215
        dialog.setButtonLabel(WindowManager_v2.BUTTON_OK, i18nManager.getTranslation("initialize"));
216
        dialog.addActionListener((ActionEvent e) -> {
217
            switch (dialog.getAction()) {
218
                case WindowManager_v2.BUTTON_OK:
219
                    int r = panel.initialize();
220
                    if (r != 0) {
221
                        String message = "cant_initialize_server_{0}";
222

    
223
                        StringBuilder compoundMessage = new StringBuilder();
224
                        String[] messageArgs = new String[]{
225
                            panel.getConnectionLabel()};
226

    
227
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
228
                        dialogsManager.messageDialog(
229
                                i18nManager.getTranslation(
230
                                        message,
231
                                        messageArgs
232
                                ), 
233
                                i18nManager.getTranslation("initialize_server"), 
234
                                JOptionPane.WARNING_MESSAGE);
235
                    }
236

    
237
                    break;
238
            }
239
        });
240
        dialog.show(WindowManager.MODE.WINDOW);
241
    }
242

    
243
    private void showCheckoutDialog() {
244
        I18nManager i18nManager = ToolsLocator.getI18nManager();
245
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
246
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
247

    
248
        final VCSGisJCheckout panel = swingManager.createCheckoutPanel();
249
        final Dialog dialog = winManager.createDialog(
250
                panel.asJComponent(),
251
                i18nManager.getTranslation("_Checkout"),
252
                i18nManager.getTranslation("_Checkout"),
253
                WindowManager_v2.BUTTONS_OK_CANCEL
254
        );
255

    
256
        panel.setDialog(dialog);
257
        dialog.setButtonLabel(WindowManager_v2.BUTTON_OK, i18nManager.getTranslation("_Checkout"));
258
        dialog.addActionListener((ActionEvent e) -> {
259
            switch (dialog.getAction()) {
260
                case WindowManager_v2.BUTTON_OK:
261
                    int r = panel.checkout();
262
                    if (r != 0) {
263
                        String message = "failed_checkout_of_{0}";
264

    
265
                        VCSGisWorkspace.Entity entity = panel.getTable();;
266
                        String[] messageArgs = new String[]{
267
                            entity.toString()
268
                        };
269

    
270
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
271
                        dialogsManager.messageDialog(
272
                                i18nManager.getTranslation(
273
                                        message,
274
                                        messageArgs
275
                                ), 
276
                                i18nManager.getTranslation("_Checkout"), 
277
                                JOptionPane.WARNING_MESSAGE);
278
                    }
279

    
280
                    break;
281
            }
282
        });
283
        dialog.show(WindowManager.MODE.WINDOW);
284
    }
285

    
286
    private void showChangesDialog() {
287
        I18nManager i18nManager = ToolsLocator.getI18nManager();
288
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
289
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
290

    
291
        final VCSGisJChanges panel = swingManager.createChangesPanel();
292
        winManager.showWindow(
293
                panel.asJComponent(), 
294
                i18nManager.getTranslation("_VCS_Show_changes"),
295
                WindowManager.MODE.WINDOW
296
        );
297
    }
298

    
299
    @Override
300
    public boolean isEnabled() {
301
        return true;
302
    }
303

    
304
    @Override
305
    public boolean isVisible() {
306
        return true;
307
    }
308

    
309
}