Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app.document.table.app / org.gvsig.app.document.table.app.mainplugin / src / main / java / org / gvsig / app / extension / TableEditStartExtension.java @ 44437

History | View | Annotate | Download (4.28 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 modify it under
7
 * the terms of the GNU General Public License as published by the Free Software
8
 * Foundation; either version 3 of the License, or (at your option) any later
9
 * version.
10
 *
11
 * This program is distributed in the hope that it will be useful, but WITHOUT
12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14
 * details.
15
 *
16
 * You should have received a copy of the GNU General Public License along with
17
 * this program; if not, write to the Free Software Foundation, Inc., 51
18
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us at info AT
21
 * gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.app.extension;
24

    
25
import org.gvsig.andami.IconThemeHelper;
26
import org.gvsig.andami.PluginServices;
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.app.ApplicationLocator;
29
import org.gvsig.app.project.documents.table.TableDocument;
30
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
31
import org.gvsig.fmap.dal.EditingNotification;
32
import org.gvsig.fmap.dal.EditingNotificationManager;
33
import org.gvsig.fmap.dal.exception.DataException;
34
import org.gvsig.fmap.dal.feature.FeatureStore;
35
import org.gvsig.fmap.dal.feature.FeatureType;
36
import org.gvsig.fmap.dal.swing.DALSwingLocator;
37
import org.gvsig.tools.util.ArrayUtils;
38

    
39
public class TableEditStartExtension extends AbstractTableEditExtension {
40

    
41
    @Override
42
    public void initialize() {
43
        super.initialize();
44
        IconThemeHelper.registerIcon("action", "table-start-editing", this);
45
    }
46

    
47
    @Override
48
    public void execute(String actionCommand) {
49
        this.execute(actionCommand,null);
50
    }
51

    
52
    @Override
53
    public void execute(String actionCommand, Object[] args) {
54
        if ("table-start-editing".equals(actionCommand)) {
55
            try {
56
                TableDocument doc = (TableDocument)ArrayUtils.get(args,0);
57
                if( doc == null ) {
58
                    doc = (TableDocument) table.getDocument();
59
                }
60
                EditingNotificationManager editingNotification = DALSwingLocator.getEditingNotificationManager();
61
                EditingNotification notification = editingNotification.notifyObservers(
62
                        this,
63
                        EditingNotification.BEFORE_ENTER_EDITING_STORE,
64
                        doc,
65
                        doc.getStore());
66
                if (notification.isCanceled()) {
67
                    return;
68
                }
69
                doc.getStore().edit(FeatureStore.MODE_FULLEDIT);
70
                ApplicationLocator.getManager().refreshMenusAndToolBars();
71
                editingNotification.notifyObservers(
72
                        this,
73
                        EditingNotification.AFTER_ENTER_EDITING_STORE,
74
                        doc,
75
                        doc.getStore());
76
            } catch (DataException e) {
77
                logger.warn("Problems starting table editing.", e);
78
            }
79
        }
80
    }
81

    
82
    @Override
83
    public boolean isEnabled() {
84
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
85

    
86
        if (v == null) {
87
            return false;
88
        }
89
        if (v instanceof FeatureTableDocumentPanel) {
90
            try {
91
                FeatureTableDocumentPanel t = (FeatureTableDocumentPanel) v;
92
                FeatureStore fs = t.getModel().getStore();
93
                if( ! fs.allowWrite() || !fs.supportReferences() ) {
94
                    return false;
95
                }
96
                return true;
97
            } catch (Exception ex) {
98
                return false;
99
            }
100
        }
101
        return false;
102
    }
103

    
104
    @Override
105
    public boolean isVisible() {
106
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
107

    
108
        if (v == null) {
109
            return false;
110
        }
111

    
112
        if (v instanceof FeatureTableDocumentPanel
113
                && !((FeatureTableDocumentPanel) v).getModel().getStore().isEditing()) {
114
            table = (FeatureTableDocumentPanel) v;
115
            return true;
116
        }
117

    
118
        return false;
119
    }
120
}