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 @ 3462

History | View | Annotate | Download (18.7 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 org.gvsig.vcsgis.app.addlayer.WizardVCSGisVectorial;
25
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisTabular;
26
import java.util.Map;
27
import javax.swing.JOptionPane;
28
import org.gvsig.andami.IconThemeHelper;
29
import org.gvsig.andami.PluginsLocator;
30
import org.gvsig.andami.plugins.Extension;
31
import org.gvsig.app.ApplicationLocator;
32
import org.gvsig.app.extension.AddLayer;
33
import org.gvsig.fmap.dal.feature.FeatureStore;
34
import org.gvsig.tools.ToolsLocator;
35
import org.gvsig.tools.dynobject.DynObject;
36
import org.gvsig.tools.i18n.I18nManager;
37
import org.gvsig.tools.swing.api.ToolsSwingLocator;
38
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
39
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
40
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
41
import org.gvsig.vcsgis.app.VCSGisDialogsHelper.VCSGisDialogInfo;
42
import org.gvsig.vcsgis.lib.VCSGisEntity;
43
import org.gvsig.vcsgis.lib.VCSGisLocator;
44
import org.gvsig.vcsgis.lib.VCSGisManager;
45
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
46
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
47
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
48
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
49
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
50
import org.gvsig.vcsgis.swing.VCSGisJExport;
51
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
52
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
53
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
54
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
55
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
56
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
57

    
58
/**
59
 *
60
 * @author gvSIG Team
61
 */
62
public class VCSGisExtension extends Extension {
63

    
64
    private VCSGisDialogsHelper dialogsHelper;
65

    
66
    @Override
67
    public void initialize() {
68
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-server", this);
69
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-workspace", this);
70
        IconThemeHelper.registerIcon("action", "tools-vcsgis-add-to-workspace", this);
71
        IconThemeHelper.registerIcon("action", "tools-vcsgis-export", this);
72
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout", this);
73
        IconThemeHelper.registerIcon("action", "tools-vcsgis-showchanges", this);
74
        IconThemeHelper.registerIcon("action", "tools-vcsgis-register-workspace", this);
75
        IconThemeHelper.registerIcon("action", "tools-vcsgis-show-revisions", this);
76
        
77
        this.dialogsHelper = new VCSGisDialogsHelper();
78
    }
79

    
80
    @Override
81
    public void postInitialize() {
82
        super.postInitialize();
83
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
84
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
85
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
86

    
87
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
88
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
89
        manager.restoreWorkspaces(workspaces);
90

    
91
        PluginsLocator.getPluginsManager().addShutdownTask(
92
                "VCSGisSave", 
93
                () -> {
94
                    VCSGisManager manager1 = VCSGisLocator.getVCSGisManager();
95
                    DynObject pluginProperties1 = getPlugin().getPluginProperties();
96
                    pluginProperties1.setDynValue("workspaces", manager1.getWorkspaces());
97
                },
98
                false,
99
                100
100
        );
101

    
102
        ApplicationLocator.getManager().registerAddTableWizard(
103
                "VCSGis", 
104
                "VCSGis", 
105
                WizardVCSGisTabular.class
106
        );
107
        AddLayer.addWizard(WizardVCSGisVectorial.class);
108

    
109
    }
110

    
111
    @Override
112
    public void execute(String actionCommand) {
113

    
114
        switch (actionCommand) {
115
            case "tools-vcsgis-showchanges":
116
                this.showChangesDialog();
117
                break;
118

    
119
            case "tools-vcsgis-init-server":
120
                showInitializaRepositoryDialog();
121
                break;
122
            case "tools-vcsgis-init-workspace":
123
                showInitWorkspaceDialog();
124
                break;
125
            case "tools-vcsgis-add-to-workspace":
126
                showAddToWorkspaceDialog();
127
                break;
128
            case "tools-vcsgis-checkout":
129
                showCheckoutDialog();
130
                break;
131
            case "tools-vcsgis-export":
132
                showExportDialog();
133
                break;
134
            case "tools-vcsgis-register-workspace":
135
                showRegisterWorkspaceDialog();
136
                break;
137
            case "tools-vcsgis-show_server-entities":
138
                showServerEntitiesDialog();
139
                break;
140
            case "tools-vcsgis-show_server-hooks":
141
                showServerHooksDialog();
142
                break;
143
            case "tools-vcsgis-show-revisions":
144
                showHistory();
145
                break;
146
            case "tools-vcsgis-import-history":
147
                showImportHistoryDialog();
148
                break;
149
            case "tools-vcsgis-create-resource-table":
150
                showCreateResourceTableDialog();
151
                break;
152
        }
153
    }
154

    
155
    @Override
156
    public boolean isEnabled() {
157
        return true;
158
    }
159

    
160
    @Override
161
    public boolean isVisible() {
162
        return true;
163
    }
164

    
165
//    private void cleanHighligthed() {
166
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
167
//        swingManager.getDefaultServices().cleanHighligthed();
168
//    }
169
//
170

    
171
    private void showAddToWorkspaceDialog() {
172
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
173

    
174
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
175
                "AddToWorkingCopy",
176
                swingManager.createAddToWorkspacePanel(),
177
                "_VCS_Add_to_workspace",
178
                "_VCS_Add_to_workspace",
179
                "_VCS_Add_to_workspace",
180
                () -> {
181
                    I18nManager i18n = ToolsLocator.getI18nManager();
182
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
183
                    VCSGisJAddToWorkspace addToWorkspacePanel = (VCSGisJAddToWorkspace) this.dialogsHelper.getDialog("AddToWorkingCopy").getPanel();
184
                    int r = addToWorkspacePanel.add();
185
                    if (r != 0) {
186
                        FeatureStore featureStore = addToWorkspacePanel.getFeatureStore();
187
                        String targetName = addToWorkspacePanel.getTabletName();
188
                        VCSGisWorkspace workspace = addToWorkspacePanel.getWorkspace();
189
                        dialogsManager.messageDialog(
190
                                i18n.getTranslation(
191
                                        "_Cant_add_{0}_as_{1}_in_{2}",
192
                                        new String[]{
193
                                            featureStore.getName(),
194
                                            targetName,
195
                                            workspace.getLabel()
196
                                        }
197
                                ) + "\n" + workspace.getErrorMessage(r),
198
                                i18n.getTranslation("_VCS_Add_to_workspace"),
199
                                JOptionPane.WARNING_MESSAGE
200
                        );
201
                    }
202
                }
203
        );
204
        dialog.show();
205
    }
206

    
207
    private void showImportHistoryDialog() {
208
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
209

    
210
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
211
                "ImportHistory",
212
                swingManager.createInitWorkspacePanel(),
213
                "_VCS_Import_history",
214
                "_VCS_Import_history",
215
                "_VCS_Import_history",
216
                () -> {
217
                    I18nManager i18n = ToolsLocator.getI18nManager();
218
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
219
                    VCSGisJImportHistory importHistoryPanel = (VCSGisJImportHistory) this.dialogsHelper.getDialog("ImportHistory").getPanel();
220
                    int r = importHistoryPanel.importHistory();
221
                    if (r != 0) {
222
                        FeatureStore featureStore = importHistoryPanel.getFeatureStore();
223
                        String targetName = importHistoryPanel.getTabletName();
224
                        VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
225
                        dialogsManager.messageDialog(
226
                                i18n.getTranslation(
227
                                        "_Cant_add_{0}_as_{1}_in_{2}",
228
                                        new String[]{
229
                                            featureStore.getName(),
230
                                            targetName,
231
                                            workspace.getLabel()
232
                                        }
233
                                ) + "\n" + workspace.getErrorMessage(r),
234
                                i18n.getTranslation("_VCS_Import_history"),
235
                                JOptionPane.WARNING_MESSAGE
236
                        );
237
                    }
238
                }
239
        );
240
        dialog.show();
241
    }
