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 @ 44267

History | View | Annotate | Download (4.46 KB)

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

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

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

    
37
        @Override
38
        public String getName() {
39
            return "ShowForm";
40
        }
41

    
42
        @Override
43
        public Action createAction(FeatureStoreSearchPanel panel) {
44
            return new ShowFormAction(panel);
45
        }
46
        
47
//        public static void selfRegister() {
48
//            DataSwingManager dalSwingManager = DALSwingLocator.getSwingManager();
49
//            dalSwingManager.registerFeatureStoreSearchAction(new ShowFormActionFactory());
50
//            String[][] iconNames = new String[][]{
51
//                new String[]{"dalswing", "search-action-showform"}
52
//            };
53
//            IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
54
//            for (String[] icon : iconNames) {
55
//                URL url = ShowFormAction.class.getResource(icon[1] + ".png");
56
//                theme.registerDefault("DALSwing", icon[0], icon[1], null, url);
57
//            }
58
//        }
59
        
60
    }
61

    
62

    
63
    private static final Logger LOGGER = LoggerFactory.getLogger(ShowFormAction.class);
64
    
65
    private final FeatureStoreSearchPanel searchPanel;
66
    private boolean showFormSingleElement;
67

    
68
    public ShowFormAction(FeatureStoreSearchPanel searchPanel) {
69
        this.searchPanel = searchPanel;
70
        I18nManager i18n = ToolsLocator.getI18nManager();
71
        this.putValue(
72
                Action.SHORT_DESCRIPTION, 
73
                i18n.getTranslation("_Show_form")
74
        );
75
        this.putValue(
76
                Action.SMALL_ICON, 
77
                ToolsSwingLocator.getIconThemeManager().getCurrent().get("search-action-showform")
78
        );
79
        try {
80
            this.showFormSingleElement = true;
81
            FeatureStore store = this.searchPanel.getStore();
82
            FeatureAttributeDescriptor[] pks = store.getDefaultFeatureType().getPrimaryKey();
83
            if (pks == null || pks.length < 1) {
84
                this.showFormSingleElement = false;
85
            }
86
        } catch (Exception ex) {
87
        }        
88
    }
89
    
90
    @Override
91
    public void actionPerformed(ActionEvent e) {
92
        try {
93
            this.setEnabled(false);
94
            Expression filter = this.searchPanel.getSearchForSelectedFeature();
95
            if( filter==null ) {
96
                filter = this.searchPanel.getCurrentSearch();
97
            }
98
            DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
99

    
100
            FeatureStore store = this.searchPanel.getStore();
101
            FeatureQuery query = store.createFeatureQuery();
102
            query.setFilter(filter);
103
            query.retrievesAllAttributes();
104
            JFeaturesForm form = dataSwingManager.createJFeaturesForm(store);
105
            form.setQuery(query);
106
            form.showForm(WindowManager.MODE.WINDOW);
107
        } catch (Exception ex) {
108
            LOGGER.warn("Can't show form", ex);
109
        } finally {
110
            this.setEnabled(true);
111
        }
112
    }
113

    
114
    @Override
115
    public void valueChanged(ListSelectionEvent e) {
116
        if (e.getValueIsAdjusting()) {
117
            return;
118
        }
119
        if (this.searchPanel.getSelectedFeatureCount()== 0) {
120
            this.setEnabled(true);
121
            return;
122
        }
123
        this.setEnabled(showFormSingleElement);
124
    }
125
    
126
}