Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / imp / DefaultApplicationManager.java @ 45528

History | View | Annotate | Download (21.1 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 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, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
package org.gvsig.app.imp;
26

    
27
import java.awt.Component;
28
import java.io.File;
29
import java.util.ArrayList;
30
import java.util.Iterator;
31
import java.util.List;
32
import java.util.Map;
33
import javax.swing.JComponent;
34

    
35
import javax.swing.JFileChooser;
36
import javax.swing.SwingUtilities;
37
import javax.swing.event.HyperlinkListener;
38
import javax.swing.filechooser.FileFilter;
39
import javax.swing.tree.TreeModel;
40

    
41
import org.cresques.cts.IProjection;
42
import org.gvsig.about.AboutLocator;
43
import org.gvsig.about.AboutManager;
44
import org.gvsig.andami.Arguments;
45
import org.gvsig.andami.Launcher;
46
import org.gvsig.andami.PluginServices;
47
import org.gvsig.andami.actioninfo.ActionInfo;
48
import org.gvsig.andami.ui.mdiFrame.MainFrame;
49
import org.gvsig.andami.ui.mdiManager.IWindow;
50
import org.gvsig.andami.ui.mdiManager.MDIManager;
51
import org.gvsig.app.ApplicationManager;
52
import org.gvsig.app.PreferencesNode;
53
import org.gvsig.app.extension.Version;
54
import org.gvsig.app.extension.develtools.InfoPanel;
55
import org.gvsig.app.gui.WizardPanel;
56
import org.gvsig.app.prepareAction.PrepareContext;
57
import org.gvsig.app.prepareAction.PrepareContextView;
58
import org.gvsig.app.prepareAction.PrepareDataStore;
59
import org.gvsig.app.prepareAction.PrepareDataStoreParameters;
60
import org.gvsig.app.prepareAction.PrepareLayer;
61
import org.gvsig.app.project.DefaultProject;
62
import org.gvsig.app.project.Project;
63
import org.gvsig.app.project.ProjectManager;
64
import org.gvsig.app.project.documents.Document;
65
import org.gvsig.app.project.documents.gui.IDocumentWindow;
66
import org.gvsig.app.project.documents.view.ViewDocument;
67
import org.gvsig.app.project.documents.view.ViewManager;
68
import org.gvsig.fmap.crs.CRSFactory;
69
import org.gvsig.fmap.dal.DALLocator;
70
import org.gvsig.fmap.dal.DataManager;
71
import org.gvsig.fmap.dal.DataStore;
72
import org.gvsig.fmap.dal.DataStoreParameters;
73
import org.gvsig.fmap.geom.GeometryLocator;
74
import org.gvsig.fmap.geom.GeometryManager;
75
import org.gvsig.fmap.mapcontext.MapContext;
76
import org.gvsig.fmap.mapcontext.MapContextLocator;
77
import org.gvsig.fmap.mapcontext.MapContextManager;
78
import org.gvsig.fmap.mapcontext.layers.FLayer;
79
import org.gvsig.fmap.mapcontrol.CompoundLayersTreeModel;
80
import org.gvsig.fmap.mapcontrol.MapControlLocator;
81
import org.gvsig.gui.ColorTablesFactory;
82
import org.gvsig.symbology.swing.SymbologySwingLocator;
83
import org.gvsig.tools.ToolsLocator;
84
import org.gvsig.tools.dataTypes.DataTypesManager;
85
import org.gvsig.tools.dispose.DisposableManager;
86
import org.gvsig.tools.dynobject.DynObjectManager;
87
import org.gvsig.tools.extensionpoint.ExtensionPoint;
88
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
89
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
90
import org.gvsig.tools.observer.Observer;
91
import org.gvsig.tools.persistence.PersistenceManager;
92
import org.gvsig.tools.swing.api.ToolsSwingLocator;
93
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
94
import org.gvsig.tools.swing.icontheme.IconThemeManager;
95
import org.gvsig.tools.util.PropertiesSupportHelper;
96
import org.slf4j.Logger;
97
import org.slf4j.LoggerFactory;
98

    
99

    
100

    
101

    
102
/**
103
 * @author jmvivo
104
 *
105
 */
106
public class DefaultApplicationManager implements ApplicationManager {
107

    
108
    @SuppressWarnings("unused")
109
        private static Logger logger = LoggerFactory.getLogger(DefaultApplicationManager.class);
110
    
111
        private static final String EPNAME_PREPARE_OPEN_DATASTORE = "org.gvsig.datastore.open.prepare"; //"PrepareOpenDataStore";
112
        private static final String EPNAME_PREPARE_OPEN_DATASTOREPARAMETERS = "org.gvsig.datastoreparameters.open.prepare"; //"PrepareOpenDataStoreParameters";
113
        private static final String EPNAME_PREPARE_OPEN_LAYER = "org.gvsig.layer.open.prepare"; // "PrepareOpenLayer";
114

    
115
        private static final String EPNAME_ADD_TABLE_WIZARD = "AddLayerWizard";
116

    
117
        private ExtensionPointManager epManager;
118

    
119
    private Version version;
120
    private PropertiesSupportHelper psh;
121

    
122
    public DefaultApplicationManager() {
123
        this.psh = new PropertiesSupportHelper();
124
        
125
        epManager = ToolsLocator.getExtensionPointManager();
126
        epManager.add(EPNAME_PREPARE_OPEN_DATASTORE,
127
                "Actions to do when open a DataStore");
128
        epManager.add(EPNAME_PREPARE_OPEN_DATASTOREPARAMETERS,
129
                "Actions to do before open a DataStore with parameters");
130
        epManager.add(EPNAME_PREPARE_OPEN_LAYER,
131
                "Actions to do after create a Layer");
132
        epManager.add(EPNAME_ADD_TABLE_WIZARD,
133
                "Wizards to add new document table");
134

    
135
        try {
136
            version = new Version();
137
        } catch(Exception ex) {
138
            logger.warn("Can't locate application version.");
139
        }
140
    }
141

    
142
        /* (non-Javadoc)
143
         * @see org.gvsig.appGvSigManager#pepareOpenDataSource(org.gvsig.fmap.dal.DataStore)
144
         */
145
        @SuppressWarnings("unchecked")
146
        public DataStore pepareOpenDataSource(DataStore store,
147
                        PrepareContext context) throws Exception {
148
                ExtensionPoint ep = epManager.get(EPNAME_PREPARE_OPEN_DATASTORE);
149
                if (ep.getCount() == 0) {
150
                        return store;
151
                }
152
                DataStore result = store;
153
                Iterator<ExtensionPoint.Extension> iter = ep.iterator();
154
                PrepareDataStore prepare;
155
                while (iter.hasNext()) {
156
                        prepare = (PrepareDataStore) iter.next().create();
157
                        result = prepare.prepare(store, context);
158
                }
159
                return result;
160
        }
161

    
162
        /* (non-Javadoc)
163
         * @see org.gvsig.appGvSigManager#prepareOpenDataStoreParameters(org.gvsig.fmap.dal.DataStoreParameters)
164
         */
165
        @SuppressWarnings("unchecked")
166
        public DataStoreParameters prepareOpenDataStoreParameters(
167
                        DataStoreParameters storeParameters, PrepareContext context)
168
                        throws Exception {
169

    
170
                ExtensionPoint ep = epManager
171
                                .get(EPNAME_PREPARE_OPEN_DATASTOREPARAMETERS);
172
                if (ep.getCount() == 0) {
173
                        return storeParameters;
174
                }
175
                DataStoreParameters result = storeParameters;
176
                Iterator<ExtensionPoint.Extension> iter = ep.iterator();
177
                PrepareDataStoreParameters prepare;
178
                while (iter.hasNext()) {
179
                        prepare = (PrepareDataStoreParameters) iter.next().create();
180
                        result = prepare.prepare(storeParameters, context);
181
                }
182

    
183
                return result;
184
        }
185
        
186
        /*
187
         * (non-Javadoc)
188
         * @see org.gvsig.app.ApplicationManager#prepareOpenDataStoreParameters(java.util.List, org.gvsig.app.prepareAction.PrepareContext)
189
         */
190
        @SuppressWarnings("unchecked")
191
        public List<DataStoreParameters> prepareOpenDataStoreParameters(
192
                        List<DataStoreParameters> storeParameters, PrepareContext context)
193
                        throws Exception {
194

    
195
                ExtensionPoint ep = epManager
196
                                .get(EPNAME_PREPARE_OPEN_DATASTOREPARAMETERS);
197
                if (ep.getCount() == 0) {
198
                        return storeParameters;
199
                }
200
                
201
                List<DataStoreParameters> result = new ArrayList<DataStoreParameters>();
202
                
203
                Iterator<ExtensionPoint.Extension> iter = ep.iterator();
204
                List<PrepareDataStoreParameters> prepareList = new ArrayList<PrepareDataStoreParameters>();
205
                while (iter.hasNext()) {
206
                        prepareList.add((PrepareDataStoreParameters) iter.next().create());
207
                }
208
                
209
                for (int i = 0; i < storeParameters.size(); i++) {
210
                        DataStoreParameters param = storeParameters.get(i);
211
                        for (int j = 0; j < prepareList.size(); j++) {
212
                                prepareList.get(j).pre(param, context);
213
                        }
214
                }
215
                
216
                for (int i = 0; i < storeParameters.size(); i++) {
217
                        DataStoreParameters param = storeParameters.get(i);
218
                        if(param != null) {
219
                                for (int j = 0; j < prepareList.size(); j++) {
220
                                        param = prepareList.get(j).prepare(param, context);
221
                                        if(param == null)
222
                                                break;
223
                                }
224
                                if(param != null)
225
                                        result.add(param);
226
                        }
227
                }
228
                
229
                for (int i = 0; i < storeParameters.size(); i++) {
230
                        DataStoreParameters param = storeParameters.get(i);
231
                        for (int j = 0; j < prepareList.size(); j++) {
232
                                prepareList.get(j).post(param, context);
233
                        }
234
                }
235

    
236
                return result;
237
        }
238

    
239
        public void registerPrepareOpenDataStore(PrepareDataStore action) {
240
                ExtensionPoint ep = epManager.get(EPNAME_PREPARE_OPEN_DATASTORE);
241
                ep.append(action.getName(), action.getDescription(), action);
242
        }
243

    
244
        public void registerPrepareOpenDataStoreParameters(
245
                        PrepareDataStoreParameters action) {
246
                ExtensionPoint ep = epManager
247
                                .get(EPNAME_PREPARE_OPEN_DATASTOREPARAMETERS);
248
                ep.append(action.getName(), action.getDescription(), action);
249

    
250

    
251
        }
252

    
253
        @SuppressWarnings("unchecked")
254
        public FLayer prepareOpenLayer(FLayer layer,
255
                        PrepareContextView context)
256
                        throws Exception {
257

    
258
                ExtensionPoint ep = epManager.get(EPNAME_PREPARE_OPEN_LAYER);
259

    
260
                if (ep.getCount() == 0) {
261
                        return layer;
262
                }
263
                FLayer result = layer;
264
                Iterator<ExtensionPoint.Extension> iter = ep.iterator();
265
                PrepareLayer prepare;
266
                while (iter.hasNext()) {
267
                        prepare = (PrepareLayer) iter.next().create();
268
                        result = prepare.prepare(result, context);
269
                }
270

    
271
                return result;
272

    
273
        }
274

    
275
        public void registerPrepareOpenLayer(PrepareLayer action) {
276
                ExtensionPoint ep = epManager.get(EPNAME_PREPARE_OPEN_LAYER);
277
                ep.append(action.getName(), action.getDescription(), action);
278
        }
279

    
280
        public void registerAddTableWizard(String name, String description,
281
                        Class<? extends WizardPanel> wpClass) {
282
                ExtensionPoint ep = epManager.get(EPNAME_ADD_TABLE_WIZARD);
283
                ep.append(name, description, wpClass);
284
        }
285

    
286
        @SuppressWarnings("unchecked")
287
        public List<WizardPanel> getWizardPanels() throws Exception {
288
                ExtensionPoint ep = epManager.get(EPNAME_ADD_TABLE_WIZARD);
289
                List<WizardPanel> result = new ArrayList<WizardPanel>();
290
                Iterator<Extension> iter = ep.iterator();
291
                while (iter.hasNext()) {
292
                        result.add((WizardPanel) iter.next().create());
293
                }
294
                return result;
295
        }
296

    
297
        public DataManager getDataManager() {
298
                return DALLocator.getDataManager();
299
        }
300

    
301
        public GeometryManager getGeometryManager() {
302
                return GeometryLocator.getGeometryManager();
303
        }
304

    
305
        public PersistenceManager getPersistenceManager() {
306
                return ToolsLocator.getPersistenceManager();
307
        }
308

    
309
        public DisposableManager getDisposableManager() {
310
                return ToolsLocator.getDisposableManager();
311
        }
312

    
313
        public DynObjectManager getDynObjectManager() {
314
                return ToolsLocator.getDynObjectManager();
315
        }
316

    
317
        public ExtensionPointManager getExtensionPointManager() {
318
                return ToolsLocator.getExtensionPointManager();
319
        }
320

    
321
        public ProjectManager getProjectManager() {
322
                return ProjectManager.getInstance();
323
        }
324

    
325
        public MDIManager getUIManager() {
326
                return PluginServices.getMDIManager();
327
        }
328

    
329
        public MapContextManager getMapContextManager() {
330
                return MapContextLocator.getMapContextManager();
331
        }
332

    
333
        public DataTypesManager getDataTypesManager() {
334
                return ToolsLocator.getDataTypesManager();
335
        }
336
        
337
        public IProjection getCRS(String code) {
338
                return CRSFactory.getCRS(code);
339
        }
340

    
341
        public IconThemeManager getIconThemeManager() {
342
                return ToolsSwingLocator.getIconThemeManager();
343
        }
344

    
345
        @Override
346
        public Arguments getArguments() {
347
                return Launcher.getArguments();
348
        }
349

    
350
  @Override
351
        public String getFromClipboard() {
352
                return PluginServices.getFromClipboard();
353
        }
354

    
355
  @Override
356
        public void putInClipboard(String data) {
357
                PluginServices.putInClipboard(data);
358
        }
359

    
360
        public Project getCurrentProject() {
361
                return ProjectManager.getInstance().getCurrentProject();
362
        }
363

    
364
    @Override
365
    public FLayer getCurrentLayer() {
366
        ViewDocument viewdoc = (ViewDocument) this.getActiveDocument(ViewManager.TYPENAME);
367
        if( viewdoc == null ) {
368
            return null;
369
        }
370
        MapContext mapContext = viewdoc.getMapContext();
371
        return mapContext.getLayers().getFirstActiveLayer();
372
    }
373
        
374
        public PreferencesNode getPreferences(String node) {
375
                if( node.equalsIgnoreCase("project")) {
376
                        return DefaultProject.getPreferences();
377
                }
378
                return new DefaultPreferencesNode(node);
379
        }
380

    
381
        public PreferencesNode getPreferences() {
382
                return new DefaultPreferencesNode();
383
        }
384

    
385
        public Version getVersion() {
386
        return version;
387
        }
388

    
389
        @Override
390
        public void close(boolean quietly) {
391
            Launcher.closeApplication(quietly);
392
        }
393

    
394
        public AboutManager getAbout() {
395
                AboutManager manager = AboutLocator.getManager();
396
                return manager;
397
        }
398

    
399
        public ColorTablesFactory getColorTablesFactory() {
400
                return SymbologySwingLocator.getSwingManager().getColorTablesFactory();
401
        }
402

    
403
        public void registerColorTablesFactory(ColorTablesFactory factory) {
404
                SymbologySwingLocator.getSwingManager().setColorTablesFactory(factory);
405
                
406
        }
407

    
408
    public IWindow getActiveWindow() {
409
        try {
410
            IWindow window = PluginServices.getMDIManager().getActiveWindow();
411
            return window;
412
        } catch (Exception ex) {
413
            return null;
414
        }
415
    }
416

    
417
    public Document getActiveDocument() {
418
            return this.getActiveDocument((Class<? extends Document>)null);
419
    }
420
    
421
    public Document getActiveDocument(String documentTypeName) {
422
        Document document = this.getActiveDocument();
423
        if( document!= null && document.getTypeName().equalsIgnoreCase(documentTypeName) ) {
424
            return document;
425
        }
426
        return null;
427
    }
428
    
429
    public Document getActiveDocument(Class<? extends Document> documentClass) {
430
        Project project = this.getCurrentProject();
431
        if( project == null ) {
432
            return null;
433
        }
434
        return project.getActiveDocument(documentClass);
435
    }
436

    
437
    public JComponent getActiveComponent(Class<? extends Document> documentClass) {
438
        Document document = this.getActiveDocument(documentClass);
439
        if (document == null) {
440
            return null;
441
        }
442
        return document.getMainComponent();
443
    }
444
    
445
   
446
    public IDocumentWindow getDocumentWindow(Document document) {
447
        Class<? extends IDocumentWindow> defaultDocumentClass =
448
            document.getFactory().getMainWindowClass();
449
        return (IDocumentWindow) this.getUIManager().getSingletonWindow(defaultDocumentClass, document);
450
    }
451

    
452
        public String getLocaleLanguage() {
453
                return Launcher.getAndamiConfig().getLocaleLanguage();
454
        }
455

    
456
        public void messageDialog(String message, String title, int messageType) {
457
                MainFrame main = PluginServices.getMainFrame();
458
                main.messageDialog(message, title, messageType);
459
        }
460

    
461
        public void messageDialog(String message, String[] messageArgs,
462
                        String title, int messageType) {
463
                MainFrame main = PluginServices.getMainFrame();
464
                main.messageDialog(message, messageArgs, title, messageType);
465
        }
466

    
467
        @Override
468
        public void messageDialog(String message, String[] messageArgs, String title, int messageType, String msgid) {
469
                MainFrame main = PluginServices.getMainFrame();
470
                main.messageDialog(message, messageArgs, title, messageType, msgid);
471
        }        
472

    
473
        @Override
474
        public int confirmDialog(String message, String title, int optionType,
475
                        int messageType) {
476
                MainFrame main = PluginServices.getMainFrame();
477
                return main.confirmDialog(message, title, optionType, messageType);
478
        }
479

    
480
        @Override
481
        public int confirmDialog(String message, String title, int optionType,
482
                        int messageType, String msgid) {
483
                MainFrame main = PluginServices.getMainFrame();
484
                return main.confirmDialog(message, title, optionType, messageType, msgid);
485
        }
486

    
487
        public String inputDialog(String message, String title, int messageType,
488
                        String initialValue) {
489
                MainFrame main = PluginServices.getMainFrame();
490
                return main.inputDialog(message, title, messageType, initialValue);
491
        }
492

    
493
        public String inputDialog(String message, String title) {
494
                MainFrame main = PluginServices.getMainFrame();
495
                return main.inputDialog(message, title);
496
        }
497

    
498
        public void showDialog(Component contents, String title) {
499
                MainFrame main = PluginServices.getMainFrame();
500
                main.showDialog(contents, title);
501
        }
502

    
503
        public Component createComponent(Class<? extends Component> theClass,
504
                        Object... parameters) {
505
                MainFrame main = PluginServices.getMainFrame();
506
                return main.createComponentWithParams(theClass, parameters);
507
        }
508

    
509
        public Component createComponentWithParams(
510
                        Class<? extends Component> theClass, Object[] parameters) {
511
                MainFrame main = PluginServices.getMainFrame();
512
                return main.createComponentWithParams(theClass, parameters);
513
        }
514

    
515

    
516
        public File[] showChooserDialog(
517
                        final String title,
518
                        final int type, // SAVE_DIALOG / OPEN_DIALOG
519
                        final int selectionMode, //    JFileChooser.FILES_ONLY, JFileChooser.DIRECTORIES_ONLY, JFileChooser.FILES_AND_DIRECTORIES
520
                        final boolean multiselection, 
521
                        final File initialPath,
522
                        final FileFilter filter,
523
                        final boolean fileHidingEnabled
524
                        ) {
525
                MainFrame main = PluginServices.getMainFrame();
526
                return main.showChooserDialog(title, type, selectionMode, multiselection, initialPath, filter, fileHidingEnabled);
527
        }
528
        
529
        public File[] showOpenDirectoryDialog(String title, File initialPath) {
530
                return showChooserDialog(title, JFileChooser.OPEN_DIALOG, JFileChooser.DIRECTORIES_ONLY, false, initialPath, null, false);
531
        }
532

    
533
        
534
        public File[] showOpenFileDialog(String title, File initialPath) {
535
                return showChooserDialog(title, JFileChooser.OPEN_DIALOG, JFileChooser.FILES_ONLY, false, initialPath, null, false);
536
        }
537

    
538
        
539
        public File[] showSaveFileDialog(String title, File initialPath) {
540
                return showChooserDialog(title, JFileChooser.SAVE_DIALOG, JFileChooser.FILES_ONLY, false, initialPath, null, false);
541
        }
542

    
543
        @Override
544
        public void message(String message, int message_type) {
545
                MainFrame main = PluginServices.getMainFrame();
546
                main.message(message, message_type);
547
        }        
548
        
549
        public String translate(String message, String... args) {
550
                return org.gvsig.i18n.Messages.translate(message, args);
551
        }
552
        
553
        public Component getRootComponent() {
554
                return (Component) PluginServices.getMainFrame();
555
        }
556

    
557
        public void refreshMenusAndToolBars() {
558
                PluginServices.getMainFrame().refreshControls();
559
        }
560

    
561
    public MainFrame getMainFrame() {
562
        return PluginServices.getMainFrame();
563
    }
564
    
565
        public void addMenu(ActionInfo action, String text) {
566
                MainFrame f = this.getMainFrame();
567
                f.addMenu(action,text);
568
        }
569

    
570
        @Override
571
        public void addTool(ActionInfo action, String toolBarName) {
572
                MainFrame f = this.getMainFrame();
573
                f.addTool(action,toolBarName);
574
                f.refreshControls();
575
        }
576
        
577
        @Override
578
        public void addSelectableTool(ActionInfo action, String toolBarName) {
579
                MainFrame f = this.getMainFrame();
580
                f.addSelectableTool(action,toolBarName,"unico",false);
581
                f.refreshControls();
582
        }
583
                
584
        public void showTextDialog(final WindowManager.MODE mode, final String title, final String htmlText) {
585
            this.showTextDialog(mode, title, htmlText, null);
586
        }
587
        
588
        public void showTextDialog(final WindowManager.MODE mode, final String title, final String htmlText, final HyperlinkListener hyperlinkListener) {
589
            if (!SwingUtilities.isEventDispatchThread()) {
590
                if( mode == WindowManager.MODE.DIALOG ) {
591
                    try {
592
                        SwingUtilities.invokeAndWait(new Runnable() {
593
                            public void run() {
594
                                showTextDialog(mode, title, htmlText,hyperlinkListener);
595
                            }
596
                        });
597
                    } catch (Exception ex) {
598
                        logger.warn("Can't show text dialog:\n"+htmlText,ex);
599
                    }
600
                } else {
601
                    SwingUtilities.invokeLater(new Runnable() {
602
                        public void run() {
603
                            showTextDialog(mode, title, htmlText,hyperlinkListener);
604
                        }
605
                    });
606
                }
607
                return;
608
            }
609
            InfoPanel.showPanel(title, mode, htmlText,hyperlinkListener);
610
        }
611

    
612
        @Override
613
        public TreeModel createProjectLayersTreeModel() {
614
            CompoundLayersTreeModel model = (CompoundLayersTreeModel) MapControlLocator.getMapControlManager().createCompoundLayersTreeModel();
615
            Project project = this.getCurrentProject();
616
            List<Document> views = project.getDocuments(ViewManager.TYPENAME);
617
            for (Document view : views) {
618
                model.addLayers( ((ViewDocument)view).getMapContext().getLayers() );
619
            }
620
            return model;
621
        }
622

    
623
    @Override
624
    public Object getProperty(String name) {
625
        return this.psh.getProperty(name);
626
    }
627

    
628
    @Override
629
    public void setProperty(String name, Object value) {
630
        this.psh.setProperty(name, value);
631
    }
632

    
633
    @Override
634
    public Map<String, Object> getProperties() {
635
        return this.psh.getProperties();
636
    }
637

    
638
    @Override
639
    public void addPropertiesObserver(Observer o) {
640
        this.psh.addObserver(o);
641
    }
642

    
643
    @Override
644
    public void deletePropertiesObserver(Observer o) {
645
        this.psh.deleteObserver(o);
646
    }
647

    
648
    @Override
649
    public void deletePropertiesObservers() {
650
        this.psh.deleteObservers();
651
    }
652
    
653
}