Changeset 657 for AE/installer2/src/net


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

AEI2 0.99i:

  • Added (un)select all button
  • Fixed install in offline mode
  • Added entry in mod-table-context menu to delete local package
  • Added "added" column to mod table
Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
1 added
11 edited

Legend:

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

    r656 r657  
    11appname=AE Installer 2
    2 appversion=0.99h
     2appversion=0.99i
  • AE/installer2/src/net/oni2/aeinstaller/Images.properties

    r652 r657  
    1515img.folder=/net/oni2/aeinstaller/images/open_icon_library/folder-open-3.png
    1616img.update=/net/oni2/aeinstaller/images/open_icon_library/system-software-update-2.png
     17img.unSelect16=/net/oni2/aeinstaller/images/open_icon_library/select-2.png
    1718
    1819img.ae=/net/oni2/aeinstaller/images/AElogo.png
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java

    r655 r657  
    267267                        }
    268268                }
     269               
    269270                combineBinaryFiles(foldersOni, listener, log);
    270271                combineBSLFolders(mods, listener, log);
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/Package.java

    r648 r657  
    1111import java.net.URISyntaxException;
    1212import java.util.HashSet;
     13
     14import org.apache.commons.io.FileUtils;
    1315
    1416import net.oni2.aeinstaller.backend.Paths;
     
    8284        }
    8385
     86        private void clearLocalOnlyInfo() {
     87                aeVersion = 0;
     88                bslInstallType = EBSLInstallType.NORMAL;
     89
     90                dependencies = new HashSet<Integer>();
     91                incompatibilities = new HashSet<Integer>();
     92                unlockLevel = new HashSet<Integer>();
     93
     94                exeFile = null;
     95                workingDir = null;
     96                iconFile = null;
     97        }
     98
    8499        /**
    85100         * Update information for local package existence
     
    109124                        iconFile = mi.getIconFile();
    110125                } else {
     126                        clearLocalOnlyInfo();
    111127                        System.err.println("No config found for mod folder: "
    112128                                        + getLocalPath().getPath());
     
    311327
    312328        /**
     329         * @return Get the depot Node
     330         */
     331        public NodeMod getNode() {
     332                return node;
     333        }
     334
     335        /**
    313336         * @return Depot page URI
    314337         */
     
    398421        }
    399422
     423        /**
     424         * Delete the local package folder
     425         */
     426        public void deleteLocalPackage() {
     427                if (getLocalPath().exists()) {
     428                        try {
     429                                FileUtils.deleteDirectory(getLocalPath());
     430                                updateLocalData();
     431                        } catch (IOException e) {
     432                                e.printStackTrace();
     433                        }
     434                }
     435        }
     436
    400437        @Override
    401438        public int compareTo(Package o) {
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r656 r657  
    145145                tblMods.addModSelectionListener(this);
    146146                tblMods.addDownloadSizeListener(this);
    147                
     147
    148148                lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
    149149        }
     
    174174        @DoInBackground(progressMessage = "updateDepot.title", cancelable = false, indeterminateProgress = false)
    175175        private void execDepotUpdate(final BackgroundEvent evt) {
    176                 if (!Settings.getInstance().isOfflineMode() && !Settings.getInstance().isNoCacheUpdateMode()) {
     176                if (!Settings.getInstance().isOfflineMode()
     177                                && !Settings.getInstance().isNoCacheUpdateMode()) {
    177178                        long start = new Date().getTime();
    178179
     
    200201                        if (Settings.getInstance().isOfflineMode()) {
    201202                                if (evtSource != this) {
    202                                         JOptionPane.showMessageDialog(this,
    203                                                         bundle.getString("offlineMode.text"),
    204                                                         bundle.getString("offlineMode.title"),
     203                                        JOptionPane.showMessageDialog(
     204                                                        this,
     205                                                        SwingJavaBuilder.getConfig().getResource(
     206                                                                        "offlineMode.text"),
     207                                                        SwingJavaBuilder.getConfig().getResource(
     208                                                                        "offlineMode.title"),
    205209                                                        JOptionPane.WARNING_MESSAGE);
    206210                                }
    207211                        } else {
    208                                 TreeSet<Package> mods = PackageManager.getInstance().getUpdatableMods();
     212                                TreeSet<Package> mods = PackageManager.getInstance()
     213                                                .getUpdatableMods();
    209214                                TreeSet<Package> tools = PackageManager.getInstance()
    210215                                                .getUpdatableTools();
     
    447452                tblMods.revertSelection();
    448453        }
     454       
     455        @SuppressWarnings("unused")
     456        private void unSelectAll() {
     457                tblMods.unSelectAll();
     458        }
    449459
    450460        @DoInBackground(progressMessage = "checkCorePackages.title", cancelable = false, indeterminateProgress = false)
     
    482492                                }
    483493                        }
    484                         evt.setProgressMessage(bundle
    485                                         .getString("coreToolsInstall.title"));
    486                         Installer
    487                                         .installTools(PackageManager.getInstance().getCoreTools());
     494                        evt.setProgressMessage(bundle.getString("coreToolsInstall.title"));
     495                        Installer.installTools(PackageManager.getInstance().getCoreTools());
    488496                }
    489497        }
     
    520528                                        toDownload.add(m);
    521529                        }
    522                         if (Settings.getInstance().isOfflineMode()) {
     530                        if (toDownload.size() > 0 && Settings.getInstance().isOfflineMode()) {
    523531                                installState = EInstallState.OFFLINE;
    524532                                break;
     
    536544                                }
    537545                        }
    538                         HashMap<Package, HashSet<Package>> dependencies = PackageManager.getInstance()
    539                                         .checkDependencies(mods);
     546                        HashMap<Package, HashSet<Package>> dependencies = PackageManager
     547                                        .getInstance().checkDependencies(mods);
    540548                        if (dependencies.size() > 0) {
    541549                                for (HashSet<Package> hm : dependencies.values()) {
     
    681689                                break;
    682690                        case OFFLINE:
    683                                 JOptionPane.showMessageDialog(this,
    684                                                 bundle.getString("offlineMode.text"),
    685                                                 bundle.getString("offlineMode.title"),
     691                                JOptionPane.showMessageDialog(
     692                                                this,
     693                                                SwingJavaBuilder.getConfig().getResource(
     694                                                                "offlineMode.text"),
     695                                                SwingJavaBuilder.getConfig().getResource(
     696                                                                "offlineMode.title"),
    686697                                                JOptionPane.WARNING_MESSAGE);
    687698                                break;
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r648 r657  
    5959            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never):
    6060                ModTable(name=tblMods, visible=false)
     61            - JButton(name=btnUnSelectAll, icon=img.unSelect16, text=btnUnSelectAll.text, onAction=[unSelectAll])
    6162            - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
    6263            - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, onAction=[install,installExec,installDone])
     
    6566            - MigLayout: |
    6667                 [grow]
    67                  lblModTypes<,cmbModTypes               [min]
    68                  lblShowOnly<,radAll,radOnline,radLocal [min]
    69                  scrollMods                             [grow]
    70                  >btnRevertSelection,btnInstall         [min]
    71                  lblDownloadSize,lblDownloadSizeVal     [min]
     68                 lblModTypes<,cmbModTypes                        [min]
     69                 lblShowOnly<,radAll,radOnline,radLocal          [min]
     70                 scrollMods                                      [grow]
     71                 >btnUnSelectAll,>btnRevertSelection,btnInstall  [min]
     72                 lblDownloadSize,lblDownloadSizeVal              [min]
    7273        - JPanel(name=panInfo):
    7374            - JLabel(name=lblTitle, text=lblTitle.text)
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java

    r648 r657  
    1919import javax.swing.JComponent;
    2020import javax.swing.JMenuItem;
     21import javax.swing.JOptionPane;
    2122import javax.swing.JPopupMenu;
    2223import javax.swing.JTable;
     
    4243                        .getBundle("net.oni2.aeinstaller.localization.ModTable");
    4344
     45        /**
     46         * @author Christian Illy
     47         */
     48        public enum ETableContentType {
     49                /**
     50                 * Table showing mods
     51                 */
     52                MODS,
     53                /**
     54                 * Table showing tools
     55                 */
     56                TOOLS,
     57                /**
     58                 * Table showing core packages
     59                 */
     60                CORE
     61        };
     62
    4463        private HashSet<ModSelectionListener> modSelListeners = new HashSet<ModSelectionListener>();
    4564
    4665        private ModTableModel model;
    4766        private TableRowSorter<ModTableModel> sorter;
     67
     68        private ETableContentType contentType = ETableContentType.MODS;
    4869
    4970        /**
     
    186207         */
    187208        public void setFilter(Type type, int downloadState) {
    188                 sorter.setRowFilter(new ModTableFilter(type, downloadState));
     209                sorter.setRowFilter(new ModTableFilter(type, downloadState,
     210                                contentType == ETableContentType.CORE, false));
    189211        }
    190212
     
    203225                        }
    204226                }
     227        }
     228
     229        /**
     230         * Select/Unselect all currently visible items depending on the current
     231         * state of selection
     232         */
     233        public void unSelectAll() {
     234                boolean isAll = true;
     235                for (int i = 0; i < getRowCount(); i++) {
     236                        int modRow = convertRowIndexToModel(i);
     237                        boolean inst = (Boolean) model.getValueAt(modRow, 0);
     238                        if (!inst) {
     239                                isAll = false;
     240                                break;
     241                        }
     242                }
     243
     244                for (int i = 0; i < getRowCount(); i++) {
     245                        int modRow = convertRowIndexToModel(i);
     246                        model.setValueAt(!isAll, modRow, 0);
     247                }
     248                invalidate();
     249                repaint();
    205250        }
    206251
     
    267312                                        }
    268313
     314                                        if (mod.isLocalAvailable()
     315                                                        && contentType != ETableContentType.CORE) {
     316                                                // Delete package folder item
     317                                                JMenuItem deleteModFolder = new JMenuItem(
     318                                                                bundle.getString("deletePackage.text"));
     319                                                deleteModFolder.addActionListener(new ActionListener() {
     320                                                        @Override
     321                                                        public void actionPerformed(ActionEvent arg0) {
     322                                                                if (mod.getNode() == null) {
     323                                                                        JOptionPane.showMessageDialog(
     324                                                                                        null,
     325                                                                                        bundle.getString("deletePackageLocalOnly.text"),
     326                                                                                        bundle.getString("deletePackageLocalOnly.title"),
     327                                                                                        JOptionPane.INFORMATION_MESSAGE);
     328                                                                } else {
     329                                                                        int res = JOptionPane.showConfirmDialog(
     330                                                                                        null,
     331                                                                                        bundle.getString("deletePackageConfirm.text"),
     332                                                                                        bundle.getString("deletePackageConfirm.title"),
     333                                                                                        JOptionPane.YES_NO_OPTION,
     334                                                                                        JOptionPane.WARNING_MESSAGE);
     335                                                                        if (res == JOptionPane.YES_OPTION) {
     336                                                                                mod.deleteLocalPackage();
     337                                                                                invalidate();
     338                                                                                repaint();
     339                                                                        }
     340                                                                }
     341                                                        }
     342                                                });
     343                                                popup.add(deleteModFolder);
     344                                        }
     345
    269346                                        if (popup.getSubElements().length > 0)
    270347                                                popup.show(e.getComponent(), e.getX(), e.getY());
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java

    r648 r657  
    1313        private int downloadState = 0;
    1414
     15        private boolean showCorePackages = false;
     16        private boolean showInvalidPlatform = false;
     17
    1518        /**
    1619         * @param type
     
    1821         * @param downloadState
    1922         *            Show only: 0 = all, 1 = online, 2 = downloaded
     23         * @param showCorePackages
     24         *            Show core packages in table
     25         * @param showInvalidPlatform
     26         *            Show packages not valid on this platform
    2027         */
    21         public ModTableFilter(Type type, int downloadState) {
     28        public ModTableFilter(Type type, int downloadState,
     29                        boolean showCorePackages, boolean showInvalidPlatform) {
    2230                super();
    2331                this.type = type;
    2432                this.downloadState = downloadState;
     33                this.showCorePackages = showCorePackages;
     34                this.showInvalidPlatform = showInvalidPlatform;
    2535        }
    2636
     
    2838        public boolean include(
    2939                        RowFilter.Entry<? extends ModTableModel, ? extends Integer> entry) {
    30                 Package mod = (Package) entry.getModel().getValueAt(entry.getIdentifier(), -1);
    31                
    32                 if (mod.isCorePackage())
     40                Package mod = (Package) entry.getModel().getValueAt(
     41                                entry.getIdentifier(), -1);
     42
     43                if (mod.isCorePackage() && !showCorePackages)
    3344                        return false;
    3445
    35                 if (!mod.isValidOnPlatform())
     46                if (!mod.isValidOnPlatform() && !showInvalidPlatform)
    3647                        return false;
    3748
     
    4758                                break;
    4859                }
    49                
     60
    5061                return result;
    5162        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r651 r657  
    6060                                return res;
    6161                        case 5:
     62                                if (mod.getNode() != null)
     63                                        return sdf.format(new Date(
     64                                                        mod.getNode().getCreated() * 1000));
     65                                else
     66                                        return null;
     67                        case 6:
    6268                                if (mod.getFile() != null)
    6369                                        return sdf.format(new Date(
     
    8389                                return bundle.getString("mod.state");
    8490                        case 5:
     91                                return bundle.getString("mod.added");
     92                        case 6:
    8593                                return bundle.getString("mod.date");
    8694                }
     
    95103        @Override
    96104        public int getColumnCount() {
    97                 return 6;
     105                return 7;
    98106        }
    99107
     
    112120                                return String.class;
    113121                        case 5:
     122                                return String.class;
     123                        case 6:
    114124                                return String.class;
    115125                }
     
    153163                                break;
    154164                        case 5:
    155                                 w = 115;
     165                                w = 100;
     166                                col.setPreferredWidth(w);
     167                                col.setMinWidth(w);
     168                                col.setMaxWidth(w);
     169                                break;
     170                        case 6:
     171                                w = 100;
    156172                                col.setPreferredWidth(w);
    157173                                col.setMinWidth(w);
  • AE/installer2/src/net/oni2/aeinstaller/localization/MainWin.properties

    r656 r657  
    3333menu.manageToolsTooltip=Install/Remove Tools
    3434
     35btnUnSelectAll.text=(Un)select all
    3536btnRevertSelection.text=Revert selection
    3637btnRevertSelection.tooltip=Select mods which are currently installed
  • AE/installer2/src/net/oni2/aeinstaller/localization/ModTable.properties

    r651 r657  
    44mod.creator=Creator
    55mod.state=State
     6mod.added=Added
    67mod.date=Last change
    78
     
    1415openModFolder.text=Open mod folder
    1516openDepotPage.text=Open Depot page in browser
     17deletePackage.text=Delete package locally
     18
     19deletePackageLocalOnly.title=Local only package
     20deletePackageLocalOnly.text=This package seems not to be on the Depot.\nFor security reasons deleting this package through the AEI is forbidden.
     21
     22deletePackageConfirm.title=Delete package folder
     23deletePackageConfirm.text=Do you really want to delete the downloaded package?
Note: See TracChangeset for help on using the changeset viewer.