Changeset b885046


Ignore:
Timestamp:
Nov 25, 2010 6:12:32 PM (10 years ago)
Author:
mathiasdm <mathiasdm@…>
Branches:
master
Children:
02c3abf
Parents:
b434a475
Message:
  • Added README
  • Added configuration
  • Added option to start I2P from desktopgui
  • Cleanup
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • apps/desktopgui/TODO

    rb434a475 rb885046  
     1HIGH PRIORITY:
     2- Allow desktopgui to start, stop and restart I2P. - DONE
     3- Internationalisation
     4- Correct logging system
     5UNKNOWN:
    16- API to allow applications to add themselves to the menu?
    27    * registerApplication(); -- should return a positive number on success, -1 on failure
    38    * unregisterApplication(int); -- should return nothing (or bool for success?), and the parameter should be the number given when registering the application
    4 - Internationalisation
    59- Fetch I2P localhost from the core I2P application?
    6 - Correct logging system
    710- Use I2PAppContext::appDir (something like that) for desktopgui data.
    8 - Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading
     11- Consider SWT as option
     12    * Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading
     13    * Possible logic:
     14        - First try to load SWT (has the most options and is not ugly)
     15        - Then load AWT
     16- Access router.jar from other JVM? Is this possible? -- no: use I2CP with auth (not ready yet)
     17- Start desktopgui with another user than the user starting I2P (required for daemon usage).
  • apps/desktopgui/build.xml

    rb434a475 rb885046  
    4444                </jar>
    4545        </target>
    46        
     46
     47        <target name="dist" depends="jar" />   
    4748        <target name="all" depends="jar" />
    4849</project>
  • apps/desktopgui/src/net/i2p/desktopgui/Main.java

    rb434a475 rb885046  
    1010import java.util.logging.Level;
    1111import java.util.logging.Logger;
     12import net.i2p.desktopgui.util.*;
    1213
    1314/**
     
    4041        }
    4142       
     43        ConfigurationManager.getInstance().loadArguments(args);
     44       
    4245        final Main main = new Main();
     46       
    4347        main.launchForeverLoop();
    4448        //We'll be doing GUI work, so let's stay in the event dispatcher thread.
  • apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java

    rb434a475 rb885046  
    1010import java.awt.TrayIcon;
    1111import java.awt.Desktop.Action;
     12import java.awt.TrayIcon.MessageType;
    1213import java.awt.event.ActionEvent;
    1314import java.awt.event.ActionListener;
     
    2122
    2223import net.i2p.desktopgui.router.RouterManager;
     24import net.i2p.desktopgui.util.*;
    2325import net.i2p.router.Router;
    2426
     
    5557     */
    5658    public PopupMenu getMainMenu() {
     59        boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false);
     60       
    5761        PopupMenu popup = new PopupMenu();
    5862        MenuItem browserLauncher = new MenuItem("Launch I2P Browser");
     
    96100        popup.add(browserLauncher);
    97101        popup.addSeparator();
     102        MenuItem startItem = new MenuItem("Start I2P");
     103        startItem.addActionListener(new ActionListener() {
     104
     105                        @Override
     106                        public void actionPerformed(ActionEvent arg0) {
     107                                new SwingWorker<Object, Object>() {
     108
     109                                        @Override
     110                                        protected Object doInBackground() throws Exception {
     111                                                RouterManager.start();
     112                                                return null;
     113                                        }
     114                                       
     115                                        @Override
     116                                        protected void done() {
     117                                                trayIcon.displayMessage("Starting", "I2P is starting!", TrayIcon.MessageType.INFO);
     118                                                tray.remove(trayIcon);
     119                                        }
     120                                       
     121                                }.execute();
     122                        }
     123               
     124        });
     125        if(!inI2P) {
     126                popup.add(startItem);
     127        }
    98128        MenuItem restartItem = new MenuItem("Restart I2P");
    99129        restartItem.addActionListener(new ActionListener() {
     
    105135                    @Override
    106136                    protected Object doInBackground() throws Exception {
    107                         RouterManager.shutDown(Router.EXIT_GRACEFUL_RESTART);
     137                        RouterManager.restart();
    108138                        return null;
    109139                    }
     
    114144           
    115145        });
    116         popup.add(restartItem);
     146        if(inI2P) {
     147                popup.add(restartItem);
     148        }
    117149        MenuItem stopItem = new MenuItem("Stop I2P");
    118150        stopItem.addActionListener(new ActionListener() {
     
    124156                    @Override
    125157                    protected Object doInBackground() throws Exception {
    126                         RouterManager.shutDown(Router.EXIT_GRACEFUL);
     158                        RouterManager.shutDown();
    127159                        return null;
    128160                    }
     
    133165           
    134166        });
    135         popup.add(stopItem);
     167        if(inI2P) {
     168                popup.add(stopItem);
     169        }
    136170        return popup;
    137171    }
  • apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java

    rb434a475 rb885046  
    11package net.i2p.desktopgui.router;
    22
    3 import net.i2p.I2PAppContext;
    4 import org.tanukisoftware.wrapper.WrapperManager;
     3import java.io.IOException;
     4
     5import net.i2p.desktopgui.util.ConfigurationManager;
     6import net.i2p.router.Router;
     7import net.i2p.router.RouterContext;
    58
    69public class RouterManager {
     10       
     11        private static Router getRouter() {
     12                return RouterContext.listContexts().get(0).router();
     13        }
     14       
     15        public static void start() {
     16                try {
     17                        String location = ConfigurationManager.getInstance().getStringConfiguration("I2PLocation", "/home/i2p");
     18                        //TODO: detect I2P directory
     19                        //TODO: crossplatform
     20                        Runtime.getRuntime().exec(location + "/i2psvc " + location + "/wrapper.config");
     21                } catch (IOException e) {
     22                        // TODO Auto-generated catch block
     23                        e.printStackTrace();
     24                }
     25        }
     26       
     27        public static void restart() {
     28                getRouter().restart();
     29        }
    730
    8         public static void shutDown(final int exitCode) {
    9                 I2PAppContext.getGlobalContext().addShutdownTask(new Runnable() {
    10 
    11                         @Override
    12                         public void run() {
    13                 try {
    14                     WrapperManager.signalStopped(exitCode);
    15                 }
    16                 catch(Throwable t) {
    17                     //TODO: log
    18                 }
    19             }
    20            
    21         });
     31        public static void shutDown() {
     32                getRouter().shutdownGracefully();
    2233    }
    2334}
  • build.xml

    rb434a475 rb885046  
    688688                <ant dir="router/java/" target="fullclovertest" />
    689689    </target>
    690     <target name="desktopgui">
     690    <target name="desktopgui" depends="builddepSmall">
    691691        <ant dir="apps/desktopgui" target="jar" />
    692692        <copy file="apps/desktopgui/dist/desktopgui.jar" todir="." />
Note: See TracChangeset for help on using the changeset viewer.