Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.impl / src / main / java / org / gvsig / export / swing / impl / panels / SelectFilterPanel.java @ 44539

History | View | Annotate | Download (6.79 KB)

1
package org.gvsig.export.swing.impl.panels;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.List;
6
import javax.swing.DefaultListModel;
7
import javax.swing.JComponent;
8
import org.gvsig.export.ExportLocator;
9
import org.gvsig.export.ExportManager;
10
import org.gvsig.export.ExportManager.ExportFilter;
11
import org.gvsig.export.ExportParameters;
12
import org.gvsig.export.swing.JExportProcessPanel;
13
import org.gvsig.export.swing.spi.ExportPanel;
14
import org.gvsig.export.swing.spi.ExportPanelValidationException;
15
import org.gvsig.export.swing.spi.ExportPanelsManager;
16
import org.gvsig.expressionevaluator.Expression;
17
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
18
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
19
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
20
import org.gvsig.fmap.dal.feature.FeatureStore;
21
import org.gvsig.fmap.dal.swing.DALSwingLocator;
22
import org.gvsig.fmap.dal.swing.DataSwingManager;
23
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
24
import org.gvsig.tools.ToolsLocator;
25
import org.gvsig.tools.i18n.I18nManager;
26
import org.gvsig.tools.swing.api.ListElement;
27
import org.slf4j.Logger;
28
import org.slf4j.LoggerFactory;
29

    
30
/**
31
 *
32
 * @author jjdelcerro
33
 */
34
public class SelectFilterPanel
35
        extends SelectFilterPanelView
36
        implements ExportPanel {
37

    
38
    private static final Logger LOG = LoggerFactory.getLogger(SelectFilterPanel.class);
39

    
40
    private final ExportParameters parameters;
41
    private final JExportProcessPanel processPanel;
42
    private ExpressionPickerController pickerExpression;
43

    
44
    public SelectFilterPanel(
45
            JExportProcessPanel processPanel,
46
            ExportParameters parameters
47
    ) {
48
        this.processPanel = processPanel;
49
        this.parameters = parameters;
50
        this.initComponents();
51
    }
52

    
53
    @Override
54
    public String getIdPanel() {
55
        return ExportPanelsManager.PANEL_SELECT_FILTER;
56
    }
57

    
58
    @Override
59
    public String getTitlePanel() {
60
        I18nManager i18n = ToolsLocator.getI18nManager();
61
        return i18n.getTranslation("_Filter");
62
    }
63

    
64
    @Override
65
    public boolean validatePanel() throws ExportPanelValidationException {
66
        checkPanel(true);
67
        return true;
68
    }
69

    
70
    @Override
71
    public void enterPanel() {
72
        if (this.parameters.getFilterExpresion()!=null) {
73
            this.pickerExpression.set(this.parameters.getFilterExpresion());
74
        }
75
        switch(this.parameters.getFeaturesToUse()) {
76
            case ExportParameters.USE_FILTERED_FEATURES:
77
                this.rdbFilteredRows.setSelected(true);
78
                break;
79
            case ExportParameters.USE_SELECTED_FEATURES:
80
                this.rdbSelectedRows.setSelected(true);
81
                break;
82
            case ExportParameters.USE_ALL_FEATURES:
83
            default:
84
                this.rdbAllRows.setSelected(true);
85
                break;
86
        }
87
        doChangeOption();
88
    }
89

    
90
    @Override
91
    public void previousPanel() {
92

    
93
    }
94

    
95
    @Override
96
    public void nextPanel() {
97
        this.parameters.setFilterExpresion(this.getFilterExpresion());
98
        if (this.isFullLayerSelected()) {
99
            this.parameters.setFeaturesToUse(ExportParameters.USE_ALL_FEATURES);
100
        } else if (this.isPersonalizedFilterSelected()) {
101
            this.parameters.setFeaturesToUse(ExportParameters.USE_FILTERED_FEATURES);
102
        } else {
103
            this.parameters.setFeaturesToUse(ExportParameters.USE_SELECTED_FEATURES);
104
        }
105
    }
106

    
107
    @Override
108
    public JComponent asJComponent() {
109
        return this;
110
    }
111

    
112
    private void initComponents() {
113

    
114
        ExportManager manager = ExportLocator.getManager();
115

    
116
        DefaultListModel model = new DefaultListModel();
117
        List<ExportManager.ExportFilter> filters = manager.getFilters();
118
        for (ExportFilter filter : filters) {
119
            model.addElement(new ListElement(filter.getName(), filter.getExpression()));
120
        }
121

    
122
        ActionListener changeOptionAction = new ActionListener() {
123
            @Override
124
            public void actionPerformed(ActionEvent e) {
125
                doChangeOption();
126
            }
127
        };
128
        this.rdbAllRows.addActionListener(changeOptionAction);
129
        this.rdbFilteredRows.addActionListener(changeOptionAction);
130
        this.rdbSelectedRows.addActionListener(changeOptionAction);
131
        this.rdbAllRows.setSelected(true);
132
        doChangeOption();
133
        ExpressionEvaluatorSwingManager expManager = ExpressionEvaluatorSwingLocator.getManager();
134
        this.pickerExpression = expManager.createExpressionPickerController(txtPicker, btnPickerExp, btnPickerBook, btnPickerHis);
135
        FeatureStore store = this.parameters.getSourceFeatureStore();
136
        if (store != null) {
137
            DataSwingManager swm = DALSwingLocator.getSwingManager();
138
            FeatureStoreElement expStore = swm.createFeatureStoreElement(store);
139
            this.pickerExpression.addElement(expStore);
140
        }
141
        this.translate();
142
    }
143

    
144
    private void translate() {
145
        I18nManager i18nManager = ToolsLocator.getI18nManager();
146

    
147
        this.rdbAllRows.setText(i18nManager.getTranslation("_Todos_los_registros"));
148
        this.rdbSelectedRows.setText(i18nManager.getTranslation("_Los_registros_seleccionados"));
149
        this.rdbFilteredRows.setText(i18nManager.getTranslation("_Los_registros_que_cumplan_el_critrio_seleccionado"));
150
        this.lblHeader.setText(i18nManager.getTranslation("_Indique_que_registros_desea_exportar"));
151
    }
152

    
153
    protected void doChangeOption() {
154
    }
155

    
156
    public boolean isFullLayerSelected() {
157
        return this.rdbAllRows.isSelected();
158
    }
159

    
160
    public boolean isSelectedFeaturesSelected() {
161
        return this.rdbSelectedRows.isSelected();
162
    }
163

    
164
    public boolean isPersonalizedFilterSelected() {
165
        return this.rdbFilteredRows.isSelected();
166
    }
167

    
168
    public void checkPanel(boolean save) throws ExportPanelValidationException {
169
        if (this.rdbFilteredRows.isSelected()) {
170
            I18nManager i18nManager = ToolsLocator.getI18nManager();
171
            
172
            if (this.pickerExpression.isEmpty()) {
173
                throw new ExportPanelValidationException(
174
                        i18nManager.getTranslation("_The_expresion_is_empty_Check_other_option_or_enter_a_expresion")
175
                );
176
            }
177

    
178
            if (!this.pickerExpression.isValid()) {
179
                throw new ExportPanelValidationException(
180
                        i18nManager.getTranslation("_Problems_compiling_the_expesion_Check_the_sintax_Remember_use_SQL_expresion_sintax")
181
                );
182
            }
183
        }
184
    }
185

    
186

    
187
    public Expression getFilterExpresion() {
188
        if (this.pickerExpression.isValid()) {
189
            Expression exp = this.pickerExpression.get();
190
            return exp;
191
        } else {
192
            return null;
193
        }
194
    }
195

    
196
}