Revision 5014

View differences:

org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.38/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.38/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 javax.swing.JOptionPane;
27
import org.gvsig.andami.IconThemeHelper;
28
import org.gvsig.andami.PluginsLocator;
29
import org.gvsig.andami.plugins.Extension;
30
import org.gvsig.app.ApplicationLocator;
31
import org.gvsig.app.ApplicationManager;
32
import org.gvsig.app.extension.AddLayer;
33
import org.gvsig.app.project.ProjectManager.ProjectEvent;
34
import static org.gvsig.app.project.ProjectNotification.AFTER_LOAD_FROM_FILE;
35
import static org.gvsig.app.project.ProjectNotification.BEFORE_SAVE_TO_FILE;
36
import org.gvsig.tools.ToolsLocator;
37
import org.gvsig.tools.dynobject.DynObject;
38
import org.gvsig.tools.i18n.I18nManager;
39
import org.gvsig.tools.swing.api.ToolsSwingLocator;
40
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
41
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
42
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
43
import org.gvsig.tools.util.BaseListenerSupport;
44
import org.gvsig.vcsgis.app.VCSGisDialogsHelper.VCSGisDialogInfo;
45
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisTabular;
46
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisVectorial;
47
import org.gvsig.vcsgis.lib.VCSGisEntity;
48
import org.gvsig.vcsgis.lib.VCSGisLocator;
49
import org.gvsig.vcsgis.lib.VCSGisManager;
50
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
51
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
52
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
53
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
54
import org.gvsig.vcsgis.swing.VCSGisJCheckoutDataModel;
55
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
56
import org.gvsig.vcsgis.swing.VCSGisJDownloadWorkingcopy;
57
import org.gvsig.vcsgis.swing.VCSGisJExport;
58
import org.gvsig.vcsgis.swing.VCSGisJBackupHistory;
59
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
60
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
61
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
62
import org.gvsig.vcsgis.swing.VCSGisJLogout;
63
import org.gvsig.vcsgis.swing.VCSGisJPrepareWorkingcopy;
64
import org.gvsig.vcsgis.swing.VCSGisJRestoreHistory;
65
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
66
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
67
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
68

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

  
75
    private VCSGisDialogsHelper dialogsHelper;
76

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

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

  
101
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
102
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
103
        manager.restoreWorkspaces(workspaces);
104

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

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

  
140
    }
141

  
142
    @Override
143
    public void execute(String actionCommand) {
144

  
145
        switch (actionCommand) {
146
            case "tools-vcsgis-showchanges":
147
                this.showChangesDialog();
148
                break;
149

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

  
204
    @Override
205
    public boolean isEnabled() {
206
        return true;
207
    }
208

  
209
    @Override
210
    public boolean isVisible() {
211
        return true;
212
    }
213

  
214
//    private void cleanHighligthed() {
215
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
216
//        swingManager.getDefaultServices().cleanHighligthed();
217
//    }
218
//
219

  
220
    private void showAddToWorkspaceDialog() {
221
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
222

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

  
246
    private void showImportHistoryDialog() {
247
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
248

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

  
284
    private void showInitWorkspaceDialog() {
285
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
286

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

  
314
    private void showInitializaRepositoryDialog() {
315
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
316

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

  
344
    private void showCheckoutDialog() {
345
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
346

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

  
374
    private void showExportDialog() {
375
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
376

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

  
404
    private void showChangesDialog() {
405
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
406

  
407
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
408
                "Changes",
409
                swingManager.createChangesPanel(),
410
                "_VCS_Changes"
411
        );
412
        dialog.show();
413
    }
414

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

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

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

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

  
437
    private void showServerEntitiesDialog() {
438
        I18nManager i18nManager = ToolsLocator.getI18nManager();
439
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
440
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
441

  
442
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
443
        winManager.showWindow(
444
                panel.asJComponent(),
445
                i18nManager.getTranslation("_VCS_Server_entities"),
446
                WindowManager.MODE.WINDOW
447
        );
448
    }
449

  
450
    private void showServerHooksDialog() {
451
        I18nManager i18nManager = ToolsLocator.getI18nManager();
452
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
453
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
454

  
455
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
456
        winManager.showWindow(
457
                panel.asJComponent(),
458
                i18nManager.getTranslation("_VCS_Server_hooks"),
459
                WindowManager.MODE.WINDOW
460
        );
461
    }
462

  
463
    private void showCreateResourceTableDialog() {
464
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
465

  
466
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
467
                "CreateResourceTable",
468
                swingManager.createResourceTablePanel(),
469
                "_VCS_Create_resource_table",
470
                "_Create_resource_table_parameters",
471
                "_VCS_Create_resource_table",
472
                () -> {
473
                    I18nManager i18n = ToolsLocator.getI18nManager();
474
                    VCSGisJCreateResourceTable panel = (VCSGisJCreateResourceTable) this.dialogsHelper.getDialog("CreateResourceTable").getPanel();
475
                    panel.createResourceTable();
476
                }
477
        );
478
        dialog.setAutoclose(true);
479
        dialog.show();
480
    }
481

  
482
    private void showLogoutDialog() {
483
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
484

  
485
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
486
                "Logout",
487
                swingManager.createLogoutPanel(),
488
                "_VCS_Logout",
489
                "_Logout_the_current_user_from_a_VCSGis_working_copy",
490
                "_VCS_Logout",
491
                () -> {
492
                    I18nManager i18n = ToolsLocator.getI18nManager();
493
                    VCSGisJLogout panel = (VCSGisJLogout) this.dialogsHelper.getDialog("Logout").getPanel();
494
                    panel.logout();
495
                }
496
        );
497
        dialog.setAutoclose(true);
498
        dialog.show();
499
    }
500

  
501
    private void showCheckoutDataModelDialog() {
502
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
503

  
504
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
505
                "ConnectDataModel",
506
                swingManager.createCheckoutDataModelPanel(),
507
                "_VCS_Connect_to_datamodel",
508
                "_VCS_Connect_to_datamodel",
509
                "_VCS_Connect_to_datamodel",
510
                () -> {
511
                    I18nManager i18n = ToolsLocator.getI18nManager();
512
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
513
                    VCSGisJCheckoutDataModel checkoutDataModelPanel = (VCSGisJCheckoutDataModel) this.dialogsHelper.getDialog("ConnectDataModel").getPanel();
514
                    int r = checkoutDataModelPanel.connectToModel();
515
                    if (r != 0) {
516
                        String dataModel = checkoutDataModelPanel.getDataModel();
517
                        dialogsManager.messageDialog(
518
                                i18n.getTranslation(
519
                                        "_Failed_connect_to_{0}",
520
                                        new String[]{dataModel}
521
                                ),
522
                                i18n.getTranslation("_VCS_Connect_to_datamodel"),
523
                                JOptionPane.WARNING_MESSAGE
524
                        );
525
                    }
526
                }
527
        );
528
        dialog.show();
529
    }
530
   
531
    private void showDownloadWorkingcopyDialog() {
532
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
533

  
534
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("DownloadWorkingcopy",
535
                swingManager.createDownloadWorkingcopyPanel(),
536
                "_VCS_Download_workingcopy",
537
                "_VCS_Download_workingcopy",
538
                "_VCS_Download_workingcopy",
539
                () -> {
540
                    I18nManager i18n = ToolsLocator.getI18nManager();
541
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
542
                    VCSGisJDownloadWorkingcopy downloadWorkingcopyPanel = (VCSGisJDownloadWorkingcopy) this.dialogsHelper.getDialog("DownloadWorkingcopy").getPanel();
543
                    int r = downloadWorkingcopyPanel.download(false);
544
                    if (r != 0) {
545
                        dialogsManager.messageDialog(
546
                                i18n.getTranslation(
547
                                        "_Failed_dowloading_working_copy"
548
                                ),
549
                                i18n.getTranslation("_VCS_Download_working_copy"),
550
                                JOptionPane.WARNING_MESSAGE
551
                        );
552
                    }
553
                }
554
        );
555
        dialog.show();
556
    }
557

  
558
    private void showPrepareWorkingcopyDialog() {
559
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
560

  
561
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("PrepareWorkingcopy",
562
                swingManager.createPrepareWorkingcopyPanel(),
563
                "_VCS_Prepare_workingcopy",
564
                "_VCS_Prepare_workingcopy",
565
                "_VCS_Prepare_workingcopy",
566
                () -> {
567
                    I18nManager i18n = ToolsLocator.getI18nManager();
568
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
569
                    VCSGisJPrepareWorkingcopy prepareWorkingcopyPanel = (VCSGisJPrepareWorkingcopy) this.dialogsHelper.getDialog("PrepareWorkingcopy").getPanel();
570
                    int r = prepareWorkingcopyPanel.prepare();
571
                    if (r != 0) {
572
                        dialogsManager.messageDialog(
573
                                i18n.getTranslation(
574
                                        "_Failed_prepare_working_copy"
575
                                ),
576
                                i18n.getTranslation("_VCS_Prepare_working_copy"),
577
                                JOptionPane.WARNING_MESSAGE
578
                        );
579
                    }
580
                }
581
        );
582
        dialog.show();
583
    }
584

  
585
    private void showBackupHistoryDialog() {
586
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
587

  
588
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("BackupHistory",
589
                swingManager.createBackupHistoryPanel(),
590
                "_VCS_Backup_history",
591
                "_VCS_Backup_history",
592
                "_VCS_Backup_history",
593
                () -> {
594
                    I18nManager i18n = ToolsLocator.getI18nManager();
595
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
596
                    VCSGisJBackupHistory backupHistoryPanel = (VCSGisJBackupHistory) this.dialogsHelper.getDialog("BackupHistory").getPanel();
597
                    int r = backupHistoryPanel.backupHistory();
598
                    if (r != 0) {
599
                        dialogsManager.messageDialog(
600
                                i18n.getTranslation(
601
                                        "_Failed_doing_backup_history"
602
                                ),
603
                                i18n.getTranslation("_VCS_Backup_history"),
604
                                JOptionPane.WARNING_MESSAGE
605
                        );
606
                    }
607
                }
608
        );
609
        dialog.show();
610
    }
611

  
612
    private void showRestoreHistoryDialog() {
613
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
614

  
615
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog("RestoreHistory",
616
                swingManager.createBackupHistoryPanel(),
617
                "_VCS_Restore_history",
618
                "_VCS_Restore_history",
619
                "_VCS_Restore_history",
620
                () -> {
621
                    I18nManager i18n = ToolsLocator.getI18nManager();
622
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
623
                    VCSGisJRestoreHistory restoreHistoryPanel = (VCSGisJRestoreHistory) this.dialogsHelper.getDialog("RestoreHistory").getPanel();
624
                    int r = restoreHistoryPanel.restoreHistory();
625
                    if (r != 0) {
626
                        dialogsManager.messageDialog(
627
                                i18n.getTranslation(
628
                                        "_Failed_restoring_history"
629
                                ),
630
                                i18n.getTranslation("_VCS_Restore_history"),
631
                                JOptionPane.WARNING_MESSAGE
632
                        );
633
                    }
634
                }
635
        );
636
        dialog.show();
637
    }
638

  
639
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.38/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.38/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 refreshDocument(FeatureStore store){
358
        if(store == null){
359
            return;
360
        }
361
        ApplicationManager application = ApplicationLocator.getManager();
362
        ProjectManager projectManager = application.getProjectManager();
363
        Project project = projectManager.getCurrentProject();
364
        
365
        String storeFullName = store.getFullName();
366
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
367
        for (Document doc : views) {
368
            ViewDocument view = (ViewDocument)doc;
369
            for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
370
                FLayer layer = it.next();
371
                if(layer instanceof FLyrVect){
372
                    if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
373
                        view.getMapContext().invalidate();
374
                        break;
375
                    }
376
                }
377
            }
378
        }
379
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
380
        for (Document doc : tables) {
381
            TableDocument table = (TableDocument)doc;
382
            FeatureStore featureStore = table.getStore();
383
            if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
384
                try {
385
                    featureStore.refresh();
386
                } catch (DataException e) {
387
                    LOGGER.warn("Error refreshing table", e);
388
                }
389
            }
390
        }
391
    }
392

  
393
    @Override
394
    public void refreshDocument(Set<FeatureStore> stores){
395
        if(stores == null || stores.isEmpty()){
396
            return;
397
        }
398
        
399
        ApplicationManager application = ApplicationLocator.getManager();
400
        ProjectManager projectManager = application.getProjectManager();
401
        Project project = projectManager.getCurrentProject();
402
        
403
        Set<ViewDocument> viewsToRefresh = new HashSet<>();
404
        for (FeatureStore store : stores) {
405
            String storeFullName = store.getFullName();
406
            List<Document> views = project.getDocuments(ViewManager.TYPENAME);
407
            for (Document doc : views) {
408
                ViewDocument view = (ViewDocument)doc;
409
                for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
410
                    FLayer layer = it.next();
411
                    if(layer instanceof FLyrVect){
412
                        if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
413
                            viewsToRefresh.add(view);
414
                            break;
415
                        }
416
                    }
417
                }
418
            }
419

  
420
            List<Document> tables = project.getDocuments(TableManager.TYPENAME);
421
            for (Document doc : tables) {
422
                TableDocument table = (TableDocument)doc;
423
                FeatureStore featureStore = table.getStore();
424
                if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
425
                    try {
426
                        featureStore.refresh();
427
                    } catch (DataException e) {
428
                        LOGGER.warn("Error refreshing table", e);
429
                    }
430
                }
431
            }
