Ignore:
Timestamp:
Jan 29, 2013, 1:34:16 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.99i:

  • Lots of refactorings for the GUI:
    • Global type for the mod info box (Main, Tools, Core)
    • Same table for Main, Tools, Core
Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
4 added
12 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/PackageManager.java

    r648 r658  
    1010import java.util.HashMap;
    1111import java.util.HashSet;
    12 import java.util.TreeMap;
    1312import java.util.TreeSet;
    1413import java.util.Vector;
    15 
    16 import com.thoughtworks.xstream.XStream;
    17 import com.thoughtworks.xstream.io.xml.StaxDriver;
    1814
    1915import net.oni2.aeinstaller.backend.Paths;
     
    2218import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
    2319import net.oni2.aeinstaller.backend.oni.Installer;
     20
     21import com.thoughtworks.xstream.XStream;
     22import com.thoughtworks.xstream.io.xml.StaxDriver;
    2423
    2524/**
     
    217216         * @return Collection of tools valid on this platform and not core
    218217         */
    219         public TreeMap<String, Package> getTools() {
    220                 TreeMap<String, Package> res = new TreeMap<String, Package>();
     218        public Collection<Package> getTools() {
     219                Vector<Package> res = new Vector<Package>();
    221220                for (Package m : tools.values())
    222221                        if (m.isValidOnPlatform() && !m.isCorePackage())
    223                                 res.put(m.getName(), m);
     222                                res.add(m);
    224223                return res;
    225224        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r657 r658  
    44import java.awt.Desktop;
    55import java.awt.GridLayout;
    6 import java.awt.Insets;
    76import java.awt.event.ActionEvent;
    87import java.awt.event.ItemEvent;
     
    3231import javax.swing.JPanel;
    3332import javax.swing.JRadioButton;
     33import javax.swing.JScrollPane;
    3434import javax.swing.JSplitPane;
    3535import javax.swing.SwingUtilities;
     
    4444import net.oni2.aeinstaller.backend.SizeFormatter;
    4545import net.oni2.aeinstaller.backend.depot.DepotManager;
     46import net.oni2.aeinstaller.backend.oni.InstallProgressListener;
     47import net.oni2.aeinstaller.backend.oni.Installer;
     48import net.oni2.aeinstaller.backend.oni.OniSplit;
    4649import net.oni2.aeinstaller.backend.packages.Package;
    4750import net.oni2.aeinstaller.backend.packages.PackageManager;
    4851import net.oni2.aeinstaller.backend.packages.Type;
    49 import net.oni2.aeinstaller.backend.oni.InstallProgressListener;
    50 import net.oni2.aeinstaller.backend.oni.Installer;
    51 import net.oni2.aeinstaller.backend.oni.OniSplit;
    5252import net.oni2.aeinstaller.backend.packages.download.ModDownloader;
     53import net.oni2.aeinstaller.backend.packages.download.ModDownloader.State;
    5354import net.oni2.aeinstaller.backend.packages.download.ModDownloaderListener;
    54 import net.oni2.aeinstaller.backend.packages.download.ModDownloader.State;
    5555import net.oni2.aeinstaller.gui.about.AboutDialog;
    5656import net.oni2.aeinstaller.gui.corepackages.CorePackagesDialog;
     
    5959import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
    6060import net.oni2.aeinstaller.gui.modtable.ModTable;
     61import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
     62import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
    6163import net.oni2.aeinstaller.gui.settings.SettingsDialog;
    6264import net.oni2.aeinstaller.gui.toolmanager.ToolManager;
     
    9294        private JRadioButton radOnline;
    9395        private JRadioButton radLocal;
     96        private JScrollPane scrollMods;
    9497        private ModTable tblMods;
    9598        private JLabel lblDownloadSizeVal;
    9699
    97         private JLabel lblTitleVal;
    98         private JLabel lblCreatorVal;
    99         private JLabel lblTypesVal;
    100         private JLabel lblPlatformVal;
    101         private JLabel lblPackageNumberVal;
    102         private JLabel lblVersionNumberVal;
    103         private HTMLLinkLabel lblDescriptionVal;
    104 
     100        private PackageInfoBox pkgInfo;
     101       
    105102        private JButton btnInstall;
    106103
     
    129126                                + SwingJavaBuilder.getConfig().getResource("appversion"));
    130127
    131                 setSize(getWidth() + 150, getHeight());
     128                tblMods = new ModTable(ETableContentType.MODS);
     129                tblMods.setVisible(false);
     130                scrollMods.setViewportView(tblMods);
     131
    132132                contents.setDividerLocation(550);
    133133                contents.setResizeWeight(0.4);
     
    145145                tblMods.addModSelectionListener(this);
    146146                tblMods.addDownloadSizeListener(this);
    147 
    148                 lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
    149147        }
    150148
     
    452450                tblMods.revertSelection();
    453451        }
    454        
     452
    455453        @SuppressWarnings("unused")
    456454        private void unSelectAll() {
     
    705703        @Override
    706704        public void modSelectionChanged(ModTable source, Package m) {
    707                 lblTitleVal.setText("");
    708                 lblCreatorVal.setText("");
    709                 lblDescriptionVal.setText("");
    710                 lblTypesVal.setText("");
    711                 lblPlatformVal.setText("");
    712                 lblPackageNumberVal.setText("");
    713                 lblVersionNumberVal.setText("");
    714                 if (m != null) {
    715                         lblTitleVal.setText(m.getName());
    716                         lblCreatorVal.setText(m.getCreator());
    717                         lblDescriptionVal.setText(m.getDescription());
    718 
    719                         String types = "";
    720                         for (Type t : m.getTypes()) {
    721                                 if (types.length() > 0)
    722                                         types += ", ";
    723                                 types += t.getName();
    724                         }
    725                         lblTypesVal.setText(types);
    726                         lblPlatformVal.setText(m.getPlatform().toString());
    727                         lblPackageNumberVal.setText(m.getPackageNumberString());
    728                         lblVersionNumberVal.setText(m.getVersion());
    729                 }
     705                pkgInfo.updateInfo(m);
    730706        }
    731707
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r657 r658  
    22  name: frame
    33  title: appname
    4   size: 800x600
     4  size: 950x600
    55  minimumSize: 400x300
    66  locationRelativeTo: null
     
    5757            - JRadioButton(name=radLocal, text=radLocal.text, onAction=showTypeSelection)
    5858            - ButtonGroup: [radAll,radOnline,radLocal]
    59             - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never):
    60                 ModTable(name=tblMods, visible=false)
     59            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never)
    6160            - JButton(name=btnUnSelectAll, icon=img.unSelect16, text=btnUnSelectAll.text, onAction=[unSelectAll])
    6261            - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
     
    7170                 >btnUnSelectAll,>btnRevertSelection,btnInstall  [min]
    7271                 lblDownloadSize,lblDownloadSizeVal              [min]
    73         - JPanel(name=panInfo):
    74             - JLabel(name=lblTitle, text=lblTitle.text)
    75             - JLabel(name=lblTitleVal)
    76             - JLabel(name=lblCreator, text=lblCreator.text)
    77             - JLabel(name=lblCreatorVal)
    78             - JLabel(name=lblTypes, text=lblTypes.text)
    79             - JLabel(name=lblTypesVal)
    80             - JLabel(name=lblPlatform, text=lblPlatform.text)
    81             - JLabel(name=lblPlatformVal)
    82             - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
    83             - JLabel(name=lblPackageNumberVal)
    84             - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
    85             - JLabel(name=lblVersionNumberVal)
    86             - JLabel(name=lblDescription, text=lblDescription.text)
    87             - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
    88                 HTMLLinkLabel(name=lblDescriptionVal)
    89             - MigLayout: |
    90                  [min]             [grow]
    91                  >lblTitle         lblTitleVal         [min]
    92                  >lblCreator       lblCreatorVal       [min]
    93                  >lblTypes         lblTypesVal         [min]
    94                  >lblPlatform      lblPlatformVal      [min]
    95                  >lblPackageNumber lblPackageNumberVal [min]
    96                  >lblVersionNumber lblVersionNumberVal [min]
    97                  >^lblDescription  scrollDescription   [grow]
     72        - PackageInfoBox(name=pkgInfo)
    9873    - MigLayout:
    9974        layoutConstraints: wrap 1
  • AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.java

    r655 r658  
    11package net.oni2.aeinstaller.gui.corepackages;
    22
    3 import java.awt.Dimension;
    4 import java.awt.Insets;
    53import java.awt.event.ActionEvent;
    64import java.awt.event.KeyEvent;
    7 import java.text.SimpleDateFormat;
    8 import java.util.Date;
    95import java.util.ResourceBundle;
    10 import java.util.TreeSet;
    116
    127import javax.swing.AbstractAction;
    13 import javax.swing.DefaultListModel;
    148import javax.swing.JComponent;
    159import javax.swing.JDialog;
    16 import javax.swing.JLabel;
    17 import javax.swing.JList;
     10import javax.swing.JScrollPane;
    1811import javax.swing.JSplitPane;
    1912import javax.swing.KeyStroke;
    20 import javax.swing.ListSelectionModel;
    21 import javax.swing.event.ListSelectionEvent;
    22 import javax.swing.event.ListSelectionListener;
    2313
    24 import net.oni2.aeinstaller.backend.SizeFormatter;
    2514import net.oni2.aeinstaller.backend.packages.Package;
    26 import net.oni2.aeinstaller.backend.packages.PackageManager;
    27 import net.oni2.aeinstaller.backend.packages.Type;
    28 import net.oni2.aeinstaller.gui.HTMLLinkLabel;
     15import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
     16import net.oni2.aeinstaller.gui.modtable.ModTable;
     17import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
     18import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
    2919
    3020import org.javabuilders.BuildResult;
     
    3424 * @author Christian Illy
    3525 */
    36 public class CorePackagesDialog extends JDialog implements
    37                 ListSelectionListener {
     26public class CorePackagesDialog extends JDialog implements ModSelectionListener {
    3827        private static final long serialVersionUID = -5444213842599816301L;
    3928
     
    4635        private JSplitPane contents;
    4736
    48         private JList lstTools;
     37        private JScrollPane scrollTools;
     38        private ModTable tblTools;
    4939
    50         private JLabel lblTitleVal;
    51         private JLabel lblCreatorVal;
    52         private JLabel lblTypesVal;
    53         private JLabel lblPlatformVal;
    54         private JLabel lblPackageNumberVal;
    55         private JLabel lblVersionNumberVal;
    56         private JLabel lblLastChangeVal;
    57         private HTMLLinkLabel lblDescriptionVal;
    58         private JLabel lblDownloadSizeVal;
    59 
    60         private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     40        private PackageInfoBox pkgInfo;
    6141
    6242        /**
     
    6444         */
    6545        public CorePackagesDialog() {
    66                 setMinimumSize(new Dimension(getWidth() + 100, getHeight() + 100));
    67 
    6846                AbstractAction closeAction = new AbstractAction() {
    6947
     
    8159                getRootPane().getActionMap().put("close", closeAction);
    8260
    83                 contents.setDividerLocation(200);
     61                contents.setDividerLocation(550);
    8462                contents.setResizeWeight(0.4);
    8563
    86                 lstTools.addListSelectionListener(this);
    87                 lstTools.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     64                tblTools = new ModTable(ETableContentType.CORE);
     65                tblTools.reloadData();
     66                scrollTools.setViewportView(tblTools);
    8867
    89                 DefaultListModel dlm = new DefaultListModel();
    90                 TreeSet<Package> tools = PackageManager.getInstance().getCoreTools();
    91                 for (Package m : tools)
    92                         dlm.addElement(m);
    93                 TreeSet<Package> mods = PackageManager.getInstance().getCoreMods();
    94                 for (Package m : mods)
    95                         dlm.addElement(m);
    96                 lstTools.setModel(dlm);
     68                tblTools.addModSelectionListener(this);
    9769
    9870                setLocationRelativeTo(null);
    99                 lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
    10071        }
    10172
    10273        @Override
    103         public void valueChanged(ListSelectionEvent evt) {
    104                 lblTitleVal.setText("");
    105                 lblCreatorVal.setText("");
    106                 lblDescriptionVal.setText("");
    107                 lblTypesVal.setText("");
    108                 lblPlatformVal.setText("");
    109                 lblPackageNumberVal.setText("");
    110                 lblVersionNumberVal.setText("");
    111                 lblLastChangeVal.setText("");
    112                 lblDownloadSizeVal.setText("");
    113 
    114                 if (lstTools.getSelectedValue() instanceof Package) {
    115                         Package m = (Package) lstTools.getSelectedValue();
    116                         lblTitleVal.setText(m.getName());
    117                         lblCreatorVal.setText(m.getCreator());
    118                         lblDescriptionVal.setText(m.getDescription());
    119 
    120                         String types = "";
    121                         for (Type t : m.getTypes()) {
    122                                 if (types.length() > 0)
    123                                         types += ", ";
    124                                 types += t.getName();
    125                         }
    126                         lblTypesVal.setText(types);
    127                         lblPlatformVal.setText(m.getPlatform().toString());
    128                         lblPackageNumberVal.setText(m.getPackageNumberString());
    129                         lblVersionNumberVal.setText(m.getVersion());
    130                         if (m.getFile() != null)
    131                                 lblLastChangeVal.setText(sdf.format(new Date(m.getFile()
    132                                                 .getTimestamp() * 1000)));
    133                         lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
    134                 }
     74        public void modSelectionChanged(ModTable source, Package mod) {
     75                pkgInfo.updateInfo(mod);
    13576        }
    13677}
  • AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.yml

    r648 r658  
    22  name: frame
    33  title: frame.title
    4   size: packed
     4  size: 900x500
    55  locationRelativeTo: null
    66  defaultCloseOperation: disposeOnClose
     
    1010    - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
    1111        - JPanel(name=panTools):
    12             - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=asNeeded):
    13                 JList(name=lstTools)
     12            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=never)
    1413            - MigLayout: |
    1514                 [grow]
    1615                 scrollTools   [grow]
    17         - JPanel(name=panInfo):
    18             - JLabel(name=lblTitle, text=lblTitle.text)
    19             - JLabel(name=lblTitleVal)
    20             - JLabel(name=lblCreator, text=lblCreator.text)
    21             - JLabel(name=lblCreatorVal)
    22             - JLabel(name=lblTypes, text=lblTypes.text)
    23             - JLabel(name=lblTypesVal)
    24             - JLabel(name=lblPlatform, text=lblPlatform.text)
    25             - JLabel(name=lblPlatformVal)
    26             - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
    27             - JLabel(name=lblPackageNumberVal)
    28             - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
    29             - JLabel(name=lblVersionNumberVal)
    30             - JLabel(name=lblLastChange, text=lblLastChange.text)
    31             - JLabel(name=lblLastChangeVal)
    32             - JLabel(name=lblDescription, text=lblDescription.text)
    33             - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
    34                 HTMLLinkLabel(name=lblDescriptionVal)
    35             - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
    36             - JLabel(name=lblDownloadSizeVal)
    37             - MigLayout: |
    38                  [min]             [grow]
    39                  >lblTitle         lblTitleVal         [min]
    40                  >lblCreator       lblCreatorVal       [min]
    41                  >lblTypes         lblTypesVal         [min]
    42                  >lblPlatform      lblPlatformVal      [min]
    43                  >lblPackageNumber lblPackageNumberVal [min]
    44                  >lblVersionNumber lblVersionNumberVal [min]
    45                  >lblLastChange    lblLastChangeVal    [min]
    46                  >^lblDescription  scrollDescription   [grow]
    47                  >lblDownloadSize  lblDownloadSizeVal  [min]
     16        - PackageInfoBox(name=pkgInfo)
    4817    - MigLayout: |
    4918         [grow]
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java

    r657 r658  
    7070        /**
    7171         * Create a new ModTable
    72          */
    73         public ModTable() {
     72         *
     73         * @param contentType
     74         *            Content to show
     75         */
     76        public ModTable(ETableContentType contentType) {
    7477                super();
     78
     79                this.contentType = contentType;
    7580
    7681                setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
    8186                ((JComponent) getDefaultRenderer(Boolean.class)).setOpaque(true);
    8287
    83                 model = new ModTableModel();
     88                model = new ModTableModel(contentType);
    8489
    8590                setModel(model);
     
    101106                for (int i = 0; i < model.getColumnCount(); i++) {
    102107                        model.setColumnConstraints(i, getColumnModel().getColumn(i));
     108                }
     109
     110                if (contentType != ETableContentType.MODS) {
     111                        getColumnModel().removeColumn(getColumnModel().getColumn(0));
    103112                }
    104113        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r657 r658  
    1414import net.oni2.aeinstaller.backend.packages.Package;
    1515import net.oni2.aeinstaller.backend.packages.PackageManager;
     16import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
    1617
    1718/**
     
    3233        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    3334
     35        private ETableContentType contentType = ETableContentType.MODS;
     36
    3437        /**
    3538         * Create a new model
    36          */
    37         public ModTableModel() {
     39         *
     40         * @param contentType
     41         *            Content type to show
     42         */
     43        public ModTableModel(ETableContentType contentType) {
     44                this.contentType = contentType;
    3845        }
    3946
     
    182189        public void reloadData() {
    183190                items.clear();
    184                 items.addAll(PackageManager.getInstance().getModsValidAndNotCore());
     191                switch (contentType) {
     192                        case MODS:
     193                                items.addAll(PackageManager.getInstance()
     194                                                .getModsValidAndNotCore());
     195                                break;
     196                        case TOOLS:
     197                                items.addAll(PackageManager.getInstance().getTools());
     198                                break;
     199                        case CORE:
     200                                items.addAll(PackageManager.getInstance().getCoreTools());
     201                                items.addAll(PackageManager.getInstance().getCoreMods());
     202                                break;
     203                }
    185204                revertSelection();
    186205        }
     
    205224         */
    206225        public void reloadSelection(File config) {
    207                 Vector<Integer> selected = PackageManager.getInstance()
    208                                 .loadModSelection(config);
    209                 install.clear();
    210                 for (int i = 0; i < items.size(); i++) {
    211                         install.add(i, selected.contains(items.get(i).getPackageNumber()));
    212                 }
    213                 fireTableDataChanged();
     226                if (contentType == ETableContentType.MODS) {
     227                        Vector<Integer> selected = PackageManager.getInstance()
     228                                        .loadModSelection(config);
     229                        install.clear();
     230                        for (int i = 0; i < items.size(); i++) {
     231                                install.add(i,
     232                                                selected.contains(items.get(i).getPackageNumber()));
     233                        }
     234                        fireTableDataChanged();
     235                }
    214236        }
    215237
  • AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java

    r655 r658  
    11package net.oni2.aeinstaller.gui.toolmanager;
    22
    3 import java.awt.Dimension;
    4 import java.awt.Insets;
    53import java.awt.event.ActionEvent;
    64import java.awt.event.KeyEvent;
    7 import java.text.SimpleDateFormat;
    8 import java.util.Date;
    95import java.util.ResourceBundle;
    10 import java.util.TreeMap;
    116import java.util.TreeSet;
    127
    138import javax.swing.AbstractAction;
    14 import javax.swing.DefaultListModel;
    159import javax.swing.Icon;
    1610import javax.swing.ImageIcon;
     
    1812import javax.swing.JComponent;
    1913import javax.swing.JDialog;
    20 import javax.swing.JLabel;
    21 import javax.swing.JList;
    2214import javax.swing.JOptionPane;
     15import javax.swing.JScrollPane;
    2316import javax.swing.JSplitPane;
    2417import javax.swing.KeyStroke;
    25 import javax.swing.ListSelectionModel;
    26 import javax.swing.event.ListSelectionEvent;
    27 import javax.swing.event.ListSelectionListener;
    2818
    2919import net.oni2.aeinstaller.backend.Settings;
    30 import net.oni2.aeinstaller.backend.SizeFormatter;
     20import net.oni2.aeinstaller.backend.oni.Installer;
    3121import net.oni2.aeinstaller.backend.packages.Package;
    32 import net.oni2.aeinstaller.backend.packages.PackageManager;
    33 import net.oni2.aeinstaller.backend.oni.Installer;
    34 import net.oni2.aeinstaller.gui.HTMLLinkLabel;
    3522import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
     23import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
     24import net.oni2.aeinstaller.gui.modtable.ModTable;
     25import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
     26import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
    3627
    3728import org.javabuilders.BuildResult;
     
    4132 * @author Christian Illy
    4233 */
    43 public class ToolManager extends JDialog implements ListSelectionListener {
     34public class ToolManager extends JDialog implements ModSelectionListener {
    4435        private static final long serialVersionUID = 343221630538866384L;
    4536
     
    5243        private JSplitPane contents;
    5344
    54         private JList lstTools;
     45        private JScrollPane scrollTools;
     46        private ModTable tblTools;
    5547
    56         private JLabel lblTitleVal;
    57         private JLabel lblCreatorVal;
    58         private JLabel lblPlatformVal;
    59         private JLabel lblPackageNumberVal;
    60         private JLabel lblVersionNumberVal;
    61         private JLabel lblLastChangeVal;
    62         private HTMLLinkLabel lblDescriptionVal;
    63         private JLabel lblDownloadSizeVal;
    64 
     48        private PackageInfoBox pkgInfo;
    6549        private JButton btnInstall;
    6650
     
    6852        private Icon icoUninstall = null;
    6953
    70         private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     54        private Package selectedPackage = null;
    7155
    7256        /**
     
    7458         */
    7559        public ToolManager() {
    76                 setMinimumSize(new Dimension(getWidth() + 100, getHeight() + 100));
    77 
    7860                AbstractAction closeAction = new AbstractAction() {
    7961
     
    9173                getRootPane().getActionMap().put("close", closeAction);
    9274
    93                 contents.setDividerLocation(200);
     75                contents.setDividerLocation(550);
    9476                contents.setResizeWeight(0.4);
    9577
    96                 lstTools.addListSelectionListener(this);
    97                 lstTools.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     78                tblTools = new ModTable(ETableContentType.TOOLS);
     79                tblTools.reloadData();
     80                scrollTools.setViewportView(tblTools);
    9881
    99                 DefaultListModel dlm = new DefaultListModel();
    100                 TreeMap<String, Package> tools = PackageManager.getInstance().getTools();
    101                 for (String name : tools.keySet())
    102                         dlm.addElement(tools.get(name));
    103                 lstTools.setModel(dlm);
     82                tblTools.addModSelectionListener(this);
    10483
    10584                icoInstall = new ImageIcon(getClass().getResource(
     
    10988
    11089                setLocationRelativeTo(null);
    111                 lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
    11290        }
    11391
    11492        @SuppressWarnings("unused")
    11593        private void install() {
    116                 Object o = lstTools.getSelectedValue();
    117                 if (o instanceof Package) {
    118                         Package theMod = (Package) o;
    119 
    120                         if (theMod.isInstalled()) {
     94                if (selectedPackage != null) {
     95                        if (selectedPackage.isInstalled()) {
    12196                                TreeSet<Package> tools = new TreeSet<Package>();
    122                                 tools.add(theMod);
     97                                tools.add(selectedPackage);
    12398                                Installer.uninstallTools(tools);
    12499                        } else {
    125                                 if (!theMod.isLocalAvailable()) {
     100                                if (!selectedPackage.isLocalAvailable()) {
    126101                                        if (Settings.getInstance().isOfflineMode()) {
    127102                                                JOptionPane.showMessageDialog(this,
     
    133108
    134109                                        TreeSet<Package> toDownload = new TreeSet<Package>();
    135                                         toDownload.add(theMod);
     110                                        toDownload.add(selectedPackage);
    136111
    137112                                        Downloader dl = new Downloader(toDownload, null);
     
    146121
    147122                                TreeSet<Package> tools = new TreeSet<Package>();
    148                                 tools.add(theMod);
     123                                tools.add(selectedPackage);
    149124                                Installer.installTools(tools);
    150125                        }
    151126                }
    152                 valueChanged(null);
     127                modSelectionChanged(tblTools, selectedPackage);
    153128        }
    154129
    155130        @Override
    156         public void valueChanged(ListSelectionEvent evt) {
    157                 lblTitleVal.setText("");
    158                 lblCreatorVal.setText("");
    159                 lblDescriptionVal.setText("");
    160                 lblPlatformVal.setText("");
    161                 lblPackageNumberVal.setText("");
    162                 lblVersionNumberVal.setText("");
    163                 lblLastChangeVal.setText("");
    164                 lblDownloadSizeVal.setText("");
    165                 btnInstall.setEnabled(false);
    166                 btnInstall.setIcon(icoInstall);
     131        public void modSelectionChanged(ModTable source, Package mod) {
     132                selectedPackage = mod;
    167133
    168                 if (lstTools.getSelectedValue() instanceof Package) {
    169                         Package m = (Package) lstTools.getSelectedValue();
    170                         lblTitleVal.setText(m.getName());
    171                         lblCreatorVal.setText(m.getCreator());
    172                         lblDescriptionVal.setText(m.getDescription());
    173                         lblPlatformVal.setText(m.getPlatform().toString());
    174                         lblPackageNumberVal.setText(m.getPackageNumberString());
    175                         lblVersionNumberVal.setText(m.getVersion());
    176                         if (m.getFile() != null)
    177                                 lblLastChangeVal.setText(sdf.format(new Date(m.getFile()
    178                                                 .getTimestamp() * 1000)));
    179                         lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
     134                pkgInfo.updateInfo(mod);
     135                if (mod != null) {
    180136                        btnInstall.setEnabled(true);
    181                         if (m.isInstalled()) {
     137                        if (mod.isInstalled()) {
    182138                                btnInstall.setText(bundle.getString("btnInstall.un.text"));
    183139                                btnInstall.setToolTipText(bundle
     
    188144                                btnInstall.setToolTipText(bundle
    189145                                                .getString("btnInstall.tooltip"));
     146                                btnInstall.setIcon(icoInstall);
    190147                        }
    191148                }
  • AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml

    r646 r658  
    22  name: frame
    33  title: frame.title
    4   size: packed
     4  size: 950x600
    55  locationRelativeTo: null
    66  defaultCloseOperation: disposeOnClose
     
    1010    - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
    1111        - JPanel(name=panTools):
    12             - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=asNeeded):
    13                 JList(name=lstTools)
     12            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=never)
    1413            - MigLayout: |
    1514                 [grow]
    1615                 scrollTools   [grow]
    1716        - JPanel(name=panInfo):
    18             - JLabel(name=lblTitle, text=lblTitle.text)
    19             - JLabel(name=lblTitleVal)
    20             - JLabel(name=lblCreator, text=lblCreator.text)
    21             - JLabel(name=lblCreatorVal)
    22             - JLabel(name=lblPlatform, text=lblPlatform.text)
    23             - JLabel(name=lblPlatformVal)
    24             - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
    25             - JLabel(name=lblPackageNumberVal)
    26             - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
    27             - JLabel(name=lblVersionNumberVal)
    28             - JLabel(name=lblLastChange, text=lblLastChange.text)
    29             - JLabel(name=lblLastChangeVal)
    30             - JLabel(name=lblDescription, text=lblDescription.text)
    31             - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
    32                 HTMLLinkLabel(name=lblDescriptionVal)
    33             - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
    34             - JLabel(name=lblDownloadSizeVal)
     17            - PackageInfoBox(name=pkgInfo)
    3518            - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, enabled=false, onAction=[install])
    3619            - MigLayout: |
    37                  [min]             [grow]
    38                  >lblTitle         lblTitleVal         [min]
    39                  >lblCreator       lblCreatorVal       [min]
    40                  >lblPlatform      lblPlatformVal      [min]
    41                  >lblPackageNumber lblPackageNumberVal [min]
    42                  >lblVersionNumber lblVersionNumberVal [min]
    43                  >lblLastChange    lblLastChangeVal    [min]
    44                  >^lblDescription  scrollDescription   [grow]
    45                  >lblDownloadSize  lblDownloadSizeVal  [min]
    46                  >btnInstall+*<                        [min]
     20                 [grow]
     21                 pkgInfo        [grow]
     22                 >btnInstall<   [min]
    4723    - MigLayout: |
    4824         [grow]
  • AE/installer2/src/net/oni2/aeinstaller/localization/CorePackagesDialog.properties

    r651 r658  
    11frame.title=AE Installer: Core packages
    2 
    3 lblDownloadSize.text=Download size of this package:
  • AE/installer2/src/net/oni2/aeinstaller/localization/Global.properties

    r656 r658  
    1010offlineModeStartup.title=Offline mode
    1111offlineModeStartup.text=Connection to the ModDepot could not be established.\nAEI will run in offline mode.\nUpdates or installation of mods not already downloaded will not be possible.
    12 
    13 
    14 lblTitle.text=Name:
    15 lblCreator.text=Creator:
    16 lblTypes.text=Types:
    17 lblPlatform.text=Platform:
    18 lblPackageNumber.text=Package number:
    19 lblVersionNumber.text=Version number:
    20 lblFiles.text=Number of files:
    21 lblLastChange.text=Last change:
    22 lblDescription.text=Description:
  • AE/installer2/src/net/oni2/aeinstaller/localization/ToolManager.properties

    r651 r658  
    55btnInstall.un.text=Uninstall
    66btnInstall.un.tooltip=Uninstall this tool
    7 
    8 lblDownloadSize.text=Download size of this package:
Note: See TracChangeset for help on using the changeset viewer.