Revision 6376

View differences:

org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.61/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/buildNumber.properties
1
#Fri Apr 22 02:40:44 CEST 2022
2
buildNumber=69
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.61/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2013 gvSIG
2
  Association. This program is free software; you can redistribute it and/or modify
3
  it under the terms of the GNU General Public License as published by the Free Software
4
  Foundation; either version 3 of the License, or (at your option) any later version.
5
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
6
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
7
  PURPOSE. See the GNU General Public License for more details. You should have received
8
  a copy of the GNU General Public License along with this program; if not, write to
9
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
10
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
11
  or visit our website www.gvsig.com. -->
12
<assembly>
13
  <id>gvsig-plugin-package</id>
14
  <formats>
15
    <format>zip</format>
16
  </formats>
17
  <baseDirectory>${project.artifactId}</baseDirectory>
18
  <includeBaseDirectory>true</includeBaseDirectory>
19
  <files>
20
    <file>
21
      <source>target/${project.artifactId}-${project.version}.jar</source>
22
      <outputDirectory>lib</outputDirectory>
23
    </file>
24
    <file>
25
      <source>target/package.info</source>
26
    </file>
27
  </files>
28

  
29
  <fileSets>
30
    <fileSet>
31
      <directory>src/main/resources-plugin</directory>
32
      <outputDirectory>.</outputDirectory>
33
    </fileSet>
34
  </fileSets>
35

  
36

  
37
  <dependencySets>
38
    <dependencySet>
39
      <useProjectArtifact>false</useProjectArtifact>
40
      <useTransitiveDependencies>false</useTransitiveDependencies>
41
      <outputDirectory>lib</outputDirectory>
42
      <includes>
43
        <include>org.gvsig:org.gvsig.vcsgis.lib.api</include>
44
        <include>org.gvsig:org.gvsig.vcsgis.lib.impl</include>
45
        <include>org.gvsig:org.gvsig.vcsgis.swing.api</include>
46
        <include>org.gvsig:org.gvsig.vcsgis.swing.impl</include>
47
        <include>javax.servlet:javax.servlet-api</include>
48
        
49
      </includes>
50
    </dependencySet>
51
  </dependencySets>
52

  
53
</assembly>
54

  
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.61/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/java/org/gvsig/vcsgis/app/VCSGisExtension.java
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.util.EventListener;
25
import java.util.Map;
26
import java.util.Objects;
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.ApplicationManager;
33
import org.gvsig.app.extension.AddLayer;
34
import org.gvsig.app.project.ProjectManager.ProjectEvent;
35
import static org.gvsig.app.project.ProjectNotification.AFTER_LOAD_FROM_FILE;
36
import static org.gvsig.app.project.ProjectNotification.BEFORE_SAVE_TO_FILE;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.dynobject.DynObject;
39
import org.gvsig.tools.i18n.I18nManager;
40
import org.gvsig.tools.swing.api.ToolsSwingLocator;
41
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
42
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
43
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
44
import org.gvsig.tools.util.BaseListenerSupport;
45
import org.gvsig.vcsgis.app.VCSGisDialogsHelper.VCSGisDialogInfo;
46
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisTabular;
47
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisVectorial;
48
import org.gvsig.vcsgis.lib.VCSGisEntity;
49
import org.gvsig.vcsgis.lib.VCSGisLocator;
50
import org.gvsig.vcsgis.lib.VCSGisManager;
51
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_OK;
52
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_USER_CANCELLED;
53
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
54
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
55
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
56
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
57
import org.gvsig.vcsgis.swing.VCSGisJCheckoutDataModel;
58
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
59
import org.gvsig.vcsgis.swing.VCSGisJDownloadWorkingcopy;
60
import org.gvsig.vcsgis.swing.VCSGisJExport;
61
import org.gvsig.vcsgis.swing.VCSGisJBackupHistory;
62
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
63
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
64
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
65
import org.gvsig.vcsgis.swing.VCSGisJLogout;
66
import org.gvsig.vcsgis.swing.VCSGisJPrepareWorkingcopy;
67
import org.gvsig.vcsgis.swing.VCSGisJRestoreHistory;
68
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
69
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
70
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
71

  
72
/**
73
 *
74
 * @author gvSIG Team
75
 */
