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

History | View | Annotate | Download (37.8 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.awt.event.ActionEvent;
27
import java.awt.event.ComponentAdapter;
28
import java.awt.event.ComponentEvent;
29
import java.util.Map;
30
import javax.swing.JOptionPane;
31
import org.gvsig.andami.IconThemeHelper;
32
import org.gvsig.andami.PluginsLocator;
33
import org.gvsig.andami.plugins.Extension;
34
import org.gvsig.app.ApplicationLocator;
35
import org.gvsig.app.ApplicationManager;
36
import org.gvsig.app.extension.AddLayer;
37
import org.gvsig.app.project.documents.view.ViewDocument;
38
import org.gvsig.app.project.documents.view.gui.IView;
39
import org.gvsig.fmap.dal.feature.FeatureStore;
40
import org.gvsig.tools.ToolsLocator;
41
import org.gvsig.tools.dynobject.DynObject;
42
import org.gvsig.tools.i18n.I18nManager;
43
import org.gvsig.tools.swing.api.ToolsSwingLocator;
44
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
45
import org.gvsig.tools.swing.api.windowmanager.Dialog;
46
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
47
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
48
import org.gvsig.vcsgis.lib.VCSGisEntity;
49
import org.gvsig.vcsgis.lib.VCSGisLocator;
50
import org.gvsig.vcsgis.lib.VCSGisManager;
51
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
52
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
53
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
54
import org.gvsig.vcsgis.swing.VCSGisJChanges;
55
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
56
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
57
import org.gvsig.vcsgis.swing.VCSGisJExport;
58
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
59
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
60
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
61
import org.gvsig.vcsgis.swing.VCSGisJRegisterWorkspace;
62
import org.gvsig.vcsgis.swing.VCSGisJRevisions;
63
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
64
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
65
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
66
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
68

    
69
/**
70
 *
71
 * @author gvSIG Team
72
 */
73
public class VCSGisExtension extends Extension {
74

    
75
    private static final Logger LOGGER = LoggerFactory.getLogger(VCSGisExtension.class);
76

    
77
    private VCSGisJAddToWorkspace addToWorkspacePanel = null;
78
    private VCSGisJImportHistory importHistoryPanel = null;
79
    private VCSGisJChanges changesPanel = null;    
80
    private VCSGisJCheckout checkoutPanel = null;    
81
    private VCSGisJRevisions revisionsPanel = null;    
82
    private VCSGisJExport exportPanel = null;   
83
    private VCSGisJCreateResourceTable createResurceTable = null;
84
    
85
    private boolean addToWorkspacePanelClosed = true;
86
    private boolean importHistoryPanelClosed = true;
87
    private boolean changesPanelClosed = true;
88
    private boolean checkoutPanelClosed = true;
89
    private boolean revisionsPanelClosed = true;
90
    private boolean exportPanelClosed = true;
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
    }
103

    
104
    @Override
105
    public void postInitialize() {
106
        super.postInitialize();
107
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
108
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
109
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
110

    
111
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
112
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
113
        manager.restoreWorkspaces(workspaces);
114

    
115
        PluginsLocator.getPluginsManager().addShutdownTask("VCSGisSave", () -> {
116
            VCSGisManager manager1 = VCSGisLocator.getVCSGisManager();
117
            DynObject pluginProperties1 = getPlugin().getPluginProperties();
118
            pluginProperties1.setDynValue("workspaces", manager1.getWorkspaces());
119
        },
120
                false,
121
                100
122
        );
123
        
124
        ApplicationLocator.getManager().registerAddTableWizard("VCSGis", "VCSGis", WizardVCSGisTabular.class);
125
        AddLayer.addWizard(WizardVCSGisVectorial.class);
126
        
127
    }
128

    
129
    @Override
130
    public void execute(String actionCommand) {
131

    
132
        switch (actionCommand) {
133
            case "tools-vcsgis-showchanges":
134
                this.showChangesDialog();
135
                break;
136

    
137
            case "tools-vcsgis-init-server":
138
                showInitServerDialog();
139
                break;
140
            case "tools-vcsgis-init-workspace":
141
                showInitWorkspaceDialog();
142
                break;
143
            case "tools-vcsgis-add-to-workspace":
144
                showAddToWorkspaceDialog();
145
                break;
146
            case "tools-vcsgis-checkout":
147
                showCheckoutDialog();
148
                break;
149
            case "tools-vcsgis-export":
150
                showExportDialog();
151
                break;
152
            case "tools-vcsgis-register-workspace":
153
                showRegisterWorkspaceDialog();
154
                break;
155
            case "tools-vcsgis-show_server-entities":
156
                showServerEntitiesDialog();
157
                break;
158
            case "tools-vcsgis-show_server-hooks":
159
                showServerHooksDialog();
160
                break;
161
            case "tools-vcsgis-show-revisions":
162
                showHistory();
163
                break;
164
            case "tools-vcsgis-import-history":
165
                showImportHistoryDialog();
166
                break;
167
            case "tools-vcsgis-create-resource-table":
168
                createResourceTableDialog();
169
                break;
170
                    
171

    
172
        }
173
    }
174

    
175
    private void showAddToWorkspaceDialog() {
176
        I18nManager i18nManager = ToolsLocator.getI18nManager();
177
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
178
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
179

    
180
        if( this.addToWorkspacePanel==null ) {
181
            addToWorkspacePanel = swingManager.createAddToWorkspacePanel();
182
            this.addToWorkspacePanel.asJComponent().addComponentListener(new ComponentAdapter() {
183
                @Override
184
                public void componentHidden(ComponentEvent e) {
185
                    addToWorkspacePanelClosed=true;
186
                    if( !addToWorkspacePanel.isProcessing() ) {
187
                        addToWorkspacePanel=null;
188
                    }
189
                }
190
            });
191
        } else {
192
            if( !this.addToWorkspacePanelClosed ) {
193
                return;
194
            }
195
        }
196

    
197
        final Dialog dialogAddToWorkspace = winManager.createDialog(
198
                addToWorkspacePanel.asJComponent(),
199
                i18nManager.getTranslation("_VCS_Add_to_workspace"),
200
                i18nManager.getTranslation("_VCS_Add_to_workspace"),
201
                WindowManager_v2.BUTTONS_OK_CANCEL
202
        );
203
        dialogAddToWorkspace.setAutoclose(false);
204

    
205
        addToWorkspacePanel.setDialog(dialogAddToWorkspace);
206
        dialogAddToWorkspace.setButtonLabel(
207
                WindowManager_v2.BUTTON_OK,
208
                i18nManager.getTranslation("_VCS_Add_to_workspace")
209
        );
210
        dialogAddToWorkspace.setButtonLabel(
211
                WindowManager_v2.BUTTON_CANCEL,
212
                i18nManager.getTranslation("_Close")
213
        );
214
        dialogAddToWorkspace.addActionListener((ActionEvent e) -> {
215
            switch (dialogAddToWorkspace.getAction()) {
216
                case WindowManager_v2.BUTTON_OK:
217

    
218
                    Thread task = new Thread(() -> {
219
                        int r = addToWorkspacePanel.add();
220
                        if (r != 0) {
221
                            FeatureStore featureStore = addToWorkspacePanel.getFeatureStore();
222
                            String targetName = addToWorkspacePanel.getTabletName();
223
                            VCSGisWorkspace workspace = addToWorkspacePanel.getWorkspace();
224

    
225
                            String message = "_Cant_add_{0}_as_{1}_in_{2}";
226

    
227
                            StringBuilder compoundMessage = new StringBuilder();
228
                            String[] messageArgs = new String[]{featureStore.getName(), targetName, workspace.getLabel()};
229

    
230
                            compoundMessage.append(i18nManager.getTranslation(
231
                                    message,
232
                                    messageArgs
233
                            ));
234
                            compoundMessage.append("\n");
235
                            compoundMessage.append(workspace.getErrorMessage(r));
236
                            ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
237
                            dialogsManager.messageDialog(
238
                                    compoundMessage.toString(),
239
                                    i18nManager.getTranslation("_VCS_Add_to_workspace"),
240
                                    JOptionPane.WARNING_MESSAGE
241
                            );
242
                        }
243
                    }, "Adding_to_workspace");
244
                    task.start();
245
                    break;
246
                case WindowManager_v2.BUTTON_CANCEL:
247
//                    dialog.asJComponent().getParent().setVisible(false);
248
                    dialogAddToWorkspace.asJComponent().setVisible(false);
249
                    break;
250

    
251
            }
252
        });
253
        dialogAddToWorkspace.show(WindowManager.MODE.WINDOW);
254
    }
255

    
256
    private void showImportHistoryDialog() {
257

    
258
        I18nManager i18nManager = ToolsLocator.getI18nManager();
259
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
260
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
261

    
262
        if( this.importHistoryPanel==null ) {
263
            importHistoryPanel = swingManager.createImportHistoryPanel();
264
            
265
            this.importHistoryPanel.asJComponent().addComponentListener(new ComponentAdapter() {
266
                @Override
267
                public void componentHidden(ComponentEvent e) {
268
                    importHistoryPanelClosed=true;
269
                    if( !importHistoryPanel.isProcessing() ) {
270
                        importHistoryPanel=null;
271
                    }
272
                }
273
            });
274
        } else {
275
            if( !this.importHistoryPanelClosed ) {
276
                return;
277
            }
278
        }
279

    
280
        final Dialog dialogImportHistory = winManager.createDialog(
281
                importHistoryPanel.asJComponent(),
282
                i18nManager.getTranslation("_VCS_Import_history"), 
283
                i18nManager.getTranslation("_VCS_Import_history"), 
284
                WindowManager_v2.BUTTONS_OK_CANCEL
285
        );
286
        dialogImportHistory.setAutoclose(false);
287

    
288
        importHistoryPanel.setDialog(dialogImportHistory);
289
        dialogImportHistory.setButtonLabel(
290
                WindowManager_v2.BUTTON_OK,
291
                i18nManager.getTranslation("_VCS_Import_history") 
292
        );
293
        dialogImportHistory.setButtonLabel(
294
                WindowManager_v2.BUTTON_CANCEL,
295
                i18nManager.getTranslation("_Close")
296
        );
297
        dialogImportHistory.addActionListener((ActionEvent e) -> {
298
            switch (dialogImportHistory.getAction()) {
299
                case WindowManager_v2.BUTTON_OK:
300

    
301
                    Thread task = new Thread(() -> {
302
                        int r = importHistoryPanel.importHistory();
303
                        if (r != 0) {
304
                            FeatureStore featureStore = importHistoryPanel.getFeatureStore();
305
                            String targetName = importHistoryPanel.getTabletName();
306
                            VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
307

    
308
                            String message = "_Cant_add_{0}_as_{1}_in_{2}";
309

    
310
                            StringBuilder compoundMessage = new StringBuilder();
311
                            String[] messageArgs = new String[]{featureStore.getName(), targetName, workspace.getLabel()};
312

    
313
                            compoundMessage.append(i18nManager.getTranslation(
314
                                    message,
315
                                    messageArgs
316
                            ));
317
                            compoundMessage.append("\n");
318
                            compoundMessage.append(workspace.getErrorMessage(r));
319
                            ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
320
                            dialogsManager.messageDialog(
321
                                    compoundMessage.toString(),
322
                                    i18nManager.getTranslation("_VCS_Import_history"), 
323
                                    JOptionPane.WARNING_MESSAGE
324
                            );
325
                        }
326
                    }, "ImportHistory");
327
                    task.start();
328
                    break;
329
                case WindowManager_v2.BUTTON_CANCEL:
330
//                    dialog.asJComponent().getParent().setVisible(false);
331
                    dialogImportHistory.asJComponent().setVisible(false);
332
                    break;
333

    
334
            }
335
        });
336
        dialogImportHistory.show(WindowManager.MODE.WINDOW);
337

    
338
//        I18nManager i18nManager = ToolsLocator.getI18nManager();
339
//        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
340
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
341
//
342
//        if( this.importHistoryPanel==null ) {
343
//            Hay que  darlo de alta en el mamager del api y de la impl.
344
//            addToWorkspacePanel = swingManager.createImportHistoryPanel();
345
//            
346
//            this.importHistoryPanel.asJComponent().addComponentListener(new ComponentAdapter() {
347
//                @Override
348
//                public void componentHidden(ComponentEvent e) {
349
//                    importHistoryPanelClosed=true;
350
//                    if( !importHistoryPanel.isProcessing() ) {
351
//                        importHistoryPanel=null;
352
//                    }
353
//                }
354
//            });
355
//        } else {
356
//            if( !this.importHistoryPanelClosed ) {
357
//                return;
358
//            }
359
//        }
360
//
361
//        final Dialog dialogImportHistory = winManager.createDialog(
362
//                importHistoryPanel.asJComponent(),
363
//                i18nManager.getTranslation("_VCS_Add_to_workspace"), XXX
364
//                i18nManager.getTranslation("_VCS_Add_to_workspace"), XXX
365
//                WindowManager_v2.BUTTONS_OK_CANCEL
366
//        );
367
//        dialogImportHistory.setAutoclose(false);
368
//
369
//        importHistoryPanel.setDialog(dialogImportHistory);
370
//        dialogImportHistory.setButtonLabel(
371
//                WindowManager_v2.BUTTON_OK,
372
//                i18nManager.getTranslation("_VCS_Add_to_workspace") XXX
373
//        );
374
//        dialogImportHistory.setButtonLabel(
375
//                WindowManager_v2.BUTTON_CANCEL,
376
//                i18nManager.getTranslation("_Close")
377
//        );
378
//        dialogImportHistory.addActionListener((ActionEvent e) -> {
379
//            switch (dialogImportHistory.getAction()) {
380
//                case WindowManager_v2.BUTTON_OK:
381
//
382
//                    Thread task = new Thread(() -> {
383
//                        int r = importHistoryPanel.add();
384
//                        if (r != 0) {
385
//                            FeatureStore featureStore = importHistoryPanel.getFeatureStore();
386
//                            String targetName = importHistoryPanel.getTabletName();
387
//                            VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
388
//
389
//                            String message = "_Cant_add_{0}_as_{1}_in_{2}";
390
//
391
//                            StringBuilder compoundMessage = new StringBuilder();
392
//                            String[] messageArgs = new String[]{featureStore.getName(), targetName, workspace.getLabel()};
393
//
394
//                            compoundMessage.append(i18nManager.getTranslation(
395
//                                    message,
396
//                                    messageArgs
397
//                            ));
398
//                            compoundMessage.append("\n");
399
//                            compoundMessage.append(workspace.getErrorMessage(r));
400
//                            ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
401
//                            dialogsManager.messageDialog(
402
//                                    compoundMessage.toString(),
403
//                                    i18nManager.getTranslation("_VCS_Add_to_workspace"), XXX
404
//                                    JOptionPane.WARNING_MESSAGE
405
//                            );
406
//                        }
407
//                    }, "ImportHistory");
408
//                    task.start();
409
//                    break;
410
//                case WindowManager_v2.BUTTON_CANCEL:
411
////                    dialog.asJComponent().getParent().setVisible(false);
412
//                    dialogImportHistory.asJComponent().setVisible(false);
413
//                    break;
414
//
415
//            }
416
//        });
417
//        dialogImportHistory.show(WindowManager.MODE.WINDOW);
418

    
419
    }
420

    
421
    private void showInitWorkspaceDialog() {
422
        I18nManager i18nManager = ToolsLocator.getI18nManager();
423
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
424
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
425

    
426
        final VCSGisJInitWorkspace panelInitWorkspace = swingManager.createInitWorkspacePanel();
427
        final Dialog dialogInitWorkspace = winManager.createDialog(
428
                panelInitWorkspace.asJComponent(),
429
                i18nManager.getTranslation("_VCS_Initialize_workspace"),
430
                i18nManager.getTranslation("_VCS_Initialize_workspace"),
431
                WindowManager_v2.BUTTONS_OK_CANCEL
432
        );
433

    
434
        panelInitWorkspace.setDialog(dialogInitWorkspace);
435
        dialogInitWorkspace.setButtonLabel(
436
                WindowManager_v2.BUTTON_OK,
437
                i18nManager.getTranslation("_VCS_Initialize_workspace")
438
        );
439
        dialogInitWorkspace.addActionListener((ActionEvent e) -> {
440
            switch (dialogInitWorkspace.getAction()) {
441
                case WindowManager_v2.BUTTON_OK:
442
                    int r = panelInitWorkspace.initializeWorkspace();
443
                    if (r != 0) {
444
                        String message = "_Cant_initialize_workspace_{0}";
445

    
446
                        StringBuilder compoundMessage = new StringBuilder();
447
                        String[] messageArgs = new String[]{panelInitWorkspace.getWorkspaceName()};
448

    
449
                        compoundMessage.append(i18nManager.getTranslation(
450
                                message,
451
                                messageArgs
452
                        ));
453

    
454
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
455
                        dialogsManager.messageDialog(
456
                                compoundMessage.toString(),
457
                                i18nManager.getTranslation("_VCS_Initialize_workspace"),
458
                                JOptionPane.WARNING_MESSAGE
459
                        );
460
                    }
461

    
462
                    break;
463

    
464
            }
465
        });
466
        dialogInitWorkspace.show(WindowManager.MODE.WINDOW);
467
    }
468

    
469
    private void showInitServerDialog() {
470
        I18nManager i18nManager = ToolsLocator.getI18nManager();
471
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
472
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
473

    
474
        final VCSGisJInitServer panel = swingManager.createInitServerPanel();
475
        final Dialog dialog = winManager.createDialog(
476
                panel.asJComponent(),
477
                i18nManager.getTranslation("_VCS_Initialize_repository"),
478
                i18nManager.getTranslation("_VCS_Initialize_repository"),
479
                WindowManager_v2.BUTTONS_OK_CANCEL
480
        );
481

    
482
        panel.setDialog(dialog);
483
        dialog.setButtonLabel(
484
                WindowManager_v2.BUTTON_OK,
485
                i18nManager.getTranslation("_VCS_Initialize_repository")
486
        );
487
        dialog.addActionListener((ActionEvent e) -> {
488
            switch (dialog.getAction()) {
489
                case WindowManager_v2.BUTTON_OK:
490
                    int r = panel.initialize();
491
                    if (r != 0) {
492
                        String message = "_Cant_initialize_server_{0}";
493

    
494
                        StringBuilder compoundMessage = new StringBuilder();
495
                        String[] messageArgs = new String[]{
496
                            panel.getConnectionLabel()};
497

    
498
                        ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
499
                        dialogsManager.messageDialog(
500
                                i18nManager.getTranslation(
501
                                        message,
502
                                        messageArgs
503
                                ),
504
                                i18nManager.getTranslation("_VCS_Initialize_repository"),
505
                                JOptionPane.WARNING_MESSAGE);
506
                    }
507

    
508
                    break;
509
            }
510
        });
511
        dialog.show(WindowManager.MODE.WINDOW);
512
    }
513

    
514
//    private void showAddLayerDialog() {
515
//        I18nManager i18nManager = ToolsLocator.getI18nManager();
516
//        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
517
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
518
//
519
//        ApplicationManager application = ApplicationLocator.getManager();
520
//        LabeledValue labeledView = null;
521
//        JComponent activeComponent = application.getActiveComponent(ViewDocument.class);
522
//        if (activeComponent != null && activeComponent instanceof IView) {
523
//            IView view = (IView) activeComponent;
524
//            ViewDocument viewDocument = ((IView) activeComponent).getViewDocument();
525
//            labeledView = new LabeledValueImpl(viewDocument.getName(), viewDocument);
526
//        }
527
//
528
//        if (labeledView == null || labeledView.getValue() == null) {
529
//            return;
530
//        }
531
//
532
//        if (this.addLayerPanel == null || this.addLayerPanel.getView().getValue() != labeledView.getValue()) {
533
//            addLayerPanel = swingManager.createAddLayerFormPanel(labeledView);
534
//            this.addLayerPanel.asJComponent().addComponentListener(new ComponentAdapter() {
535
//                @Override
536
//                public void componentHidden(ComponentEvent e) {
537
//                    addLayerPanelClosed = true;
538
//                    if(!addLayerPanel.isProcessing()){
539
//                        addLayerPanel = null;
540
//                    }
541
//                }
542
//            });
543
//            
544
//        } else {
545
//            if (!this.addLayerPanelClosed) {
546
//                return;
547
//            }
548
//        }
549
//        final Dialog dialog = winManager.createDialog(
550
//                addLayerPanel.asJComponent(),
551
//                i18nManager.getTranslation("_VCS_Add_layer"),
552
//                i18nManager.getTranslation("_VCS_Add_layer"),
553
//                WindowManager_v2.BUTTONS_OK_CANCEL
554
//        );
555
//        dialog.setAutoclose(false);
556
//
557
//        addLayerPanel.setDialog(dialog);
558
//        dialog.setButtonLabel(
559
//                WindowManager_v2.BUTTON_OK,
560
//                i18nManager.getTranslation("_VCS_Add_layer")
561
//        );
562
//        dialog.setButtonLabel(
563
//                WindowManager_v2.BUTTON_CANCEL,
564
//                i18nManager.getTranslation("_Close")
565
//        );
566
//
567
//        dialog.addActionListener((ActionEvent e) -> {
568
//            switch (dialog.getAction()) {
569
//                case WindowManager_v2.BUTTON_OK:
570
//                    addLayerPanel.addLayer();
571
//                    break;
572
//                case WindowManager_v2.BUTTON_CANCEL:
573
//                    dialog.asJComponent().setVisible(false);
574
//                    break;
575
//
576
//            }
577
//        });
578
//        dialog.show(WindowManager.MODE.WINDOW);
579
//    }
580

    
581
    private void showCheckoutDialog() {
582
        I18nManager i18nManager = ToolsLocator.getI18nManager();
583
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
584
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
585

    
586
        if( this.checkoutPanel==null ) {
587
            this.checkoutPanel = swingManager.createCheckoutPanel();
588
            this.checkoutPanel.asJComponent().addComponentListener(new ComponentAdapter() {
589
                @Override
590
                public void componentHidden(ComponentEvent e) {
591
                    checkoutPanelClosed=true;
592
                    if(!checkoutPanel.isProcessing()){
593
//                        checkoutPanel.asJComponent().removeComponentListener(this);
594
                        checkoutPanel = null;
595
                    }
596
                }
597
            });
598

    
599
        } else {
600
            if( !this.checkoutPanelClosed ) {
601
                return;
602
            }
603
        }
604
        final Dialog dialog = winManager.createDialog(
605
                checkoutPanel.asJComponent(),
606
                i18nManager.getTranslation("_VCS_Checkout"),
607
                i18nManager.getTranslation("_VCS_Checkout"),
608
                WindowManager_v2.BUTTONS_OK_CANCEL
609
        );
610
        dialog.setAutoclose(false);
611

    
612
        checkoutPanel.setDialog(dialog);
613
        dialog.setButtonLabel(
614
                WindowManager_v2.BUTTON_OK,
615
                i18nManager.getTranslation("_VCS_Checkout")
616
        );
617
        dialog.setButtonLabel(
618
                WindowManager_v2.BUTTON_CANCEL,
619
                i18nManager.getTranslation("_Close")
620
        );
621
        if(checkoutPanel.isProcessing()){
622
            dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK,false);
623
        }
624
        dialog.addActionListener((ActionEvent e) -> {
625
            switch (dialog.getAction()) {
626
                case WindowManager_v2.BUTTON_OK:
627
                    Thread task = new Thread(() -> {
628

    
629
                        int r = checkoutPanel.checkout();
630
                        if (r != 0) {
631
                            String message = "_Failed_checkout_of_{0}";
632

    
633
                            VCSGisEntity entity = checkoutPanel.getTable();
634
                            String[] messageArgs = new String[]{
635
                                entity.toString()
636
                            };
637

    
638
                            ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
639
                            dialogsManager.messageDialog(
640
                                    i18nManager.getTranslation(
641
                                            message,
642
                                            messageArgs
643
                                    ), 
644
                                    i18nManager.getTranslation("_Checkout"), 
645
                                    JOptionPane.WARNING_MESSAGE);
646
                        }
647
                    }, "Checkout");
648
                    task.start();
649
                    break;
650
                case WindowManager_v2.BUTTON_CANCEL:
651
//                    dialog.asJComponent().getParent().setVisible(false);
652
                    dialog.asJComponent().setVisible(false);
653
                    break;
654
            }
655
        });
656
        dialog.show(WindowManager.MODE.WINDOW);
657
    }
658

    
659
    private void showExportDialog() {
660
        I18nManager i18nManager = ToolsLocator.getI18nManager();
661
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
662
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
663

    
664
        if( this.exportPanel==null ) {
665
            this.exportPanel = swingManager.createExportPanel();
666
            this.exportPanel.asJComponent().addComponentListener(new ComponentAdapter() {
667
                @Override
668
                public void componentHidden(ComponentEvent e) {
669
                    exportPanelClosed=true;
670
                    if(!exportPanel.isProcessing()){
671
                        exportPanel = null;
672
                    }
673
                }
674
            });
675

    
676
        } else {
677
            if( !this.exportPanelClosed ) {
678
                return;
679
            }
680
        }
681
        final Dialog dialog = winManager.createDialog(
682
                exportPanel.asJComponent(),
683
                i18nManager.getTranslation("_VCS_Export"),
684
                i18nManager.getTranslation("_Export_to_a_local_table_a_table_of_the_repository"),
685
                WindowManager_v2.BUTTONS_OK_CANCEL
686
        );
687
        dialog.setAutoclose(false);
688

    
689
        exportPanel.setDialog(dialog);
690
        dialog.setButtonLabel(
691
                WindowManager_v2.BUTTON_OK,
692
                i18nManager.getTranslation("_VCS_Export")
693
        );
694
        dialog.setButtonLabel(
695
                WindowManager_v2.BUTTON_CANCEL,
696
                i18nManager.getTranslation("_Close")
697
        );
698
        if(exportPanel.isProcessing()){
699
            dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK,false);
700
        }
701
        dialog.addActionListener((ActionEvent e) -> {
702
            switch (dialog.getAction()) {
703
                case WindowManager_v2.BUTTON_OK:
704
                    Thread task = new Thread(() -> {
705

    
706
                        int r = exportPanel.export();
707
                        if (r != 0) {
708
                            String message = "_Failed_export_of_{0}";
709

    
710
                            VCSGisEntity entity = checkoutPanel.getTable();
711
                            String[] messageArgs = new String[]{
712
                                entity.toString()
713
                            };
714

    
715
                            ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
716
                            dialogsManager.messageDialog(
717
                                    i18nManager.getTranslation(
718
                                            message,
719
                                            messageArgs
720
                                    ), 
721
                                    i18nManager.getTranslation("_VCS_Export"),
722
                                    JOptionPane.WARNING_MESSAGE);
723
                        }
724
                    }, "VCSGisExport");
725
                    task.start();
726
                    break;
727
                case WindowManager_v2.BUTTON_CANCEL:
728
                    dialog.asJComponent().setVisible(false);
729
                    break;
730
            }
731
        });
732
        dialog.show(WindowManager.MODE.WINDOW);
733
    }
734

    
735
    private void showChangesDialog() {
736
        I18nManager i18nManager = ToolsLocator.getI18nManager();
737
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
738
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
739

    
740
        if( this.changesPanel==null ) {
741
            changesPanel = swingManager.createChangesPanel();
742
            this.changesPanel.asJComponent().addComponentListener(new ComponentAdapter() {
743
                @Override
744
                public void componentHidden(ComponentEvent e) {
745
                    changesPanelClosed=true;
746
                    cleanHighligthed();
747
                    if( !changesPanel.isProcessing() ) {
748
                        changesPanel = null;
749
                    }
750
                }
751
            });
752
        } else {
753
            if( !this.changesPanelClosed ) {
754
                return;
755
            }
756
        }
757
        
758
        winManager.showWindow(
759
                changesPanel.asJComponent(),
760
                i18nManager.getTranslation("_VCS_Changes"),
761
                WindowManager.MODE.WINDOW
762
        );
763
    }
764

    
765
    private void showHistory() {
766
        I18nManager i18nManager = ToolsLocator.getI18nManager();
767
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
768
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
769

    
770
        if( this.revisionsPanel==null ) {
771
            revisionsPanel = swingManager.createRevisionsPanel();
772
            this.revisionsPanel.asJComponent().addComponentListener(new ComponentAdapter() {
773
                @Override
774
                public void componentHidden(ComponentEvent e) {
775
                    revisionsPanelClosed=true;
776
                    if( !revisionsPanel.isProcessing() ) {
777
                        revisionsPanel = null;
778
                    }
779
                }
780
            });
781
        } else {
782
            if( !this.revisionsPanelClosed ) {
783
                return;
784
            }
785
        }
786
        
787
        winManager.showWindow(
788
                revisionsPanel.asJComponent(),
789
                i18nManager.getTranslation("_VCS_Revisions"),
790
                WindowManager.MODE.WINDOW
791
        );
792
    }
793

    
794
    private void showRegisterWorkspaceDialog() {
795
        I18nManager i18nManager = ToolsLocator.getI18nManager();
796
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
797
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
798

    
799
        final VCSGisJRegisterWorkspace panelInitWorkspace = swingManager.createRegisterWorkspacePanel();
800
        final Dialog dialogRegisterWorkspace = winManager.createDialog(
801
                panelInitWorkspace.asJComponent(),
802
                i18nManager.getTranslation("_VCS_Register_workspace"),
803
                i18nManager.getTranslation("_VCS_Register_workspace"),
804
                WindowManager_v2.BUTTONS_OK
805
        );
806

    
807
        panelInitWorkspace.setDialog(dialogRegisterWorkspace);
808
        dialogRegisterWorkspace.setButtonLabel(
809
                WindowManager_v2.BUTTON_OK,
810
                i18nManager.getTranslation("_Close")
811
        );
812

    
813
        dialogRegisterWorkspace.show(WindowManager.MODE.WINDOW);
814
    }
815

    
816
    private void showServerEntitiesDialog() {
817
        I18nManager i18nManager = ToolsLocator.getI18nManager();
818
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
819
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
820

    
821
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
822
        winManager.showWindow(
823
                panel.asJComponent(),
824
                i18nManager.getTranslation("_VCS_Server_entities"),
825
                WindowManager.MODE.WINDOW
826
        );
827
    }
828

    
829
    private void showServerHooksDialog() {
830
        I18nManager i18nManager = ToolsLocator.getI18nManager();
831
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
832
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
833

    
834
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
835
        winManager.showWindow(
836
                panel.asJComponent(),
837
                i18nManager.getTranslation("_VCS_Server_hooks"),
838
                WindowManager.MODE.WINDOW
839
        );
840
    }
841
    
842
    private void createResourceTableDialog() {
843
        I18nManager i18nManager = ToolsLocator.getI18nManager();
844
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
845
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
846

    
847
        final VCSGisJCreateResourceTable panel = swingManager.createResourceTablePanel();
848
        final Dialog dialog = winManager.createDialog(
849
                panel.asJComponent(),
850
                i18nManager.getTranslation("_VCS_Create_resource_table"),
851
                i18nManager.getTranslation("_Create_resource_table_parameters"),
852
                WindowManager_v2.BUTTONS_OK_CANCEL
853
        );
854

    
855
        panel.setDialog(dialog);
856
        
857
        dialog.setButtonLabel(
858
                WindowManager_v2.BUTTON_OK,
859
                i18nManager.getTranslation("_Accept")
860
        );
861
        dialog.setButtonLabel(
862
                WindowManager_v2.BUTTON_CANCEL,
863
                i18nManager.getTranslation("_Close")
864
        );
865
        
866
        dialog.addActionListener((ActionEvent e) -> {
867
            switch (dialog.getAction()) {
868
                case WindowManager_v2.BUTTON_OK:
869
                    panel.createResourceTable();
870
                }
871
        });
872
        
873
        dialog.show(WindowManager.MODE.WINDOW);
874
    }
875

    
876

    
877
    @Override
878
    public boolean isEnabled() {
879
        return true;
880
    }
881

    
882
    @Override
883
    public boolean isVisible() {
884
        return true;
885
    }
886

    
887
    private IView getActiveView() {
888
        ApplicationManager application = ApplicationLocator.getManager();
889
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
890
        return view;
891
    }
892
    
893
    private void cleanHighligthed() {
894
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
895
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
896
        swingManager.getDefaultServices().cleanHighligthed();
897
    }
898

    
899

    
900
}