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 / SearchConditionPanelAdvanced.java @ 44855

History | View | Annotate | Download (4.75 KB)

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

    
3
import javax.swing.JButton;
4
import javax.swing.JComponent;
5
import javax.swing.event.ChangeListener;
6
import javax.swing.text.JTextComponent;
7
import org.gvsig.expressionevaluator.Expression;
8
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
9
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
10
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
11
import org.gvsig.fmap.dal.feature.FeatureStore;
12
import org.gvsig.fmap.dal.swing.DALSwingLocator;
13
import org.gvsig.fmap.dal.swing.DataSwingManager;
14
import org.gvsig.fmap.dal.swing.searchpanel.AbstractSearchConditionPanel;
15
import org.gvsig.fmap.dal.swing.searchpanel.SearchConditionPanel;
16
import org.gvsig.fmap.dal.swing.searchpanel.SearchParameters;
17
import org.gvsig.tools.swing.api.ChangeListenerHelper;
18
import org.gvsig.tools.swing.api.ToolsSwingLocator;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class SearchConditionPanelAdvanced
25
        extends AbstractSearchConditionPanel
26
        implements SearchConditionPanel {
27

    
28
    @Override
29
    public JComponent asJComponent() {
30
        return null;
31
    }
32

    
33
    @Override
34
    public void put(SearchParameters params) {
35
        Expression filter = params.getQuery().getExpressionFilter();
36
        this.set(filter);
37
    }
38

    
39
    @Override
40
    public SearchParameters fetch(SearchParameters params) {
41
        if (params == null) {
42
            return params;
43
        }
44
        Expression exp = this.get();
45
        if (exp == null){
46
            params.getQuery().setFilter((Expression) null);
47
        }else if (exp.isEmpty()) {
48
            params.getQuery().clearFilter();
49
        } else {
50
            params.getQuery().setFilter(exp);
51
        }
52
        return params;
53
    }
54

    
55
    private static class SearchConditionPanelAdvancedFactory
56
            implements SearchConditionPanelFactory {
57

    
58
        @Override
59
        public boolean isApplicable(FeatureStore store) {
60
            return true;
61
        }
62

    
63
        @Override
64
        public SearchConditionPanel create(Object... os) {
65
            return null;
66
        }
67

    
68
        @Override
69
        public String getName() {
70
            return "Advanced";
71
        }
72

    
73
    }
74

    
75
    private static final SearchConditionPanelFactory FACTORY = new SearchConditionPanelAdvancedFactory();
76

    
77
    private final ExpressionPickerController advancedExpression;
78
    private final FeatureStore store;
79
    private final ChangeListenerHelper changeListenerHelper;
80

    
81
    public SearchConditionPanelAdvanced(
82
            FeatureStore store,
83
            JTextComponent text,
84
            JButton button,
85
            JButton bookmarks,
86
            JButton history
87
    ) {
88
        this.changeListenerHelper = ToolsSwingLocator.getToolsSwingManager().createChangeListenerHelper();
89
        this.store = store;
90
        ExpressionEvaluatorSwingManager expressionSwingManager = ExpressionEvaluatorSwingLocator.getManager();
91
        DataSwingManager dataSwingManager = DALSwingLocator.getManager();
92
        this.advancedExpression = dataSwingManager.createExpressionPickerController(
93
                this.store,
94
                text,
95
                button,
96
                bookmarks,
97
                history
98
        );
99
        initComponents();
100
    }
101

    
102
    @Override
103
    public SearchConditionPanelFactory getFactory() {
104
        return FACTORY;
105
    }
106

    
107
    private void initComponents() {
108
    }
109

    
110
    @Override
111
    public void clear() {
112
        this.advancedExpression.set(null);
113
        this.changeListenerHelper.fireEvent();
114
    }
115

    
116
    @Override
117
    public Expression get() {
118
        return this.advancedExpression.get();
119
    }
120

    
121
    @Override
122
    public boolean isValid(StringBuilder message) {
123
        if (this.advancedExpression.isValid()) {
124
            return true;
125
        }
126
        message.append("The expression entered is not valid.");
127
        return false;
128
    }
129

    
130
    @Override
131
    public boolean set(Expression filter) {
132
        this.advancedExpression.set(filter);
133
        this.changeListenerHelper.fireEvent();
134
        return true;
135
    }
136

    
137
    @Override
138
    public void setEnabled(boolean enabled) {
139
        this.advancedExpression.setEnabled(enabled);
140
    }
141

    
142
    @Override
143
    public void addChangeListener(ChangeListener listener) {
144
        this.changeListenerHelper.addChangeListener(listener);
145
    }
146

    
147
    @Override
148
    public ChangeListener[] getChangeListeners() {
149
        return this.changeListenerHelper.getChangeListeners();
150
    }
151

    
152
    @Override
153
    public void removeChangeListener(ChangeListener listener) {
154
        this.changeListenerHelper.removeChangeListener(listener);
155
    }
156

    
157
    @Override
158
    public void removeAllChangeListener() {
159
        this.changeListenerHelper.removeAllChangeListener();
160
    }
161

    
162
    @Override
163
    public boolean hasChangeListeners() {
164
        return this.changeListenerHelper.hasChangeListeners();
165
    }
166

    
167
}