242

    
243
    private void showInitWorkspaceDialog() {
244
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
245

    
246
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
247
                "InitializeWorkingCopy",
248
                swingManager.createInitWorkspacePanel(),
249
                "_VCS_Initialize_workspace",
250
                "_VCS_Initialize_workspace",
251
                "_VCS_Initialize_workspace",
252
                () -> {
253
                    I18nManager i18n = ToolsLocator.getI18nManager();
254
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
255
                    VCSGisJInitWorkspace panelInitWorkspace = (VCSGisJInitWorkspace) this.dialogsHelper.getDialog("InitializeWorkingCopy").getPanel();
256
                    int r = panelInitWorkspace.initializeWorkspace();
257
                    if (r != 0) {
258
                        dialogsManager.messageDialog(
259
                                i18n.getTranslation(
260
                                        "_Cant_initialize_workspace_{0}",
261
                                        new String[]{panelInitWorkspace.getWorkspaceName()}
262
                                ),
263
                                i18n.getTranslation("_VCS_Initialize_workspace"),
264
                                JOptionPane.WARNING_MESSAGE
265
                        );
266
                    }
267
                }
268
        );
269
        dialog.setAutoclose(true);
270
        dialog.show();
271
    }
272

    
273
    private void showInitializaRepositoryDialog() {
274
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
275

    
276
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
277
                "InitializeRepository",
278
                swingManager.createInitRepositoryPanel(),
279
                "_VCS_Initialize_repository",
280
                "_VCS_Initialize_repository",
281
                "_VCS_Initialize_repository",
282
                () -> {
283
                    I18nManager i18n = ToolsLocator.getI18nManager();
284
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
285
                    VCSGisJInitServer panel = (VCSGisJInitServer) this.dialogsHelper.getDialog("InitializeRepository").getPanel();
286
                    int r = panel.initialize();
287
                    if (r != 0) {
288
                        dialogsManager.messageDialog(
289
                                i18n.getTranslation(
290
                                        "_Cant_initialize_server_{0}",
291
                                        new String[]{panel.getConnectionLabel()}
292
                                ),
293
                                i18n.getTranslation("_VCS_Initialize_repository"),
294
                                JOptionPane.WARNING_MESSAGE
295
                        );
296
                    }
297
                }
298
        );
299
        dialog.setAutoclose(true);
300
        dialog.show();
301
    }
302

    
303
    private void showCheckoutDialog() {
304
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
305

    
306
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
307
                "Checkout",
308
                swingManager.createCheckoutPanel(),
309
                "_VCS_Checkout",
310
                "_VCS_Checkout",
311
                "_VCS_Checkout",
312
                () -> {
313
                    I18nManager i18n = ToolsLocator.getI18nManager();
314
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
315
                    VCSGisJCheckout checkoutPanel = (VCSGisJCheckout) this.dialogsHelper.getDialog("Checkout").getPanel();
316
                    int r = checkoutPanel.checkout();
317
                    if (r != 0) {
318
                        VCSGisEntity entity = checkoutPanel.getTable();
319
                        dialogsManager.messageDialog(
320
                                i18n.getTranslation(
321
                                        "_Failed_checkout_of_{0}",
322
                                        new String[]{entity.toString()}
323
                                ),
324
                                i18n.getTranslation("_Checkout"),
325
                                JOptionPane.WARNING_MESSAGE
326
                        );
327
                    }
328
                }
329
        );
330
        dialog.show();
331
    }
332

    
333
    private void showExportDialog() {
334
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
335

    
336
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
337
                "Export",
338
                swingManager.createExportPanel(),
339
                "_VCS_Export",
340
                "_Export_to_a_local_table_a_table_of_the_repository",
341
                "_VCS_Export",
342
                () -> {
343
                    I18nManager i18n = ToolsLocator.getI18nManager();
344
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
345
                    VCSGisJExport exportPanel = (VCSGisJExport) this.dialogsHelper.getDialog("Export").getPanel();
346
                    int r = exportPanel.export();
347
                    if (r != 0) {
348
                        VCSGisEntity entity = exportPanel.getTable();
349
                        dialogsManager.messageDialog(
350
                                i18n.getTranslation(
351
                                        "_Failed_export_of_{0}",
352
                                        new String[]{entity.toString()}
353
                                ),
354
                                i18n.getTranslation("_VCSGis_Export"),
355
                                JOptionPane.WARNING_MESSAGE
356
                        );
357
                    }
358
                }
359
        );
360
        dialog.show();
361
    }
362

    
363
    private void showChangesDialog() {
364
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
365

    
366
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
367
                "Changes",
368
                swingManager.createChangesPanel(),
369
                "_VCS_Changes"
370
        );
371
        dialog.show();
372
    }
373

    
374
    private void showHistory() {
375
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
376

    
377
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
378
                "Revisions",
379
                swingManager.createRevisionsPanel(),
380
                "_VCS_Revisions"
381
        );
382
        dialog.show();
383
    }
384

    
385
    private void showRegisterWorkspaceDialog() {
386
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
387

    
388
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
389
                "RegisterWorkingCopies",
390
                swingManager.createRegisterWorkspacePanel(),
391
                "_VCS_Register_workspace"
392
        );
393
        dialog.show();
394
    }
395

    
396
    private void showServerEntitiesDialog() {
397
        I18nManager i18nManager = ToolsLocator.getI18nManager();
398
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
399
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
400

    
401
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
402
        winManager.showWindow(
403
                panel.asJComponent(),
404
                i18nManager.getTranslation("_VCS_Server_entities"),
405
                WindowManager.MODE.WINDOW
406
        );
407
    }
408

    
409
    private void showServerHooksDialog() {
410
        I18nManager i18nManager = ToolsLocator.getI18nManager();
411
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
412
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
413

    
414
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
415
        winManager.showWindow(
416
                panel.asJComponent(),
417
                i18nManager.getTranslation("_VCS_Server_hooks"),
418
                WindowManager.MODE.WINDOW
419
        );
420
    }
421

    
422
    private void showCreateResourceTableDialog() {
423
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
424

    
425
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
426
                "CreateResourceTable",
427
                swingManager.createResourceTablePanel(),
428
                "_VCS_Create_resource_table",
429
                "_Create_resource_table_parameters",
430
                "_Accept",
431
                () -> {
432
                    I18nManager i18n = ToolsLocator.getI18nManager();
433
                    VCSGisJCreateResourceTable panel = (VCSGisJCreateResourceTable) this.dialogsHelper.getDialog("CreateResourceTable").getPanel();
434
                    panel.createResourceTable();
435
                }
436
        );
437
        dialog.setAutoclose(true);
438
        dialog.show();
439
    }
440

    
441
}