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

History | View | Annotate | Download (34.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 java.awt.Dimension;
25
import java.awt.GridBagConstraints;
26
import java.sql.Timestamp;
27
import java.util.ArrayList;
28
import java.util.Collections;
29
import java.util.EventListener;
30
import java.util.List;
31
import java.util.Map;
32
import java.util.Objects;
33
import javax.swing.JOptionPane;
34
import org.gvsig.andami.IconThemeHelper;
35
import org.gvsig.andami.PluginsLocator;
36
import org.gvsig.andami.plugins.Extension;
37
import org.gvsig.andami.preferences.IPreference;
38
import org.gvsig.andami.preferences.IPreferenceExtension;
39
import org.gvsig.app.ApplicationLocator;
40
import org.gvsig.app.ApplicationManager;
41
import org.gvsig.app.extension.AddLayer;
42
import org.gvsig.app.project.ProjectManager.ProjectEvent;
43
import static org.gvsig.app.project.ProjectNotification.AFTER_LOAD_FROM_FILE;
44
import static org.gvsig.app.project.ProjectNotification.BEFORE_SAVE_TO_FILE;
45
import org.gvsig.fmap.dal.EditingNotificationManager;
46
import org.gvsig.fmap.dal.swing.DALSwingLocator;
47
import org.gvsig.tools.ToolsLocator;
48
import org.gvsig.tools.arguments.Arguments;
49
import org.gvsig.tools.dynobject.DynObject;
50
import org.gvsig.tools.i18n.I18nManager;
51
import org.gvsig.tools.swing.api.ToolsSwingLocator;
52
import org.gvsig.tools.swing.api.ToolsSwingUtils;
53
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
54
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
55
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
56
import org.gvsig.vcsgis.app.VCSGisDialogsHelper.VCSGisDialogInfo;
57
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisTabular;
58
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisVectorial;
59
import org.gvsig.vcsgis.app.preferencespages.VCSGisPage;
60
import org.gvsig.vcsgis.lib.VCSGisEntity;
61
import org.gvsig.vcsgis.lib.VCSGisLocator;
62
import org.gvsig.vcsgis.lib.VCSGisManager;
63
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_OK;
64
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_USER_CANCELLED;
65
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
66
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
67
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
68
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
69
import org.gvsig.vcsgis.swing.VCSGisJCheckoutDataModel;
70
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
71
import org.gvsig.vcsgis.swing.VCSGisJDownloadWorkingcopy;
72
import org.gvsig.vcsgis.swing.VCSGisJExport;
73
import org.gvsig.vcsgis.swing.VCSGisJBackupHistory;
74
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
75
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
76
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
77
import org.gvsig.vcsgis.swing.VCSGisJLogout;
78
import org.gvsig.vcsgis.swing.VCSGisJPrepareWorkingcopy;
79
import org.gvsig.vcsgis.swing.VCSGisJRestoreHistory;
80
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
81
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
82
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
83

    
84
/**
85
 *
86
 * @author gvSIG Team
87
 */
88
public class VCSGisExtension extends Extension  implements IPreferenceExtension {
89

    
90
    private VCSGisDialogsHelper dialogsHelper;
91

    
92
    @Override
93
    public void initialize() {
94
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-server", this);
95
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-workspace", this);
96
        IconThemeHelper.registerIcon("action", "tools-vcsgis-add-to-workspace", this);
97
        IconThemeHelper.registerIcon("action", "tools-vcsgis-export", this);
98
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout", this);
99
        IconThemeHelper.registerIcon("action", "tools-vcsgis-showchanges", this);
100
        IconThemeHelper.registerIcon("action", "tools-vcsgis-register-workspace", this);
101
        IconThemeHelper.registerIcon("action", "tools-vcsgis-show-revisions", this);
102
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout-datamodel", this);
103
        IconThemeHelper.registerIcon("action", "tools-vcsgis-download-workingcopy", this);
104
        
105
        this.dialogsHelper = new VCSGisDialogsHelper();
106
//        ToolsLocator.getDisposableManager().setStackLimit(200);
107
    }
108

    
109
    @Override
110
    public void postInitialize() {
111
        super.postInitialize();
112
        
113
        IconThemeHelper.registerIcon("preferences", "vcsgis-preferences", this);
114
        
115
        ApplicationManager application = ApplicationLocator.getApplicationManager();
116
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
117
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
118
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
119

    
120
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
121
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
122
        manager.restoreWorkspaces(workspaces);
123
        swingManager.setEmptyEffectiveDateAllowed((boolean)pluginProperties.getDynValue("EmptyEffectiveDateAllowedInCommitPanel"));
124
        swingManager.setCurrentDateAsEffectiveDateByDefault((boolean)pluginProperties.getDynValue("CurrentDateAsEffectiveDateByDefaultInCommitPanel"));
125
        swingManager.setRepositoryEntityFeatureTypeEditorMode((int)pluginProperties.getDynValue("RepositoryEntityFeatureTypeEditorMode"));
126

    
127
        PluginsLocator.getPluginsManager().addShutdownTask(
128
                "VCSGisSave", 
129
                () -> {
130
                    DynObject pluginProps = getPlugin().getPluginProperties();
131
                    pluginProps.setDynValue("workspaces", manager.getWorkspaces());
132
                    pluginProps.setDynValue("EmptyEffectiveDateAllowedInCommitPanel", swingManager.isEmptyEffectiveDateAllowed());
133
                    pluginProps.setDynValue("CurrentDateAsEffectiveDateByDefaultInCommitPanel", swingManager.useCurrentDateAsEffectiveDateByDefault());
134
                    pluginProps.setDynValue("RepositoryEntityFeatureTypeEditorMode", swingManager.getRepositoryEntityFeatureTypeEditorMode());
135
                },
136
                false,
137
                100
138
        );
139

    
140
        ApplicationLocator.getManager().registerAddTableWizard(
141
                "VCSGis", 
142
                "VCSGis", 
143
                WizardVCSGisTabular.class
144
        );
145
        AddLayer.addWizard(WizardVCSGisVectorial.class);
146
        
147
        application.getProjectManager().addProjectListener((EventListener e) -> {
148
            if( e instanceof ProjectEvent ) {
149
                ProjectEvent pe = (ProjectEvent)e;
150
                switch(pe.getId()) {
151
                    case AFTER_LOAD_FROM_FILE:
152
                        VCSGisSwingServicesImpl services = (VCSGisSwingServicesImpl) VCSGisSwingLocator.getVCSGisSwingManager().getDefaultServices();
153
                        services.projectLoaded(pe.getProject());
154
                        break;
155
                    case BEFORE_SAVE_TO_FILE:
156
                        break;
157
                }
158
            }
159
        });
160
        
161
        EditingNotificationManager editingNotificationManager = DALSwingLocator.getEditingNotificationManager();
162
        editingNotificationManager.addObserver(new EditingNotificationObserver());
163
    }
164

    
165
    @Override
166
    public void execute(String actionCommand) {
167
        this.execute(actionCommand, null);
168
    }
169
    
170
    @Override
171
    public void execute(String actionCommand, Object[] args) {
172
        Arguments arguments = Arguments.create(args);
173
        switch (actionCommand) {
174
            case "tools-vcsgis-showchanges":
175
                this.showChangesDialog(
176
                        (VCSGisWorkspace) arguments.get("workspace", VCSGisWorkspace.class, null),
177
                        arguments.getListOf("tablenames", String.class),
178
                        (Timestamp) arguments.get("efectivedate", Timestamp.class, null),
179
                        (String) arguments.get("comment", String.class, null)
180
                );
181
                break;
182

    
183
            case "tools-vcsgis-init-server":
184
                showInitializaRepositoryDialog();
185
                break;
186
            case "tools-vcsgis-init-workspace":
187
                showInitWorkspaceDialog();
188
                break;
189
            case "tools-vcsgis-add-to-workspace":
190
                showAddToWorkspaceDialog();
191
                break;
192
            case "tools-vcsgis-checkout":
193
                showCheckoutDialog(
194
                        (VCSGisWorkspace) arguments.get("workspace", VCSGisWorkspace.class, null),
195
                        arguments.getListOf("tablenames", String.class),
196
                        (Boolean) arguments.get("overwrite", Boolean.class, null)
197
                );
198
                break;
199

    
200
            case "tools-vcsgis-export":
201
                showExportDialog();
202
                break;
203
            case "tools-vcsgis-register-workspace":
204
                showRegistrationWorkspaceDialog();
205
                break;
206
            case "tools-vcsgis-show_server-entities":
207
                showServerEntitiesDialog();
208
                break;
209
            case "tools-vcsgis-show_server-hooks":
210
                showServerHooksDialog();
211
                break;
212
            case "tools-vcsgis-show-revisions":
213
                showHistory();
214
                break;
215
            case "tools-vcsgis-import-history":
216
                showImportHistoryDialog();
217
                break;
218
            case "tools-vcsgis-create-resource-table":
219
                showCreateResourceTableDialog();
220
                break;
221
            case "tools-vcsgis-logout":
222
                showLogoutDialog();
223
                break;
224
            case "tools-vcsgis-checkout-datamodel":
225
                showCheckoutDataModelDialog(
226
                        (VCSGisWorkspace) arguments.get("workspace", VCSGisWorkspace.class, null),
227
                        (String) arguments.get("model", String.class, null)
228
                );
229
                break;
230
            case "tools-vcsgis-download-workingcopy":
231
                showDownloadWorkingcopyDialog();
232
                break;
233
            case "tools-vcsgis-prepare-workingcopy":
234
                showPrepareWorkingcopyDialog();
235
                break;
236
            case "tools-vcsgis-backup-history":
237
                showBackupHistoryDialog();
238
                break;
239
            case "tools-vcsgis-restore-history":
240
                showRestoreHistoryDialog();
241
                break;
242
            case "tools-vcsgis-registrationeditingstores":
243
                showRegistrationOfEditingStoresDialog();
244
                break;
245
            case "tools-vcsgis-repositoryentityfeaturetypeeditor":
246
                showRepositoryEntityFeatureTypeEditorImplDialog();
247
                break;
248
        }
249
    }
250

    
251
    @Override
252
    public boolean isEnabled() {
253
        return true;
254
    }
255

    
256
    @Override
257
    public boolean isVisible() {
258
        return true;
259
    }
260

    
261
//    private void cleanHighligthed() {
262
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
263
//        swingManager.getDefaultServices().cleanHighligthed();
264
//    }
265
//
266

    
267
    private void showAddToWorkspaceDialog() {
268
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
269

    
270
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
271
                "AddToWorkingCopy",
272
                swingManager.createAddToWorkspacePanel(),
273
                "_VCS_Add_to_workingcopy",
274
                "_VCS_Add_to_workingcopy",
275
                "_VCS_Add_to_workingcopy",
276
                () -> {
277
                    I18nManager i18n = ToolsLocator.getI18nManager();
278
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
279
                    VCSGisJAddToWorkspace addToWorkspacePanel = (VCSGisJAddToWorkspace) this.dialogsHelper.getDialog("AddToWorkingCopy").getPanel();
280
                    int r = addToWorkspacePanel.add();
281
                    if (r != 0) {
282
                        dialogsManager.messageDialog(
283
                                addToWorkspacePanel.getLastErrorMessage(),
284
                                i18n.getTranslation("_VCS_Add_to_workingcopy"),
285
                                JOptionPane.WARNING_MESSAGE
286
                        );
287
                    }
288
                }
289
        );
290
        Dimension screensize = ApplicationLocator.getApplicationManager().getUIManager().getInternalSize();
291
        Dimension panelsize = dialog.getPanel().asJComponent().getPreferredSize();
292
        ToolsSwingUtils.ensureHeightWitdh(
293
                dialog.getPanel().asJComponent(), 
294
                Math.max(3*(screensize.height/4), panelsize.height),
295
                Math.max(2*(screensize.width/4), panelsize.width), 
296
                7*(screensize.height/8), 
297
                3*(screensize.width/4)
298
        );                    
299
        dialog.show(
300
                Collections.singletonMap("align", GridBagConstraints.CENTER)
301
        );
302
    }
303

    
304
    private void showImportHistoryDialog() {
305
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
306

    
307
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
308
                "ImportHistory",
309
                swingManager.createImportHistoryPanel(),
310
                "_VCS_Import_history",
311
                "_VCS_Import_history",
312
                "_VCS_Import_history",
313
                () -> {
314
                    I18nManager i18n = ToolsLocator.getI18nManager();
315
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
316
                    VCSGisJImportHistory importHistoryPanel = (VCSGisJImportHistory) this.dialogsHelper.getDialog("ImportHistory").getPanel();
317
                    int r = importHistoryPanel.importHistory();
318
                    if (r != 0) {
319
//                        FeatureStore featureStore = importHistoryPanel.getFeatureStore();
320
//                        String targetName = importHistoryPanel.getTabletName();
321
                        VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
322
                        String errmsg = workspace.getErrorMessage(r);
323
                        if( errmsg==null ) {
324
                            errmsg = "";
325
                        }
326
                        dialogsManager.messageDialog(
327
                                i18n.getTranslation("_Cant_import_history")
328
                                    + "\n" 
329
                                    + errmsg
330
                                    + "\n" 
331
                                    + i18n.getTranslation("_see_error_log_for_more_information")
332
                                    + "\n" 
333
                                    + "("+ Objects.toString(importHistoryPanel.getLastLogFile()) + ")"
334
                                    ,
335
                                i18n.getTranslation("_VCS_Import_history"),
336
                                JOptionPane.WARNING_MESSAGE
337
                        );
338
                    }
339
                }
340
        );
341
        dialog.show(
342
                Collections.singletonMap("align", GridBagConstraints.CENTER)
343
        );
344
    }
345

    
346
    private void showInitWorkspaceDialog() {
347
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
348

    
349
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
350
                "InitializeWorkingCopy",
351
                swingManager.createInitWorkspacePanel(),
352
                "_VCS_Initialize_workingcopy",
353
                "_VCS_Initialize_workingcopy",
354
                "_VCS_Initialize_workingcopy",
355
                () -> {
356
                    I18nManager i18n = ToolsLocator.getI18nManager();
357
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
358
                    VCSGisJInitWorkspace panelInitWorkspace = (VCSGisJInitWorkspace) this.dialogsHelper.getDialog("InitializeWorkingCopy").getPanel();
359
                    int r = panelInitWorkspace.initializeWorkspace();
360
                    if (r != 0) {
361
                        dialogsManager.messageDialog(
362
                                i18n.getTranslation(
363
                                        "_Cant_initialize_workingcopy_{0}",
364
                                        new String[]{panelInitWorkspace.getWorkspaceName()}
365
                                ),
366
                                i18n.getTranslation("_VCS_Initialize_workingcopy"),
367
                                JOptionPane.WARNING_MESSAGE
368
                        );
369
                    }
370
                }
371
        );
372
        dialog.setAutoclose(true);
373
        dialog.show(
374
                Collections.singletonMap("align", GridBagConstraints.CENTER)
375
        );
376
    }
377

    
378
    private void showInitializaRepositoryDialog() {
379
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
380

    
381
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
382
                "InitializeRepository",
383
                swingManager.createInitRepositoryPanel(),
384
                "_VCS_Initialize_repository",
385
                "_VCS_Initialize_repository",
386
                "_VCS_Initialize_repository",
387
                () -> {
388
                    I18nManager i18n = ToolsLocator.getI18nManager();
389
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
390
                    VCSGisJInitServer panel = (VCSGisJInitServer) this.dialogsHelper.getDialog("InitializeRepository").getPanel();
391
                    int r = panel.initialize();
392
                    if (r != 0) {
393
                        dialogsManager.messageDialog(
394
                                i18n.getTranslation(
395
                                        "_Cant_initialize_server_{0}",
396
                                        new String[]{panel.getConnectionLabel()}
397
                                ),
398
                                i18n.getTranslation("_VCS_Initialize_repository"),
399
                                JOptionPane.WARNING_MESSAGE
400
                        );
401
                    }
402
                }
403
        );
404
        dialog.setAutoclose(true);
405
        dialog.show(
406
                Collections.singletonMap("align", GridBagConstraints.CENTER)
407
        );
408
    }
409

    
410
    private void showCheckoutDialog(VCSGisWorkspace workspace, List<String> tableNames,Boolean overwrite) {
411
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
412

    
413
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
414
                "Checkout",
415
                swingManager.createCheckoutPanel(workspace,tableNames, overwrite),
416
                "_VCS_Checkout",
417
                "_VCS_Checkout",
418
                "_VCS_Checkout",
419
                () -> {
420
                    I18nManager i18n = ToolsLocator.getI18nManager();
421
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
422
                    VCSGisJCheckout checkoutPanel = (VCSGisJCheckout) this.dialogsHelper.getDialog("Checkout").getPanel();
423
                    int r = checkoutPanel.checkout();
424
                    if (r != 0) {
425
                        VCSGisEntity entity = checkoutPanel.getTable();
426
                        dialogsManager.messageDialog(
427
                                i18n.getTranslation(
428
                                        "_Failed_checkout_of_{0}",
429
                                        new String[]{entity.toString()}
430
                                ),
431
                                i18n.getTranslation("_VCS_Checkout"),
432
                                JOptionPane.WARNING_MESSAGE
433
                        );
434
                    }
435
                }
436
        );
437
        Dimension screensize = ApplicationLocator.getApplicationManager().getUIManager().getInternalSize();
438
        Dimension panelsize = dialog.getPanel().asJComponent().getPreferredSize();
439
        ToolsSwingUtils.ensureHeightWitdh(
440
                dialog.getPanel().asJComponent(), 
441
                Math.max(3*(screensize.height/4), panelsize.height),
442
                Math.max(2*(screensize.width/4), panelsize.width), 
443
                7*(screensize.height/8), 
444
                3*(screensize.width/4)
445
        );                    
446
        dialog.show(
447
                Collections.singletonMap("align", GridBagConstraints.CENTER)
448
        );
449
    }
450

    
451
    private void showExportDialog() {
452
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
453

    
454
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
455
                "Export",
456
                swingManager.createExportPanel(),
457
                "_VCS_Export",
458
                "_Export_to_a_local_table_a_table_of_the_repository",
459
                "_VCS_Export",
460
                () -> {
461
                    I18nManager i18n = ToolsLocator.getI18nManager();
462
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
463
                    VCSGisJExport exportPanel = (VCSGisJExport) this.dialogsHelper.getDialog("Export").getPanel();
464
                    int r = exportPanel.export();
465
                    if (r != 0) {
466
                        VCSGisEntity entity = exportPanel.getTable();
467
                        dialogsManager.messageDialog(
468
                                i18n.getTranslation(
469
                                        "_Failed_export_of_{0}",
470
                                        new String[]{entity.toString()}
471
                                ),
472
                                i18n.getTranslation("_VCSGis_Export"),
473
                                JOptionPane.WARNING_MESSAGE
474
                        );
475
                    }
476
                }
477
        );
478
        dialog.show();
479
    }
480

    
481
    private void showChangesDialog(VCSGisWorkspace workspace, List<String> tableNames, Timestamp efectivedate, String comment) {
482
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
483

    
484
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
485
                "Changes",
486
                swingManager.createChangesPanel(workspace,tableNames, efectivedate, comment),
487
                "_VCS_Changes"
488
        );
489
        Dimension screensize = ApplicationLocator.getApplicationManager().getUIManager().getInternalSize();
490
        Dimension panelsize = dialog.getPanel().asJComponent().getPreferredSize();
491
        ToolsSwingUtils.ensureHeightWitdh(
492
                dialog.getPanel().asJComponent(), 
493
                Math.max(3*(screensize.height/4), panelsize.height),
494
                Math.max(2*(screensize.width/4), panelsize.width), 
495
                7*(screensize.height/8), 
496
                3*(screensize.width/4)
497
        );                    
498
        dialog.show(
499
                Collections.singletonMap("align", GridBagConstraints.CENTER)
500
        );
501
    }
502

    
503
    private void showHistory() {
504
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
505

    
506
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
507
                "Revisions",
508
                swingManager.createRevisionsPanel(),
509
                "_VCS_Revisions"
510
        );
511
        dialog.show();
512
    }
513

    
514
    private void showRegistrationWorkspaceDialog() {
515
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
516

    
517
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
518
                "RegisterWorkingCopies",
519
                swingManager.createRegisterWorkspacePanel(),
520
                "_VCS_Registration_workingcopies"
521
        );
522
        dialog.show();
523
    }
524

    
525

    
526
    private void showRegistrationOfEditingStoresDialog() {
527
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
528

    
529
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
530
                "RegistrationOfEditingStores",
531
                swingManager.createRegistrationOfEditingStoresPanel(),
532
                "_VCS_Registration_of_editing_stores"
533
        );
534
        dialog.show();
535
    }
536

    
537
    private void showServerEntitiesDialog() {
538
        I18nManager i18nManager = ToolsLocator.getI18nManager();
539
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
540
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
541

    
542
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
543
        winManager.showWindow(
544
                panel.asJComponent(),
545
                i18nManager.getTranslation("_VCS_Server_entities"),
546
                WindowManager.MODE.WINDOW
547
        );
548
    }
549

    
550
    private void showServerHooksDialog() {
551
        I18nManager i18nManager = ToolsLocator.getI18nManager();
552
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
553
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
554

    
555
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
556
        winManager.showWindow(
557
                panel.asJComponent(),
558
                i18nManager.getTranslation("_VCS_Server_hooks"),
559
                WindowManager.MODE.WINDOW
560
        );
561
    }
562

    
563
    private void showCreateResourceTableDialog() {
564
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
565

    
566
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
567
                "CreateResourceTable",
568
                swingManager.createResourceTablePanel(),
569
                "_VCS_Create_resource_table",
570
                "_Create_resource_table_parameters",
571
                "_VCS_Create_resource_table",
572
                () -> {
573
                    I18nManager i18n = ToolsLocator.getI18nManager();
574
                    VCSGisJCreateResourceTable panel = (VCSGisJCreateResourceTable) this.dialogsHelper.getDialog("CreateResourceTable").getPanel();
575
                    panel.createResourceTable();
576
                }
577
        );
578
        dialog.setAutoclose(true);
579
        dialog.show();
580
    }
581

    
582
    private void showLogoutDialog() {
583
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
584

    
585
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
586
                "Logout",
587
                swingManager.createLogoutPanel(),
588
                "_VCS_Logout",
589
                "_Logout_the_current_user_from_a_VCSGis_working_copy",
590
                "_VCS_Logout",
591
                () -> {
592
                    I18nManager i18n = ToolsLocator.getI18nManager();
593
                    VCSGisJLogout panel = (VCSGisJLogout) this.dialogsHelper.getDialog("Logout").getPanel();
594
                    panel.logout();
595
                }
596
        );
597
        dialog.setAutoclose(true);
598
        dialog.show();
599
    }
600

    
601
    private void showCheckoutDataModelDialog(VCSGisWorkspace workspace, String model) {
602
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
603

    
604
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
605
                "ConnectDataModel",
606
                swingManager.createCheckoutDataModelPanel(workspace, model),
607
                "_VCS_Connect_to_datamodel",
608
                "_VCS_Connect_to_datamodel",
609
                "_VCS_Connect_to_datamodel",
610
                () -> {
611
                    I18nManager i18n = ToolsLocator.getI18nManager();
612
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
613
                    VCSGisJCheckoutDataModel checkoutDataModelPanel = (VCSGisJCheckoutDataModel) this.dialogsHelper.getDialog("ConnectDataModel").getPanel();
614
                    int r = checkoutDataModelPanel.connectToModel();
615
                    if ( !(r == ERR_OK || r==ERR_USER_CANCELLED) ) {
616
                        String dataModel = checkoutDataModelPanel.getDataModel();
617
                        dialogsManager.messageDialog(
618
                                i18n.getTranslation(
619
                                        "_Failed_connect_to_{0}",
620
                                        new String[]{dataModel}
621
                                ),
622
                                i18n.getTranslation("_VCS_Connect_to_datamodel"),
623
                                JOptionPane.WARNING_MESSAGE
624
                        );
625
                    }
626
                }
627
        );
628
        dialog.show(
629
                Collections.singletonMap("align", GridBagConstraints.CENTER)
630
        );
631
    }
632
   
633
    private void showDownloadWorkingcopyDialog() {
634
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
635

    
636
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("DownloadWorkingcopy",
637
                swingManager.createDownloadWorkingcopyPanel(),
638
                "_VCS_Download_workingcopy",
639
                "_VCS_Download_workingcopy",
640
                "_VCS_Download_workingcopy",
641
                () -> {
642
                    I18nManager i18n = ToolsLocator.getI18nManager();
643
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
644
                    VCSGisJDownloadWorkingcopy downloadWorkingcopyPanel = (VCSGisJDownloadWorkingcopy) this.dialogsHelper.getDialog("DownloadWorkingcopy").getPanel();
645
                    int r = downloadWorkingcopyPanel.download(false);
646
                    if (r != 0) {
647
                        dialogsManager.messageDialog(
648
                                i18n.getTranslation(
649
                                        "_Failed_dowloading_working_copy"
650
                                ),
651
                                i18n.getTranslation("_VCS_Download_working_copy"),
652
                                JOptionPane.WARNING_MESSAGE
653
                        );
654
                    }
655
                }
656
        );
657
        dialog.show(
658
                Collections.singletonMap("align", GridBagConstraints.CENTER)
659
        );
660
    }
661

    
662
    private void showPrepareWorkingcopyDialog() {
663
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
664

    
665
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("PrepareWorkingcopy",
666
                swingManager.createPrepareWorkingcopyPanel(),
667
                "_VCS_Prepare_workingcopy",
668
                "_VCS_Prepare_workingcopy",
669
                "_VCS_Prepare_workingcopy",
670
                () -> {
671
                    I18nManager i18n = ToolsLocator.getI18nManager();
672
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
673
                    VCSGisJPrepareWorkingcopy prepareWorkingcopyPanel = (VCSGisJPrepareWorkingcopy) this.dialogsHelper.getDialog("PrepareWorkingcopy").getPanel();
674
                    int r = prepareWorkingcopyPanel.prepare();
675
                    if (r != 0) {
676
                        dialogsManager.messageDialog(
677
                                i18n.getTranslation(
678
                                        "_Failed_prepare_working_copy"
679
                                ),
680
                                i18n.getTranslation("_VCS_Prepare_working_copy"),
681
                                JOptionPane.WARNING_MESSAGE
682
                        );
683
                    }
684
                }
685
        );
686
        dialog.setAutoclose(true);
687
        dialog.show(
688
                Collections.singletonMap("align", GridBagConstraints.CENTER)
689
        );
690
    }
691

    
692
    private void showBackupHistoryDialog() {
693
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
694

    
695
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("BackupHistory",
696
                swingManager.createBackupHistoryPanel(),
697
                "_VCS_Backup_history",
698
                "_VCS_Backup_history",
699
                "_VCS_Backup_history",
700
                () -> {
701
                    I18nManager i18n = ToolsLocator.getI18nManager();
702
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
703
                    VCSGisJBackupHistory backupHistoryPanel = (VCSGisJBackupHistory) this.dialogsHelper.getDialog("BackupHistory").getPanel();
704
                    int r = backupHistoryPanel.backupHistory();
705
                    if (r != 0) {
706
                        dialogsManager.messageDialog(
707
                                i18n.getTranslation(
708
                                        "_Failed_doing_backup_history"
709
                                ),
710
                                i18n.getTranslation("_VCS_Backup_history"),
711
                                JOptionPane.WARNING_MESSAGE
712
                        );
713
                    }
714
                }
715
        );
716
        dialog.show();
717
    }
718

    
719
    private void showRestoreHistoryDialog() {
720
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
721

    
722
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("RestoreHistory",
723
                swingManager.createRestoreHistoryPanel(),
724
                "_VCS_Restore_history",
725
                "_VCS_Restore_history",
726
                "_VCS_Restore_history",
727
                () -> {
728
                    I18nManager i18n = ToolsLocator.getI18nManager();
729
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
730
                    VCSGisJRestoreHistory restoreHistoryPanel = (VCSGisJRestoreHistory) this.dialogsHelper.getDialog("RestoreHistory").getPanel();
731
                    int r = restoreHistoryPanel.restoreHistory();
732
                    if (r != 0) {
733
                        dialogsManager.messageDialog(
734
                                i18n.getTranslation(
735
                                        "_Failed_restoring_history"
736
                                ),
737
                                i18n.getTranslation("_VCS_Restore_history"),
738
                                JOptionPane.WARNING_MESSAGE
739
                        );
740
                    }
741
                }
742
        );
743
        dialog.show(
744
                Collections.singletonMap("align", GridBagConstraints.CENTER)
745
        );
746
    }
747

    
748
    private void showRepositoryEntityFeatureTypeEditorImplDialog() {
749
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
750

    
751
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
752
                "RepositoryEntityFeatureTypeEditor",
753
                swingManager.createRepositoryEntityFeatureTypeEditor(),
754
                "_VCS_Repository_entity_feature_type_editor"
755
        );
756
        dialog.show();
757
    }
758

    
759
    @Override
760
    public IPreference[] getPreferencesPages() {
761
        List<IPreference> prefs = new ArrayList<>();
762
        prefs.add(new VCSGisPage());
763

    
764
        return prefs.toArray(new IPreference[prefs.size()]);
765
    }
766
}