Changeset 646


Ignore:
Timestamp:
Jan 23, 2013, 12:43:13 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.99c:

  • Download window: Show which file is currently being downloaded and if it is an automaticly resolved dependency
  • Added mandatory packages dialog
  • Added option to show automatic resolved dependencies after installation is done instead of interrupting installation process to ask whether to continue
  • ToolManager: version number + last change added
  • Correct output of download-size in mainwin after installation of mods done
Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
4 added
17 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties

    r645 r646  
    11appname=AE Installer 2
    2 appversion=0.99b
     2appversion=0.99c
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java

    r640 r646  
    188188                if (offline) {
    189189                        JOptionPane.showMessageDialog(null,
    190                                         globalBundle.getString("offlineMode.text"),
    191                                         globalBundle.getString("offlineMode.title"),
     190                                        globalBundle.getString("offlineModeStartup.text"),
     191                                        globalBundle.getString("offlineModeStartup.title"),
    192192                                        JOptionPane.INFORMATION_MESSAGE);
    193193                }
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/download/ModDownloader.java

    r638 r646  
    7373                if ((state == State.RUNNING) && (currentDownload < downloads.size())) {
    7474                        downloads.get(currentDownload).start();
    75                 }else if (state == State.RUNNING) {
     75                } else if (state == State.RUNNING) {
    7676                        state = State.LAST_FILE_DOWNLOADED;
    7777                        notifyListener();
     
    102102
    103103        private void notifyListener() {
    104                 listener.updateStatus(this, state, unpacked, downloads.size(),
    105                                 downloadedComplete + downloadedCurrent, totalSize,
    106                                 getTimeElapsed(), getTimeRemaining(), getDownloadSpeed());
     104                if (currentDownload < downloads.size()) {
     105                        listener.updateStatus(this,
     106                                        downloads.get(currentDownload).getMod(), state, unpacked,
     107                                        downloads.size(), downloadedComplete + downloadedCurrent,
     108                                        totalSize, getTimeElapsed(), getTimeRemaining(),
     109                                        getDownloadSpeed());
     110                } else {
     111                        listener.updateStatus(this, null, state, unpacked,
     112                                        downloads.size(), downloadedComplete + downloadedCurrent,
     113                                        totalSize, getTimeElapsed(), getTimeRemaining(),
     114                                        getDownloadSpeed());
     115                }
    107116        }
    108117
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/download/ModDownloaderListener.java

    r605 r646  
    11package net.oni2.aeinstaller.backend.mods.download;
    22
     3import net.oni2.aeinstaller.backend.mods.Mod;
    34import net.oni2.aeinstaller.backend.mods.download.ModDownloader.State;
    45
     
    1213         * @param source
    1314         *            Event source
     15         * @param currentDownload
     16         *            Currently downloading mod
    1417         * @param state
    1518         *            Current state
     
    2932         *            Average download speed in B/s
    3033         */
    31         public void updateStatus(ModDownloader source, State state, int filesDown,
    32                         int filesTotal, int bytesDown, int bytesTotal, int duration,
    33                         int remaining, int speed);
     34        public void updateStatus(ModDownloader source, Mod currentDownload,
     35                        State state, int filesDown, int filesTotal, int bytesDown,
     36                        int bytesTotal, int duration, int remaining, int speed);
    3437}
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r645 r646  
    5454import net.oni2.aeinstaller.gui.about.AboutDialog;
    5555import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
     56import net.oni2.aeinstaller.gui.mandatorypackages.MandatoryPackagesDialog;
    5657import net.oni2.aeinstaller.gui.modtable.DownloadSizeListener;
    5758import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
     
    117118        private EInstallState installState = EInstallState.DONE;
    118119        private TreeSet<Mod> installMods = null;
     120        private TreeSet<Mod> installDeps = null;
    119121
    120122        /**
     
    275277        private void doUpdate() {
    276278                if (execUpdates != null && execUpdates.size() > 0) {
    277                         Downloader dl = new Downloader(execUpdates);
     279                        Downloader dl = new Downloader(execUpdates, null);
    278280                        try {
    279281                                dl.setVisible(true);
     
    308310
    309311        }
    310        
     312
    311313        @SuppressWarnings("unused")
    312314        private void showMandatoryPackagesDialog() {
    313                 // TODO: open mand-pack-dialog
     315                new MandatoryPackagesDialog().setVisible(true);
    314316        }
    315317
     
    454456                                                        @Override
    455457                                                        public void updateStatus(ModDownloader source,
    456                                                                         State state, int filesDown, int filesTotal,
     458                                                                        Mod currentDownload, State state,
     459                                                                        int filesDown, int filesTotal,
    457460                                                                        int bytesDown, int bytesTotal,
    458461                                                                        int duration, int remaining, int speed) {
     
    497500                mods.addAll(tblMods.getSelectedMods());
    498501
     502                installDeps = new TreeSet<Mod>();
     503
    499504                installState = EInstallState.CHECKING;
    500505
     
    510515                        }
    511516                        if (toDownload.size() > 0) {
    512                                 Downloader dl = new Downloader(toDownload);
     517                                Downloader dl = new Downloader(toDownload, installDeps);
    513518                                try {
    514519                                        dl.setVisible(true);
     
    524529                                        .checkDependencies(mods);
    525530                        if (dependencies.size() > 0) {
    526                                 int size = 0;
    527                                 String depsLocalString = "";
    528                                 String depsDownloadString = "";
    529                                 for (Mod m : dependencies.keySet()) {
    530                                         for (Mod mDep : dependencies.get(m)) {
    531                                                 if (!mods.contains(mDep)) {
     531                                for (HashSet<Mod> hm : dependencies.values()) {
     532                                        installDeps.addAll(hm);
     533                                        for (Mod mDep : hm) {
     534                                                if (!mods.contains(mDep))
    532535                                                        mods.add(mDep);
    533                                                         if (!mDep.isLocalAvailable()) {
    534                                                                 size += mDep.getZipSize();
    535                                                                 if (depsDownloadString.length() > 0)
    536                                                                         depsDownloadString += "\n";
    537                                                                 depsDownloadString += " - " + mDep.getName();
    538                                                         } else {
    539                                                                 if (depsLocalString.length() > 0)
    540                                                                         depsLocalString += "\n";
    541                                                                 depsLocalString += " - " + mDep.getName();
     536                                        }
     537                                }
     538                               
     539                                if (!Settings.getInstance()
     540                                                .get("notifyDepsAfterInstall", false)) {
     541                                        int size = 0;
     542                                        String depsLocalString = "";
     543                                        String depsDownloadString = "";
     544                                        for (Mod m : dependencies.keySet()) {
     545                                                for (Mod mDep : dependencies.get(m)) {
     546                                                        if (!mods.contains(mDep)) {
     547                                                                mods.add(mDep);
     548                                                                if (!mDep.isLocalAvailable()) {
     549                                                                        size += mDep.getZipSize();
     550                                                                        if (depsDownloadString.length() > 0)
     551                                                                                depsDownloadString += "\n";
     552                                                                        depsDownloadString += " - "
     553                                                                                        + mDep.getName();
     554                                                                } else {
     555                                                                        if (depsLocalString.length() > 0)
     556                                                                                depsLocalString += "\n";
     557                                                                        depsLocalString += " - " + mDep.getName();
     558                                                                }
    542559                                                        }
    543560                                                }
    544561                                        }
    545                                 }
    546                                 if (depsLocalString.length() == 0)
    547                                         depsLocalString = bundle
    548                                                         .getString("installDependencies.none");
    549                                 if (depsDownloadString.length() == 0)
    550                                         depsDownloadString = bundle
    551                                                         .getString("installDependencies.none");
    552 
    553                                 int res = JOptionPane.showConfirmDialog(this, String.format(
    554                                                 bundle.getString("installDependencies.text"),
    555                                                 depsLocalString, depsDownloadString,
    556                                                 SizeFormatter.format(size, 3)), bundle
    557                                                 .getString("installDependencies.title"),
    558                                                 JOptionPane.YES_NO_OPTION,
    559                                                 JOptionPane.INFORMATION_MESSAGE);
    560                                 if (res == JOptionPane.NO_OPTION) {
    561                                         installState = EInstallState.ABORTED;
    562                                         break;
     562                                        if (depsLocalString.length() == 0)
     563                                                depsLocalString = bundle
     564                                                                .getString("installDependencies.none");
     565                                        if (depsDownloadString.length() == 0)
     566                                                depsDownloadString = bundle
     567                                                                .getString("installDependencies.none");
     568
     569                                        int res = JOptionPane.showConfirmDialog(this, String
     570                                                        .format(bundle
     571                                                                        .getString("installDependencies.text"),
     572                                                                        depsLocalString, depsDownloadString,
     573                                                                        SizeFormatter.format(size, 3)), bundle
     574                                                        .getString("installDependencies.title"),
     575                                                        JOptionPane.YES_NO_OPTION,
     576                                                        JOptionPane.INFORMATION_MESSAGE);
     577                                        if (res == JOptionPane.NO_OPTION) {
     578                                                installState = EInstallState.ABORTED;
     579                                                break;
     580                                        }
    563581                                }
    564582                        } else {
     
    635653                        case DONE:
    636654                                revertSelection();
    637                                 JOptionPane.showMessageDialog(this,
    638                                                 bundle.getString("installDone.text"),
    639                                                 bundle.getString("installDone.title"),
    640                                                 JOptionPane.INFORMATION_MESSAGE);
     655                                if (installDeps.size() > 0
     656                                                && Settings.getInstance().get("notifyDepsAfterInstall",
     657                                                                false)) {
     658                                        String installedDeps = "";
     659                                        for (Mod m : installDeps) {
     660                                                if (installedDeps.length() > 0)
     661                                                        installedDeps += "\n";
     662                                                installedDeps += " - " + m.getName();
     663                                        }
     664                                        JOptionPane.showMessageDialog(this, String.format(
     665                                                        bundle.getString("installDoneDeps.text"),
     666                                                        installedDeps), bundle
     667                                                        .getString("installDone.title"),
     668                                                        JOptionPane.INFORMATION_MESSAGE);
     669                                } else {
     670                                        JOptionPane.showMessageDialog(this,
     671                                                        bundle.getString("installDone.text"),
     672                                                        bundle.getString("installDone.title"),
     673                                                        JOptionPane.INFORMATION_MESSAGE);
     674                                }
    641675                                break;
    642676                        case OFFLINE:
     
    649683                                break;
    650684                }
     685                installDeps = null;
    651686        }
    652687
  • AE/installer2/src/net/oni2/aeinstaller/gui/downloadwindow/Downloader.java

    r638 r646  
    3131        private BuildResult result = SwingJavaBuilder.build(this, bundle);
    3232
     33        private JLabel lblNameVal;
     34        private JLabel lblIsDep;
    3335        private JLabel lblElapsedVal;
    3436        private JLabel lblRemainingVal;
     
    3739        private JLabel lblRateVal;
    3840        private JProgressBar progress;
    39        
     41
    4042        private JButton btnAbort;
    4143
    4244        private ModDownloader downloader;
     45        private TreeSet<Mod> dependencies = new TreeSet<Mod>();
    4346
    4447        /**
    4548         * @param mods
    4649         *            Mods to download
     50         * @param dependencies
     51         *            List of mods that only are auto-resolved dependencies
    4752         */
    48         public Downloader(TreeSet<Mod> mods) {
     53        public Downloader(TreeSet<Mod> mods, TreeSet<Mod> dependencies) {
    4954                super();
    5055
    5156                setResizable(false);
    5257                setSize(500, (int) getSize().getHeight());
     58
     59                if (dependencies != null)
     60                        this.dependencies = dependencies;
    5361
    5462                downloader = new ModDownloader(mods, this);
     
    8492
    8593        @Override
    86         public void updateStatus(ModDownloader source, State state, int filesDown,
    87                         int filesTotal, int bytesDown, int bytesTotal, int duration,
    88                         int remaining, int speed) {
     94        public void updateStatus(ModDownloader source, Mod currentDownload,
     95                        State state, int filesDown, int filesTotal, int bytesDown,
     96                        int bytesTotal, int duration, int remaining, int speed) {
    8997                if (state == ModDownloader.State.FINISHED) {
    9098                        close();
     
    92100                        if (state == State.LAST_FILE_DOWNLOADED)
    93101                                btnAbort.setEnabled(false);
    94                        
     102
    95103                        progress.setValue(bytesDown);
    96104                        progress.setToolTipText(String.format("%d / %d files downloaded",
    97105                                        filesDown, filesTotal));
     106
     107                        if (currentDownload != null) {
     108                                lblNameVal.setText(currentDownload.getName());
     109                                lblIsDep.setVisible(dependencies.contains(currentDownload));
     110                        } else {
     111                                lblNameVal.setText(bundle.getString("unpacking"));
     112                                lblIsDep.setVisible(false);
     113                        }
    98114
    99115                        lblElapsedVal.setText(formatTime(duration));
  • AE/installer2/src/net/oni2/aeinstaller/gui/downloadwindow/Downloader.yml

    r605 r646  
    1010  content:
    1111    - JButton(name=btnAbort, text=btnAbort.title, icon=img.stop, onAction=[confirm,close])
     12    - JLabel(name=lblName, text=lblName.title)
     13    - JLabel(name=lblNameVal, font=14pt)
     14    - JLabel(name=lblIsDep, text=lblIsDep.title, foreground=darkred, visible=false)
    1215    - JLabel(name=lblElapsed, text=lblElapsed.title)
    1316    - JLabel(name=lblElapsedVal)
     
    2326    - MigLayout: |
    2427         [grow]
     28         lblName<,lblNameVal<,lblIsDep<                                  [min]
    2529         lblElapsed=1,lblElapsedVal=2,lblRemaining=1,lblRemainingVal=2   [min]
    2630         lblDownloaded=1,lblDownloadedVal=2,lblTotal=1,lblTotalVal=2     [min]
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r638 r646  
    3030        private HashSet<DownloadSizeListener> listeners = new HashSet<DownloadSizeListener>();
    3131
     32        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     33
    3234        /**
    3335         * Create a new model
     
    5860                                return res;
    5961                        case 5:
    60                                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    6162                                if (mod.getFile() != null)
    6263                                        return sdf.format(new Date(
     
    177178                        install.add(i, items.get(i).isInstalled());
    178179                }
     180                notifyDownloadSize(0);
    179181                fireTableDataChanged();
    180182        }
     
    220222        public boolean isCellEditable(int rowIndex, int columnIndex) {
    221223                return columnIndex == 0;
     224        }
     225       
     226        private void notifyDownloadSize(int size) {
     227                for (DownloadSizeListener dsl : listeners)
     228                        dsl.downloadSizeChanged(size);
    222229        }
    223230
     
    236243                                }
    237244                        }
    238                         for (DownloadSizeListener dsl : listeners)
    239                                 dsl.downloadSizeChanged(size);
     245                        notifyDownloadSize(size);
    240246                }
    241247        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java

    r641 r646  
    3535
    3636        private JCheckBox chkNotifyOnStart;
     37        private JCheckBox chkNotifyDepsAfterInstall;
    3738        private JCheckBox chkCopyIntro;
    3839        private JCheckBox chkCopyOutro;
     
    7172
    7273                chkNotifyOnStart.setSelected(set.get("notifyupdates", true));
     74                chkNotifyDepsAfterInstall.setSelected(set.get("notifyDepsAfterInstall", false));
    7375                chkCopyIntro.setSelected(set.get("copyintro", false));
    7476                chkCopyOutro.setSelected(set.get("copyoutro", true));
     
    8082
    8183                set.put("notifyupdates", chkNotifyOnStart.isSelected());
     84                set.put("notifyDepsAfterInstall", chkNotifyDepsAfterInstall.isSelected());
    8285                set.put("copyintro", chkCopyIntro.isSelected());
    8386                set.put("copyoutro", chkCopyOutro.isSelected());
  • AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.yml

    r625 r646  
    1313      - JLabel(name=lblNotifyOnStart, text=lblNotifyOnStart)
    1414      - JCheckBox(name=chkNotifyOnStart)
     15      - JLabel(name=lblNotifyDepsAfterInstall, text=lblNotifyDepsAfterInstall, toolTipText=lblNotifyDepsAfterInstall.tooltip)
     16      - JCheckBox(name=chkNotifyDepsAfterInstall, toolTipText=lblNotifyDepsAfterInstall.tooltip)
    1517      - JLabel(name=lblCopyIntro, text=lblCopyIntro)
    1618      - JCheckBox(name=chkCopyIntro)
     
    1820      - JCheckBox(name=chkCopyOutro)
    1921      - MigLayout: |
    20            [min]                [grow]
    21            >lblNotifyOnStart    chkNotifyOnStart         [pref]
    22            >lblCopyIntro        chkCopyIntro             [pref]
    23            >lblCopyOutro        chkCopyOutro             [pref]
     22           [min]                       [grow]
     23           >lblNotifyOnStart           chkNotifyOnStart           [pref]
     24           >lblNotifyDepsAfterInstall  chkNotifyDepsAfterInstall  [pref]
     25           >lblCopyIntro               chkCopyIntro               [pref]
     26           >lblCopyOutro               chkCopyOutro               [pref]
    2427    - JPanel(name=panUI, groupTitle=panUI):
    2528      - JLabel(name=lblLaF, text=lblLaF)
  • AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java

    r641 r646  
    44import java.awt.event.ActionEvent;
    55import java.awt.event.KeyEvent;
     6import java.text.SimpleDateFormat;
     7import java.util.Date;
    68import java.util.ResourceBundle;
    79import java.util.TreeMap;
     
    5557        private JLabel lblPlatformVal;
    5658        private JLabel lblPackageNumberVal;
     59        private JLabel lblVersionNumberVal;
     60        private JLabel lblLastChangeVal;
    5761        private HTMLLinkLabel lblDescriptionVal;
    5862        private JLabel lblDownloadSizeVal;
     
    6266        private Icon icoInstall = null;
    6367        private Icon icoUninstall = null;
     68
     69        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    6470
    6571        /**
     
    100106                icoUninstall = new ImageIcon(getClass().getResource(
    101107                                SwingJavaBuilder.getConfig().getResource("img.uninstall")));
    102                
     108
    103109                setLocationRelativeTo(null);
    104110        }
     
    127133                                        toDownload.add(theMod);
    128134
    129                                         Downloader dl = new Downloader(toDownload);
     135                                        Downloader dl = new Downloader(toDownload, null);
    130136                                        try {
    131137                                                dl.setVisible(true);
     
    152158                lblPlatformVal.setText("");
    153159                lblPackageNumberVal.setText("");
     160                lblVersionNumberVal.setText("");
     161                lblLastChangeVal.setText("");
    154162                lblDownloadSizeVal.setText("");
    155163                btnInstall.setEnabled(false);
     
    163171                        lblPlatformVal.setText(m.getPlatform().toString());
    164172                        lblPackageNumberVal.setText(m.getPackageNumberString());
     173                        lblVersionNumberVal.setText(m.getVersion());
     174                        if (m.getFile() != null)
     175                                lblLastChangeVal.setText(sdf.format(new Date(m.getFile()
     176                                                .getTimestamp() * 1000)));
    165177                        lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
    166178                        btnInstall.setEnabled(true);
  • AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml

    r641 r646  
    2424            - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
    2525            - 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)
    2630            - JLabel(name=lblDescription, text=lblDescription.text)
    2731            - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
     
    3640                 >lblPlatform      lblPlatformVal      [min]
    3741                 >lblPackageNumber lblPackageNumberVal [min]
     42                 >lblVersionNumber lblVersionNumberVal [min]
     43                 >lblLastChange    lblLastChangeVal    [min]
    3844                 >^lblDescription  scrollDescription   [grow]
    3945                 >lblDownloadSize  lblDownloadSizeVal  [min]
  • AE/installer2/src/net/oni2/aeinstaller/localization/Downloader.properties

    r629 r646  
    22
    33btnAbort.title=Abort
    4 lblElapsed.title=Elpased:
     4lblName.title=Currently downloading:
     5lblIsDep.title= (dependency)
     6lblElapsed.title=Elapsed:
    57lblRemaining.title=Remaining:
    68lblDownloaded.title=Downloaded:
     
    1012abort.text=If you abort the download now the installation of mods will also be aborted.\nDo you want to abort now?
    1113abort.title=Really abort?
     14
     15unpacking=none - unpacking files
  • AE/installer2/src/net/oni2/aeinstaller/localization/Global.properties

    r640 r646  
    88dotNetMissing.text=.NET, which is required to use this tool, is not installed on this machine.<br>Please download and install it:<br>%1
    99
    10 offlineMode.title=Offline mode
    11 offlineMode.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.
     10offlineModeStartup.title=Offline mode
     11offlineModeStartup.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.
  • AE/installer2/src/net/oni2/aeinstaller/localization/MainWin.properties

    r645 r646  
    6565installDone.title=Installation done
    6666installDone.text=You can now play AE Oni.
     67installDoneDeps.text=In addition to the manually selected mods the following\nwere installed because they were depended upon:\n%s\n\nYou can now play AE Oni.
    6768
    6869updatesAvailable.title=Updates available
  • AE/installer2/src/net/oni2/aeinstaller/localization/SettingsDialog.properties

    r629 r646  
    88panCommon=Common settings
    99lblNotifyOnStart=Notify about updates on startup:
     10lblNotifyDepsAfterInstall=Only notify about dependencies after installation:
     11lblNotifyDepsAfterInstall.tooltip=<html>\
     12Normally you are notified about unmet dependencies <b>before</b><br>\
     13the installation continues so you can choose not to download<br>\
     14these packages. If you select this option the installation<br>\
     15process is not interrupted until it is finished and you are<br>\
     16informed on what additional mods were installed to meet<br>\
     17dependencies <b>afterwards</b>.</html>
    1018lblCopyIntro=Enable starting video on installation:
    1119lblCopyOutro=Enable ending video on installation:
  • AE/installer2/src/net/oni2/aeinstaller/localization/ToolManager.properties

    r641 r646  
    1010lblPlatform.text=Platform:
    1111lblPackageNumber.text=Package number:
     12lblVersionNumber.text=Version number:
     13lblLastChange.text=Last change:
    1214lblDescription.text=Description:
    13 lblDownloadSize.text=Downloadsize of this package:
     15lblDownloadSize.text=Download size of this package:
Note: See TracChangeset for help on using the changeset viewer.