76
public class VCSGisExtension extends Extension {
77

  
78
    private VCSGisDialogsHelper dialogsHelper;
79

  
80
    @Override
81
    public void initialize() {
82
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-server", this);
83
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-workspace", this);
84
        IconThemeHelper.registerIcon("action", "tools-vcsgis-add-to-workspace", this);
85
        IconThemeHelper.registerIcon("action", "tools-vcsgis-export", this);
86
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout", this);
87
        IconThemeHelper.registerIcon("action", "tools-vcsgis-showchanges", this);
88
        IconThemeHelper.registerIcon("action", "tools-vcsgis-register-workspace", this);
89
        IconThemeHelper.registerIcon("action", "tools-vcsgis-show-revisions", this);
90
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout-datamodel", this);
91
        
92
        this.dialogsHelper = new VCSGisDialogsHelper();
93
//        ToolsLocator.getDisposableManager().setStackLimit(200);
94
    }
95

  
96
    @Override
97
    public void postInitialize() {
98
        super.postInitialize();
99
        ApplicationManager application = ApplicationLocator.getApplicationManager();
100
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
101
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
102
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
103

  
104
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
105
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
106
        manager.restoreWorkspaces(workspaces);
107

  
108
        PluginsLocator.getPluginsManager().addShutdownTask(
109
                "VCSGisSave", 
110
                () -> {
111
                    VCSGisManager manager1 = VCSGisLocator.getVCSGisManager();
112
                    DynObject pluginProperties1 = getPlugin().getPluginProperties();
113
                    pluginProperties1.setDynValue("workspaces", manager1.getWorkspaces());
114
                },
115
                false,
116
                100
117
        );
118

  
119
        ApplicationLocator.getManager().registerAddTableWizard(
120
                "VCSGis", 
121
                "VCSGis", 
122
                WizardVCSGisTabular.class
123
        );
124
        AddLayer.addWizard(WizardVCSGisVectorial.class);
125
        
126
        application.getProjectManager().addProjectListener(new BaseListenerSupport.NotificationListener() {
127
            @Override
128
            public void notify(EventListener e) {
129
                if( e instanceof ProjectEvent ) {
130
                    ProjectEvent pe = (ProjectEvent)e;
131
                    switch(pe.getId()) {
132
                        case AFTER_LOAD_FROM_FILE:
133
                            VCSGisSwingServicesImpl services = (VCSGisSwingServicesImpl) VCSGisSwingLocator.getVCSGisSwingManager().getDefaultServices();
134
                            services.projectLoaded(pe.getProject());
135
                            break;
136
                        case BEFORE_SAVE_TO_FILE:
137
                            break;
138
                    }
139
                }
140
            }
141
        });
142

  
143
    }
144

  
145
    @Override
146
    public void execute(String actionCommand) {
147

  
148
        switch (actionCommand) {
149
            case "tools-vcsgis-showchanges":
150
                this.showChangesDialog();
151
                break;
152

  
153
            case "tools-vcsgis-init-server":
154
                showInitializaRepositoryDialog();
155
                break;
156
            case "tools-vcsgis-init-workspace":
157
                showInitWorkspaceDialog();
158
                break;
159
            case "tools-vcsgis-add-to-workspace":
160
                showAddToWorkspaceDialog();
161
                break;
162
            case "tools-vcsgis-checkout":
163
                showCheckoutDialog();
164
                break;
165
            case "tools-vcsgis-export":
166
                showExportDialog();
167
                break;
168
            case "tools-vcsgis-register-workspace":
169
                showRegistrationWorkspaceDialog();
170
                break;
171
            case "tools-vcsgis-show_server-entities":
172
                showServerEntitiesDialog();
173
                break;
174
            case "tools-vcsgis-show_server-hooks":
175
                showServerHooksDialog();
176
                break;
177
            case "tools-vcsgis-show-revisions":
178
                showHistory();
179
                break;
180
            case "tools-vcsgis-import-history":
181
                showImportHistoryDialog();
182
                break;
183
            case "tools-vcsgis-create-resource-table":
184
                showCreateResourceTableDialog();
185
                break;
186
            case "tools-vcsgis-logout":
187
                showLogoutDialog();
188
                break;
189
            case "tools-vcsgis-checkout-datamodel":
190
                showCheckoutDataModelDialog();
191
                break;
192
            case "tools-vcsgis-download-workingcopy":
193
                showDownloadWorkingcopyDialog();
194
                break;
195
            case "tools-vcsgis-prepare-workingcopy":
196
                showPrepareWorkingcopyDialog();
197
                break;
198
            case "tools-vcsgis-backup-history":
199
                showBackupHistoryDialog();
200
                break;
201
            case "tools-vcsgis-restore-history":
202
                showRestoreHistoryDialog();
203
                break;
204
            case "tools-vcsgis-registrationeditingstores":
205
                showRegistrationOfEditingStoresDialog();
206
                break;
207
        }
208
    }
209

  
210
    @Override
211
    public boolean isEnabled() {
212
        return true;
213
    }
214

  
215
    @Override
216
    public boolean isVisible() {
217
        return true;
218
    }
219

  
220
//    private void cleanHighligthed() {
221
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
222
//        swingManager.getDefaultServices().cleanHighligthed();
223
//    }
224
//
225

  
226
    private void showAddToWorkspaceDialog() {
227
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
228

  
229
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
230
                "AddToWorkingCopy",
231
                swingManager.createAddToWorkspacePanel(),
232
                "_VCS_Add_to_workingcopy",
233
                "_VCS_Add_to_workingcopy",
234
                "_VCS_Add_to_workingcopy",
235
                () -> {
236
                    I18nManager i18n = ToolsLocator.getI18nManager();
237
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
238
                    VCSGisJAddToWorkspace addToWorkspacePanel = (VCSGisJAddToWorkspace) this.dialogsHelper.getDialog("AddToWorkingCopy").getPanel();
239
                    int r = addToWorkspacePanel.add();
240
                    if (r != 0) {
241
                        dialogsManager.messageDialog(
242
                                addToWorkspacePanel.getLastErrorMessage(),
243
                                i18n.getTranslation("_VCS_Add_to_workingcopy"),
244
                                JOptionPane.WARNING_MESSAGE
245
                        );
246
                    }
247
                }
248
        );
249
        dialog.show();
250
    }
251

  
252
    private void showImportHistoryDialog() {
253
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
254

  
255
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
256
                "ImportHistory",
257
                swingManager.createImportHistoryPanel(),
258
                "_VCS_Import_history",
259
                "_VCS_Import_history",
260
                "_VCS_Import_history",
261
                () -> {
262
                    I18nManager i18n = ToolsLocator.getI18nManager();
263
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
264
                    VCSGisJImportHistory importHistoryPanel = (VCSGisJImportHistory) this.dialogsHelper.getDialog("ImportHistory").getPanel();
265
                    int r = importHistoryPanel.importHistory();
266
                    if (r != 0) {
267
//                        FeatureStore featureStore = importHistoryPanel.getFeatureStore();
268
//                        String targetName = importHistoryPanel.getTabletName();
269
                        VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
270
                        String errmsg = workspace.getErrorMessage(r);
271
                        if( errmsg==null ) {
272
                            errmsg = "";
273
                        }
274
                        dialogsManager.messageDialog(
275
                                i18n.getTranslation("_Cant_import_history")
276
                                    + "\n" 
277
                                    + errmsg
278
                                    + "\n" 
279
                                    + i18n.getTranslation("_see_error_log_for_more_information")
280
                                    + "\n" 
281
                                    + "("+ Objects.toString(importHistoryPanel.getLastLogFile()) + ")"
282
                                    ,
283
                                i18n.getTranslation("_VCS_Import_history"),
284
                                JOptionPane.WARNING_MESSAGE
285
                        );
286
                    }
287
                }
288
        );
289
        dialog.show();
290
    }
291

  
292
    private void showInitWorkspaceDialog() {
293
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
294

  
295
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
296
                "InitializeWorkingCopy",
297
                swingManager.createInitWorkspacePanel(),
298
                "_VCS_Initialize_workingcopy",
299
                "_VCS_Initialize_workingcopy",
300
                "_VCS_Initialize_workingcopy",
301
                () -> {
302
                    I18nManager i18n = ToolsLocator.getI18nManager();
303
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
304
                    VCSGisJInitWorkspace panelInitWorkspace = (VCSGisJInitWorkspace) this.dialogsHelper.getDialog("InitializeWorkingCopy").getPanel();
305
                    int r = panelInitWorkspace.initializeWorkspace();
306
                    if (r != 0) {
307
                        dialogsManager.messageDialog(
308
                                i18n.getTranslation(
309
                                        "_Cant_initialize_workingcopy_{0}",
310
                                        new String[]{panelInitWorkspace.getWorkspaceName()}
311
                                ),
312
                                i18n.getTranslation("_VCS_Initialize_workingcopy"),
313
                                JOptionPane.WARNING_MESSAGE
314
                        );
315
                    }
316
                }
317
        );
318
        dialog.setAutoclose(true);
319
        dialog.show();
320
    }
321

  
322
    private void showInitializaRepositoryDialog() {
323
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
324

  
325
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
326
                "InitializeRepository",
327
                swingManager.createInitRepositoryPanel(),
328
                "_VCS_Initialize_repository",
329
                "_VCS_Initialize_repository",
330
                "_VCS_Initialize_repository",
331
                () -> {
332
                    I18nManager i18n = ToolsLocator.getI18nManager();
333
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
334
                    VCSGisJInitServer panel = (VCSGisJInitServer) this.dialogsHelper.getDialog("InitializeRepository").getPanel();
335
                    int r = panel.initialize();
336
                    if (r != 0) {
337
                        dialogsManager.messageDialog(
338
                                i18n.getTranslation(
339
                                        "_Cant_initialize_server_{0}",
340
                                        new String[]{panel.getConnectionLabel()}
341
                                ),
342
                                i18n.getTranslation("_VCS_Initialize_repository"),
343
                                JOptionPane.WARNING_MESSAGE
344
                        );
345
                    }
346
                }
347
        );
348
        dialog.setAutoclose(true);
349
        dialog.show();
350
    }
351

  
352
    private void showCheckoutDialog() {
353
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
354

  
355
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
356
                "Checkout",
357
                swingManager.createCheckoutPanel(),
358
                "_VCS_Checkout",
359
                "_VCS_Checkout",
360
                "_VCS_Checkout",
361
                () -> {
362
                    I18nManager i18n = ToolsLocator.getI18nManager();
363
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
364
                    VCSGisJCheckout checkoutPanel = (VCSGisJCheckout) this.dialogsHelper.getDialog("Checkout").getPanel();
365
                    int r = checkoutPanel.checkout();
366
                    if (r != 0) {
367
                        VCSGisEntity entity = checkoutPanel.getTable();
368
                        dialogsManager.messageDialog(
369
                                i18n.getTranslation(
370
                                        "_Failed_checkout_of_{0}",
371
                                        new String[]{entity.toString()}
372
                                ),
373
                                i18n.getTranslation("_VCS_Checkout"),
374
                                JOptionPane.WARNING_MESSAGE
375
                        );
376
                    }
377
                }
378
        );
379
        dialog.show();
380
    }
381

  
382
    private void showExportDialog() {
383
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
384

  
385
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
386
                "Export",
387
                swingManager.createExportPanel(),
388
                "_VCS_Export",
389
                "_Export_to_a_local_table_a_table_of_the_repository",
390
                "_VCS_Export",
391
                () -> {
392
                    I18nManager i18n = ToolsLocator.getI18nManager();
393
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
394
                    VCSGisJExport exportPanel = (VCSGisJExport) this.dialogsHelper.getDialog("Export").getPanel();
395
                    int r = exportPanel.export();
396
                    if (r != 0) {
397
                        VCSGisEntity entity = exportPanel.getTable();
398
                        dialogsManager.messageDialog(
399
                                i18n.getTranslation(
400
                                        "_Failed_export_of_{0}",
401
                                        new String[]{entity.toString()}
402
                                ),
403
                                i18n.getTranslation("_VCSGis_Export"),
404
                                JOptionPane.WARNING_MESSAGE
405
                        );
406
                    }
407
                }
408
        );
409
        dialog.show();
410
    }
411

  
412
    private void showChangesDialog() {
413
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
414

  
415
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
416
                "Changes",
417
                swingManager.createChangesPanel(),
418
                "_VCS_Changes"
419
        );
420
        dialog.show();
421
    }
422

  
423
    private void showHistory() {
424
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
425

  
426
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
427
                "Revisions",
428
                swingManager.createRevisionsPanel(),
429
                "_VCS_Revisions"
430
        );
431
        dialog.show();
432
    }
433

  
434
    private void showRegistrationWorkspaceDialog() {
435
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
436

  
437
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
438
                "RegisterWorkingCopies",
439
                swingManager.createRegisterWorkspacePanel(),
440
                "_VCS_Registration_workingcopies"
441
        );
442
        dialog.show();
443
    }
444

  
445

  
446
    private void showRegistrationOfEditingStoresDialog() {
447
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
448

  
449
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
450
                "RegistrationOfEditingStores",
451
                swingManager.createRegistrationOfEditingStoresPanel(),
452
                "_VCS_Registration_of_editing_stores"
453
        );
454
        dialog.show();
455
    }
456

  
457
    private void showServerEntitiesDialog() {
458
        I18nManager i18nManager = ToolsLocator.getI18nManager();
459
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
460
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
461

  
462
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
463
        winManager.showWindow(
464
                panel.asJComponent(),
465
                i18nManager.getTranslation("_VCS_Server_entities"),
466
                WindowManager.MODE.WINDOW
467
        );
468
    }
469

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

  
475
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
476
        winManager.showWindow(
477
                panel.asJComponent(),
478
                i18nManager.getTranslation("_VCS_Server_hooks"),
479
                WindowManager.MODE.WINDOW
480
        );
481
    }
482

  
483
    private void showCreateResourceTableDialog() {
484
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
485

  
486
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
487
                "CreateResourceTable",
488
                swingManager.createResourceTablePanel(),
489
                "_VCS_Create_resource_table",
490
                "_Create_resource_table_parameters",
491
                "_VCS_Create_resource_table",
492
                () -> {
493
                    I18nManager i18n = ToolsLocator.getI18nManager();
494
                    VCSGisJCreateResourceTable panel = (VCSGisJCreateResourceTable) this.dialogsHelper.getDialog("CreateResourceTable").getPanel();
495
                    panel.createResourceTable();
496
                }
497
        );
498
        dialog.setAutoclose(true);
499
        dialog.show();
500
    }
501

  
502
    private void showLogoutDialog() {
503
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
504

  
505
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
506
                "Logout",
507
                swingManager.createLogoutPanel(),
508
                "_VCS_Logout",
509
                "_Logout_the_current_user_from_a_VCSGis_working_copy",
510
                "_VCS_Logout",
511
                () -> {
512
                    I18nManager i18n = ToolsLocator.getI18nManager();
513
                    VCSGisJLogout panel = (VCSGisJLogout) this.dialogsHelper.getDialog("Logout").getPanel();
514
                    panel.logout();
515
                }
516
        );
517
        dialog.setAutoclose(true);
518
        dialog.show();
519
    }
520

  
521
    private void showCheckoutDataModelDialog() {
522
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
523

  
524
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
525
                "ConnectDataModel",
526
                swingManager.createCheckoutDataModelPanel(),
527
                "_VCS_Connect_to_datamodel",
528
                "_VCS_Connect_to_datamodel",
529
                "_VCS_Connect_to_datamodel",
530
                () -> {
531
                    I18nManager i18n = ToolsLocator.getI18nManager();
532
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
533
                    VCSGisJCheckoutDataModel checkoutDataModelPanel = (VCSGisJCheckoutDataModel) this.dialogsHelper.getDialog("ConnectDataModel").getPanel();
534
                    int r = checkoutDataModelPanel.connectToModel();
535
                    if ( !(r == ERR_OK || r==ERR_USER_CANCELLED) ) {
536
                        String dataModel = checkoutDataModelPanel.getDataModel();
537
                        dialogsManager.messageDialog(
538
                                i18n.getTranslation(
539
                                        "_Failed_connect_to_{0}",
540
                                        new String[]{dataModel}
541
                                ),
542
                                i18n.getTranslation("_VCS_Connect_to_datamodel"),
543
                                JOptionPane.WARNING_MESSAGE
544
                        );
545
                    }
546
                }
547
        );
548
        dialog.show();
549
    }
550
   
551
    private void showDownloadWorkingcopyDialog() {
552
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
553

  
554
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("DownloadWorkingcopy",
555
                swingManager.createDownloadWorkingcopyPanel(),
556
                "_VCS_Download_workingcopy",
557
                "_VCS_Download_workingcopy",
558
                "_VCS_Download_workingcopy",
559
                () -> {
560
                    I18nManager i18n = ToolsLocator.getI18nManager();
561
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
562
                    VCSGisJDownloadWorkingcopy downloadWorkingcopyPanel = (VCSGisJDownloadWorkingcopy) this.dialogsHelper.getDialog("DownloadWorkingcopy").getPanel();
563
                    int r = downloadWorkingcopyPanel.download(false);
564
                    if (r != 0) {
565
                        dialogsManager.messageDialog(
566
                                i18n.getTranslation(
567
                                        "_Failed_dowloading_working_copy"
568
                                ),
569
                                i18n.getTranslation("_VCS_Download_working_copy"),
570
                                JOptionPane.WARNING_MESSAGE
571
                        );
572
                    }
573
                }
574
        );
575
        dialog.show();
576
    }
577

  
578
    private void showPrepareWorkingcopyDialog() {
579
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
580

  
581
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("PrepareWorkingcopy",
582
                swingManager.createPrepareWorkingcopyPanel(),
583
                "_VCS_Prepare_workingcopy",
584
                "_VCS_Prepare_workingcopy",
585
                "_VCS_Prepare_workingcopy",
586
                () -> {
587
                    I18nManager i18n = ToolsLocator.getI18nManager();
588
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
589
                    VCSGisJPrepareWorkingcopy prepareWorkingcopyPanel = (VCSGisJPrepareWorkingcopy) this.dialogsHelper.getDialog("PrepareWorkingcopy").getPanel();
590
                    int r = prepareWorkingcopyPanel.prepare();
591
                    if (r != 0) {
592
                        dialogsManager.messageDialog(
593
                                i18n.getTranslation(
594
                                        "_Failed_prepare_working_copy"
595
                                ),
596
                                i18n.getTranslation("_VCS_Prepare_working_copy"),
597
                                JOptionPane.WARNING_MESSAGE
598
                        );
599
                    }
600
                }
601
        );
602
        dialog.setAutoclose(true);
603
        dialog.show();
604
    }
605

  
606
    private void showBackupHistoryDialog() {
607
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
608

  
609
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("BackupHistory",
610
                swingManager.createBackupHistoryPanel(),
611
                "_VCS_Backup_history",
612
                "_VCS_Backup_history",
613
                "_VCS_Backup_history",
614
                () -> {
615
                    I18nManager i18n = ToolsLocator.getI18nManager();
616
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
617
                    VCSGisJBackupHistory backupHistoryPanel = (VCSGisJBackupHistory) this.dialogsHelper.getDialog("BackupHistory").getPanel();
618
                    int r = backupHistoryPanel.backupHistory();
619
                    if (r != 0) {
620
                        dialogsManager.messageDialog(
621
                                i18n.getTranslation(
622
                                        "_Failed_doing_backup_history"
623
                                ),
624
                                i18n.getTranslation("_VCS_Backup_history"),
625
                                JOptionPane.WARNING_MESSAGE
626
                        );
627
                    }
628
                }
629
        );
630
        dialog.show();
631
    }
632

  
633
    private void showRestoreHistoryDialog() {
634
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
635

  
636
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("RestoreHistory",
637
                swingManager.createRestoreHistoryPanel(),
638
                "_VCS_Restore_history",
639
                "_VCS_Restore_history",
640
                "_VCS_Restore_history",
641
                () -> {
642
                    I18nManager i18n = ToolsLocator.getI18nManager();
643
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
644
                    VCSGisJRestoreHistory restoreHistoryPanel = (VCSGisJRestoreHistory) this.dialogsHelper.getDialog("RestoreHistory").getPanel();
645
                    int r = restoreHistoryPanel.restoreHistory();
646
                    if (r != 0) {
647
                        dialogsManager.messageDialog(
648
                                i18n.getTranslation(
649
                                        "_Failed_restoring_history"
650
                                ),
651
                                i18n.getTranslation("_VCS_Restore_history"),
652
                                JOptionPane.WARNING_MESSAGE
653
                        );
654
                    }
655
                }
656
        );
657
        dialog.show();
658
    }
659

  
660
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.61/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/java/org/gvsig/vcsgis/app/FeatureStoresTreeModel.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.vcsgis.app;
7

  
8
import java.util.HashMap;
9
import java.util.Map;
10
import javax.swing.Icon;
11
import javax.swing.ImageIcon;
12
import javax.swing.event.TreeModelListener;
13
import javax.swing.tree.TreeModel;
14
import javax.swing.tree.TreePath;
15
import org.gvsig.app.ApplicationLocator;
16
import org.gvsig.fmap.dal.DataStore;
17
import org.gvsig.fmap.mapcontext.MapContextLocator;
18
import org.gvsig.fmap.mapcontext.layers.FLayer;
19
import org.gvsig.fmap.mapcontext.layers.FLayers;
20
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
21
import org.gvsig.fmap.mapcontext.layers.vectorial.VectorLayer;
22
import org.gvsig.fmap.mapcontrol.LayersTreeModel;
23
import org.gvsig.tools.evaluator.Evaluator;
24
import org.gvsig.tools.evaluator.EvaluatorData;
25
import org.gvsig.tools.evaluator.EvaluatorException;
26
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
27
import org.gvsig.tools.swing.api.IconGetter;
28
import org.gvsig.tools.swing.api.ListElement;
29
import org.gvsig.tools.swing.api.ToolsSwingLocator;
30

  
31

  
32
/**
33
 *
34
 * @author fdiaz
35
 */
36
public class FeatureStoresTreeModel implements TreeModel, IconGetter {
37

  
38
    private final LayersTreeModel delegated;
39
    private final ListElement<Object> root;
40
    private final Map<Object,Icon> icons;
41
    
42
    public FeatureStoresTreeModel() {
43
        this.delegated = (LayersTreeModel) ApplicationLocator.getApplicationManager().createProjectLayersTreeModel();
44
        this.icons = new HashMap<>();
45
        this.delegated.setFilter(new Evaluator() {
46
            @Override
47
            public Object evaluate(EvaluatorData data) throws EvaluatorException {
48
                FLayer layer = (FLayer) data.getDataValue("layer");
49
                return (layer instanceof VectorLayer);
50
            }
51

  
52
            @Override
53
            public String getName() {
54
                return "VectorialLayersFilter";
55
            }
56

  
57
            @Override
58
            public String getDescription() {
59
                return null;
60
            }
61

  
62
            @Override
63
            public String getSQL() {
64
                return null;
65
            }
66

  
67
            @Override
68
            public EvaluatorFieldsInfo getFieldsInfo() {
69
                return null;
70
            }
71
        });
72
        this.root = new ListElement<>("Project", this.delegated.getRoot());
73
    }
74
    
75
    private Object getNode(Object value) {
76
        if( value instanceof ListElement ) {
77
            return ((ListElement) value).getValue();
78
        }
79
        return value;
80
    }
81
    
82
    @Override
83
    public Object getRoot() {
84
        return this.root;
85
    }
86

  
87
    @Override
88
    public Object getChild(Object parent, int index) {
89
        parent = this.getNode(parent);
90
        Object x = this.delegated.getChild(parent, index);
91
        if( x instanceof VectorLayer ) {
92
            SingleLayer layer = (SingleLayer)x;
93
            DataStore store = (DataStore) layer.getDataStore();
94
            return store;
95
        }
96
        return x;
97
    }
98

  
99
    @Override
100
    public int getChildCount(Object parent) {
101
        parent = this.getNode(parent);
102
        return this.delegated.getChildCount(parent);
103
    }
104

  
105
    @Override
106
    public boolean isLeaf(Object node) {
107
        node = this.getNode(node);
108
        return this.delegated.isLeaf(node);
109
    }
110

  
111
    @Override
112
    public void valueForPathChanged(TreePath path, Object newValue) {
113
        this.delegated.valueForPathChanged(path, newValue);
114
    }
115

  
116
    @Override
117
    public int getIndexOfChild(Object parent, Object child) {
118
        parent = this.getNode(parent);
119
        return this.delegated.getIndexOfChild(parent, child);
120
    }
121

  
122
    @Override
123
    public void addTreeModelListener(TreeModelListener l) {
124
        this.delegated.addTreeModelListener(l);
125
    }
126

  
127
    @Override
128
    public void removeTreeModelListener(TreeModelListener l) {
129
        this.delegated.removeTreeModelListener(l);
130
    }
131
    
132
    @Override
133
    public Icon getIcon(Object item) {
134
         if( !this.icons.containsKey(item) ) {
135
            String iconName;
136
            if( item instanceof DataStore ) {
137
                iconName = MapContextLocator.getMapContextManager().getIconLayer((DataStore)item);
138
            } else if( item instanceof FLayers ) {
139
                FLayers layers = (FLayers) item;
140
                if( layers.getParentLayer()!=null && layers.getParentLayer().getParentLayer()==null ) {
141
                    iconName = "view-navigation-zoom-all";
142
                } else {
143
                    iconName = "layer-icon-group";
144
                }
145
            } else if( item == root  ) {
146
                iconName = "common-folder-open";
147
            } else {
148
                iconName = "common-leaf";
149
            }
150
            ImageIcon icon = ToolsSwingLocator.getIconThemeManager().getCurrent().get(iconName);
151
            this.icons.put(item, icon);
152
        }
153
       return this.icons.get(item);
154
    }
155
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.61/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/java/org/gvsig/vcsgis/app/VCSGisSwingServicesImpl.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.vcsgis.app;
7

  
8
import java.io.File;
9
import java.util.ArrayList;
10
import java.util.HashMap;
11
import java.util.HashSet;
12
import java.util.Iterator;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.Set;
16
import javax.json.JsonArray;
17
import javax.json.JsonObject;
18
import javax.json.JsonValue;
19
import javax.swing.ComboBoxModel;
20
import javax.swing.DefaultComboBoxModel;
21
import javax.swing.DefaultListModel;
22
import javax.swing.Icon;
23
import javax.swing.ListModel;
24
import javax.swing.tree.TreeModel;
25
import org.apache.commons.lang3.StringUtils;
26
import org.gvsig.andami.PluginsLocator;
27
import org.gvsig.app.ApplicationLocator;
28
import org.gvsig.app.ApplicationManager;
29
import org.gvsig.app.project.Project;
30
import org.gvsig.app.project.ProjectManager;
31
import org.gvsig.app.project.documents.Document;
32
import org.gvsig.app.project.documents.DocumentManager;
33
import org.gvsig.app.project.documents.table.TableDocument;
34
import org.gvsig.app.project.documents.table.TableManager;
35
import org.gvsig.app.project.documents.view.ViewDocument;
36
import org.gvsig.app.project.documents.view.ViewManager;
37
import org.gvsig.app.project.documents.view.gui.IView;
38
import org.gvsig.fmap.dal.DALLocator;
39
import org.gvsig.fmap.dal.DataManager;
40
import org.gvsig.fmap.dal.exception.DataException;
41
import org.gvsig.fmap.dal.feature.FeatureStore;
42
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
43
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
44
import org.gvsig.fmap.geom.Geometry;
45
import org.gvsig.fmap.geom.aggregate.MultiCurve;
46
import org.gvsig.fmap.geom.aggregate.MultiPoint;
47
import org.gvsig.fmap.geom.aggregate.MultiSurface;
48
import org.gvsig.fmap.geom.primitive.Curve;
49
import org.gvsig.fmap.geom.primitive.Point;
50
import org.gvsig.fmap.geom.primitive.Surface;
51
import org.gvsig.fmap.mapcontext.MapContext;
52
import org.gvsig.fmap.mapcontext.MapContextLocator;
53
import org.gvsig.fmap.mapcontext.layers.FLayer;
54
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
55
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer;
56
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
57
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol_v2;
58
import org.gvsig.json.Json;
59
import org.gvsig.json.JsonArrayBuilder;
60
import org.gvsig.json.JsonObjectBuilder;
61
import org.gvsig.tools.ToolsLocator;
62
import org.gvsig.tools.i18n.I18nManager;
63
import org.gvsig.tools.util.LabeledValue;
64
import org.gvsig.tools.util.LabeledValueImpl;
65
import org.gvsig.vcsgis.app.addlayer.LayersWithGroup;
66
import org.gvsig.vcsgis.lib.VCSGisLocator;
67
import org.gvsig.vcsgis.lib.VCSGisManager;
68
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
69
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
70
import org.gvsig.vcsgis.swing.VCSGisSwingServices;
71
import org.slf4j.LoggerFactory;
72

  
73
/**
74
 *
75
 * @author gvSIG Team
76
 */
77
@SuppressWarnings("UseSpecificCatch")
78
public class VCSGisSwingServicesImpl implements VCSGisSwingServices {
79
    
80
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(VCSGisSwingServicesImpl.class);
81

  
82
    private static final String VCSGISMODELS_PROJECT_PROPERTY = "VCSGisModels";
83

  
84
    private Map<Integer,ISymbol> highlightedPolygonSymbols;
85
    private Map<Integer,ISymbol> highlightedLineSymbols;
86
    private Map<Integer,ISymbol> highlightedPointSymbols;
87

  
88
    @Override
89
    public TreeModel getFeatureStoresTreeModel() {
90
        return new FeatureStoresTreeModel();
91
    }
92

  
93
    @Override
94
    public ListModel getFeatureStoresListModel() {
95
        DefaultListModel<FeatureStore> model = new DefaultListModel();
96
        
97
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
98
        Project project = appManager.getCurrentProject();
99
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
100
        for (Document document : tables) {
101
            TableDocument table = (TableDocument) document;
102
            model.addElement(table.getFeatureStore());
103
        }
104
        
105
        return model;
106
    }
107

  
108
    @Override
109
    public void addTableToProject(VCSGisWorkspace ws, FeatureStore store) {
110
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
111
        
112
        DocumentManager tableManager = appManager.getProjectManager().getDocumentManager(
113
                TableManager.TYPENAME
114
        );
115

  
116
        Project project = appManager.getCurrentProject();
117
        TableDocument tableDoc = (TableDocument) tableManager.createDocument();
118
        
119
        tableDoc.setName(store.getName());
120
        tableDoc.setStore(store);
121
        project.addDocument(tableDoc);
122
    }
123

  
124
    @Override
125
    public ComboBoxModel getViewDocumentsComboBoxModel() {
126
        I18nManager i18n = ToolsLocator.getI18nManager();
127
        DefaultComboBoxModel<LabeledValue> model = new DefaultComboBoxModel();
128
        model.addElement(new LabeledValueImpl(i18n.getTranslation("_Select_a_view"), null));
129
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
130
        Project project = appManager.getCurrentProject();
131
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
132
        for (Document document : views) {
133
            ViewDocument view = (ViewDocument) document;
134
            model.addElement(new LabeledValueImpl(view.getName(), view));
135
        }
136
        return model;
137
    }
138

  
139
//    @Override
140
//    public void addLayerToView(FeatureStore store, LabeledValue labeledView) {
141
//        addLayerToView(store, labeledView, null, null, false);
142
//    }
143
//
144
    @Override
145
    public void addLayerToView(FeatureStore store, LabeledValue labeledView, String groupName, String name, boolean replaceLayerIfExists) {
146
        ViewDocument view;
147
        if( labeledView == null ) {
148
            view = null;
149
        } else  if (labeledView.getValue() == null){
150
            view = null;
151
        } else {
152
            view = (ViewDocument) labeledView.getValue();
153
        }
154
        addLayerToView(store, view, groupName, name, replaceLayerIfExists);
155
    }
156
        
157

  
158
    private void addLayerToView(FeatureStore store, ViewDocument view, String groupName, String name, boolean replaceLayerIfExists) {
159
        try {
160
            if( store == null ) {
161
                return;
162
            }
163
            if( view==null ) {               
164
                IView viewWin = getActiveView();
165
                if(viewWin == null){
166
                    return;
167
                }
168
                view = viewWin.getViewDocument();
169
            }
170
            String layerName = name;
171
            if(StringUtils.isBlank(layerName)){
172
                layerName = store.getName();
173
            }
174
            FLayer layer = MapContextLocator.getMapContextManager().createLayer(layerName, store);
175
            LayersWithGroup helper = new LayersWithGroup(view.getMapContext());
176
            helper.add(groupName, name, layer);
177
            helper.updateMapContext(true, replaceLayerIfExists);
178
        } catch (Exception ex) {
179
            VCSGisManager manager = VCSGisLocator.getManager();
180
            throw new VCSGisRuntimeException(
181
                    VCSGisManager.ERR_CANT_ADD_LAYER, 
182
                    manager.getErrorMessage(VCSGisManager.ERR_CANT_ADD_LAYER),
183
                    ex);
184
        }
185
    }
186
    
187
    @Override
188
    public void highlight(int mode, Geometry geom) {
189
        highlight(mode, geom, null);
190
    }
191

  
192
    @Override
193
    public void highlight(int mode, Geometry geom, FeatureStore store) {
194
        if (this.highlightedPointSymbols == null) {
195
            this.highlightedPointSymbols = new HashMap<>();
196
            this.highlightedLineSymbols = new HashMap<>();
197
            this.highlightedPolygonSymbols = new HashMap<>();
198
            try {
199
                File pluginfolder = PluginsLocator.getManager().getPlugin(this).getPluginDirectory();
200
                File folder = new File(pluginfolder, "symbols");
201
                ISymbol[] symbols = MapContextLocator.getSymbolManager().loadSymbols(folder);
202
                for (ISymbol symbol : symbols) {
203
                    if (symbol instanceof ISymbol_v2) {
204
                        String symbolid = ((ISymbol_v2) symbol).getID();
205
                        switch(symbolid) {
206
                            case "vcsgis-repository-polygon":
207
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
208
                                break;
209
                            case "vcsgis-repository-line":
210
                                this.highlightedLineSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
211
                                break;
212
                            case "vcsgis-repository-point":
213
                                this.highlightedPointSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
214
                                break;
215
 
216
                            case "vcsgis-workspace-polygon":
217
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
218
                                break;
219
                            case "vcsgis-workspace-line":
220
                                this.highlightedLineSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
221
                                break;
222
                            case "vcsgis-workspace-point":
223
                                this.highlightedPointSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
224
                                break;
225
                            
226
                            case "vcsgis-workspace-previous-polygon":
227
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
228
                                break;
229
                            case "vcsgis-workspace-previous-line":
230
                                this.highlightedLineSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
231
                                break;
232
                            case "vcsgis-workspace-previous-point":
233
                                this.highlightedPointSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
234
                                break;
235
                        }
236
                    }
237
                }
238
            } catch (Exception ex) {
239
            }
240
        }
241
        List<ViewDocument> viewList;
242
        if(store == null){
243
            ApplicationManager application = ApplicationLocator.getManager();
244
            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
245
            viewList = new ArrayList<>();
246
            viewList.add(viewdoc);
247
        } else {
248
            viewList = getViewDocumentsHavingAStore(store);
249
        }
250
        for (ViewDocument viewDoc : viewList) {
251
            MapContext mapContext = viewDoc.getMapContext();
252
            GraphicLayer gl = mapContext.getGraphicsLayer();
253
            if (geom != null) {
254
                ISymbol symbol = null;
255
                if (geom instanceof Point || geom instanceof MultiPoint) {
256
                    symbol = this.highlightedPointSymbols.get(mode);
257
                } else if (geom instanceof Curve || geom instanceof MultiCurve) {
258
                    symbol = this.highlightedLineSymbols.get(mode);
259
                } else if (geom instanceof Surface || geom instanceof MultiSurface) {
260
                    symbol = this.highlightedPolygonSymbols.get(mode);
261
                }
262
                if (symbol != null) {
263
                    int symbolid = gl.getSymbolId(symbol);
264
                    if (symbolid < 0) {
265
                        gl.addSymbol(symbol);
266
                        symbolid = gl.getSymbolId(symbol);
267
                    }
268
                    gl.addGraphic("vcsgis-highlighted", geom, symbolid);
269
                }
270
            }
271
            mapContext.invalidate();
272
        }
273
    }
274

  
275
    @Override
276
    public void centerActiveViewToGeometry(Geometry geometry) {
277
        if(geometry != null){
278
            IView view = getActiveView();
279
            if(view != null){
280
                ViewDocument viewDocument = view.getViewDocument();
281
                viewDocument.center(geometry.getEnvelope());
282
            }
283
        }
284
    }
285

  
286
    @Override
287
    public void centerViewsHavingAStoreToGeometry(FeatureStore store, Geometry geometry) {
288
        if(geometry != null){
289
            List<ViewDocument> views = getViewDocumentsHavingAStore(store);
290
            for (ViewDocument view : views) {
291
                if(view != null){
292
                    view.center(geometry.getEnvelope());
293
                }
294
            }
295
        }
296
    }
297

  
298
    @Override
299
    public void zoomActiveViewToGeometry(Geometry geometry) {
300
        if(geometry != null){
301
            IView view = getActiveView();
302
            if(view != null){
303
                ViewDocument viewDocument = view.getViewDocument();
304
                viewDocument.getMapContext().getViewPort().setEnvelope(geometry.getEnvelope());
305
            }
306
        }
307
    }
308

  
309
    @Override
310
    public void zoomViewsHavingAStoreToGeometry(FeatureStore store, Geometry geometry) {
311
        if(geometry != null){
312
            List<ViewDocument> views = getViewDocumentsHavingAStore(store);
313
            for (ViewDocument view : views) {
314
                if(view != null){
315
                    view.getMapContext().getViewPort().setEnvelope(geometry.getEnvelope());
316
                }
317
            }
318
        }
319
    }
320

  
321
    private IView getActiveView() {
322
        ApplicationManager application = ApplicationLocator.getManager();
323
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
324
        return view;
325
    }
326

  
327
    @Override
328
    public void cleanHighligthed() {
329
        ApplicationManager application = ApplicationLocator.getManager();
330
        ProjectManager projectManager = application.getProjectManager();
331
        Project project = projectManager.getCurrentProject();
332
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
333
        for (Document doc : views) {
334
            ViewDocument viewdoc = (ViewDocument)doc;
335
            MapContext mapContext = viewdoc.getMapContext();
336
            GraphicLayer gl = mapContext.getGraphicsLayer();
337
            //FIXME: Refrescar el mapContext solo cuando se ha borrado el graphics  
338
            if(gl.removeGraphics("vcsgis-highlighted")) {
339
                mapContext.invalidate();
340
            }
341
        }
342
    }
343
    
344
    @Override
345
    public void cleanActiveViewHighligthed() {
346
        ApplicationManager application = ApplicationLocator.getManager();
347
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
348
        if(viewdoc != null){
349
            MapContext mapContext = viewdoc.getMapContext();
350
            GraphicLayer gl = mapContext.getGraphicsLayer();
351
            gl.removeGraphics("vcsgis-highlighted");
352
            mapContext.invalidate();
353
        }
354
    }
355

  
356
    @Override
357
    public void refreshDocuments() {
358
        ApplicationManager application = ApplicationLocator.getManager();
359
        ProjectManager projectManager = application.getProjectManager();
360
        Project project = projectManager.getCurrentProject();
361
        
362
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
363
        for (Document doc : views) {
364
            doc.refresh();
365
        }
366
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
367
        for (Document doc : tables) {
368
            doc.refresh();
369
        }
370
    }
371
    
372
    @Override
373
    public void refreshDocument(FeatureStore store){
374
        if(store == null){
375
            return;
376
        }
377
        ApplicationManager application = ApplicationLocator.getManager();
378
        ProjectManager projectManager = application.getProjectManager();
379
        Project project = projectManager.getCurrentProject();
380
        
381
        String storeFullName = store.getFullName();
382
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
383
        for (Document doc : views) {
384
            ViewDocument view = (ViewDocument)doc;
385
            for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
386
                FLayer layer = it.next();
387
                if(layer instanceof FLyrVect){
388
                    if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
389
                        view.getMapContext().invalidate();
390
                        break;
391
                    }
392
                }
393
            }
394
        }
395
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
396
        for (Document doc : tables) {
397
            TableDocument table = (TableDocument)doc;
398
            FeatureStore featureStore = table.getStore();
399
            if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
400
                try {
401
                    featureStore.refresh();
402
                } catch (DataException e) {
403
                    LOGGER.warn("Error refreshing table", e);
404
                }
405
            }
406
        }
407
    }
408

  
409
    @Override
410
    public void refreshDocument(Set<FeatureStore> stores){
411
        if(stores == null || stores.isEmpty()){
412
            return;
413
        }
414
        
415
        ApplicationManager application = ApplicationLocator.getManager();
416
        ProjectManager projectManager = application.getProjectManager();
417
        Project project = projectManager.getCurrentProject();
418
        
419
        Set<ViewDocument> viewsToRefresh = new HashSet<>();
420
        for (FeatureStore store : stores) {
421
            String storeFullName = store.getFullName();
422
            List<Document> views = project.getDocuments(ViewManager.TYPENAME);
423
            for (Document doc : views) {
424
                ViewDocument view = (ViewDocument)doc;
425
                for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
426
                    FLayer layer = it.next();
427
                    if(layer instanceof FLyrVect){
428
                        if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
429
                            viewsToRefresh.add(view);
430
                            break;
431
                        }
432
                    }
433
                }
434
            }
435

  
436
            List<Document> tables = project.getDocuments(TableManager.TYPENAME);
437
            for (Document doc : tables) {
438
                TableDocument table = (TableDocument)doc;
439
                FeatureStore featureStore = table.getStore();
440
                if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
441
                    try {
442
                        featureStore.refresh();
443
                    } catch (DataException e) {
444
                        LOGGER.warn("Error refreshing table", e);
445
                    }
446
                }
447
            }
448
        }
449
        
450
        for (ViewDocument viewDocument : viewsToRefresh) {
451
            viewDocument.getMapContext().invalidate();
452
        }
453
        
454
    }
455

  
456
    
457
    public List<ViewDocument> getViewDocumentsHavingAStore(FeatureStore store){
458
        if(store == null){
459
            return null;
460
        }
461
        List<ViewDocument> viewList = new ArrayList<>();
462
        
463
        String storeFullName = store.getFullName();
464
        ApplicationManager application = ApplicationLocator.getManager();
465
        ProjectManager projectManager = application.getProjectManager();
466
        Project project = projectManager.getCurrentProject();
467
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
468
        for (Document doc : views) {
469
            ViewDocument view = (ViewDocument) doc;
470
            for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
471
                FLayer layer = it.next();
472
                if (layer instanceof FLyrVect) {
473
                    if (StringUtils.equals(
474
                            ((FLyrVect) layer).getFeatureStore().getFullName(),
475
                            store.getFullName()
476
                    )) {
477
                        viewList.add(view);
478
                        break;
479
                    }
480
                }
481
            }
482
        }
483
        return viewList;
484
    }
485

  
486
//    @Override
487
//    public void addLayerToActiveView(FeatureStore store, String name) {
488
//        if(store != null && StringUtils.isNotBlank(name)){
489
//            IView view = getActiveView();
490
//            if(view != null){
491
//                ViewDocument viewDocument = view.getViewDocument();
492
//                this.addLayerToView(store, viewDocument, null, name, false);
493
//            }
494
//        }
495
//    }
496
//
497
    @Override
498
    public boolean isThereAnyActiveView() {
499
        return this.getActiveView() != null;
500
    }
501

  
502
    @Override
503
    public void addTableToProject(VCSGisWorkspace ws, FeatureStore store, String tableName) {
504
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
505
        
506
        DocumentManager tableManager = appManager.getProjectManager().getDocumentManager(
507
                TableManager.TYPENAME
508
        );
509

  
510
        Project project = appManager.getCurrentProject();
511
        TableDocument tableDoc = (TableDocument) tableManager.createDocument();
512
        
513
        tableDoc.setName(tableName);
514
        tableDoc.setStore(store);
515
        project.addDocument(tableDoc);
516
    }
517

  
518
    @Override
519
    public Icon getFeatureStoresTreeModelIcon(TreeModel model, Object obj) {
520
        if( model instanceof FeatureStoresTreeModel ) {
521
            return ((FeatureStoresTreeModel)model).getIcon(obj);
522
        }
523
        return null;
524
    }
525
    
526
    @Override
527
    public void connectedToModel(VCSGisWorkspace workspace, String model) {
528
        ApplicationManager application = ApplicationLocator.getApplicationManager();
529
        Project project = application.getCurrentProject();
530
        
531
        Map<String,JsonObject> models = new HashMap<>();
532
        String x = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
533
        if( x != null ) {
534
            JsonArray array = Json.createArray(x);
535
            for (JsonValue value : array) {
536
                JsonObject item = (JsonObject) value;
537
                String modelName = item.getString("model", null);
538
                JDBCServerExplorerParameters wsparameters = (JDBCServerExplorerParameters) Json.toObject(item.getJsonObject("parameters"));
539
                String url = wsparameters.getUrl();
540
                String key = modelName + "("+ url + ")";
541
                models.put(key, item);
542
            }
543
        }
544
        JDBCServerExplorerParameters parameters = workspace.getExplorerParameters();
545
        String url = parameters.getUrl();
546
        String key = model + "("+ url + ")";
547
        JsonObjectBuilder item = Json.createObjectBuilder();
548
        item.add("model", model);
549
        item.add("parameters", parameters);
550
        models.put(key, item.build());
551
        JsonArrayBuilder array = Json.createArrayBuilder();
552
        for (JsonObject n : models.values()) {
553
            array.add(n);
554
        }
555
        project.setProperty(VCSGISMODELS_PROJECT_PROPERTY, array.build().toString());
556
    }
557

  
558
    public void projectLoaded(Project project) {
559
        String x = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
560
        if (x == null) {
561
            return;
562
        }
563
        // TODO:    El projecto se guardo cuando estaba conectado a uno o mas
564
        //          modelos de datos... 
565
        //          ¿ Preguntamos al usuario si nos reconectamos automaticamente
566
        //          o nos reconectamos sin decirle nada ?
567
        //          Si preguntamos que recuerde la respuesta.
568

  
569
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
570
        DataManager dataManager = DALLocator.getDataManager();
571
        JsonArray array = Json.createArray(x);
572
        for (JsonValue value : array) {
573
            String modelName = "unkbown";
574
            String url = "unknown";
575
            try {
576
                JsonObject item = (JsonObject) value;
577
                modelName = item.getString("model", null);
578
                JDBCServerExplorerParameters wsparameters = (JDBCServerExplorerParameters) Json.toObject(item.get("parameters"));
579
                url = wsparameters.getUrl();
580

  
581
                JDBCServerExplorer wsexplorer = (JDBCServerExplorer) dataManager.openServerExplorer(wsparameters.getProviderName(), wsparameters);
582
                VCSGisWorkspace workspace = manager.openWorkspace(wsexplorer);
583

  
584
                workspace.registerDataModelRepository(modelName);
585
            } catch (Exception ex) {
586
                LOGGER.warn("Can't register data model '" + modelName + "' of workspace '" + url + "'.", ex);
587
                // TODO: ¿ avisar al usuario o basta con lo que saca en la linea de mensajes del MDI ?
588
            }
589
        }
590
    }
591

  
592
    @Override
593
    public Geometry getExtentOfCurrentDocument() {
594
        ApplicationManager application = ApplicationLocator.getApplicationManager();
595
        Project project = application.getCurrentProject();
596
        
597
        ViewDocument view = (ViewDocument) project.getActiveDocument(ViewDocument.class);
598
        if( view == null ) {
599
            return null;
600
        }
601
        return view.getMapContext().getViewPort().getEnvelope().getBox2D();
602
    }
603

  
604
    @Override
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff