Revision 3865

View differences:

org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/buildNumber.properties
1
#Thu May 13 07:46:23 CEST 2021
2
buildNumber=26
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/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>org.apache.httpcomponents:httpclient</include>-->
48

  
49
        
50
      </includes>
51
    </dependencySet>
52
  </dependencySets>
53

  
54
</assembly>
55

  
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/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 org.gvsig.vcsgis.app.addlayer.WizardVCSGisVectorial;
25
import org.gvsig.vcsgis.app.addlayer.WizardVCSGisTabular;
26
import java.util.Map;
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.extension.AddLayer;
33
import org.gvsig.fmap.dal.feature.FeatureStore;
34
import org.gvsig.tools.ToolsLocator;
35
import org.gvsig.tools.dynobject.DynObject;
36
import org.gvsig.tools.i18n.I18nManager;
37
import org.gvsig.tools.swing.api.ToolsSwingLocator;
38
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
39
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
40
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
41
import org.gvsig.vcsgis.app.VCSGisDialogsHelper.VCSGisDialogInfo;
42
import org.gvsig.vcsgis.lib.VCSGisEntity;
43
import org.gvsig.vcsgis.lib.VCSGisLocator;
44
import org.gvsig.vcsgis.lib.VCSGisManager;
45
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
46
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspaceDescriptor;
47
import org.gvsig.vcsgis.swing.VCSGisJAddToWorkspace;
48
import org.gvsig.vcsgis.swing.VCSGisJCheckout;
49
import org.gvsig.vcsgis.swing.VCSGisJCheckoutDataModel;
50
import org.gvsig.vcsgis.swing.VCSGisJCreateResourceTable;
51
import org.gvsig.vcsgis.swing.VCSGisJExport;
52
import org.gvsig.vcsgis.swing.VCSGisJImportHistory;
53
import org.gvsig.vcsgis.swing.VCSGisJInitServer;
54
import org.gvsig.vcsgis.swing.VCSGisJInitWorkspace;
55
import org.gvsig.vcsgis.swing.VCSGisJLogout;
56
import org.gvsig.vcsgis.swing.VCSGisJShowServerTableForm;
57
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
58
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
59

  
60
/**
61
 *
62
 * @author gvSIG Team
63
 */
64
public class VCSGisExtension extends Extension {
65

  
66
    private VCSGisDialogsHelper dialogsHelper;
67

  
68
    @Override
69
    public void initialize() {
70
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-server", this);
71
        IconThemeHelper.registerIcon("action", "tools-vcsgis-init-workspace", this);
72
        IconThemeHelper.registerIcon("action", "tools-vcsgis-add-to-workspace", this);
73
        IconThemeHelper.registerIcon("action", "tools-vcsgis-export", this);
74
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout", this);
75
        IconThemeHelper.registerIcon("action", "tools-vcsgis-showchanges", this);
76
        IconThemeHelper.registerIcon("action", "tools-vcsgis-register-workspace", this);
77
        IconThemeHelper.registerIcon("action", "tools-vcsgis-show-revisions", this);
78
        IconThemeHelper.registerIcon("action", "tools-vcsgis-checkout-datamodel", this);
79
        
80
        this.dialogsHelper = new VCSGisDialogsHelper();
81
    }
82

  
83
    @Override
84
    public void postInitialize() {
85
        super.postInitialize();
86
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
87
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
88
        swingManager.setDefaultServices(new VCSGisSwingServicesImpl());
89

  
90
        DynObject pluginProperties = this.getPlugin().getPluginProperties();
91
        Map<String, VCSGisWorkspaceDescriptor> workspaces = (Map) pluginProperties.getDynValue("workspaces");
92
        manager.restoreWorkspaces(workspaces);
93

  
94
        PluginsLocator.getPluginsManager().addShutdownTask(
95
                "VCSGisSave", 
96
                () -> {
97
                    VCSGisManager manager1 = VCSGisLocator.getVCSGisManager();
98
                    DynObject pluginProperties1 = getPlugin().getPluginProperties();
99
                    pluginProperties1.setDynValue("workspaces", manager1.getWorkspaces());
100
                },
101
                false,
102
                100
103
        );
104

  
105
        ApplicationLocator.getManager().registerAddTableWizard(
106
                "VCSGis", 
107
                "VCSGis", 
108
                WizardVCSGisTabular.class
109
        );
110
        AddLayer.addWizard(WizardVCSGisVectorial.class);
111

  
112
    }
113

  
114
    @Override
115
    public void execute(String actionCommand) {
116

  
117
        switch (actionCommand) {
118
            case "tools-vcsgis-showchanges":
119
                this.showChangesDialog();
120
                break;
121

  
122
            case "tools-vcsgis-init-server":
123
                showInitializaRepositoryDialog();
124
                break;
125
            case "tools-vcsgis-init-workspace":
126
                showInitWorkspaceDialog();
127
                break;
128
            case "tools-vcsgis-add-to-workspace":
129
                showAddToWorkspaceDialog();
130
                break;
131
            case "tools-vcsgis-checkout":
132
                showCheckoutDialog();
133
                break;
134
            case "tools-vcsgis-export":
135
                showExportDialog();
136
                break;
137
            case "tools-vcsgis-register-workspace":
138
                showRegisterWorkspaceDialog();
139
                break;
140
            case "tools-vcsgis-show_server-entities":
141
                showServerEntitiesDialog();
142
                break;
143
            case "tools-vcsgis-show_server-hooks":
144
                showServerHooksDialog();
145
                break;
146
            case "tools-vcsgis-show-revisions":
147
                showHistory();
148
                break;
149
            case "tools-vcsgis-import-history":
150
                showImportHistoryDialog();
151
                break;
152
            case "tools-vcsgis-create-resource-table":
153
                showCreateResourceTableDialog();
154
                break;
155
            case "tools-vcsgis-logout":
156
                showLogoutDialog();
157
                break;
158
            case "tools-vcsgis-checkout-datamodel":
159
                showCheckoutDataModelDialog();
160
                break;
161
        }
162
    }
163

  
164
    @Override
165
    public boolean isEnabled() {
166
        return true;
167
    }
168

  
169
    @Override
170
    public boolean isVisible() {
171
        return true;
172
    }
173

  
174
//    private void cleanHighligthed() {
175
//        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
176
//        swingManager.getDefaultServices().cleanHighligthed();
177
//    }
178
//
179

  
180
    private void showAddToWorkspaceDialog() {
181
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
182

  
183
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
184
                "AddToWorkingCopy",
185
                swingManager.createAddToWorkspacePanel(),
186
                "_VCS_Add_to_workspace",
187
                "_VCS_Add_to_workspace",
188
                "_VCS_Add_to_workspace",
189
                () -> {
190
                    I18nManager i18n = ToolsLocator.getI18nManager();
191
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
192
                    VCSGisJAddToWorkspace addToWorkspacePanel = (VCSGisJAddToWorkspace) this.dialogsHelper.getDialog("AddToWorkingCopy").getPanel();
193
                    int r = addToWorkspacePanel.add();
194
                    if (r != 0) {
195
                        FeatureStore featureStore = addToWorkspacePanel.getFeatureStore();
196
                        String targetName = addToWorkspacePanel.getTabletName();
197
                        VCSGisWorkspace workspace = addToWorkspacePanel.getWorkspace();
198
                        dialogsManager.messageDialog(
199
                                i18n.getTranslation(
200
                                        "_Cant_add_{0}_as_{1}_in_{2}",
201
                                        new String[]{
202
                                            featureStore.getName(),
203
                                            targetName,
204
                                            workspace.getLabel()
205
                                        }
206
                                ) + "\n" + workspace.getErrorMessage(r),
207
                                i18n.getTranslation("_VCS_Add_to_workspace"),
208
                                JOptionPane.WARNING_MESSAGE
209
                        );
210
                    }
211
                }
212
        );
213
        dialog.show();
214
    }
215

  
216
    private void showImportHistoryDialog() {
217
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
218

  
219
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
220
                "ImportHistory",
221
                swingManager.createImportHistoryPanel(),
222
                "_VCS_Import_history",
223
                "_VCS_Import_history",
224
                "_VCS_Import_history",
225
                () -> {
226
                    I18nManager i18n = ToolsLocator.getI18nManager();
227
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
228
                    VCSGisJImportHistory importHistoryPanel = (VCSGisJImportHistory) this.dialogsHelper.getDialog("ImportHistory").getPanel();
229
                    int r = importHistoryPanel.importHistory();
230
                    if (r != 0) {
231
                        FeatureStore featureStore = importHistoryPanel.getFeatureStore();
232
                        String targetName = importHistoryPanel.getTabletName();
233
                        VCSGisWorkspace workspace = importHistoryPanel.getWorkspace();
234
                        dialogsManager.messageDialog(
235
                                i18n.getTranslation(
236
                                        "_Cant_add_{0}_as_{1}_in_{2}",
237
                                        new String[]{
238
                                            featureStore.getName(),
239
                                            targetName,
240
                                            workspace.getLabel()
241
                                        }
242
                                ) + "\n" + workspace.getErrorMessage(r),
243
                                i18n.getTranslation("_VCS_Import_history"),
244
                                JOptionPane.WARNING_MESSAGE
245
                        );
246
                    }
247
                }
248
        );
249
        dialog.show();
250
    }
251

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

  
255
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
256
                "InitializeWorkingCopy",
257
                swingManager.createInitWorkspacePanel(),
258
                "_VCS_Initialize_workspace",
259
                "_VCS_Initialize_workspace",
260
                "_VCS_Initialize_workspace",
261
                () -> {
262
                    I18nManager i18n = ToolsLocator.getI18nManager();
263
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
264
                    VCSGisJInitWorkspace panelInitWorkspace = (VCSGisJInitWorkspace) this.dialogsHelper.getDialog("InitializeWorkingCopy").getPanel();
265
                    int r = panelInitWorkspace.initializeWorkspace();
266
                    if (r != 0) {
267
                        dialogsManager.messageDialog(
268
                                i18n.getTranslation(
269
                                        "_Cant_initialize_workspace_{0}",
270
                                        new String[]{panelInitWorkspace.getWorkspaceName()}
271
                                ),
272
                                i18n.getTranslation("_VCS_Initialize_workspace"),
273
                                JOptionPane.WARNING_MESSAGE
274
                        );
275
                    }
276
                }
277
        );
278
        dialog.setAutoclose(true);
279
        dialog.show();
280
    }
281

  
282
    private void showInitializaRepositoryDialog() {
283
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
284

  
285
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
286
                "InitializeRepository",
287
                swingManager.createInitRepositoryPanel(),
288
                "_VCS_Initialize_repository",
289
                "_VCS_Initialize_repository",
290
                "_VCS_Initialize_repository",
291
                () -> {
292
                    I18nManager i18n = ToolsLocator.getI18nManager();
293
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
294
                    VCSGisJInitServer panel = (VCSGisJInitServer) this.dialogsHelper.getDialog("InitializeRepository").getPanel();
295
                    int r = panel.initialize();
296
                    if (r != 0) {
297
                        dialogsManager.messageDialog(
298
                                i18n.getTranslation(
299
                                        "_Cant_initialize_server_{0}",
300
                                        new String[]{panel.getConnectionLabel()}
301
                                ),
302
                                i18n.getTranslation("_VCS_Initialize_repository"),
303
                                JOptionPane.WARNING_MESSAGE
304
                        );
305
                    }
306
                }
307
        );
308
        dialog.setAutoclose(true);
309
        dialog.show();
310
    }
311

  
312
    private void showCheckoutDialog() {
313
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
314

  
315
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
316
                "Checkout",
317
                swingManager.createCheckoutPanel(),
318
                "_VCS_Checkout",
319
                "_VCS_Checkout",
320
                "_VCS_Checkout",
321
                () -> {
322
                    I18nManager i18n = ToolsLocator.getI18nManager();
323
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
324
                    VCSGisJCheckout checkoutPanel = (VCSGisJCheckout) this.dialogsHelper.getDialog("Checkout").getPanel();
325
                    int r = checkoutPanel.checkout();
326
                    if (r != 0) {
327
                        VCSGisEntity entity = checkoutPanel.getTable();
328
                        dialogsManager.messageDialog(
329
                                i18n.getTranslation(
330
                                        "_Failed_checkout_of_{0}",
331
                                        new String[]{entity.toString()}
332
                                ),
333
                                i18n.getTranslation("_Checkout"),
334
                                JOptionPane.WARNING_MESSAGE
335
                        );
336
                    }
337
                }
338
        );
