Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / searchpanel / actions / ShowFormAction.java @ 44263

History | View | Annotate | Download (3.73 KB)

1
package org.gvsig.fmap.dal.swing.impl.searchpanel.actions;
2

    
3
import java.awt.event.ActionEvent;
4
import javax.swing.AbstractAction;
5
import javax.swing.Action;
6
import javax.swing.event.ListSelectionEvent;
7
import javax.swing.event.ListSelectionListener;
8
import org.gvsig.expressionevaluator.Expression;
9
import org.gvsig.featureform.swing.JFeaturesForm;
10
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11
import org.gvsig.fmap.dal.feature.FeatureQuery;
12
import org.gvsig.fmap.dal.feature.FeatureStore;
13
import org.gvsig.fmap.dal.swing.DALSwingLocator;
14
import org.gvsig.fmap.dal.swing.DataSwingManager;
15
import org.gvsig.fmap.dal.swing.searchpanel.FeatureStoreSearchPanel;
16
import org.gvsig.tools.ToolsLocator;
17
import org.gvsig.tools.i18n.I18nManager;
18
import org.gvsig.tools.swing.api.ToolsSwingLocator;
19
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
20
import org.slf4j.Logger;
21
import org.slf4j.LoggerFactory;
22

    
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27
@SuppressWarnings("UseSpecificCatch")
28
public class ShowFormAction 
29
        extends AbstractAction 
30
        implements ListSelectionListener
31
    {
32
    public static class ShowFormActionFactory implements FeatureStoreSearchPanel.ActionFactory {
33

    
34
        @Override
35
        public String getName() {
36
            return "ShowForm";
37
        }
38

    
39
        @Override
40
        public Action createAction(FeatureStoreSearchPanel panel) {
41
            return new ShowFormAction(panel);
42
        }
43
        
44
    }
45

    
46

    
47
    private static final Logger LOGGER = LoggerFactory.getLogger(ShowFormAction.class);
48
    
49
    private final FeatureStoreSearchPanel searchPanel;
50
    private boolean showFormSingleElement;
51

    
52
    public ShowFormAction(FeatureStoreSearchPanel searchPanel) {
53
        this.searchPanel = searchPanel;
54
        I18nManager i18n = ToolsLocator.getI18nManager();
55
        this.putValue(
56
                Action.SHORT_DESCRIPTION, 
57
                i18n.getTranslation("_Show_form")
58
        );
59
        this.putValue(
60
                Action.SMALL_ICON, 
61
                ToolsSwingLocator.getIconThemeManager().getCurrent().get("search-action-showform")
62
        );
63
        try {
64
            this.showFormSingleElement = true;
65
            FeatureStore store = this.searchPanel.getStore();
66
            FeatureAttributeDescriptor[] pks = store.getDefaultFeatureType().getPrimaryKey();
67
            if (pks == null || pks.length < 1) {
68
                this.showFormSingleElement = false;
69
            }
70
        } catch (Exception ex) {
71
        }        
72
    }
73
    
74
    @Override
75
    public void actionPerformed(ActionEvent e) {
76
        try {
77
            this.setEnabled(false);
78
            Expression filter = this.searchPanel.getSearchForSelectedFeature();
79
            if( filter==null ) {
80
                filter = this.searchPanel.getCurrentSearch();
81
                if( filter == null ) {
82
                    return;
83
                }
84
            }
85
            DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
86

    
87
            FeatureStore store = this.searchPanel.getStore();
88
            FeatureQuery query = store.createFeatureQuery();
89
            query.setFilter(filter);
90
            query.retrievesAllAttributes();
91
            JFeaturesForm form = dataSwingManager.createJFeaturesForm(store);
92
            form.setQuery(query);
93
            form.showForm(WindowManager.MODE.WINDOW);
94
        } catch (Exception ex) {
95
            LOGGER.warn("Can't show form", ex);
96
        } finally {
97
            this.setEnabled(true);
98
        }
99
    }
100

    
101
    @Override
102
    public void valueChanged(ListSelectionEvent e) {
103
        if (e.getValueIsAdjusting()) {
104
            return;
105
        }
106
        if (this.searchPanel.getSelectedFeatureCount()== 0) {
107
            this.setEnabled(true);
108
            return;
109
        }
110
        this.setEnabled(showFormSingleElement);
111
    }
112
    
113
}