source: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java@ 591

Last change on this file since 591 was 591, checked in by alloc, 12 years ago

AEI2-import

File size: 6.9 KB
Line 
1package net.oni2.aeinstaller.gui;
2
3import java.awt.Frame;
4import java.io.File;
5import java.util.ArrayList;
6import java.util.Comparator;
7import java.util.List;
8import java.util.ResourceBundle;
9import java.util.TreeMap;
10
11import javax.swing.JComboBox;
12import javax.swing.JFrame;
13import javax.swing.JOptionPane;
14import javax.swing.JTable;
15import javax.swing.ListSelectionModel;
16import javax.swing.RowSorter;
17import javax.swing.RowSorter.SortKey;
18import javax.swing.SortOrder;
19import javax.swing.SwingUtilities;
20import javax.swing.event.ListSelectionEvent;
21import javax.swing.event.ListSelectionListener;
22import javax.swing.table.TableRowSorter;
23
24import net.oni2.aeinstaller.backend.Settings;
25import net.oni2.aeinstaller.backend.StuffToRefactorLater;
26import net.oni2.aeinstaller.backend.depot.DepotCacheUpdateProgressListener;
27import net.oni2.aeinstaller.backend.depot.DepotConfig;
28import net.oni2.aeinstaller.backend.depot.DepotManager;
29import net.oni2.aeinstaller.backend.depot.model.NodeMod;
30import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
31import net.oni2.aeinstaller.gui.modtable.ModTableFilter;
32import net.oni2.aeinstaller.gui.modtable.ModTableModel;
33import net.oni2.aeinstaller.gui.settings.SettingsDialog;
34
35import org.javabuilders.BuildResult;
36import org.javabuilders.annotations.DoInBackground;
37import org.javabuilders.event.BackgroundEvent;
38import org.javabuilders.swing.SwingJavaBuilder;
39
40/**
41 * @author Christian Illy
42 */
43public class MainWin extends JFrame implements ListSelectionListener {
44 private static final long serialVersionUID = -4027395051382659650L;
45
46 private ResourceBundle bundle = ResourceBundle.getBundle(getClass()
47 .getName());
48 @SuppressWarnings("unused")
49 private BuildResult result = SwingJavaBuilder.build(this, bundle);
50
51 private JComboBox cmbModTypes;
52 private JTable tblMods;
53 private ModTableModel model;
54 private TableRowSorter<ModTableModel> sorter;
55
56 /**
57 * Constructor of main window.
58 */
59 public MainWin() {
60 this.setTitle(bundle.getString("frame.title") + " - v"
61 + bundle.getString("version"));
62
63 initTable();
64 initModTypeBox();
65 }
66
67 private void initModTypeBox() {
68 int vid = DepotManager.getInstance()
69 .getVocabulary(DepotConfig.MODTYPE_VOCAB).getVid();
70 TreeMap<String, TaxonomyTerm> terms = new TreeMap<String, TaxonomyTerm>();
71 terms.put(" ", new TaxonomyTerm(-1, vid, "-All-"));
72 for (TaxonomyTerm t : DepotManager.getInstance()
73 .getTaxonomyTermsByVocabulary(vid)) {
74 terms.put(t.getName(), t);
75 }
76 for (TaxonomyTerm t : terms.values()) {
77 cmbModTypes.addItem(t);
78 }
79 cmbModTypes.setSelectedIndex(0);
80 }
81
82 private void initTable() {
83 tblMods.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
84 tblMods.getSelectionModel().addListSelectionListener(this);
85
86 model = new ModTableModel();
87
88 tblMods.setModel(model);
89
90 sorter = new TableRowSorter<ModTableModel>(model);
91 tblMods.setRowSorter(sorter);
92
93 sorter.setRowFilter(new ModTableFilter(-1));
94
95 sorter.setSortable(2, false);
96 sorter.setComparator(1, new Comparator<String>() {
97
98 @Override
99 public int compare(String o1, String o2) {
100 int i1 = Integer.parseInt(o1);
101 int i2 = Integer.parseInt(o2);
102 return i1 - i2;
103 }
104 });
105
106 List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
107 sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
108 sorter.setSortKeys(sortKeys);
109
110 for (int i = 0; i < model.getColumnCount(); i++) {
111 model.setColumnConstraints(i, tblMods.getColumnModel().getColumn(i));
112 }
113
114 // for (int i = 3; i > 0; i--) {
115 // tblMods.getColumnModel().removeColumn(tblMods.getColumnModel().getColumn(i));
116 // }
117 }
118
119 @SuppressWarnings("unused")
120 private boolean closeFrames() {
121 System.gc();
122 for (Frame f : Frame.getFrames()) {
123 if (f != this)
124 f.dispose();
125 }
126 return true;
127 }
128
129 private void exit() {
130 setVisible(false);
131 dispose();
132 }
133
134 @SuppressWarnings("unused")
135 private void saveLocalData() {
136 Settings.getInstance().serializeToFile();
137 DepotManager.getInstance().saveToFile(
138 new File(Settings.getDepotCacheFilename()));
139 }
140
141 @SuppressWarnings("unused")
142 private boolean validatePath() {
143 if (!StuffToRefactorLater.verifyRunningDirectory()) {
144 JOptionPane.showMessageDialog(this,
145 bundle.getString("invalidPath.text"),
146 bundle.getString("invalidPath.title"),
147 JOptionPane.ERROR_MESSAGE);
148 if (!Settings.getDebug()) {
149 exit();
150 return false;
151 }
152 }
153 return true;
154 }
155
156 @DoInBackground(progressMessage = "updateDepot.title", cancelable = false, indeterminateProgress = false)
157 private void execDepotUpdate(final BackgroundEvent evt) {
158 try {
159 DepotManager.getInstance().updateInformation(false,
160 new DepotCacheUpdateProgressListener() {
161
162 @Override
163 public void cacheUpdateProgress(String stepName,
164 int current, int total) {
165 evt.setProgressEnd(total);
166 evt.setProgressValue(current);
167 evt.setProgressMessage(stepName);
168 }
169 });
170 model.reloadData();
171 DepotManager.getInstance().printStats();
172 } catch (Exception e) {
173 e.printStackTrace();
174 }
175 }
176
177 @SuppressWarnings("unused")
178 private void checkUpdates() {
179 if (Settings.getInstance().get("notifyupdates", true)) {
180 }
181 }
182
183 @SuppressWarnings("unused")
184 private void focus() {
185 SwingUtilities.invokeLater(new Runnable() {
186
187 @Override
188 public void run() {
189 toFront();
190 repaint();
191 }
192 });
193
194 }
195
196 @SuppressWarnings("unused")
197 private void showSettings() {
198 SettingsDialog.openWindow();
199 }
200
201 @SuppressWarnings("unused")
202 private void modTypeSelection() {
203 TaxonomyTerm t = (TaxonomyTerm) cmbModTypes.getSelectedItem();
204 sorter.setRowFilter(new ModTableFilter(t.getTid()));
205 }
206
207 @SuppressWarnings("unused")
208 private void sortAlpha() {
209 SortOrder order = SortOrder.ASCENDING;
210 for (SortKey sk : sorter.getSortKeys()) {
211 if (sk.getColumn() == 0) {
212 if (sk.getSortOrder() == SortOrder.ASCENDING)
213 order = SortOrder.DESCENDING;
214 }
215 }
216 List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
217 sortKeys.add(new RowSorter.SortKey(0, order));
218 sorter.setSortKeys(sortKeys);
219 }
220
221 @SuppressWarnings("unused")
222 private void sortPackageNumber() {
223 SortOrder order = SortOrder.ASCENDING;
224 for (SortKey sk : sorter.getSortKeys()) {
225 if (sk.getColumn() == 1) {
226 if (sk.getSortOrder() == SortOrder.ASCENDING)
227 order = SortOrder.DESCENDING;
228 }
229 }
230 List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
231 sortKeys.add(new RowSorter.SortKey(1, order));
232 sorter.setSortKeys(sortKeys);
233 }
234
235 @Override
236 public void valueChanged(ListSelectionEvent arg0) {
237 int viewRow = tblMods.getSelectedRow();
238 if (viewRow < 0)
239 // TODO
240 return;
241 int modelRow = tblMods.convertRowIndexToModel(viewRow);
242 NodeMod mod = (NodeMod) model.getValueAt(modelRow, -1);
243 // TODO
244 }
245}
Note: See TracBrowser for help on using the repository browser.