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 40558 jjdelcerro
/**
2
 * gvSIG. Desktop Geographic Information System.
3 40435 jjdelcerro
 *
4 40558 jjdelcerro
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6 42966 jjdelcerro
 * 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 40558 jjdelcerro
 *
11 42966 jjdelcerro
 * 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 40558 jjdelcerro
 *
16 42966 jjdelcerro
 * 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 40558 jjdelcerro
 *
20 42966 jjdelcerro
 * For any additional information, do not hesitate to contact us at info AT
21
 * gvsig.com, or visit our website www.gvsig.com.
22 40435 jjdelcerro
 */
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 41323 jjdelcerro
import org.gvsig.app.project.documents.table.TableDocument;
30 40435 jjdelcerro
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
31 42775 jjdelcerro
import org.gvsig.fmap.dal.EditingNotification;
32
import org.gvsig.fmap.dal.EditingNotificationManager;
33 40435 jjdelcerro
import org.gvsig.fmap.dal.exception.DataException;
34
import org.gvsig.fmap.dal.feature.FeatureStore;
35 44437 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureType;
36 42775 jjdelcerro
import org.gvsig.fmap.dal.swing.DALSwingLocator;
37 42967 jjdelcerro
import org.gvsig.tools.util.ArrayUtils;
38 40435 jjdelcerro
39
public class TableEditStartExtension extends AbstractTableEditExtension {
40 42146 fdiaz
41 42967 jjdelcerro
    @Override
42 42966 jjdelcerro
    public void initialize() {
43
        super.initialize();
44
        IconThemeHelper.registerIcon("action", "table-start-editing", this);
45
    }
46
47 44437 jjdelcerro
    @Override
48 40435 jjdelcerro
    public void execute(String actionCommand) {
49 42967 jjdelcerro
        this.execute(actionCommand,null);
50
    }
51
52
    @Override
53
    public void execute(String actionCommand, Object[] args) {
54 40435 jjdelcerro
        if ("table-start-editing".equals(actionCommand)) {
55
            try {
56 42967 jjdelcerro
                TableDocument doc = (TableDocument)ArrayUtils.get(args,0);
57
                if( doc == null ) {
58
                    doc = (TableDocument) table.getDocument();
59
                }
60 42775 jjdelcerro
                EditingNotificationManager editingNotification = DALSwingLocator.getEditingNotificationManager();
61 41323 jjdelcerro
                EditingNotification notification = editingNotification.notifyObservers(
62 42146 fdiaz
                        this,
63
                        EditingNotification.BEFORE_ENTER_EDITING_STORE,
64 41323 jjdelcerro
                        doc,
65
                        doc.getStore());
66 42966 jjdelcerro
                if (notification.isCanceled()) {
67 41323 jjdelcerro
                    return;
68
                }
69
                doc.getStore().edit(FeatureStore.MODE_FULLEDIT);
70 40435 jjdelcerro
                ApplicationLocator.getManager().refreshMenusAndToolBars();
71 41323 jjdelcerro
                editingNotification.notifyObservers(
72 42146 fdiaz
                        this,
73
                        EditingNotification.AFTER_ENTER_EDITING_STORE,
74 41323 jjdelcerro
                        doc,
75
                        doc.getStore());
76 40435 jjdelcerro
            } catch (DataException e) {
77 42966 jjdelcerro
                logger.warn("Problems starting table editing.", e);
78 40435 jjdelcerro
            }
79
        }
80
    }
81
82 44437 jjdelcerro
    @Override
83 40435 jjdelcerro
    public boolean isEnabled() {
84
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
85
86
        if (v == null) {
87
            return false;
88
        }
89
        if (v instanceof FeatureTableDocumentPanel) {
90 44437 jjdelcerro
            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 40435 jjdelcerro
        }
101
        return false;
102
    }
103
104 44437 jjdelcerro
    @Override
105 40435 jjdelcerro
    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 42966 jjdelcerro
                && !((FeatureTableDocumentPanel) v).getModel().getStore().isEditing()) {
114 40435 jjdelcerro
            table = (FeatureTableDocumentPanel) v;
115
            return true;
116
        }
117
118
        return false;
119
    }
120
}