432
        }
433
        
434
        for (ViewDocument viewDocument : viewsToRefresh) {
435
            viewDocument.getMapContext().invalidate();
436
        }
437
        
438
    }
439

  
440
    
441
    public List<ViewDocument> getViewDocumentsHavingAStore(FeatureStore store){
442
        if(store == null){
443
            return null;
444
        }
445
        List<ViewDocument> viewList = new ArrayList<>();
446
        
447
        String storeFullName = store.getFullName();
448
        ApplicationManager application = ApplicationLocator.getManager();
449
        ProjectManager projectManager = application.getProjectManager();
450
        Project project = projectManager.getCurrentProject();
451
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
452
        for (Document doc : views) {
453
            ViewDocument view = (ViewDocument) doc;
454
            for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
455
                FLayer layer = it.next();
456
                if (layer instanceof FLyrVect) {
457
                    if (StringUtils.equals(
458
                            ((FLyrVect) layer).getFeatureStore().getFullName(),
459
                            store.getFullName()
460
                    )) {
461
                        viewList.add(view);
462
                        break;
463
                    }
464
                }
465
            }
466
        }
467
        return viewList;
468
    }
469

  
470
//    @Override
471
//    public void addLayerToActiveView(FeatureStore store, String name) {
472
//        if(store != null && StringUtils.isNotBlank(name)){
473
//            IView view = getActiveView();
474
//            if(view != null){
475
//                ViewDocument viewDocument = view.getViewDocument();
476
//                this.addLayerToView(store, viewDocument, null, name, false);
477
//            }
478
//        }
479
//    }
480
//
481
    @Override
482
    public boolean isThereAnyActiveView() {
483
        return this.getActiveView() != null;
484
    }
485

  
486
    @Override
487
    public void addTableToProject(VCSGisWorkspace ws, FeatureStore store, String tableName) {
488
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
489
        
490
        DocumentManager tableManager = appManager.getProjectManager().getDocumentManager(
491
                TableManager.TYPENAME
492
        );
493

  
494
        Project project = appManager.getCurrentProject();
495
        TableDocument tableDoc = (TableDocument) tableManager.createDocument();
496
        
497
        tableDoc.setName(tableName);
498
        tableDoc.setStore(store);
499
        project.addDocument(tableDoc);
500
    }
501

  
502
    @Override
503
    public Icon getFeatureStoresTreeModelIcon(TreeModel model, Object obj) {
504
        if( model instanceof FeatureStoresTreeModel ) {
505
            return ((FeatureStoresTreeModel)model).getIcon(obj);
506
        }
507
        return null;
508
    }
509
    
510
    @Override
511
    public void connectedToModel(VCSGisWorkspace workspace, String model) {
512
        ApplicationManager application = ApplicationLocator.getApplicationManager();
513
        Project project = application.getCurrentProject();
514
        
515
        Map<String,JsonObject> models = new HashMap<>();
516
        String x = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
517
        if( x != null ) {
518
            JsonArray array = Json.createArray(x);
519
            for (JsonValue value : array) {
520
                JsonObject item = (JsonObject) value;
521
                String modelName = item.getString("model", null);
522
                JDBCServerExplorerParameters wsparameters = (JDBCServerExplorerParameters) Json.toObject(item.getJsonObject("parameters"));
523
                String url = wsparameters.getUrl();
524
                String key = modelName + "("+ url + ")";
525
                models.put(key, item);
526
            }
527
        }
528
        JDBCServerExplorerParameters parameters = workspace.getExplorerParameters();
529
        String url = parameters.getUrl();
530
        String key = model + "("+ url + ")";
531
        JsonObjectBuilder item = Json.createObjectBuilder();
532
        item.add("model", model);
533
        item.add("parameters", parameters);
534
        models.put(key, item.build());
535
        JsonArrayBuilder array = Json.createArrayBuilder();
536
        for (JsonObject n : models.values()) {
537
            array.add(n);
538
        }
539
        project.setProperty(VCSGISMODELS_PROJECT_PROPERTY, array.build().toString());
540
    }
541

  
542
    public void projectLoaded(Project project) {
543
        String x = (String) project.getProperty(VCSGISMODELS_PROJECT_PROPERTY);
544
        if (x == null) {
545
            return;
546
        }
547
        // TODO:    El projecto se guardo cuando estaba conectado a uno o mas
548
        //          modelos de datos... 
549
        //          ¿ Preguntamos al usuario si nos reconectamos automaticamente
550
        //          o nos reconectamos sin decirle nada ?
551
        //          Si preguntamos que recuerde la respuesta.
552

  
553
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
554
        DataManager dataManager = DALLocator.getDataManager();
555
        JsonArray array = Json.createArray(x);
556
        for (JsonValue value : array) {
557
            String modelName = "unkbown";
558
            String url = "unknown";
559
            try {
560
                JsonObject item = (JsonObject) value;
561
                modelName = item.getString("model", null);
562
                JDBCServerExplorerParameters wsparameters = (JDBCServerExplorerParameters) Json.toObject(item.get("parameters"));
563
                url = wsparameters.getUrl();
564

  
565
                JDBCServerExplorer wsexplorer = (JDBCServerExplorer) dataManager.openServerExplorer(wsparameters.getProviderName(), wsparameters);
566
                VCSGisWorkspace workspace = manager.openWorkspace(wsexplorer);
567

  
568
                workspace.registerDataModelRepository(modelName);
569
            } catch (Exception ex) {
570
                LOGGER.warn("Can't register data model '" + modelName + "' of workspace '" + url + "'.", ex);
571
                // TODO: ¿ avisar al usuario o basta con lo que saca en la linea de mensajes del MDI ?
572
            }
573
        }
574
    }
575
    
576
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.38/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/java/org/gvsig/vcsgis/app/VCSGisDialogsHelper.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

  
23
package org.gvsig.vcsgis.app;
24

  
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ComponentAdapter;
27
import java.awt.event.ComponentEvent;
28
import java.util.HashMap;
29
import java.util.Map;
30
import javax.swing.JPanel;
31
import javax.swing.SwingUtilities;
32
import org.gvsig.andami.ui.mdiManager.IWindow;
33
import org.gvsig.andami.ui.mdiManager.MDIManager;
34
import org.gvsig.app.ApplicationLocator;
35
import org.gvsig.tools.ToolsLocator;
36
import org.gvsig.tools.i18n.I18nManager;
37
import org.gvsig.tools.swing.api.Component;
38
import org.gvsig.tools.swing.api.ToolsSwingLocator;
39
import org.gvsig.tools.swing.api.windowmanager.Dialog;
40
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
41
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
42
import org.gvsig.vcsgis.swing.VCSGisPanel;
43
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
45

  
46
/**
47
 *
48
 * @author gvSIG Team
49
 */
50
public class VCSGisDialogsHelper {
51
    private static final Logger LOGGER = LoggerFactory.getLogger(VCSGisDialogsHelper.class);
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff