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

History | View | Annotate | Download (18.6 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.show();
270
    }
271

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

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

    
301
    private void showCheckoutDialog() {
302
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
303

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

    
331
    private void showExportDialog() {
332
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
333

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

    
361
    private void showChangesDialog() {
362
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
363

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

    
372
    private void showHistory() {
373
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
374

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

    
383
    private void showRegisterWorkspaceDialog() {
384
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
385

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

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

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

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

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

    
420
    private void showCreateResourceTableDialog() {
421
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
422

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

    
438
}