Ignore:
Timestamp:
Jan 18, 2013, 4:45:11 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.90:

  • Added blank persist.dat for UnlockLevel to always work
  • Made local paths use the sanitized mod-name
  • Added mod-state column to mod table
Location:
AE/installer2/src/net/oni2/aeinstaller/gui
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r630 r631  
    44import java.awt.Desktop;
    55import java.awt.event.ActionEvent;
    6 import java.awt.event.ActionListener;
    76import java.awt.event.ItemEvent;
    87import java.awt.event.ItemListener;
    9 import java.awt.event.MouseAdapter;
    10 import java.awt.event.MouseEvent;
    118import java.io.File;
    129import java.io.IOException;
    1310import java.net.URL;
    14 import java.util.ArrayList;
    1511import java.util.HashMap;
    1612import java.util.HashSet;
    17 import java.util.List;
    1813import java.util.ResourceBundle;
    1914import java.util.TreeMap;
     
    2722import javax.swing.JCheckBox;
    2823import javax.swing.JComboBox;
    29 import javax.swing.JComponent;
    3024import javax.swing.JFileChooser;
    3125import javax.swing.JFrame;
     
    3529import javax.swing.JOptionPane;
    3630import javax.swing.JPanel;
    37 import javax.swing.JPopupMenu;
    3831import javax.swing.JRadioButton;
    3932import javax.swing.JSplitPane;
    40 import javax.swing.JTable;
    41 import javax.swing.ListSelectionModel;
    42 import javax.swing.RowSorter;
    43 import javax.swing.SortOrder;
    4433import javax.swing.SwingUtilities;
    45 import javax.swing.event.ListSelectionEvent;
    46 import javax.swing.event.ListSelectionListener;
     34import javax.swing.ToolTipManager;
    4735import javax.swing.filechooser.FileFilter;
    48 import javax.swing.table.TableRowSorter;
    4936
    5037import net.oni2.aeinstaller.AEInstaller2;
     
    6855import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
    6956import net.oni2.aeinstaller.gui.modtable.DownloadSizeListener;
    70 import net.oni2.aeinstaller.gui.modtable.ModTableFilter;
    71 import net.oni2.aeinstaller.gui.modtable.ModTableModel;
     57import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
     58import net.oni2.aeinstaller.gui.modtable.ModTable;
    7259import net.oni2.aeinstaller.gui.settings.SettingsDialog;
    7360import net.oni2.aeinstaller.gui.toolmanager.ToolManager;
     
    8471 */
    8572public class MainWin extends JFrame implements ApplicationListener,
    86                 DownloadSizeListener {
     73                DownloadSizeListener, ModSelectionListener {
    8774        private static final long serialVersionUID = -4027395051382659650L;
    8875
     
    10390        private JRadioButton radOnline;
    10491        private JRadioButton radLocal;
    105         private JTable tblMods;
    106         private ModTableModel model;
    107         private TableRowSorter<ModTableModel> sorter;
     92        private ModTable tblMods;
    10893        private JLabel lblDownloadSizeVal;
    10994
     
    136121
    137122                contents.setDividerLocation(400);
     123                contents.setResizeWeight(0.4);
    138124
    139125                if (Settings.getPlatform() == Platform.MACOS) {
    140126                        mainMenu.setVisible(false);
    141127                }
     128
     129                ToolTipManager.sharedInstance().setInitialDelay(250);
    142130
    143131                getRootPane().setDefaultButton(btnInstall);
    144132                lblDownloadSizeVal.setText(SizeFormatter.format(0, 2));
    145133                radAll.setSelected(true);
     134
     135                tblMods.addModSelectionListener(this);
     136                tblMods.addDownloadSizeListener(this);
    146137        }
    147138
     
    158149                }
    159150                cmbModTypes.setSelectedIndex(0);
    160         }
    161 
    162         private void initTable() {
    163                 tblMods.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    164                 tblMods.getSelectionModel().addListSelectionListener(
    165                                 new ListSelectionListener() {
    166                                         @Override
    167                                         public void valueChanged(ListSelectionEvent e) {
    168                                                 int viewRow = tblMods.getSelectedRow();
    169                                                 if (viewRow < 0) {
    170                                                         modSelection(null);
    171                                                 } else {
    172                                                         int modelRow = tblMods
    173                                                                         .convertRowIndexToModel(viewRow);
    174                                                         Mod mod = (Mod) model.getValueAt(modelRow, -1);
    175                                                         modSelection(mod);
    176                                                 }
    177                                         }
    178                                 });
    179                 tblMods.addMouseListener(new MouseAdapter() {
    180                         private void common(MouseEvent e) {
    181                                 int r = tblMods.rowAtPoint(e.getPoint());
    182                                 if (r >= 0 && r < tblMods.getRowCount())
    183                                         tblMods.setRowSelectionInterval(r, r);
    184                                 else
    185                                         tblMods.clearSelection();
    186 
    187                                 int rowindex = tblMods.getSelectedRow();
    188                                 if (rowindex >= 0) {
    189                                         if (e.isPopupTrigger()
    190                                                         && e.getComponent() instanceof JTable) {
    191                                                 int modelRow = tblMods.convertRowIndexToModel(rowindex);
    192                                                 final Mod mod = (Mod) model.getValueAt(modelRow, -1);
    193 
    194                                                 if (mod.isLocalAvailable()) {
    195                                                         JPopupMenu popup = new JPopupMenu();
    196                                                         JMenuItem openModFolder = new JMenuItem(bundle
    197                                                                         .getString("openModFolder.text"));
    198                                                         openModFolder
    199                                                                         .addActionListener(new ActionListener() {
    200                                                                                 @Override
    201                                                                                 public void actionPerformed(
    202                                                                                                 ActionEvent arg0) {
    203                                                                                         try {
    204                                                                                                 Desktop.getDesktop().open(
    205                                                                                                                 mod.getLocalPath());
    206                                                                                         } catch (IOException e) {
    207                                                                                                 e.printStackTrace();
    208                                                                                         }
    209                                                                                 }
    210                                                                         });
    211                                                         popup.add(openModFolder);
    212                                                         popup.show(e.getComponent(), e.getX(), e.getY());
    213                                                 }
    214                                         }
    215                                 }
    216                         }
    217 
    218                         @Override
    219                         public void mousePressed(MouseEvent e) {
    220                                 common(e);
    221                         }
    222 
    223                         @Override
    224                         public void mouseReleased(MouseEvent e) {
    225                                 common(e);
    226                         }
    227                 });
    228                 // To get checkbox-cells with background of row
    229                 ((JComponent) tblMods.getDefaultRenderer(Boolean.class))
    230                                 .setOpaque(true);
    231 
    232                 model = new ModTableModel();
    233                 model.addDownloadSizeListener(this);
    234 
    235                 tblMods.setModel(model);
    236 
    237                 sorter = new TableRowSorter<ModTableModel>(model);
    238                 tblMods.setRowSorter(sorter);
    239 
    240                 sorter.setRowFilter(new ModTableFilter(null, 0));
    241 
    242                 List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
    243                 sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING));
    244                 sorter.setSortKeys(sortKeys);
    245 
    246                 for (int i = 0; i < model.getColumnCount(); i++) {
    247                         model.setColumnConstraints(i, tblMods.getColumnModel().getColumn(i));
    248                 }
    249151        }
    250152
     
    279181                }
    280182                ModManager.getInstance().init();
    281                 initTable();
     183                tblMods.reloadData();
    282184                initModTypeBox();
    283185
     
    430332                if (res == JFileChooser.APPROVE_OPTION) {
    431333                        if (fc.getSelectedFile().exists())
    432                                 model.reloadSelection(fc.getSelectedFile());
     334                                tblMods.reloadSelection(fc.getSelectedFile());
    433335                }
    434336        }
     
    443345                                f = new File(f.getParentFile(), f.getName() + ".xml");
    444346                        ModManager.getInstance().saveModSelection(f,
    445                                         model.getSelectedMods());
     347                                        tblMods.getSelectedMods());
    446348                }
    447349        }
     
    500402        @SuppressWarnings("unused")
    501403        private void revertSelection() {
    502                 model.revertSelection();
     404                tblMods.revertSelection();
    503405        }
    504406
     
    548450                TreeSet<Mod> mods = new TreeSet<Mod>();
    549451                mods.addAll(ModManager.getInstance().getMandatoryMods());
    550                 mods.addAll(model.getSelectedMods());
     452                mods.addAll(tblMods.getSelectedMods());
    551453
    552454                boolean instReady = false;
     
    644546        }
    645547
    646         private void modSelection(Mod m) {
     548        @Override
     549        public void modSelectionChanged(ModTable source, Mod m) {
    647550                lblSubmitterVal.setText("");
    648551                lblCreatorVal.setText("");
     
    678581                if (radLocal.isSelected())
    679582                        downloadState = 2;
    680                 sorter.setRowFilter(new ModTableFilter(t, downloadState));
     583                tblMods.setFilter(t, downloadState);
    681584        }
    682585
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r630 r631  
    5656            - ButtonGroup: [radAll,radOnline,radLocal]
    5757            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never):
    58                 JTable(name=tblMods, visible=false)
     58                ModTable(name=tblMods, visible=false)
    5959            - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
    6060            - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, onAction=[install,installDone])
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r630 r631  
    2121
    2222        private ResourceBundle bundle = ResourceBundle
    23                         .getBundle("net.oni2.aeinstaller.localization."
    24                                         + getClass().getSimpleName());
     23                        .getBundle("net.oni2.aeinstaller.localization.ModTable");
    2524
    2625        private Vector<Mod> items = new Vector<Mod>();
     
    3332         */
    3433        public ModTableModel() {
    35                 reloadData();
    3634        }
    3735
     
    5048                        case 3:
    5149                                return mod.getCreator();
     50                        case 4:
     51                                String res = "";
     52                                res += (install.get(row) ? "I" : "_");
     53                                res += (mod.isLocalAvailable() && mod.isNewerAvailable() ? "U"
     54                                                : "_");
     55                                res += (mod.isLocalAvailable() ? "D" : "_");
     56                                return res;
    5257                }
    5358                return null;
     
    6570                        case 3:
    6671                                return bundle.getString("mod.creator");
     72                        case 4:
     73                                return bundle.getString("mod.state");
    6774                }
    6875                return null;
     
    7683        @Override
    7784        public int getColumnCount() {
    78                 return 4;
     85                return 5;
    7986        }
    8087
     
    8996                                return String.class;
    9097                        case 3:
     98                                return String.class;
     99                        case 4:
    91100                                return String.class;
    92101                }
     
    123132                                col.setPreferredWidth(90);
    124133                                break;
     134                        case 4:
     135                                w = 55;
     136                                col.setPreferredWidth(w);
     137                                col.setMinWidth(w);
     138                                col.setMaxWidth(w);
     139                                break;
    125140                }
    126141        }
     
    141156                install.clear();
    142157                for (int i = 0; i < items.size(); i++) {
    143                         install.add(i, ModManager.getInstance()
    144                                         .isModInstalled(items.get(i)));
     158                        install.add(i, items.get(i).isInstalled());
    145159                }
    146160                fireTableDataChanged();
Note: See TracChangeset for help on using the changeset viewer.