1 | |
package org.jtheque.films.view.impl.panels.search; |
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
import org.jtheque.core.managers.Managers; |
20 | |
import org.jtheque.core.managers.language.ILanguageManager; |
21 | |
import org.jtheque.core.utils.ui.PanelBuilder; |
22 | |
import org.jtheque.films.services.able.IActorService; |
23 | |
import org.jtheque.films.services.able.IRealizersService; |
24 | |
import org.jtheque.films.services.impl.utils.search.DataSearcher; |
25 | |
import org.jtheque.films.services.impl.utils.search.Searcher; |
26 | |
import org.jtheque.films.services.impl.utils.search.filters.ActorFilter; |
27 | |
import org.jtheque.films.services.impl.utils.search.filters.DurationFilter; |
28 | |
import org.jtheque.films.services.impl.utils.search.filters.KindFilter; |
29 | |
import org.jtheque.films.services.impl.utils.search.filters.LanguageFilter; |
30 | |
import org.jtheque.films.services.impl.utils.search.filters.NoteFilter; |
31 | |
import org.jtheque.films.services.impl.utils.search.filters.RealizerFilter; |
32 | |
import org.jtheque.films.services.impl.utils.search.filters.TypeFilter; |
33 | |
import org.jtheque.films.services.impl.utils.search.filters.YearFilter; |
34 | |
import org.jtheque.films.utils.Constants.Properties.Film; |
35 | |
import org.jtheque.films.view.impl.editors.DurationEditor; |
36 | |
import org.jtheque.films.view.impl.models.spinner.SpinnerDurationModel; |
37 | |
import org.jtheque.primary.od.able.Kind; |
38 | |
import org.jtheque.primary.od.able.Language; |
39 | |
import org.jtheque.primary.od.able.Person; |
40 | |
import org.jtheque.primary.od.able.Type; |
41 | |
import org.jtheque.primary.services.able.IKindsService; |
42 | |
import org.jtheque.primary.services.able.ILanguagesService; |
43 | |
import org.jtheque.primary.services.able.ITypesService; |
44 | |
import org.jtheque.primary.view.impl.models.DataContainerCachedComboBoxModel; |
45 | |
import org.jtheque.primary.view.impl.models.NotesComboBoxModel; |
46 | |
import org.jtheque.utils.ui.GridBagUtils; |
47 | |
|
48 | |
import javax.annotation.PostConstruct; |
49 | |
import javax.annotation.Resource; |
50 | |
import javax.swing.JCheckBox; |
51 | |
import javax.swing.JSpinner; |
52 | |
import javax.swing.JTextField; |
53 | |
|
54 | |
|
55 | |
|
56 | |
|
57 | |
|
58 | |
|
59 | 0 | public final class JPanelFilmSearch extends JPanelSearch { |
60 | |
private static final long serialVersionUID = 7108296888681550453L; |
61 | |
|
62 | |
private JCheckBox boxKind; |
63 | |
private JCheckBox boxActor; |
64 | |
private JCheckBox boxType; |
65 | |
private JCheckBox boxYear; |
66 | |
private JTextField fieldYearFrom; |
67 | |
private JTextField fieldYearTo; |
68 | |
private JCheckBox boxRealizer; |
69 | |
private JCheckBox boxLanguage; |
70 | |
private JCheckBox boxNote; |
71 | |
private JCheckBox boxDuration; |
72 | |
private JSpinner fieldDurationFrom; |
73 | |
private JSpinner fieldDurationTo; |
74 | |
|
75 | |
private NotesComboBoxModel modelNotes; |
76 | |
private DataContainerCachedComboBoxModel<Kind> modelKinds; |
77 | |
private DataContainerCachedComboBoxModel<Person> modelActors; |
78 | |
private DataContainerCachedComboBoxModel<Type> modelTypes; |
79 | |
private DataContainerCachedComboBoxModel<Person> modelRealizers; |
80 | |
private DataContainerCachedComboBoxModel<Language> modelLanguages; |
81 | |
|
82 | |
@Resource |
83 | |
private ITypesService typesService; |
84 | |
|
85 | |
@Resource |
86 | |
private ILanguagesService languagesService; |
87 | |
|
88 | |
@Resource |
89 | |
private IRealizersService realizersService; |
90 | |
|
91 | |
@Resource |
92 | |
private IKindsService kindsService; |
93 | |
|
94 | |
@Resource |
95 | |
private IActorService actorService; |
96 | |
|
97 | |
|
98 | |
|
99 | |
|
100 | |
@PostConstruct |
101 | |
private void build() { |
102 | 0 | PanelBuilder builder = new PanelBuilder(this); |
103 | |
|
104 | 0 | addKindChoice(builder); |
105 | 0 | addActorChoice(builder); |
106 | 0 | addTypeChoice(builder); |
107 | 0 | addYearChoice(builder); |
108 | 0 | addRealizerChoice(builder); |
109 | 0 | addLanguageChoice(builder); |
110 | 0 | addNoteChoice(builder); |
111 | 0 | addDurationChoice(builder); |
112 | 0 | } |
113 | |
|
114 | |
|
115 | |
|
116 | |
|
117 | |
|
118 | |
|
119 | |
private void addKindChoice(PanelBuilder builder) { |
120 | 0 | boxKind = builder.add(new JCheckBox(), builder.gbcSet(0, 0)); |
121 | |
|
122 | 0 | builder.addI18nLabel(Film.KIND, builder.gbcSet(1, 0)); |
123 | |
|
124 | 0 | modelKinds = new DataContainerCachedComboBoxModel<Kind>(kindsService); |
125 | |
|
126 | 0 | builder.addComboBox(modelKinds, builder.gbcSet(2, 0, GridBagUtils.NONE, 2, 1)); |
127 | 0 | } |
128 | |
|
129 | |
|
130 | |
|
131 | |
|
132 | |
|
133 | |
|
134 | |
private void addActorChoice(PanelBuilder builder) { |
135 | 0 | boxActor = builder.add(new JCheckBox(), builder.gbcSet(0, 1)); |
136 | |
|
137 | 0 | builder.addI18nLabel(Film.ACTORS, builder.gbcSet(1, 1)); |
138 | |
|
139 | 0 | modelActors = new DataContainerCachedComboBoxModel<Person>(actorService); |
140 | |
|
141 | 0 | builder.addComboBox(modelActors, builder.gbcSet(2, 1, GridBagUtils.NONE, 2, 1)); |
142 | 0 | } |
143 | |
|
144 | |
|
145 | |
|
146 | |
|
147 | |
|
148 | |
|
149 | |
private void addTypeChoice(PanelBuilder builder) { |
150 | 0 | boxType = builder.add(new JCheckBox(), builder.gbcSet(0, 2)); |
151 | |
|
152 | 0 | builder.addI18nLabel(Film.TYPE, builder.gbcSet(1, 2)); |
153 | |
|
154 | 0 | modelTypes = new DataContainerCachedComboBoxModel<Type>(typesService); |
155 | |
|
156 | 0 | builder.addComboBox(modelTypes, builder.gbcSet(2, 2, GridBagUtils.NONE, 2, 1)); |
157 | 0 | } |
158 | |
|
159 | |
|
160 | |
|
161 | |
|
162 | |
|
163 | |
|
164 | |
private void addRealizerChoice(PanelBuilder builder) { |
165 | 0 | boxRealizer = builder.add(new JCheckBox(), builder.gbcSet(0, 4)); |
166 | |
|
167 | 0 | builder.addI18nLabel(Film.REALIZER, builder.gbcSet(1, 4)); |
168 | |
|
169 | 0 | modelRealizers = new DataContainerCachedComboBoxModel<Person>(realizersService); |
170 | |
|
171 | 0 | builder.addComboBox(modelRealizers, builder.gbcSet(2, 4, GridBagUtils.NONE, 2, 1)); |
172 | 0 | } |
173 | |
|
174 | |
|
175 | |
|
176 | |
|
177 | |
|
178 | |
|
179 | |
private void addLanguageChoice(PanelBuilder builder) { |
180 | 0 | boxLanguage = builder.add(new JCheckBox(), builder.gbcSet(0, 5)); |
181 | |
|
182 | 0 | builder.addI18nLabel(Film.LANGUAGE, builder.gbcSet(1, 5)); |
183 | |
|
184 | 0 | modelLanguages = new DataContainerCachedComboBoxModel<Language>(languagesService); |
185 | |
|
186 | 0 | builder.addComboBox(modelLanguages, builder.gbcSet(2, 5, GridBagUtils.NONE, 2, 1)); |
187 | 0 | } |
188 | |
|
189 | |
|
190 | |
|
191 | |
|
192 | |
|
193 | |
|
194 | |
private void addNoteChoice(PanelBuilder builder) { |
195 | 0 | boxNote = builder.add(new JCheckBox(), builder.gbcSet(0, 6)); |
196 | |
|
197 | 0 | builder.addI18nLabel(Film.NOTE, builder.gbcSet(1, 6)); |
198 | |
|
199 | 0 | modelNotes = new NotesComboBoxModel(); |
200 | |
|
201 | 0 | builder.addComboBox(modelNotes, builder.gbcSet(2, 6, GridBagUtils.NONE, 2, 1)); |
202 | 0 | } |
203 | |
|
204 | |
|
205 | |
|
206 | |
|
207 | |
|
208 | |
|
209 | |
private void addYearChoice(PanelBuilder builder) { |
210 | 0 | boxYear = builder.add(new JCheckBox(), builder.gbcSet(0, 3)); |
211 | |
|
212 | 0 | builder.addI18nLabel(Film.YEAR, builder.gbcSet(1, 3)); |
213 | |
|
214 | 0 | fieldYearFrom = builder.add(new JTextField(4), builder.gbcSet(2, 3)); |
215 | |
|
216 | 0 | builder.addI18nLabel("search.film.to", builder.gbcSet(3, 3)); |
217 | |
|
218 | 0 | fieldYearTo = builder.add(new JTextField(4), builder.gbcSet(4, 3)); |
219 | 0 | } |
220 | |
|
221 | |
|
222 | |
|
223 | |
|
224 | |
|
225 | |
|
226 | |
private void addDurationChoice(PanelBuilder builder) { |
227 | 0 | boxDuration = builder.add(new JCheckBox(), builder.gbcSet(0, 7)); |
228 | |
|
229 | 0 | builder.addI18nLabel(Film.DURATION, builder.gbcSet(1, 7)); |
230 | |
|
231 | 0 | fieldDurationFrom = new JSpinner(new SpinnerDurationModel("1:00")); |
232 | 0 | fieldDurationFrom.setEditor(new DurationEditor(fieldDurationFrom)); |
233 | 0 | builder.add(fieldDurationFrom, builder.gbcSet(2, 7)); |
234 | |
|
235 | 0 | builder.addI18nLabel("search.film.to", builder.gbcSet(3, 7)); |
236 | |
|
237 | 0 | fieldDurationTo = new JSpinner(new SpinnerDurationModel("2:00")); |
238 | 0 | fieldDurationTo.setEditor(new DurationEditor(fieldDurationTo)); |
239 | 0 | builder.add(fieldDurationTo, builder.gbcSet(4, 7)); |
240 | 0 | } |
241 | |
|
242 | |
@Override |
243 | |
public String getTitle() { |
244 | 0 | return Managers.getManager(ILanguageManager.class).getMessage("search.film.title"); |
245 | |
} |
246 | |
|
247 | |
@Override |
248 | |
public Searcher<org.jtheque.films.persistence.od.able.Film> getSearcher() { |
249 | 0 | Searcher<org.jtheque.films.persistence.od.able.Film> searcher = new DataSearcher<org.jtheque.films.persistence.od.able.Film>(); |
250 | |
|
251 | 0 | if (boxActor.isSelected()) { |
252 | 0 | searcher.addFilter(new ActorFilter(modelActors.getSelectedData())); |
253 | |
} |
254 | |
|
255 | 0 | if (boxKind.isSelected()) { |
256 | 0 | searcher.addFilter(new KindFilter(modelKinds.getSelectedData())); |
257 | |
} |
258 | |
|
259 | 0 | if (boxType.isSelected()) { |
260 | 0 | searcher.addFilter(new TypeFilter(modelTypes.getSelectedData())); |
261 | |
} |
262 | |
|
263 | 0 | if (boxRealizer.isSelected()) { |
264 | 0 | searcher.addFilter(new RealizerFilter(modelRealizers.getSelectedData())); |
265 | |
} |
266 | |
|
267 | 0 | if (boxLanguage.isSelected()) { |
268 | 0 | searcher.addFilter(new LanguageFilter(modelLanguages.getSelectedData())); |
269 | |
} |
270 | |
|
271 | 0 | if (boxNote.isSelected()) { |
272 | 0 | searcher.addFilter(new NoteFilter<org.jtheque.films.persistence.od.able.Film>(modelNotes.getSelectedNote())); |
273 | |
} |
274 | |
|
275 | 0 | if (boxYear.isSelected()) { |
276 | 0 | searcher.addFilter(new YearFilter(Integer.parseInt(fieldYearFrom.getText()), Integer.parseInt(fieldYearTo.getText()))); |
277 | |
} |
278 | |
|
279 | 0 | if (boxDuration.isSelected()) { |
280 | 0 | searcher.addFilter(new DurationFilter( |
281 | |
((SpinnerDurationModel) fieldDurationFrom.getModel()).intValue(), |
282 | |
((SpinnerDurationModel) fieldDurationTo.getModel()).intValue())); |
283 | |
} |
284 | |
|
285 | 0 | return searcher; |
286 | |
} |
287 | |
} |