Revision 6766

View differences:

org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.68/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/buildNumber.properties
1
#Mon Jul 04 07:48:36 CEST 2022
2
buildNumber=78
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.68/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.68/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
            case "tools-vcsgis-repositoryentityfeaturetypeeditor":
208
                showRepositoryEntityFeatureTypeEditorImplDialog();
209
                break;
210
        }
211
    }
212

  
213
    @Override
214
    public boolean isEnabled() {
215
        return true;
216
    }
217

  
218
    @Override
219
    public boolean isVisible() {
220
        return true;
221
    }
222

  
223
//    private void cleanHighligthed() {
224
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
225
//        swingManager.getDefaultServices().cleanHighligthed();
226
//    }
227
//
228

  
229
    private void showAddToWorkspaceDialog() {
230
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
231

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

  
255
    private void showImportHistoryDialog() {
256
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
257

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

  
295
    private void showInitWorkspaceDialog() {
296
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
297

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

  
325
    private void showInitializaRepositoryDialog() {
326
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
327

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

  
355
    private void showCheckoutDialog() {
356
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
357

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

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

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

  
415
    private void showChangesDialog() {
416
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
417

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

  
426
    private void showHistory() {
427
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
428

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

  
437
    private void showRegistrationWorkspaceDialog() {
438
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
439

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

  
448

  
449
    private void showRegistrationOfEditingStoresDialog() {
450
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
451

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

  
460
    private void showServerEntitiesDialog() {
461
        I18nManager i18nManager = ToolsLocator.getI18nManager();
462
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
463
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
464

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

  
473
    private void showServerHooksDialog() {
474
        I18nManager i18nManager = ToolsLocator.getI18nManager();
475
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
476
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
477

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

  
486
    private void showCreateResourceTableDialog() {
487
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
488

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

  
505
    private void showLogoutDialog() {
506
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
507

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

  
524
    private void showCheckoutDataModelDialog() {
525
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
526

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

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

  
581
    private void showPrepareWorkingcopyDialog() {
582
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
583

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

  
609
    private void showBackupHistoryDialog() {
610
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
611

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

  
636
    private void showRestoreHistoryDialog() {
637
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
638

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

  
663
    private void showRepositoryEntityFeatureTypeEditorImplDialog() {
664
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
665

  
666
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
667
                "RepositoryEntityFeatureTypeEditor",
668
                swingManager.createRepositoryEntityFeatureTypeEditor(),
669
                "_VCS_Repository_entity_feature_type_editor"
670
        );
671
        dialog.show();
672
    }
673

  
674
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.68/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.68/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.fmap.mapcontrol.MapControl;
59
import org.gvsig.json.Json;
60
import org.gvsig.json.JsonArrayBuilder;
61
import org.gvsig.json.JsonObjectBuilder;
62
import org.gvsig.tools.ToolsLocator;
63
import org.gvsig.tools.i18n.I18nManager;
64
import org.gvsig.tools.util.LabeledValue;
65
import org.gvsig.tools.util.LabeledValueImpl;
66
import org.gvsig.vcsgis.app.addlayer.LayersWithGroup;
67
import org.gvsig.vcsgis.lib.VCSGisLocator;
68
import org.gvsig.vcsgis.lib.VCSGisManager;
69
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
70
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
71
import org.gvsig.vcsgis.swing.VCSGisSwingServices;
72
import org.slf4j.LoggerFactory;
73

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  
324
    private IView getActiveView() {
325
        ApplicationManager application = ApplicationLocator.getManager();
326
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
327
        return view;
328
    }
329

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

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

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

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

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

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

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

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

  
521
    @Override
522
    public Icon getFeatureStoresTreeModelIcon(TreeModel model, Object obj) {
523
        if( model instanceof FeatureStoresTreeModel ) {
524
            return ((FeatureStoresTreeModel)model).getIcon(obj);
525
        }
526
        return null;
527
    }
528
    
529
    @Override
530
    public void connectedToModel(VCSGisWorkspace workspace, String model) {
531
        String previousProjectModelInfo = null;
532
        try {
533
            ApplicationManager application = ApplicationLocator.getApplicationManager();
534
            Project project = application.getCurrentProject();
535

  
536
            Map<String,JsonObject> models = new HashMap<>();
537
            previousProjectModelInfo = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
538
            if( previousProjectModelInfo != null ) {
539
                JsonArray array = Json.createArray(previousProjectModelInfo);
540
                for (JsonValue value : array) {
541
                    JsonObject item = (JsonObject) value;
542
                    String modelName = item.getString("model", null);
543
                    JDBCServerExplorerParameters wsparameters = (JDBCServerExplorerParameters) Json.toObject(item.getJsonObject("parameters"));
544
                    String url = wsparameters.getUrl();
545
                    String key = modelName + "("+ url + ")";
546
                    models.put(key, item);
547
                }
548
            }
549
            JDBCServerExplorerParameters parameters = workspace.getExplorerParameters();
550
            String url = parameters.getUrl();
551
            String key = model + "("+ url + ")";
552
            JsonObjectBuilder item = Json.createObjectBuilder();
553
            item.add("model", model);
554
            item.add("parameters", parameters);
555
            models.put(key, item.build());
556
            JsonArrayBuilder array = Json.createArrayBuilder();
557
            for (JsonObject n : models.values()) {
558
                array.add(n);
559
            }
560
            String s = array.build().toString();
561
            project.setProperty(VCSGISMODELS_PROJECT_PROPERTY, s);
562
            LOGGER.info("Added information of vcsgis model to project properties: "+s);
563
        } catch(Exception ex) {
564
            LOGGER.warn("Can't add information of vcsgis model to project properties. Previous model info='"+previousProjectModelInfo+"'", ex);
565
        }
566
    }
567

  
568
    public void projectLoaded(Project project) {
569
        String projectModelInfo = null;
570
        try {
571
            projectModelInfo = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
572
            if (projectModelInfo == null) {
573
                LOGGER.info("Project loaded without information of vcsgis models.");
574
                return;
575
            }
576
            // TODO:    El projecto se guardo cuando estaba conectado a uno o mas
577
            //          modelos de datos... 
578
            //          ¿ Preguntamos al usuario si nos reconectamos automaticamente
579
            //          o nos reconectamos sin decirle nada ?
580
            //          Si preguntamos que recuerde la respuesta.
581

  
582
            VCSGisManager manager = VCSGisLocator.getVCSGisManager();
583
            DataManager dataManager = DALLocator.getDataManager();
584
            JsonArray array = Json.createArray(projectModelInfo);
585
            for (JsonValue value : array) {
586
                String modelName = "unkbown";
587
                String url = "unknown";
588
                try {
589
                    JsonObject item = (JsonObject) value;
590
                    modelName = item.getString("model", null);
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff