1 | |
package org.jtheque.films.view.impl.frames; |
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
import org.jdesktop.swingx.JXRadioGroup; |
20 | |
import org.jtheque.core.managers.error.JThequeError; |
21 | |
import org.jtheque.core.managers.view.impl.components.model.SimpleComboBoxModel; |
22 | |
import org.jtheque.core.managers.view.impl.components.panel.FileChooserPanel; |
23 | |
import org.jtheque.core.managers.view.impl.frame.abstraction.SwingDialogView; |
24 | |
import org.jtheque.core.utils.ui.PanelBuilder; |
25 | |
import org.jtheque.core.utils.ui.ValidationUtils; |
26 | |
import org.jtheque.films.utils.Constants.Site; |
27 | |
import org.jtheque.films.view.able.IAutoImportView; |
28 | |
import org.jtheque.films.view.impl.actions.CloseViewAction; |
29 | |
import org.jtheque.films.view.impl.actions.auto.imports.AcAddTitle; |
30 | |
import org.jtheque.films.view.impl.actions.auto.imports.AcDeleteTitle; |
31 | |
import org.jtheque.films.view.impl.actions.auto.imports.AcSearchTitles; |
32 | |
import org.jtheque.films.view.impl.actions.auto.imports.AcValidateAutoImportView; |
33 | |
import org.jtheque.films.view.impl.models.able.IAutoImportFilm; |
34 | |
|
35 | |
import javax.swing.DefaultListModel; |
36 | |
import javax.swing.JList; |
37 | |
import javax.swing.ListSelectionModel; |
38 | |
import java.awt.Color; |
39 | |
import java.awt.Container; |
40 | |
import java.awt.Frame; |
41 | |
import java.awt.GridBagConstraints; |
42 | |
import java.util.Collection; |
43 | |
|
44 | |
|
45 | |
|
46 | |
|
47 | |
|
48 | |
|
49 | 0 | public final class AutoImportVIew extends SwingDialogView implements IAutoImportView { |
50 | |
private static final long serialVersionUID = 4633039680922071605L; |
51 | |
|
52 | |
private FileChooserPanel directoryChooser; |
53 | |
private JList listTitles; |
54 | |
private JXRadioGroup<String> fileMode; |
55 | |
private JXRadioGroup<String> webMode; |
56 | |
|
57 | |
private SimpleComboBoxModel<Site> sitesModel; |
58 | |
private DefaultListModel modelListTitles; |
59 | |
|
60 | 0 | private int phase = PHASE_1; |
61 | |
|
62 | |
|
63 | |
|
64 | |
|
65 | |
|
66 | |
|
67 | |
public AutoImportVIew(Frame parent) { |
68 | 0 | super(parent); |
69 | |
|
70 | 0 | build(); |
71 | 0 | } |
72 | |
|
73 | |
|
74 | |
|
75 | |
|
76 | |
private void build() { |
77 | 0 | setTitleKey("auto.import.view.title"); |
78 | 0 | setContentPane(buildContentPane()); |
79 | 0 | setResizable(false); |
80 | 0 | pack(); |
81 | |
|
82 | 0 | setLocationRelativeTo(getOwner()); |
83 | 0 | } |
84 | |
|
85 | |
|
86 | |
|
87 | |
|
88 | |
|
89 | |
|
90 | |
private Container buildContentPane() { |
91 | 0 | PanelBuilder builder = new PanelBuilder(); |
92 | |
|
93 | 0 | addDirectoryChooser(builder); |
94 | 0 | addFileModeField(builder); |
95 | |
|
96 | 0 | builder.addButtonBar(builder.gbcSet(0, 2, GridBagConstraints.HORIZONTAL, 2, 1), new AcSearchTitles()); |
97 | |
|
98 | 0 | addTitleList(builder); |
99 | |
|
100 | 0 | builder.addButtonBar(builder.gbcSet(0, 4, GridBagConstraints.HORIZONTAL, 2, 1), |
101 | |
new AcDeleteTitle(), new AcAddTitle()); |
102 | |
|
103 | 0 | addWebModeField(builder); |
104 | 0 | addSiteField(builder); |
105 | |
|
106 | 0 | builder.addButtonBar(builder.gbcSet(0, 7, GridBagConstraints.HORIZONTAL, 2, 1), |
107 | |
new AcValidateAutoImportView(), new CloseViewAction("generic.view.actions.cancel", this)); |
108 | |
|
109 | 0 | return builder.getPanel(); |
110 | |
} |
111 | |
|
112 | |
|
113 | |
|
114 | |
|
115 | |
|
116 | |
|
117 | |
private void addDirectoryChooser(PanelBuilder builder) { |
118 | 0 | directoryChooser = new FileChooserPanel(); |
119 | 0 | directoryChooser.setDirectoriesOnly(); |
120 | 0 | directoryChooser.setTextKey("auto.import.file.folder"); |
121 | |
|
122 | 0 | builder.add(directoryChooser, builder.gbcSet(0, 0, GridBagConstraints.HORIZONTAL, 2, 1)); |
123 | 0 | } |
124 | |
|
125 | |
|
126 | |
|
127 | |
|
128 | |
|
129 | |
|
130 | |
private void addFileModeField(PanelBuilder builder) { |
131 | 0 | builder.addI18nLabel("auto.import.file.mode", builder.gbcSet(0, 1)); |
132 | |
|
133 | 0 | String[] values = {getMessage("auto.import.file.mode.file"), getMessage("auto.import.file.mode.directory")}; |
134 | |
|
135 | 0 | fileMode = new JXRadioGroup<String>(values); |
136 | 0 | fileMode.setBackground(Color.white); |
137 | 0 | fileMode.setSelectedValue(values[0]); |
138 | |
|
139 | 0 | builder.add(fileMode, builder.gbcSet(1, 1)); |
140 | 0 | } |
141 | |
|
142 | |
|
143 | |
|
144 | |
|
145 | |
|
146 | |
|
147 | |
private void addTitleList(PanelBuilder builder) { |
148 | 0 | modelListTitles = new DefaultListModel(); |
149 | |
|
150 | 0 | listTitles = new JList(modelListTitles); |
151 | 0 | listTitles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
152 | 0 | listTitles.setVisibleRowCount(5); |
153 | |
|
154 | 0 | builder.addScrolled(listTitles, builder.gbcSet(0, 3, GridBagConstraints.HORIZONTAL, 2, 1)); |
155 | 0 | } |
156 | |
|
157 | |
|
158 | |
|
159 | |
|
160 | |
|
161 | |
|
162 | |
private void addWebModeField(PanelBuilder builder) { |
163 | |
String[] values; |
164 | 0 | builder.addI18nLabel("auto.import.web.mode", builder.gbcSet(0, 5)); |
165 | |
|
166 | 0 | values = new String[]{getMessage("auto.import.web.mode.empty"), getMessage("auto.import.web.mode.fill")}; |
167 | |
|
168 | 0 | webMode = new JXRadioGroup<String>(values); |
169 | 0 | webMode.setBackground(Color.white); |
170 | 0 | webMode.setSelectedValue(values[0]); |
171 | |
|
172 | 0 | builder.add(webMode, builder.gbcSet(1, 5)); |
173 | 0 | } |
174 | |
|
175 | |
|
176 | |
|
177 | |
|
178 | |
|
179 | |
|
180 | |
private void addSiteField(PanelBuilder builder) { |
181 | 0 | builder.addI18nLabel("auto.import.web.site", builder.gbcSet(0, 6)); |
182 | |
|
183 | 0 | sitesModel = new SimpleComboBoxModel<Site>(Site.values()); |
184 | |
|
185 | 0 | builder.addComboBox(sitesModel, builder.gbcSet(1, 6)); |
186 | 0 | } |
187 | |
|
188 | |
@Override |
189 | |
public String getFolderPath() { |
190 | 0 | return directoryChooser.getFilePath(); |
191 | |
} |
192 | |
|
193 | |
@Override |
194 | |
public String getSelectedTitle() { |
195 | 0 | return (String) listTitles.getSelectedValue(); |
196 | |
} |
197 | |
|
198 | |
@Override |
199 | |
public DefaultListModel getModelTitles() { |
200 | 0 | return modelListTitles; |
201 | |
} |
202 | |
|
203 | |
@Override |
204 | |
public IAutoImportFilm getModel() { |
205 | 0 | return (IAutoImportFilm) super.getModel(); |
206 | |
} |
207 | |
|
208 | |
@Override |
209 | |
public boolean isFileMode() { |
210 | 0 | return fileMode.getSelectedValue().equals(getMessage("auto.import.file.mode.file")); |
211 | |
} |
212 | |
|
213 | |
@Override |
214 | |
public boolean isWebMode() { |
215 | 0 | return webMode.getSelectedValue().equals(getMessage("auto.import.web.mode.fill")); |
216 | |
} |
217 | |
|
218 | |
@Override |
219 | |
public Site getSelectedSite() { |
220 | 0 | return sitesModel.getSelectedItem(); |
221 | |
} |
222 | |
|
223 | |
@Override |
224 | |
protected void validate(Collection<JThequeError> errors) { |
225 | 0 | if (PHASE_1 == phase) { |
226 | 0 | ValidationUtils.rejectIfEmpty(directoryChooser.getFilePath(), "auto.import.file.folder", errors); |
227 | 0 | } else if (PHASE_2 == phase) { |
228 | 0 | ValidationUtils.rejectIfEmpty(getModel().getTitles(), "auto.import.view.title", errors); |
229 | 0 | ValidationUtils.rejectIfNothingSelected(sitesModel, "auto.import.web.site", errors); |
230 | |
} |
231 | 0 | } |
232 | |
|
233 | |
@Override |
234 | |
public boolean validateContent(int phase) { |
235 | 0 | this.phase = phase; |
236 | |
|
237 | 0 | return validateContent(); |
238 | |
} |
239 | |
} |