Ignore:
Timestamp:
Jan 16, 2013, 11:25:00 AM (12 years ago)
Author:
alloc
Message:

AEI2 0.83:

  • Dependencies from Mods to Tools supported
  • Installed tools can get a menu entry to launch them
  • Mods can unlock levels in persist.dat through UnlockLevel-tag
Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
2 added
1 deleted
8 edited

Legend:

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

    r622 r623  
    11appname=AE Installer 2
    2 appversion=0.82
     2appversion=0.83
    33
    44invalidPath.title=Wrong directory
  • AE/installer2/src/net/oni2/aeinstaller/Images.properties

    r621 r623  
    3232img.ae=/net/oni2/aeinstaller/images/AElogo.png
    3333img.oni=/net/oni2/aeinstaller/images/oni.png
     34img.transparent=/net/oni2/aeinstaller/images/transparent.png
  • AE/installer2/src/net/oni2/aeinstaller/backend/Settings.java

    r621 r623  
    8080                Vector<String> res = null;
    8181                try {
    82                         res = QuickAppExecution.execute(cmd);
     82                        res = AppExecution.executeAndWait(cmd);
    8383                } catch (IOException e) {
    8484                        e.printStackTrace();
     
    134134                                Vector<String> res = null;
    135135                                try {
    136                                         res = QuickAppExecution.execute(cmd);
     136                                        res = AppExecution.executeAndWait(cmd);
    137137                                } catch (IOException e) {
    138138                                        e.printStackTrace();
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java

    r622 r623  
    2626
    2727        private HashSet<Type> types = new HashSet<Type>();
     28        private boolean tool = false;
    2829        private ECompatiblePlatform platform = null;
    2930        private String version = "";
     
    3637        private net.oni2.aeinstaller.backend.depot.model.File file = null;
    3738
     39        private File exeFile = null;
     40        private File iconFile = null;
     41        private String workingDir = "Base";
     42
    3843        private HashSet<Integer> incompatibilities = new HashSet<Integer>();
    3944        private HashSet<Integer> dependencies = new HashSet<Integer>();
     45        private HashSet<Integer> unlockLevel = new HashSet<Integer>();
    4046
    4147        private long localTimestamp = 0;
     
    5258                packageNumber = nm.getPackageNumber();
    5359                platform = nm.getPlatform();
     60                tool = nm.isTool();
    5461                for (TaxonomyTerm tt : nm.getTypes()) {
    5562                        Type t = ModManager.getInstance().getTypeByName(tt.getName());
    5663                        types.add(t);
    57                         if (!nm.isTool() && !isMandatoryMod() && isValidOnPlatform())
     64                        if (!tool && !isMandatoryMod() && isValidOnPlatform())
    5865                                t.addEntry(this);
    5966                }
     
    7683                File config = new File(getLocalPath(), "Mod_Info.cfg");
    7784                File aeicfg = new File(getLocalPath(), "aei.cfg");
     85                File plain = new File(getLocalPath(), "plain");
    7886                if (config.exists()) {
    7987                        try {
     
    131139                                                        }
    132140                                                }
     141                                        } else if (sName.equalsIgnoreCase("UnlockLevel")) {
     142                                                String[] levelsS = sVal.split(",");
     143                                                for (String s : levelsS) {
     144                                                        try {
     145                                                                int level = Integer.parseInt(s);
     146                                                                unlockLevel.add(level);
     147                                                        } catch (NumberFormatException e) {
     148                                                                System.err
     149                                                                                .format("Mod %05d does contain a non-number UnlockLevel value: '%s'\n",
     150                                                                                                packageNumber, s);
     151                                                        }
     152                                                }
     153                                        } else if (sName.equalsIgnoreCase("ExeName")) {
     154                                                exeFile = new File(Paths.getEditionBasePath(), sVal);
     155                                        } else if (sName.equalsIgnoreCase("WorkingDir")) {
     156                                                workingDir = sVal;
     157                                        } else if (sName.equalsIgnoreCase("IconName")) {
     158                                                iconFile = new File(Paths.getEditionBasePath(), sVal);
    133159                                        }
    134160                                }
     
    166192                        }
    167193                }
     194                if (node == null)
     195                        tool = plain.exists();
    168196        }
    169197
     
    254282
    255283        /**
     284         * @return Is this mod actually a tool?
     285         */
     286        public boolean isTool() {
     287                return tool;
     288        }
     289
     290        /**
    256291         * @return Compatible platforms
    257292         */
     
    326361        public HashSet<Integer> getDependencies() {
    327362                return dependencies;
     363        }
     364
     365        /**
     366         * @return the levels this mod will unlock
     367         */
     368        public HashSet<Integer> getUnlockLevels() {
     369                return unlockLevel;
     370        }
     371
     372        /**
     373         * @return Executable name of this tool
     374         */
     375        public File getExeFile() {
     376                return exeFile;
     377        }
     378        /**
     379         * @return Icon file of this tool
     380         */
     381        public File getIconFile() {
     382                return iconFile;
     383        }
     384
     385        /**
     386         * @return Working directory of this tool
     387         */
     388        public File getWorkingDir() {
     389                if (workingDir.equalsIgnoreCase("Exe")) {
     390                        if (exeFile != null)
     391                                return exeFile.getParentFile();
     392                        else
     393                                return Paths.getEditionGDF();
     394                } else if (workingDir.equalsIgnoreCase("GDF"))
     395                        return Paths.getEditionGDF();
     396                else
     397                        return Paths.getEditionBasePath();
    328398        }
    329399
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java

    r621 r623  
    253253
    254254        /**
    255          * Get a mod by its package number
     255         * @return Currently installed tools
     256         */
     257        public TreeSet<Mod> getInstalledTools() {
     258                TreeSet<Mod> res = new TreeSet<Mod>();
     259                for (int n : Installer.getInstalledTools()) {
     260                        res.add(getModByNumber(n));
     261                }
     262                return res;
     263        }
     264
     265        /**
     266         * Get a mod/tool by its package number
    256267         *
    257268         * @param number
    258269         *            Package number
    259          * @return Mod or null
     270         * @return Mod/tool or null
    260271         */
    261272        public Mod getModByNumber(int number) {
    262                 for (Mod m : mods.values()) {
    263                         if (m.getPackageNumber() == number)
    264                                 return m;
    265                 }
     273                if (mods.containsKey(number))
     274                        return mods.get(number);
     275                if (tools.containsKey(number))
     276                        return tools.get(number);
    266277                return null;
    267278        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r622 r623  
    88import java.io.File;
    99import java.io.IOException;
     10import java.net.URL;
    1011import java.util.ArrayList;
    1112import java.util.HashMap;
     
    1718import java.util.Vector;
    1819
     20import javax.swing.AbstractAction;
     21import javax.swing.Icon;
     22import javax.swing.ImageIcon;
    1923import javax.swing.JButton;
    2024import javax.swing.JComboBox;
     
    3842import javax.swing.table.TableRowSorter;
    3943
     44import net.oni2.aeinstaller.AEInstaller2;
     45import net.oni2.aeinstaller.backend.AppExecution;
    4046import net.oni2.aeinstaller.backend.Paths;
    4147import net.oni2.aeinstaller.backend.Settings;
     
    8086
    8187        private JMenu mainMenu;
     88        private JMenu toolsMenu;
     89        private TreeSet<JMenuItem> toolsMenuItems = new TreeSet<JMenuItem>();
    8290
    8391        private JSplitPane contents;
     
    412420
    413421        @SuppressWarnings("unused")
     422        private void refreshToolsMenu() {
     423                for (JMenuItem i : toolsMenuItems) {
     424                        toolsMenu.remove(i);
     425                }
     426                toolsMenuItems.clear();
     427                for (Mod m : ModManager.getInstance().getInstalledTools()) {
     428                        if (m.getExeFile() != null && m.getExeFile().exists()) {
     429                                JMenuItem item = new JMenuItem();
     430                                final Vector<String> params = new Vector<String>();
     431                                params.add(m.getExeFile().getPath());
     432                                final File wd = m.getWorkingDir();
     433                                Icon ico = null;
     434                                if (m.getIconFile() != null && m.getIconFile().exists()) {
     435                                        ico = new ImageIcon(m.getIconFile().getPath());
     436                                } else {
     437                                        URL icon = AEInstaller2.class.getResource("images/transparent.png");
     438                                        ico = new ImageIcon(icon);
     439                                }
     440                                item.setAction(new AbstractAction(m.getName(), ico) {
     441                                        private static final long serialVersionUID = 1L;
     442
     443                                        @Override
     444                                        public void actionPerformed(ActionEvent e) {
     445                                                AppExecution.execute(params, wd);
     446                                        }
     447                                });
     448                                toolsMenuItems.add(item);
     449                                toolsMenu.add(item);
     450                        }
     451                }
     452        }
     453
     454        @SuppressWarnings("unused")
    414455        private void revertSelection() {
    415456                model.revertSelection();
     
    510551
    511552                if (instReady) {
    512                         Installer.install(mods, new InstallProgressListener() {
     553                        TreeSet<Mod> actuallyMods = new TreeSet<Mod>();
     554                        TreeSet<Mod> actuallyTools = new TreeSet<Mod>();
     555
     556                        for (Mod m : mods) {
     557                                if (m.isTool())
     558                                        actuallyTools.add(m);
     559                                else
     560                                        actuallyMods.add(m);
     561                        }
     562
     563                        if (actuallyTools.size() > 0) {
     564                                Installer.installTools(actuallyTools);
     565                        }
     566
     567                        Installer.install(actuallyMods, new InstallProgressListener() {
    513568                                @Override
    514569                                public void installProgressUpdate(int done, int total,
     
    657712                Vector<String> params = getBasicOniLaunchParams();
    658713                if (params.size() > 0) {
    659                         try {
    660                                 ProcessBuilder pb = new ProcessBuilder(params);
    661                                 pb.directory(Paths.getEditionBasePath());
    662                                 pb.start();
    663                         } catch (IOException e) {
    664                                 e.printStackTrace();
    665                         }
     714                        AppExecution.execute(params, Paths.getEditionBasePath());
    666715                }
    667716        }
     
    672721                if (params.size() > 0) {
    673722                        params.add("-noswitch");
    674                         try {
    675                                 ProcessBuilder pb = new ProcessBuilder(params);
    676                                 pb.directory(Paths.getEditionBasePath());
    677                                 pb.start();
    678                         } catch (IOException e) {
    679                                 e.printStackTrace();
    680                         }
     723                        AppExecution.execute(params, Paths.getEditionBasePath());
    681724                }
    682725        }
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties

    r621 r623  
    2424menu.reglobalize=&Rebuild Core Data
    2525menu.reglobalizeTooltip=Rebuild Core Data
    26 menu.tools=&Manage Tools
    27 menu.toolsTooltip=Install/Remove Tools
    2826menu.update=&Check for updates
    2927menu.updateTooltip=Check for updates to already downloaded packages on the Depot
     28
     29menu.tools=&Tools
     30menu.manageTools=&Manage Tools
     31menu.manageToolsTooltip=Install/Remove Tools
    3032
    3133btnRevertSelection.text=Revert selection
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r621 r623  
    66  locationRelativeTo: null
    77  defaultCloseOperation: doNothingOnClose
    8   onWindowOpened: [execDepotUpdate,checkMandatoryFiles,checkInitialize,initialize,checkUpdates,doUpdate]
     8  onWindowOpened: [execDepotUpdate,checkMandatoryFiles,checkInitialize,initialize,checkUpdates,doUpdate,refreshToolsMenu,focus]
    99  onWindowClosing: [saveLocalData,exit]
    1010  iconImage: img.ae
     
    1919    - Action(name=saveConfig, text=menu.saveConfig, toolTipText=menu.saveConfigTooltip, icon=img.saveFile, onAction=[saveConfig])
    2020    - Action(name=reglobalize, text=menu.reglobalize, toolTipText=menu.reglobalizeTooltip, icon=img.refresh, onAction=[reglobalize])
    21     - Action(name=tools, text=menu.tools, toolTipText=menu.toolsTooltip, icon=img.tools, onAction=[tools])
     21    - Action(name=tools, text=menu.manageTools, toolTipText=menu.manageToolsTooltip, icon=img.tools, onAction=[tools,refreshToolsMenu])
    2222    - Action(name=update, text=menu.update, toolTipText=menu.updateTooltip, icon=img.update, onAction=[checkUpdates,doUpdate])
    2323    - JMenuBar:
     
    3737            - JMenuItem(action=reglobalize)
    3838            - JSeparator()
    39             - JMenuItem(action=tools)
     39            - JMenuItem(action=update)
     40        - JMenu(name=toolsMenu, text=menu.tools):
     41            - JMenuItem(name=manageToolsItem, action=tools)
    4042            - JSeparator()
    41             - JMenuItem(action=update)
    4243    - JToolBar(name=toolbar, floatable=false, orientation=0):
    4344        - JButton(action=exitAction, hideActionText=true)
Note: See TracChangeset for help on using the changeset viewer.