Changeset 593


Ignore:
Timestamp:
Dec 31, 2012, 2:48:32 PM (12 years ago)
Author:
alloc
Message:
 
Location:
AE/installer2
Files:
13 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/.classpath

    r591 r593  
    1919        <classpathentry kind="lib" path="lib/httpclient/commons-logging-1.1.1.jar"/>
    2020        <classpathentry kind="lib" path="lib/xstream-1.4.3.jar"/>
     21        <classpathentry kind="lib" path="lib/macify.jar"/>
    2122        <classpathentry kind="output" path="bin"/>
    2223</classpath>
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties

    r592 r593  
     1appname=AE Installer 2
     2appversion=0.32
     3
    14invalidPath.title=Wrong directory
    25invalidPath.text=This program has to be placed in the subfolder Edition/AEInstaller inside a vanilla Oni folder.\nThe full path of the .jar-file has to be:\nOniFolder/Edition/AEInstaller/AEInstaller2.jar
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java

    r592 r593  
    11package net.oni2.aeinstaller;
    22
     3import java.awt.image.BufferedImage;
    34import java.io.File;
    45import java.io.FileNotFoundException;
     6import java.io.IOException;
    57import java.io.PrintStream;
     8import java.net.URL;
    69import java.util.ResourceBundle;
    710
     11import javax.imageio.ImageIO;
    812import javax.swing.JFrame;
    913import javax.swing.JOptionPane;
     
    1418
    1519import net.oni2.aeinstaller.backend.Settings;
     20import net.oni2.aeinstaller.backend.Settings.Platform;
    1621import net.oni2.aeinstaller.backend.StuffToRefactorLater;
    1722import net.oni2.aeinstaller.backend.depot.DepotManager;
     
    1924
    2025import org.javabuilders.swing.SwingJavaBuilder;
     26import org.simplericity.macify.eawt.Application;
     27import org.simplericity.macify.eawt.DefaultApplication;
    2128
    2229/**
    2330 * @author Christian Illy
    24  * @version 0.1
    2531 */
    2632public class AEInstaller2 {
     33
     34        private static ResourceBundle imagesBundle = ResourceBundle
     35                        .getBundle(AEInstaller2.class.getPackage().getName() + ".Images");
     36        private static ResourceBundle basicBundle = ResourceBundle
     37                        .getBundle(AEInstaller2.class.getPackage().getName()
     38                                        + ".AEInstaller");
     39
     40        private static Application app = null;
     41
     42        private static void initMacOS() {
     43                System.setProperty("apple.laf.useScreenMenuBar", "true");
     44                System.setProperty("com.apple.mrj.application.apple.menu.about.name",
     45                                basicBundle.getString("appname"));
     46                app = new DefaultApplication();
     47
     48                URL icon = AEInstaller2.class.getResource("images/AElogo.png");
     49                try {
     50                        BufferedImage img = ImageIO.read(icon);
     51                        app.setApplicationIconImage(img);
     52                } catch (IOException e) {
     53                        // TODO Auto-generated catch block
     54                        e.printStackTrace();
     55                }
     56        }
    2757
    2858        /**
     
    4979                }
    5080
     81                if (Settings.getPlatform() == Platform.MACOS)
     82                        initMacOS();
     83
    5184                Settings.deserializeFromFile();
    5285                Settings.setDebug(debug);
    5386                DepotManager.getInstance().loadFromFile(
    5487                                new File(Settings.getDepotCacheFilename()));
    55 
    56                 ResourceBundle imagesBundle = ResourceBundle
    57                                 .getBundle(AEInstaller2.class.getPackage().getName()
    58                                                 + ".Images");
    59                 ResourceBundle basicBundle = ResourceBundle
    60                                 .getBundle(AEInstaller2.class.getPackage().getName()
    61                                                 + ".AEInstaller");
    6288
    6389                SwingJavaBuilder.getConfig().addResourceBundle(imagesBundle);
     
    6692                SwingJavaBuilder.getConfig().addType("JToolBarSeparator",
    6793                                JToolBar.Separator.class);
    68                 // SwingJavaBuilder.getConfig().addType("ScreenshotBrowser",
    69                 // ScreenshotBrowser.class);
    70                 // SwingJavaBuilder.getConfig().addType("HTMLLinkLabel",
    71                 // HTMLLinkLabel.class);
    7294
    7395                System.setProperty("networkaddress.cache.ttl", "5");
    7496                System.setProperty("networkaddress.cache.negative.ttl", "1");
    75 
     97               
    7698                try {
    7799                        String laf = Settings.getInstance().get("lookandfeel",
    78100                                        (String) null);
    79101                        if (laf == null) {
    80                                 for (LookAndFeelInfo lafInfo : UIManager
    81                                                 .getInstalledLookAndFeels()) {
    82                                         if (lafInfo.getName().equals("Nimbus"))
    83                                                 laf = lafInfo.getClassName();
     102                                if (Settings.getPlatform() == Platform.MACOS) {
     103                                        laf = UIManager.getSystemLookAndFeelClassName();
     104                                } else {
     105                                        for (LookAndFeelInfo lafInfo : UIManager
     106                                                        .getInstalledLookAndFeels()) {
     107                                                if (lafInfo.getName().equals("Nimbus"))
     108                                                        laf = lafInfo.getClassName();
     109                                        }
    84110                                }
    85111                        }
     
    115141                        public void run() {
    116142                                try {
    117                                         new MainWin().setVisible(true);
     143                                        MainWin mw = new MainWin();
     144                                        if (app != null) {
     145                                                app.addAboutMenuItem();
     146                                                app.setEnabledAboutMenu(true);
     147                                                app.addPreferencesMenuItem();
     148                                                app.setEnabledPreferencesMenu(true);
     149                                                app.addApplicationListener(mw);
     150                                        }
     151                                        mw.setVisible(true);
    118152                                } catch (Exception e) {
    119153                                        e.printStackTrace();
  • AE/installer2/src/net/oni2/aeinstaller/Images.properties

    r592 r593  
    11img.connect=/net/oni2/aeinstaller/images/tango/network-idle.png
    22img.disconnect=/net/oni2/aeinstaller/images/tango/network-offline.png
    3 img.exit=/net/oni2/aeinstaller/images/tango/system-log-out.png
    43img.manageExams=/net/oni2/aeinstaller/images/tango/document-open.png
    54img.manageMembers=/net/oni2/aeinstaller/images/tango/contact-new.png
    6 img.updatesvn=/net/oni2/aeinstaller/images/tango/view-refresh.png
    7 img.settings=/net/oni2/aeinstaller/images/tango/preferences-system.png
    85img.print=/net/oni2/aeinstaller/images/tango/document-print.png
    96img.edit=/net/oni2/aeinstaller/images/tango/text-editor.png
     
    118img.add=/net/oni2/aeinstaller/images/tango/list-add.png
    129img.refresh=/net/oni2/aeinstaller/images/tango/go-jump.png
    13 img.openFile=/net/oni2/aeinstaller/images/tango/document-open.png
    1410img.sale=/net/oni2/aeinstaller/images/tango/accessories-calculator.png
    1511img.orders=/net/oni2/aeinstaller/images/tango/bookmark-new.png
     
    2016img.downloadFolder=/net/oni2/aeinstaller/images/open_icon_library/folder-games.png
    2117
    22 img.kdt=/net/oni2/aeinstaller/images/kdt.png
     18img.openFile=/net/oni2/aeinstaller/images/tango/document-open.png
     19img.saveFile=/net/oni2/aeinstaller/images/tango/document-save-as.png
     20img.settings=/net/oni2/aeinstaller/images/tango/preferences-system.png
     21img.about=/net/oni2/aeinstaller/images/open_icon_library/help-about-3.png
     22img.exit=/net/oni2/aeinstaller/images/tango/system-log-out.png
     23img.undo=/net/oni2/aeinstaller/images/tango/edit-undo.png
     24img.undo16=/net/oni2/aeinstaller/images/tango/edit-undo16.png
     25img.redo=/net/oni2/aeinstaller/images/tango/edit-redo.png
     26img.refresh=/net/oni2/aeinstaller/images/tango/view-refresh.png
     27
     28img.ae=/net/oni2/aeinstaller/images/AElogo.png
  • AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java

    r592 r593  
    7777                super.setText(prefix + t + suffix);
    7878        }
     79
    7980}
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r592 r593  
    1010
    1111import javax.swing.JComboBox;
     12import javax.swing.JComponent;
    1213import javax.swing.JFrame;
    1314import javax.swing.JLabel;
     15import javax.swing.JMenu;
     16import javax.swing.JOptionPane;
    1417import javax.swing.JSplitPane;
    1518import javax.swing.JTable;
     
    2326
    2427import net.oni2.aeinstaller.backend.Settings;
     28import net.oni2.aeinstaller.backend.Settings.Platform;
    2529import net.oni2.aeinstaller.backend.depot.DepotCacheUpdateProgressListener;
    2630import net.oni2.aeinstaller.backend.depot.DepotConfig;
     
    2933import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
    3034import net.oni2.aeinstaller.backend.depot.model.TaxonomyVocabulary;
     35import net.oni2.aeinstaller.gui.about.AboutDialog;
    3136import net.oni2.aeinstaller.gui.modtable.ModTableFilter;
    3237import net.oni2.aeinstaller.gui.modtable.ModTableModel;
     
    3742import org.javabuilders.event.BackgroundEvent;
    3843import org.javabuilders.swing.SwingJavaBuilder;
     44import org.simplericity.macify.eawt.ApplicationEvent;
     45import org.simplericity.macify.eawt.ApplicationListener;
    3946
    4047/**
    4148 * @author Christian Illy
    4249 */
    43 public class MainWin extends JFrame {
     50public class MainWin extends JFrame implements ApplicationListener {
    4451        private static final long serialVersionUID = -4027395051382659650L;
    4552
     
    4855        @SuppressWarnings("unused")
    4956        private BuildResult result = SwingJavaBuilder.build(this, bundle);
     57
     58        private JMenu mainMenu;
    5059
    5160        private JSplitPane contents;
     
    6675         */
    6776        public MainWin() {
    68                 this.setTitle(bundle.getString("frame.title") + " - v"
    69                                 + bundle.getString("version"));
     77                this.setTitle(SwingJavaBuilder.getConfig().getResource("appname")
     78                                + " - v"
     79                                + SwingJavaBuilder.getConfig().getResource("appversion"));
    7080
    7181                contents.setDividerLocation(400);
    7282                initTable();
    7383                initModTypeBox();
     84
     85                if (Settings.getPlatform() == Platform.MACOS) {
     86                        mainMenu.setVisible(false);
     87                }
    7488        }
    7589
     
    115129                                });
    116130
     131                // To get checkbox-cells with background of row
     132                ((JComponent) tblMods.getDefaultRenderer(Boolean.class))
     133                                .setOpaque(true);
     134
    117135                model = new ModTableModel();
    118136
     
    148166        }
    149167
    150         @SuppressWarnings("unused")
     168        private boolean askClose() {
     169                int res = JOptionPane.showConfirmDialog(this,
     170                                bundle.getString("askClose.text"),
     171                                bundle.getString("askClose.title"), JOptionPane.YES_NO_OPTION,
     172                                JOptionPane.QUESTION_MESSAGE);
     173                return res == JOptionPane.YES_OPTION;
     174        }
     175
    151176        private boolean closeFrames() {
    152177                System.gc();
     
    158183        }
    159184
    160         @SuppressWarnings("unused")
    161185        private void exit() {
    162186                setVisible(false);
     
    164188        }
    165189
    166         @SuppressWarnings("unused")
    167190        private void saveLocalData() {
    168191                Settings.getInstance().serializeToFile();
     
    213236        }
    214237
    215         @SuppressWarnings("unused")
    216238        private void showSettings() {
    217                 SettingsDialog.openWindow();
    218         }
     239                new SettingsDialog().setVisible(true);
     240        }
     241
     242        private void showAbout() {
     243                new AboutDialog().setVisible(true);
     244        }
     245
     246        @SuppressWarnings("unused")
     247        private void loadConfig() {
     248                // TODO Auto-generated method stub
     249                JOptionPane.showMessageDialog(this, "loadConfig", "todo",
     250                                JOptionPane.INFORMATION_MESSAGE);
     251        }
     252
     253        @SuppressWarnings("unused")
     254        private void saveConfig() {
     255                // TODO Auto-generated method stub
     256                JOptionPane.showMessageDialog(this, "saveConfig", "todo",
     257                                JOptionPane.INFORMATION_MESSAGE);
     258        }
     259
     260        @SuppressWarnings("unused")
     261        private void reglobalize() {
     262                // TODO Auto-generated method stub
     263                JOptionPane.showMessageDialog(this, "reglobalize", "todo",
     264                                JOptionPane.INFORMATION_MESSAGE);
     265        }
     266       
     267        @SuppressWarnings("unused")
     268        private void revertSelection() {
     269                // TODO Auto-generated method stub
     270                JOptionPane.showMessageDialog(this, "revertSelection", "todo",
     271                                JOptionPane.INFORMATION_MESSAGE);
     272        }
     273       
     274       
    219275
    220276        private void modSelection(NodeMod n) {
     
    243299                        sorter.setRowFilter(new ModTableFilter(-1));
    244300        }
     301
     302        @Override
     303        public void handleAbout(ApplicationEvent event) {
     304                event.setHandled(true);
     305                showAbout();
     306        }
     307
     308        @Override
     309        public void handleOpenApplication(ApplicationEvent event) {
     310        }
     311
     312        @Override
     313        public void handleOpenFile(ApplicationEvent event) {
     314        }
     315
     316        @Override
     317        public void handlePreferences(ApplicationEvent event) {
     318                showSettings();
     319        }
     320
     321        @Override
     322        public void handlePrintFile(ApplicationEvent event) {
     323        }
     324
     325        @Override
     326        public void handleQuit(ApplicationEvent event) {
     327                if (askClose()) {
     328                        event.setHandled(true);
     329                        closeFrames();
     330                        saveLocalData();
     331                        exit();
     332                } else {
     333                        event.setHandled(false);
     334                }
     335        }
     336
     337        @Override
     338        public void handleReOpenApplication(ApplicationEvent event) {
     339        }
    245340}
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties

    r592 r593  
    11# Main Frame
    2 frame.title=AE Installer 2
    32buttonExit.title=Exit
    4 version=0.1
    53
    6 menu.file=&Menu
     4menu.main=&Main
    75menu.settings=&Settings
    86menu.settingsTooltip=Settings
     7menu.about=&About
     8menu.aboutTooltip=About
    99menu.exit=&Exit\tCtrl+Q
    1010menu.exitTooltip=Exit
    1111
     12menu.file=&File
     13menu.loadConfig=&Load configuration...
     14menu.loadConfigTooltip=Load configuration
     15menu.saveConfig=&Save configuration...
     16menu.saveConfigTooltip=Save configuration
     17
     18menu.reglobalize=&Rebuild Core Data
     19menu.reglobalizeTooltip=Rebuild Core Data
     20
     21btnRevertSelection.text=Revert selection
     22btnRevertSelection.tooltip=Select mods which are currently installed
    1223lblModTypes.text=Mod types:
    1324
     
    2233updatesAvailable.title=Updates available
    2334updatesAvailable.text=Some mods have newer versions available.
     35
     36askClose.title=Confirm close request
     37askClose.text=Are you sure you want to close the program?
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r592 r593  
    11JFrame:
    22  name: frame
    3   title: frame.title
     3  title: appname
    44  size: 800x600
    55  minimumSize: 400x300
     
    77  defaultCloseOperation: doNothingOnClose
    88  onWindowOpened: [execDepotUpdate,checkUpdates,focus]
    9   onWindowClosing: [$confirm,closeFrames,saveLocalData,exit]
    10   iconImage: img.kdt
     9  onWindowClosing: [askClose,closeFrames,saveLocalData,exit]
     10  iconImage: img.ae
    1111  content:
    12     - Action(name=exitAction, text=menu.exit, toolTipText=menu.exitTooltip, icon=img.exit, onAction=[$confirm,closeFrames,saveLocalData,exit])
     12    - Action(name=exitAction, text=menu.exit, toolTipText=menu.exitTooltip, icon=img.exit, onAction=[askClose,closeFrames,saveLocalData,exit])
    1313    - Action(name=settings, text=menu.settings, toolTipText=menu.settingsTooltip, icon=img.settings, onAction=[showSettings])
     14    - Action(name=about, text=menu.about, toolTipText=menu.aboutTooltip, icon=img.about, onAction=[showAbout])
     15    - Action(name=loadConfig, text=menu.loadConfig, toolTipText=menu.loadConfigTooltip, icon=img.openFile, onAction=[loadConfig])
     16    - Action(name=saveConfig, text=menu.saveConfig, toolTipText=menu.saveConfigTooltip, icon=img.saveFile, onAction=[saveConfig])
     17    - Action(name=reglobalize, text=menu.reglobalize, toolTipText=menu.reglobalizeTooltip, icon=img.refresh, onAction=[reglobalize])
    1418    - JMenuBar:
     19        - JMenu(name=mainMenu, text=menu.main):
     20            - JMenuItem(action=settings)
     21            - JMenuItem(action=about)
     22            - JMenuItem(action=exitAction)
    1523        - JMenu(name=fileMenu, text=menu.file):
    16             - JMenuItem(action=settings)
    17             - JMenuItem(action=exitAction)
     24            - JMenuItem(action=loadConfig)
     25            - JMenuItem(action=saveConfig)
     26            - JSeparator()
     27            - JMenuItem(action=reglobalize)
    1828    - JToolBar(name=tools, floatable=false, orientation=0):
    1929        - JButton(action=exitAction, hideActionText=true)
    2030        - JToolBarSeparator()
    2131        - JButton(action=settings, hideActionText=true)
     32        - JButton(action=about, hideActionText=true)
    2233    - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
    2334        - JPanel(name=panMods):
     35            - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
    2436            - JLabel(name=lblModTypes, text=lblModTypes.text)
    2537            - JComboBox(name=cmbModTypes, onAction=modTypeSelection)
     
    2840            - MigLayout: |
    2941                 [grow]
     42                 btnRevertSelection                 [min]
    3043                 lblModTypes<,cmbModTypes           [min]
    3144                 scrollMods                         [grow]
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java

    r592 r593  
    2222
    2323        private Vector<NodeMod> items;
     24        private Vector<Boolean> install;
    2425        private int vocabModTypeID = -1;
    2526        private int vocabPlatformID = -1;
     
    4546                                String type = "";
    4647                                if (vocabModTypeID < 0) {
    47                                         vocabModTypeID = DepotManager.getInstance()
    48                                                         .getVocabulary(DepotConfig.getVocabularyName_ModType()).getVid();
     48                                        vocabModTypeID = DepotManager
     49                                                        .getInstance()
     50                                                        .getVocabulary(
     51                                                                        DepotConfig.getVocabularyName_ModType())
     52                                                        .getVid();
    4953                                }
    5054                                for (int tid : node.getTaxonomyTerms().get(vocabModTypeID)) {
     
    5761                        case 3:
    5862                                if (vocabPlatformID < 0) {
    59                                         vocabPlatformID = DepotManager.getInstance()
    60                                                         .getVocabulary(DepotConfig.getVocabularyName_Platform()).getVid();
     63                                        vocabPlatformID = DepotManager
     64                                                        .getInstance()
     65                                                        .getVocabulary(
     66                                                                        DepotConfig.getVocabularyName_Platform())
     67                                                        .getVid();
    6168                                }
    6269                                int tid = node.getTaxonomyTerms().get(vocabPlatformID)
     
    6471                                return DepotManager.getInstance().getTaxonomyTerm(tid)
    6572                                                .getName();
     73                        case 4:
     74                                return install.get(row);
    6675                }
    6776                return null;
     
    7988                        case 3:
    8089                                return bundle.getString("mod.platform");
     90                        case 4:
     91                                return bundle.getString("mod.install");
    8192                }
    8293                return null;
     
    90101        @Override
    91102        public int getColumnCount() {
    92                 return 4;
     103                return 5;
    93104        }
    94105
     
    104115                        case 3:
    105116                                return String.class;
     117                        case 4:
     118                                return Boolean.class;
    106119                }
    107120                return null;
     
    137150                                col.setMaxWidth(w);
    138151                                break;
     152                        case 4:
     153                                w = 60;
     154                                col.setPreferredWidth(w);
     155                                col.setMinWidth(w);
     156                                col.setMaxWidth(w);
     157                                break;
    139158                }
    140159        }
     
    145164        public void reloadData() {
    146165                items = DepotManager.getInstance().getModPackageNodes();
     166                install = new Vector<Boolean>();
     167                // TODO check installed
     168                for (int i = 0; i < items.size(); i++) {
     169                        install.add(i, false);
     170                }
    147171        }
    148172
     
    156180        }
    157181
     182        @Override
     183        public boolean isCellEditable(int rowIndex, int columnIndex) {
     184                return columnIndex == 4;
     185        }
     186
     187        @Override
     188        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
     189                super.setValueAt(aValue, rowIndex, columnIndex);
     190                if (columnIndex == 4) {
     191                        install.set(rowIndex, (Boolean) aValue);
     192                }
     193        }
     194
    158195}
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.properties

    r591 r593  
    33mod.package_number=Pkg#
    44mod.platform=Platform
     5mod.install=Install?
  • AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java

    r592 r593  
    99import javax.swing.JComboBox;
    1010import javax.swing.JComponent;
    11 import javax.swing.JFrame;
     11import javax.swing.JDialog;
    1212import javax.swing.JOptionPane;
    1313import javax.swing.KeyStroke;
    14 import javax.swing.SwingUtilities;
    1514import javax.swing.UIManager;
    1615
     
    2322 * @author Christian Illy
    2423 */
    25 public class SettingsDialog extends JFrame {
     24public class SettingsDialog extends JDialog {
    2625        private static final long serialVersionUID = -5719515325671846620L;
    2726
     
    3130        private BuildResult result = SwingJavaBuilder.build(this, bundle);
    3231
    33         private static SettingsDialog openWindow = null;
    34 
    3532        private JComboBox cmbLaF;
    3633        private LaFComboModel laFModel;
    3734
    3835        /**
    39          * Open the Settings dialog if not currently opened or brings the existing
    40          * one to front
     36         * Open the settings
    4137         */
    42         public static void openWindow() {
    43                 if (openWindow != null) {
    44                         SwingUtilities.invokeLater(new Runnable() {
    45 
    46                                 @Override
    47                                 public void run() {
    48                                         openWindow.toFront();
    49                                         openWindow.repaint();
    50                                 }
    51                         });
    52                 } else {
    53                         new SettingsDialog().setVisible(true);
    54                 }
    55         }
    56 
    57         private SettingsDialog() {
    58                 openWindow = this;
     38        public SettingsDialog() {
    5939                setMinimumSize(new Dimension(500, (int) getSize().getHeight() + 0));
    6040
     
    8565
    8666        @SuppressWarnings("unused")
    87         private void close() {
    88                 openWindow = null;
    89         }
    90 
    91         @SuppressWarnings("unused")
    9267        private boolean save() {
    9368                Settings set = Settings.getInstance();
  • AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.yml

    r591 r593  
    1 JFrame:
     1JDialog:
    22  name: frame
    33  title: frame.title
     
    55  locationRelativeTo: null
    66  defaultCloseOperation: disposeOnClose
    7   onWindowClosed: [close]
    8   iconImage: img.kdt
     7  iconImage: img.ae
     8  modalityType: applicationModal
    99  content:
    1010    - JButton(name=btnOk, text=btnOk, onAction=[save,dispose])
Note: See TracChangeset for help on using the changeset viewer.