Ignore:
Timestamp:
Jan 12, 2013, 11:48:33 PM (12 years ago)
Author:
alloc
Message:

AEI2: Added load/save config

Location:
AE/installer2/src/net/oni2/aeinstaller/gui
Files:
3 edited

Legend:

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

    r603 r604  
    11package net.oni2.aeinstaller.gui;
    22
     3import java.io.File;
    34import java.util.ArrayList;
    45import java.util.List;
     
    1011import javax.swing.JComboBox;
    1112import javax.swing.JComponent;
     13import javax.swing.JFileChooser;
    1214import javax.swing.JFrame;
    1315import javax.swing.JLabel;
     
    2224import javax.swing.event.ListSelectionEvent;
    2325import javax.swing.event.ListSelectionListener;
     26import javax.swing.filechooser.FileFilter;
    2427import javax.swing.table.TableRowSorter;
    2528
     29import net.oni2.aeinstaller.backend.Paths;
    2630import net.oni2.aeinstaller.backend.Settings;
    2731import net.oni2.aeinstaller.backend.Settings.Platform;
     
    3236import net.oni2.aeinstaller.backend.mods.ModManager;
    3337import net.oni2.aeinstaller.backend.mods.Type;
     38import net.oni2.aeinstaller.backend.mods.download.ModDownloader;
     39import net.oni2.aeinstaller.backend.mods.download.ModDownloader.State;
     40import net.oni2.aeinstaller.backend.mods.download.ModDownloaderListener;
    3441import net.oni2.aeinstaller.backend.oni.InstallProgressListener;
    3542import net.oni2.aeinstaller.backend.oni.Installer;
     
    222229        }
    223230
     231        private JFileChooser getConfigOpenSaveDialog(boolean save) {
     232                JFileChooser fc = new JFileChooser();
     233                fc.setCurrentDirectory(Paths.getEditionBasePath());
     234                if (save)
     235                        fc.setDialogType(JFileChooser.SAVE_DIALOG);
     236                else
     237                        fc.setDialogType(JFileChooser.OPEN_DIALOG);
     238                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
     239                fc.setFileFilter(new FileFilter() {
     240                        @Override
     241                        public String getDescription() {
     242                                return "XML files";
     243                        }
     244
     245                        @Override
     246                        public boolean accept(File arg0) {
     247                                return (arg0.isDirectory())
     248                                                || (arg0.getName().toLowerCase().endsWith(".xml"));
     249                        }
     250                });
     251                fc.setMultiSelectionEnabled(false);
     252                return fc;
     253        }
     254
    224255        @SuppressWarnings("unused")
    225256        private void loadConfig() {
    226                 // TODO method stub
    227                 JOptionPane.showMessageDialog(this, "loadConfig", "todo",
    228                                 JOptionPane.INFORMATION_MESSAGE);
     257                JFileChooser fc = getConfigOpenSaveDialog(false);
     258                int res = fc.showOpenDialog(this);
     259                if (res == JFileChooser.APPROVE_OPTION) {
     260                        if (fc.getSelectedFile().exists())
     261                                model.reloadSelection(fc.getSelectedFile());
     262                }
    229263        }
    230264
    231265        @SuppressWarnings("unused")
    232266        private void saveConfig() {
    233                 // TODO method stub
    234                 JOptionPane.showMessageDialog(this, "saveConfig", "todo",
    235                                 JOptionPane.INFORMATION_MESSAGE);
     267                JFileChooser fc = getConfigOpenSaveDialog(true);
     268                int res = fc.showSaveDialog(this);
     269                if (res == JFileChooser.APPROVE_OPTION) {
     270                        File f = fc.getSelectedFile();
     271                        if (!f.getName().endsWith(".xml"))
     272                                f = new File(f.getParentFile(), f.getName() + ".xml");
     273                        ModManager.getInstance().saveModSelection(f,
     274                                        model.getSelectedMods());
     275                }
    236276        }
    237277
     
    257297        @SuppressWarnings("unused")
    258298        private void revertSelection() {
    259                 // TODO method stub
    260                 JOptionPane.showMessageDialog(this, "revertSelection", "todo",
    261                                 JOptionPane.INFORMATION_MESSAGE);
     299                model.revertSelection();
    262300        }
    263301
    264302        @DoInBackground(progressMessage = "mandatoryFiles.title", cancelable = false, indeterminateProgress = false)
    265303        private void checkMandatoryFiles(final BackgroundEvent evt) {
    266                 //TODO
    267                 System.out.println("Mandatory Tools:");
     304                TreeSet<Mod> mand = new TreeSet<Mod>();
    268305                for (Mod m : ModManager.getInstance().getMandatoryTools()) {
    269                         System.out.format("  %05d %15s - Local: %b - Update: %b", m.getPackageNumber(), m.getName(), m.isLocalAvailable(), m.isNewerAvailable());
    270                 }
    271                 System.out.println();
    272                
    273                 System.out.println("Mandatory Mods:");
     306                        if (m.isNewerAvailable()) {
     307                                mand.add(m);
     308                        }
     309                }
    274310                for (Mod m : ModManager.getInstance().getMandatoryMods()) {
    275                         System.out.format("  %05d %15s - Local: %b - Update: %b", m.getPackageNumber(), m.getName(), m.isLocalAvailable(), m.isNewerAvailable());
    276                 }
     311                        if (m.isNewerAvailable()) {
     312                                mand.add(m);
     313                        }
     314                }
     315                if (mand.size() > 0) {
     316                        ModDownloader m = new ModDownloader(mand,
     317                                        new ModDownloaderListener() {
     318                                                @Override
     319                                                public void updateStatus(ModDownloader source,
     320                                                                State state, int filesDown, int filesTotal,
     321                                                                int bytesDown, int bytesTotal) {
     322                                                        evt.setProgressEnd(filesTotal);
     323                                                        evt.setProgressValue(filesDown);
     324                                                }
     325                                        });
     326                        while (!m.isFinished()) {
     327                                try {
     328                                        Thread.sleep(50);
     329                                } catch (InterruptedException e) {
     330                                        // TODO Auto-generated catch block
     331                                        e.printStackTrace();
     332                                }
     333                        }
     334                }
     335                evt.setProgressMessage(bundle.getString("mandatoryToolsInstall.title"));
     336                Installer.installTools(ModManager.getInstance().getMandatoryTools());
    277337        }
    278338
     
    287347                System.out.println("Install mods:");
    288348                for (Mod m : mods) {
    289                         System.out
    290                                         .println("  " + m.getPackageNumber() + ": " + m.getName());
     349                        System.out.println("  " + m.getPackageNumberString() + ": "
     350                                        + m.getName());
    291351                }
    292352
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties

    r602 r604  
    4747installing.title=Installing mods
    4848mandatoryFiles.title=Checking for mandatory files
     49mandatoryToolsInstall.title=Installing mandatory tools
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r600 r604  
    11package net.oni2.aeinstaller.gui.modtable;
    22
     3import java.io.File;
    34import java.util.HashSet;
    45import java.util.ResourceBundle;
     
    4445                                return mod.getName();
    4546                        case 1:
    46                                 return mod.getPackageNumber();
     47                                return mod.getPackageNumberString();
    4748                        case 2:
    4849                                String type = "";
     
    9495                                return String.class;
    9596                        case 1:
    96                                 return Integer.class;
     97                                return String.class;
    9798                        case 2:
    9899                                return String.class;
     
    149150                items.clear();
    150151                items.addAll(ModManager.getInstance().getMods());
     152                revertSelection();
     153        }
     154
     155        /**
     156         * Revert the selection to the mods that are currently installed
     157         */
     158        public void revertSelection() {
    151159                install.clear();
    152                 // TODO check installed
    153160                for (int i = 0; i < items.size(); i++) {
    154                         install.add(i, false);
    155                 }
     161                        install.add(i, ModManager.getInstance()
     162                                        .isModInstalled(items.get(i)));
     163                }
     164                fireTableDataChanged();
     165        }
     166
     167        /**
     168         * Reload the selection after a config was loaded
     169         *
     170         * @param config
     171         *            Config to load
     172         */
     173        public void reloadSelection(File config) {
     174                Vector<Integer> selected = ModManager.getInstance().loadModSelection(
     175                                config);
     176                install.clear();
     177                for (int i = 0; i < items.size(); i++) {
     178                        install.add(i, selected.contains(items.get(i).getPackageNumber()));
     179                }
     180                fireTableDataChanged();
    156181        }
    157182
Note: See TracChangeset for help on using the changeset viewer.