339
        dialog.show();
340
    }
341

  
342
    private void showExportDialog() {
343
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
344

  
345
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
346
                "Export",
347
                swingManager.createExportPanel(),
348
                "_VCS_Export",
349
                "_Export_to_a_local_table_a_table_of_the_repository",
350
                "_VCS_Export",
351
                () -> {
352
                    I18nManager i18n = ToolsLocator.getI18nManager();
353
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
354
                    VCSGisJExport exportPanel = (VCSGisJExport) this.dialogsHelper.getDialog("Export").getPanel();
355
                    int r = exportPanel.export();
356
                    if (r != 0) {
357
                        VCSGisEntity entity = exportPanel.getTable();
358
                        dialogsManager.messageDialog(
359
                                i18n.getTranslation(
360
                                        "_Failed_export_of_{0}",
361
                                        new String[]{entity.toString()}
362
                                ),
363
                                i18n.getTranslation("_VCSGis_Export"),
364
                                JOptionPane.WARNING_MESSAGE
365
                        );
366
                    }
367
                }
368
        );
369
        dialog.show();
370
    }
371

  
372
    private void showChangesDialog() {
373
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
374

  
375
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
376
                "Changes",
377
                swingManager.createChangesPanel(),
378
                "_VCS_Changes"
379
        );
380
        dialog.show();
381
    }
382

  
383
    private void showHistory() {
384
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
385

  
386
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
387
                "Revisions",
388
                swingManager.createRevisionsPanel(),
389
                "_VCS_Revisions"
390
        );
391
        dialog.show();
392
    }
393

  
394
    private void showRegisterWorkspaceDialog() {
395
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
396

  
397
        final VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
398
                "RegisterWorkingCopies",
399
                swingManager.createRegisterWorkspacePanel(),
400
                "_VCS_Register_workspace"
401
        );
402
        dialog.show();
403
    }
404

  
405
    private void showServerEntitiesDialog() {
406
        I18nManager i18nManager = ToolsLocator.getI18nManager();
407
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
408
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
409

  
410
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_ENTITIES");
411
        winManager.showWindow(
412
                panel.asJComponent(),
413
                i18nManager.getTranslation("_VCS_Server_entities"),
414
                WindowManager.MODE.WINDOW
415
        );
416
    }
417

  
418
    private void showServerHooksDialog() {
419
        I18nManager i18nManager = ToolsLocator.getI18nManager();
420
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
421
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
422

  
423
        final VCSGisJShowServerTableForm panel = swingManager.createShowTableServerFormPanel("VCSGIS_HOOKS");
424
        winManager.showWindow(
425
                panel.asJComponent(),
426
                i18nManager.getTranslation("_VCS_Server_hooks"),
427
                WindowManager.MODE.WINDOW
428
        );
429
    }
430

  
431
    private void showCreateResourceTableDialog() {
432
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
433

  
434
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
435
                "CreateResourceTable",
436
                swingManager.createResourceTablePanel(),
437
                "_VCS_Create_resource_table",
438
                "_Create_resource_table_parameters",
439
                "_VCS_Create_resource_table",
440
                () -> {
441
                    I18nManager i18n = ToolsLocator.getI18nManager();
442
                    VCSGisJCreateResourceTable panel = (VCSGisJCreateResourceTable) this.dialogsHelper.getDialog("CreateResourceTable").getPanel();
443
                    panel.createResourceTable();
444
                }
445
        );
446
        dialog.setAutoclose(true);
447
        dialog.show();
448
    }
449

  
450
    private void showLogoutDialog() {
451
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
452

  
453
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
454
                "Logout",
455
                swingManager.createLogoutPanel(),
456
                "_VCS_Logout",
457
                "_Logout_the_current_user_from_a_VCSGis_working_copy",
458
                "_VCS_Logout",
459
                () -> {
460
                    I18nManager i18n = ToolsLocator.getI18nManager();
461
                    VCSGisJLogout panel = (VCSGisJLogout) this.dialogsHelper.getDialog("Logout").getPanel();
462
                    panel.logout();
463
                }
464
        );
465
        dialog.setAutoclose(true);
466
        dialog.show();
467
    }
468

  
469
    private void showCheckoutDataModelDialog() {
470
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
471

  
472
        VCSGisDialogInfo dialog = this.dialogsHelper.getOrCreateDialog(
473
                "ConnectDataModel",
474
                swingManager.createCheckoutDataModelPanel(),
475
                "_VCS_Connect_to_datamodel",
476
                "_VCS_Connect_to_datamodel",
477
                "_VCS_Connect_to_datamodel",
478
                () -> {
479
                    I18nManager i18n = ToolsLocator.getI18nManager();
480
                    ThreadSafeDialogsManager dialogsManager = ToolsSwingLocator.getThreadSafeDialogsManager();
481
                    VCSGisJCheckoutDataModel checkoutDataModelPanel = (VCSGisJCheckoutDataModel) this.dialogsHelper.getDialog("ConnectDataModel").getPanel();
482
                    int r = checkoutDataModelPanel.checkout();
483
                    if (r != 0) {
484
                        String dataModel = checkoutDataModelPanel.getDataModel();
485
                        dialogsManager.messageDialog(
486
                                i18n.getTranslation(
487
                                        "_Failed_connect_to_{0}",
488
                                        new String[]{dataModel}
489
                                ),
490
                                i18n.getTranslation("_VCS_Connect_to_datamodel"),
491
                                JOptionPane.WARNING_MESSAGE
492
                        );
493
                    }
494
                }
495
        );
496
        dialog.show();
497
    }
498
   
499
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/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 javax.swing.event.TreeModelListener;
9
import javax.swing.tree.TreeModel;
10
import javax.swing.tree.TreePath;
11
import org.gvsig.app.ApplicationLocator;
12
import org.gvsig.fmap.dal.DataStore;
13
import org.gvsig.fmap.mapcontext.layers.FLayer;
14
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
15
import org.gvsig.fmap.mapcontext.layers.vectorial.VectorLayer;
16
import org.gvsig.fmap.mapcontrol.LayersTreeModel;
17
import org.gvsig.tools.evaluator.Evaluator;
18
import org.gvsig.tools.evaluator.EvaluatorData;
19
import org.gvsig.tools.evaluator.EvaluatorException;
20
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
21
import org.gvsig.tools.swing.api.ListElement;
22

  
23

  
24
/**
25
 *
26
 * @author fdiaz
27
 */
28
public class FeatureStoresTreeModel implements TreeModel {
29

  
30
    private final LayersTreeModel delegated;
31
    private final ListElement<Object> root;
32
    
33
    public FeatureStoresTreeModel() {
34
        this.delegated = (LayersTreeModel) ApplicationLocator.getApplicationManager().createProjectLayersTreeModel();
35
        this.delegated.setFilter(new Evaluator() {
36
            @Override
37
            public Object evaluate(EvaluatorData data) throws EvaluatorException {
38
                FLayer layer = (FLayer) data.getDataValue("layer");
39
                return (layer instanceof VectorLayer);
40
            }
41

  
42
            @Override
43
            public String getName() {
44
                return "VectorialLayersFilter";
45
            }
46

  
47
            @Override
48
            public String getDescription() {
49
                return null;
50
            }
51

  
52
            @Override
53
            public String getSQL() {
54
                return null;
55
            }
56

  
57
            @Override
58
            public EvaluatorFieldsInfo getFieldsInfo() {
59
                return null;
60
            }
61
        });
62
        this.root = new ListElement<>("Project", this.delegated.getRoot());
63
    }
64
    
65
    private Object getNode(Object value) {
66
        if( value instanceof ListElement ) {
67
            return ((ListElement) value).getValue();
68
        }
69
        return value;
70
    }
71
    
72
    @Override
73
    public Object getRoot() {
74
        return this.root;
75
    }
76

  
77
    @Override
78
    public Object getChild(Object parent, int index) {
79
        parent = this.getNode(parent);
80
        Object x = this.delegated.getChild(parent, index);
81
        if( x instanceof VectorLayer ) {
82
            SingleLayer layer = (SingleLayer)x;
83
            DataStore store = (DataStore) layer.getDataStore();
84
            return store;
85
        }
86
        return x;
87
    }
88

  
89
    @Override
90
    public int getChildCount(Object parent) {
91
        parent = this.getNode(parent);
92
        return this.delegated.getChildCount(parent);
93
    }
94

  
95
    @Override
96
    public boolean isLeaf(Object node) {
97
        node = this.getNode(node);
98
        return this.delegated.isLeaf(node);
99
    }
100

  
101
    @Override
102
    public void valueForPathChanged(TreePath path, Object newValue) {
103
        this.delegated.valueForPathChanged(path, newValue);
104
    }
105

  
106
    @Override
107
    public int getIndexOfChild(Object parent, Object child) {
108
        parent = this.getNode(parent);
109
        return this.delegated.getIndexOfChild(parent, child);
110
    }
111

  
112
    @Override
113
    public void addTreeModelListener(TreeModelListener l) {
114
        this.delegated.addTreeModelListener(l);
115
    }
116

  
117
    @Override
118
    public void removeTreeModelListener(TreeModelListener l) {
119
        this.delegated.removeTreeModelListener(l);
120
    }
121
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/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.swing.ComboBoxModel;
17
import javax.swing.DefaultComboBoxModel;
18
import javax.swing.DefaultListModel;
19
import javax.swing.ListModel;
20
import javax.swing.tree.TreeModel;
21
import org.apache.commons.lang.StringUtils;
22
import org.gvsig.andami.PluginsLocator;
23
import org.gvsig.app.ApplicationLocator;
24
import org.gvsig.app.ApplicationManager;
25
import org.gvsig.app.project.Project;
26
import org.gvsig.app.project.ProjectManager;
27
import org.gvsig.app.project.documents.Document;
28
import org.gvsig.app.project.documents.DocumentManager;
29
import org.gvsig.app.project.documents.table.TableDocument;
30
import org.gvsig.app.project.documents.table.TableManager;
31
import org.gvsig.app.project.documents.view.ViewDocument;
32
import org.gvsig.app.project.documents.view.ViewManager;
33
import org.gvsig.app.project.documents.view.gui.IView;
34
import org.gvsig.fmap.dal.exception.DataException;
35
import org.gvsig.fmap.dal.feature.FeatureStore;
36
import org.gvsig.fmap.geom.Geometry;
37
import org.gvsig.fmap.geom.aggregate.MultiCurve;
38
import org.gvsig.fmap.geom.aggregate.MultiPoint;
39
import org.gvsig.fmap.geom.aggregate.MultiSurface;
40
import org.gvsig.fmap.geom.primitive.Curve;
41
import org.gvsig.fmap.geom.primitive.Point;
42
import org.gvsig.fmap.geom.primitive.Surface;
43
import org.gvsig.fmap.mapcontext.MapContext;
44
import org.gvsig.fmap.mapcontext.MapContextLocator;
45
import org.gvsig.fmap.mapcontext.layers.FLayer;
46
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
47
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer;
48
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
49
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol_v2;
50
import org.gvsig.tools.ToolsLocator;
51
import org.gvsig.tools.i18n.I18nManager;
52
import org.gvsig.tools.util.LabeledValue;
53
import org.gvsig.tools.util.LabeledValueImpl;
54
import org.gvsig.vcsgis.lib.VCSGisLocator;
55
import org.gvsig.vcsgis.lib.VCSGisManager;
56
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
57
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
58
import org.gvsig.vcsgis.swing.VCSGisSwingServices;
59
import org.slf4j.LoggerFactory;
60

  
61
/**
62
 *
63
 * @author gvSIG Team
64
 */
65
@SuppressWarnings("UseSpecificCatch")
66
public class VCSGisSwingServicesImpl implements VCSGisSwingServices {
67
    
68
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(VCSGisSwingServicesImpl.class);
69

  
70
    private Map<Integer,ISymbol> highlightedPolygonSymbols;
71
    private Map<Integer,ISymbol> highlightedLineSymbols;
72
    private Map<Integer,ISymbol> highlightedPointSymbols;
73

  
74

  
75
    @Override
76
    public TreeModel getFeatureStoresTreeModel() {
77
        return new FeatureStoresTreeModel();
78
    }
79

  
80
    @Override
81
    public ListModel getFeatureStoresListModel() {
82
        DefaultListModel<FeatureStore> model = new DefaultListModel();
83
        
84
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
85
        Project project = appManager.getCurrentProject();
86
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
87
        for (Document document : tables) {
88
            TableDocument table = (TableDocument) document;
89
            model.addElement(table.getFeatureStore());
90
        }
91
        
92
        return model;
93
    }
94

  
95
    @Override
96
    public void addTableToProject(VCSGisWorkspace ws, FeatureStore store) {
97
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
98
        
99
        DocumentManager tableManager = appManager.getProjectManager().getDocumentManager(
100
                TableManager.TYPENAME
101
        );
102

  
103
        Project project = appManager.getCurrentProject();
104
        TableDocument tableDoc = (TableDocument) tableManager.createDocument();
105
        
106
        tableDoc.setName(store.getName());
107
        tableDoc.setStore(store);
108
        project.addDocument(tableDoc);
109
    }
110

  
111
    @Override
112
    public ComboBoxModel getViewDocumentsComboBoxModel() {
113
        I18nManager i18n = ToolsLocator.getI18nManager();
114
        DefaultComboBoxModel<LabeledValue> model = new DefaultComboBoxModel();
115
        model.addElement(new LabeledValueImpl(i18n.getTranslation("_Select_a_view"), null));
116
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
117
        Project project = appManager.getCurrentProject();
118
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
119
        for (Document document : views) {
120
            ViewDocument view = (ViewDocument) document;
121
            model.addElement(new LabeledValueImpl(view.getName(), view));
122
        }
123
        return model;
124
    }
125

  
126
    @Override
127
    public void addLayerToView(FeatureStore store, LabeledValue labeledView) {
128
        addLayerToView(store, labeledView, null);
129
    }
130

  
131
    @Override
132
    public void addLayerToView(FeatureStore store, LabeledValue labeledView, String name) {
133
        if (labeledView.getValue() == null){
134
            return;
135
        }
136
        ViewDocument view = (ViewDocument) labeledView.getValue();
137
        addLayerToView(store, view, name);
138
    }
139
        
140

  
141
    private void addLayerToView(FeatureStore store, ViewDocument view, String name) {
142
        try {
143
            String layerName = name;
144
            if(StringUtils.isBlank(layerName)){
145
                layerName = store.getName();
146
            }
147
            FLayer layer = MapContextLocator.getMapContextManager().createLayer(layerName, store);
148
            view.getMapContext().getLayers().add(layer);
149
        } catch (Exception ex) {
150
            VCSGisManager manager = VCSGisLocator.getManager();
151
            throw new VCSGisRuntimeException(
152
                    VCSGisManager.ERR_CANT_ADD_LAYER, 
153
                    manager.getErrorMessage(VCSGisManager.ERR_CANT_ADD_LAYER),
154
                    ex);
155
        }
156
    }
157
    
158
    @Override
159
    public void highlight(int mode, Geometry geom) {
160
        highlight(mode, geom, null);
161
    }
162

  
163
    @Override
164
    public void highlight(int mode, Geometry geom, FeatureStore store) {
165
        if (this.highlightedPointSymbols == null) {
166
            this.highlightedPointSymbols = new HashMap<>();
167
            this.highlightedLineSymbols = new HashMap<>();
168
            this.highlightedPolygonSymbols = new HashMap<>();
169
            try {
170
                File pluginfolder = PluginsLocator.getManager().getPlugin(this).getPluginDirectory();
171
                File folder = new File(pluginfolder, "symbols");
172
                ISymbol[] symbols = MapContextLocator.getSymbolManager().loadSymbols(folder);
173
                for (ISymbol symbol : symbols) {
174
                    if (symbol instanceof ISymbol_v2) {
175
                        String symbolid = ((ISymbol_v2) symbol).getID();
176
                        switch(symbolid) {
177
                            case "vcsgis-repository-polygon":
178
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
179
                                break;
180
                            case "vcsgis-repository-line":
181
                                this.highlightedLineSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
182
                                break;
183
                            case "vcsgis-repository-point":
184
                                this.highlightedPointSymbols.put(HIGHLIGHT_REPOSITORY, symbol);
185
                                break;
186
 
187
                            case "vcsgis-workspace-polygon":
188
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
189
                                break;
190
                            case "vcsgis-workspace-line":
191
                                this.highlightedLineSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
192
                                break;
193
                            case "vcsgis-workspace-point":
194
                                this.highlightedPointSymbols.put(HIGHLIGHT_WORKSPACE, symbol);
195
                                break;
196
                            
197
                            case "vcsgis-workspace-previous-polygon":
198
                                this.highlightedPolygonSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
199
                                break;
200
                            case "vcsgis-workspace-previous-line":
201
                                this.highlightedLineSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
202
                                break;
203
                            case "vcsgis-workspace-previous-point":
204
                                this.highlightedPointSymbols.put(HIGHLIGHT_WORKSPACE_PREVIOUS, symbol);
205
                                break;
206
                        }
207
                    }
208
                }
209
            } catch (Exception ex) {
210
            }
211
        }
212
        List<ViewDocument> viewList = null;
213
        if(store == null){
214
            ApplicationManager application = ApplicationLocator.getManager();
215
            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
216
            viewList = new ArrayList<>();
217
            viewList.add(viewdoc);
218
        } else {
219
            viewList = getViewDocumentsHavingAStore(store);
220
        }
221
        for (ViewDocument viewDoc : viewList) {
222
            MapContext mapContext = viewDoc.getMapContext();
223
            GraphicLayer gl = mapContext.getGraphicsLayer();
224
            if (geom != null) {
225
                ISymbol symbol = null;
226
                if (geom instanceof Point || geom instanceof MultiPoint) {
227
                    symbol = this.highlightedPointSymbols.get(mode);
228
                } else if (geom instanceof Curve || geom instanceof MultiCurve) {
229
                    symbol = this.highlightedLineSymbols.get(mode);
230
                } else if (geom instanceof Surface || geom instanceof MultiSurface) {
231
                    symbol = this.highlightedPolygonSymbols.get(mode);
232
                }
233
                if (symbol != null) {
234
                    int symbolid = gl.getSymbolId(symbol);
235
                    if (symbolid < 0) {
236
                        gl.addSymbol(symbol);
237
                        symbolid = gl.getSymbolId(symbol);
238
                    }
239
                    gl.addGraphic("vcsgis-highlighted", geom, symbolid);
240
                }
241
            }
242
            mapContext.invalidate();
243
        }
244
    }
245

  
246
    @Override
247
    public void centerActiveViewToGeometry(Geometry geometry) {
248
        if(geometry != null){
249
            IView view = getActiveView();
250
            if(view != null){
251
                ViewDocument viewDocument = view.getViewDocument();
252
                viewDocument.center(geometry.getEnvelope());
253
            }
254
        }
255
    }
256

  
257
    @Override
258
    public void centerViewsHavingAStoreToGeometry(FeatureStore store, Geometry geometry) {
259
        if(geometry != null){
260
            List<ViewDocument> views = getViewDocumentsHavingAStore(store);
261
            for (ViewDocument view : views) {
262
                if(view != null){
263
                    view.center(geometry.getEnvelope());
264
                }
265
            }
266
        }
267
    }
268

  
269
    @Override
270
    public void zoomActiveViewToGeometry(Geometry geometry) {
271
        if(geometry != null){
272
            IView view = getActiveView();
273
            if(view != null){
274
                ViewDocument viewDocument = view.getViewDocument();
275
                viewDocument.getMapContext().getViewPort().setEnvelope(geometry.getEnvelope());
276
            }
277
        }
278
    }
279

  
280
    @Override
281
    public void zoomViewsHavingAStoreToGeometry(FeatureStore store, Geometry geometry) {
282
        if(geometry != null){
283
            List<ViewDocument> views = getViewDocumentsHavingAStore(store);
284
            for (ViewDocument view : views) {
285
                if(view != null){
286
                    view.getMapContext().getViewPort().setEnvelope(geometry.getEnvelope());
287
                }
288
            }
289
        }
290
    }
291

  
292
    private IView getActiveView() {
293
        ApplicationManager application = ApplicationLocator.getManager();
294
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
295
        return view;
296
    }
297

  
298
    @Override
299
    public void cleanHighligthed() {
300
        ApplicationManager application = ApplicationLocator.getManager();
301
        ProjectManager projectManager = application.getProjectManager();
302
        Project project = projectManager.getCurrentProject();
303
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
304
        for (Document doc : views) {
305
            ViewDocument viewdoc = (ViewDocument)doc;
306
            MapContext mapContext = viewdoc.getMapContext();
307
            GraphicLayer gl = mapContext.getGraphicsLayer();
308
            //FIXME: Refrescar el mapContext solo cuando se ha borrado el graphics  
309
            if(gl.removeGraphics("vcsgis-highlighted")) {
310
                mapContext.invalidate();
311
            }
312
        }
313
    }
314
    
315
    @Override
316
    public void cleanActiveViewHighligthed() {
317
        ApplicationManager application = ApplicationLocator.getManager();
318
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
319
        if(viewdoc != null){
320
            MapContext mapContext = viewdoc.getMapContext();
321
            GraphicLayer gl = mapContext.getGraphicsLayer();
322
            gl.removeGraphics("vcsgis-highlighted");
323
            mapContext.invalidate();
324
        }
325
    }
326
    
327
    @Override
328
    public void refreshDocument(FeatureStore store){
329
        if(store == null){
330
            return;
331
        }
332
        ApplicationManager application = ApplicationLocator.getManager();
333
        ProjectManager projectManager = application.getProjectManager();
334
        Project project = projectManager.getCurrentProject();
335
        
336
        String storeFullName = store.getFullName();
337
        List<Document> views = project.getDocuments(ViewManager.TYPENAME);
338
        for (Document doc : views) {
339
            ViewDocument view = (ViewDocument)doc;
340
            for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
341
                FLayer layer = it.next();
342
                if(layer instanceof FLyrVect){
343
                    if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
344
                        view.getMapContext().invalidate();
345
                        break;
346
                    }
347
                }
348
            }
349
        }
350
        List<Document> tables = project.getDocuments(TableManager.TYPENAME);
351
        for (Document doc : tables) {
352
            TableDocument table = (TableDocument)doc;
353
            FeatureStore featureStore = table.getStore();
354
            if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
355
                try {
356
                    featureStore.refresh();
357
                } catch (DataException e) {
358
                    LOGGER.warn("Error refreshing table", e);
359
                }
360
            }
361
        }
362
    }
363

  
364
    @Override
365
    public void refreshDocument(Set<FeatureStore> stores){
366
        if(stores == null || stores.isEmpty()){
367
            return;
368
        }
369
        
370
        ApplicationManager application = ApplicationLocator.getManager();
371
        ProjectManager projectManager = application.getProjectManager();
372
        Project project = projectManager.getCurrentProject();
373
        
374
        Set<ViewDocument> viewsToRefresh = new HashSet<>();
375
        for (FeatureStore store : stores) {
376
            String storeFullName = store.getFullName();
377
            List<Document> views = project.getDocuments(ViewManager.TYPENAME);
378
            for (Document doc : views) {
379
                ViewDocument view = (ViewDocument)doc;
380
                for (Iterator<FLayer> it = view.deepiterator(); it.hasNext();) {
381
                    FLayer layer = it.next();
382
                    if(layer instanceof FLyrVect){
383
                        if( StringUtils.equals(((FLyrVect) layer).getFeatureStore().getFullName(), storeFullName)){
384
                            viewsToRefresh.add(view);
385
                            break;
386
                        }
387
                    }
388
                }
389
            }
390

  
391
            List<Document> tables = project.getDocuments(TableManager.TYPENAME);
392
            for (Document doc : tables) {
393
                TableDocument table = (TableDocument)doc;
394
                FeatureStore featureStore = table.getStore();
395
                if( StringUtils.equals(featureStore.getFullName(), storeFullName)){
396
                    try {
397
                        featureStore.refresh();
398
                    } catch (DataException e) {
399
                        LOGGER.warn("Error refreshing table", e);
400
                    }
401
                }
402
            }
403
        }
404
        
405
        for (ViewDocument viewDocument : viewsToRefresh) {
406
            viewDocument.getMapContext().invalidate();
407
        }
408
        
409
    }
410

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

  
441
    @Override
442
    public void addLayerToActiveView(FeatureStore store, String name) {
443
        if(store != null && StringUtils.isNotBlank(name)){
444
            IView view = getActiveView();
445
            if(view != null){
446
                ViewDocument viewDocument = view.getViewDocument();
447
                this.addLayerToView(store, viewDocument, name);
448
            }
449
        }
450
    }
451

  
452
    @Override
453
    public boolean isThereAnyActiveView() {
454
        return this.getActiveView() != null;
455
    }
456

  
457
    @Override
458
    public void addTableToProject(VCSGisWorkspace ws, FeatureStore store, String tableName) {
459
        ApplicationManager appManager = ApplicationLocator.getApplicationManager();
460
        
461
        DocumentManager tableManager = appManager.getProjectManager().getDocumentManager(
462
                TableManager.TYPENAME
463
        );
464

  
465
        Project project = appManager.getCurrentProject();
466
        TableDocument tableDoc = (TableDocument) tableManager.createDocument();
467
        
468
        tableDoc.setName(tableName);
469
        tableDoc.setStore(store);
470
        project.addDocument(tableDoc);
471
    }
472

  
473
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/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.SwingUtilities;
31
import org.gvsig.tools.ToolsLocator;
32
import org.gvsig.tools.i18n.I18nManager;
33
import org.gvsig.tools.swing.api.Component;
34
import org.gvsig.tools.swing.api.ToolsSwingLocator;
35
import org.gvsig.tools.swing.api.windowmanager.Dialog;
36
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
37
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
38
import org.gvsig.vcsgis.swing.VCSGisPanel;
39
import org.slf4j.Logger;
40
import org.slf4j.LoggerFactory;
41

  
42
/**
43
 *
44
 * @author gvSIG Team
45
 */
46
public class VCSGisDialogsHelper {
47
    private static final Logger LOGGER = LoggerFactory.getLogger(VCSGisDialogsHelper.class);
48

  
49
    public static class VCSGisDialogInfo {
50

  
51
        private VCSGisPanel panel;
52
        private final String name;
53
        private final String title;
54
        private String header;
55
        private String okLabel;
56
        private boolean closed;
57
        private Runnable action;
58
        private Dialog dialog;
59
        private boolean autoclose;
60

  
61
        public VCSGisDialogInfo(String name, VCSGisPanel thePanel, String title) {
62
            this.name = name;
63
            this.panel = thePanel;
64
            this.title = title;
65
            this.closed = true;
66
            this.autoclose = false;
67

  
68
            this.panel.asJComponent().addComponentListener(new ComponentAdapter() {
69
                @Override
70
                public void componentHidden(ComponentEvent e) {
71
                    closed = true;
72
                }
73
            });
74
        }
75
        
76
        public VCSGisDialogInfo(String name, VCSGisPanel thePanel, String title, String header, String okLabel) {
77
            this(name, thePanel, title);
78
            this.header = header;
79
            this.okLabel = okLabel;
80
        }
81

  
82
        private void performDialogAction() {
83
            action.run();
84
        }
85

  
86
        public void setAction(Runnable action) {
87
            this.action = action;
88
        }
89

  
90
        public Component getPanel() {
91
            return this.panel;
92
        }
93

  
94
        public boolean isClosed() {
95
            return this.closed;
96
        }
97

  
98
        public String getName() {
99
            return this.name;
100
        }
101

  
102
        public void setAutoclose(boolean autoclose) {
103
            this.autoclose = autoclose;
104
        }
105
        
106
        private Dialog createDialog() {
107
            I18nManager i18n = ToolsLocator.getI18nManager();
108
            WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
109

  
110
            Dialog theDialog = winManager.createDialog(
111
                    this.panel.asJComponent(),
112
                    i18n.getTranslation(title),
113
                    i18n.getTranslation(header),
114
                    WindowManager_v2.BUTTONS_OK_CANCEL
115
            );
116
            theDialog.setAutoclose(false);
117

  
118
            this.panel.setDialog(theDialog);
119
            theDialog.setButtonLabel(
120
                    WindowManager_v2.BUTTON_OK,
121
                    i18n.getTranslation(okLabel)
122
            );
123
            theDialog.setButtonLabel(
124
                    WindowManager_v2.BUTTON_CANCEL,
125
                    i18n.getTranslation("_Close")
126
            );
127
            if (this.panel.isProcessing()) {
128
                theDialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
129
            }
130
            theDialog.addActionListener((ActionEvent e) -> {
131
                switch (theDialog.getAction()) {
132
                    case WindowManager_v2.BUTTON_OK:
133
                        Thread task = new Thread(() -> {
134
                            if(this.autoclose){
135
                                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
136
                            }
137
                            performDialogAction();
138
                            if(this.autoclose){
139
                                close();
140
                            }
141
                        }, "VCSGis" + name);
142
                        task.start();
143
                        break;
144
                    case WindowManager_v2.BUTTON_CANCEL:
145
                        close();
146
                        break;
147
                }
148
            });
149
            return theDialog;
150
        }
151

  
152
        public void show() {
153
            if (!this.closed) {
154
                return;
155
            }
156
            this.closed = false;
157
            if( this.action==null ) {
158
                I18nManager i18n = ToolsLocator.getI18nManager();
159
                WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
160
                winManager.showWindow(
161
                        this.panel.asJComponent(),
162
                        i18n.getTranslation(this.title),
163
                        WindowManager.MODE.WINDOW
164
                );
165
            } else {
166
                this.dialog = this.createDialog();
167
                this.dialog.show(WindowManager.MODE.WINDOW);
168
            }
169
        }
170
        
171
        private void close() {
172
            if (this.closed || this.dialog == null) {
173
                this.panel = null;
174
                this.dialog = null;
175
                return;
176
            }
177
            if(!SwingUtilities.isEventDispatchThread()){
178
                SwingUtilities.invokeLater(this::close);
179
                return;
180
            }
181
            this.dialog.asJComponent().setVisible(false);     
182
            this.panel = null;
183
            this.dialog = null;
184
        }
185
    }
186

  
187
    private Map<String, VCSGisDialogInfo> dialogsInfo;
188

  
189
    public VCSGisDialogInfo getDialog(String name) {
190
        if (this.dialogsInfo == null) {
191
            return null;
192
        }
193
        VCSGisDialogInfo info = this.dialogsInfo.get(name);
194
        return info;
195
    }
196

  
197
    public VCSGisDialogInfo getOrCreateDialog(String name, VCSGisPanel panel, String title, String header, String okLabel, Runnable action) {
198
        if (this.dialogsInfo == null) {
199
            this.dialogsInfo = new HashMap<>();
200
        }
201
        VCSGisDialogInfo info = this.dialogsInfo.get(name);
202
        if (info == null || info.isClosed() ) {
203
            info = new VCSGisDialogInfo(name, panel, title, header, okLabel);
204
            info.setAction(action);
205
            this.dialogsInfo.put(name, info);
206
        }
207
        return info;
208
    }
209

  
210
    public VCSGisDialogInfo getOrCreateDialog(String name, VCSGisPanel panel, String title) {
211
        if (this.dialogsInfo == null) {
212
            this.dialogsInfo = new HashMap<>();
213
        }
214
        VCSGisDialogInfo info = this.dialogsInfo.get(name);
215
        if (info == null || info.isClosed()) {
216
            info = new VCSGisDialogInfo(name, panel, title);
217
            this.dialogsInfo.put(name, info);
218
        }
219
        return info;
220
    }
221

  
222
}
org.gvsig.vcsgis/tags/org.gvsig.vcsgis-1.0.19/org.gvsig.vcsgis.app/org.gvsig.vcsgis.app.mainplugin/src/main/java/org/gvsig/vcsgis/app/addlayer/WizardVCSGisVectorial.java
1
package org.gvsig.vcsgis.app.addlayer;
2

  
3
import java.awt.event.ActionEvent;
4
import java.util.ArrayList;
5
import java.util.Arrays;
6
import java.util.List;
7
import java.util.Map;
8
import javax.swing.SwingUtilities;
9
import org.apache.commons.codec.binary.Hex;
10
import org.apache.commons.lang3.StringUtils;
11
import org.gvsig.andami.PluginServices;
12
import org.gvsig.andami.PluginsLocator;
13
import org.gvsig.andami.PluginsManager;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.DataManager;
16
import org.gvsig.fmap.dal.DataStore;
17
import org.gvsig.fmap.dal.DataStoreParameters;
18
import org.gvsig.fmap.dal.exception.DataException;
19
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
20
import org.gvsig.fmap.dal.feature.FeatureSet;
21
import org.gvsig.fmap.dal.feature.FeatureStore;
22
import org.gvsig.fmap.dal.store.db.DBStoreParameters;
23
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer;
24
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
25
import org.gvsig.fmap.mapcontext.MapContext;
26
import org.gvsig.fmap.mapcontext.MapContextLocator;
27
import org.gvsig.fmap.mapcontext.MapContextManager;
28
import org.gvsig.fmap.mapcontext.layers.CancelationException;
29
import org.gvsig.fmap.mapcontext.layers.FLayer;
30
import org.gvsig.fmap.mapcontext.layers.FLayers;
31
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
32
import org.gvsig.fmap.mapcontrol.MapControl;
33
import org.gvsig.geodb.ExtDB_Spatial;
34
import org.gvsig.geodb.TableInfo;
35
import org.gvsig.geodb.vectorialdb.visibility.LayerScaleVisibility;
36
import org.gvsig.geodb.vectorialdb.visibility.VisibilityScaleSelector;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.dispose.DisposeUtils;
39
import org.gvsig.tools.dynobject.DynObject;
40
import org.gvsig.tools.i18n.I18nManager;
41
import org.gvsig.tools.swing.api.ToolsSwingLocator;
42
import org.gvsig.tools.swing.api.windowmanager.Dialog;
43
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
44
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
45
import static org.gvsig.vcsgis.app.addlayer.AbstractWizardVCSGis.LOGGER;
46

  
47
/**
48
 *
49
 * @author gvSIG Team
50
 */
51
@SuppressWarnings("UseSpecificCatch")
52
public class WizardVCSGisVectorial extends AbstractWizardVCSGis {
53
    
54
    public static final int NUMBER_OF_FEATURES_TO_ASK_FOR_VISIBILITY_SCALE = 10000;
55
    public static final String LAYERS_SCALE_VISIBILITY_PARAMETER="layersScaleVisibility";
56

  
57
    public WizardVCSGisVectorial() {
58
        super();
59
    }
60

  
61
    @Override
62
    protected boolean requireGeometry() {
63
        return true;
64
    }
65

  
66
    @Override
67
    public Object executeWizard() {
68
        DataManager man = DALLocator.getDataManager();
69
        MapContextManager mapContextManager = MapContextLocator.getMapContextManager();
70

  
71
        MapControl mapControl = this.getMapCtrl();
72
        MapContext mapContext = mapControl.getMapContext();
73

  
74
        String groupName = null;
75
        List<FLayer> all_layers = new ArrayList();
76

  
77
        try {
78
            FLayer layer = null;
79
            for (TableInfo tableInfo : this.getTablesInformation()) {
80
                if (!tableInfo.isSelected()) {
81
                    continue;
82
                }
83
                DBStoreParameters params = tableInfo.getParameters();
84
                fixCRS(params);
85
                if (groupName == null) {
86
                    String dbname = params.getDBName();
87
                    if (StringUtils.isEmpty(dbname)) {
88
                        dbname = "Group";
89
                    }
90
                    String host = params.getHost();
91
                    if (StringUtils.isEmpty(host)) {
92
                        groupName = dbname;
93
                    } else {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff