Changeset 99a5b10


Ignore:
Timestamp:
May 7, 2016 5:39:02 PM (4 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
61be475, 8bb6922
Parents:
bf1fa06
Message:

DTG: Add basic network status
Hide disabled items in Swing menu

Location:
apps/desktopgui/src/net/i2p/desktopgui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java

    rbf1fa06 r99a5b10  
    1313import javax.swing.SwingWorker;
    1414
     15import net.i2p.data.DataHelper;
    1516import net.i2p.desktopgui.router.RouterManager;
    1617import net.i2p.desktopgui.util.BrowseException;
     
    1920import net.i2p.util.Log;
    2021import net.i2p.util.PortMapper;
     22import net.i2p.util.Translate;
    2123
    2224/**
     
    2931    private final RouterContext _context;
    3032    private final Log log;
    31     private MenuItem _restartItem, _stopItem, _cancelItem;
    32     private JMenuItem _jrestartItem, _jstopItem, _jcancelItem;
     33    private MenuItem _statusItem, _browserItem, _configItem, _restartItem, _stopItem,
     34                     _restartHardItem, _stopHardItem, _cancelItem;
     35    private JMenuItem _jstatusItem, _jbrowserItem, _jconfigItem, _jrestartItem, _jstopItem,
     36                      _jrestartHardItem, _jstopHardItem, _jcancelItem;
    3337
    3438    private static final boolean CONSOLE_ENABLED = Desktop.isDesktopSupported() &&
    3539                                                   Desktop.getDesktop().isSupported(Action.BROWSE);
     40    private static final String CONSOLE_BUNDLE_NAME = "net.i2p.router.web.messages";
    3641
    3742    public InternalTrayManager(RouterContext ctx, Main main, boolean useSwing) {
     
    4146    }
    4247
    43     public PopupMenu getMainMenu() {
     48    public synchronized PopupMenu getMainMenu() {
    4449        PopupMenu popup = new PopupMenu();
    4550       
    46         MenuItem browserLauncher;
     51        final MenuItem statusItem = new MenuItem("");
     52
     53        final MenuItem browserLauncher;
    4754        if (CONSOLE_ENABLED) {
    4855            browserLauncher = new MenuItem(_t("Launch I2P Browser"));
     
    162169        });
    163170
     171        popup.add(statusItem);
     172        popup.addSeparator();
    164173        if (CONSOLE_ENABLED) {
    165174            popup.add(browserLauncher);
     
    177186        popup.add(cancelItem);
    178187       
     188        _statusItem = statusItem;
     189        _browserItem = browserLauncher;
     190        _configItem = desktopguiConfigurationLauncher;
    179191        _restartItem = restartItem;
    180192        _stopItem = stopItem;
     193        _restartHardItem = restartItem2;
     194        _stopHardItem = stopItem2;
    181195        _cancelItem = cancelItem;
    182196
     
    184198    }
    185199
    186     public JPopupMenu getSwingMainMenu() {
     200    public synchronized JPopupMenu getSwingMainMenu() {
    187201        JPopupMenu popup = new JPopupMenu();
    188202       
    189         JMenuItem browserLauncher;
     203        final JMenuItem statusItem = new JMenuItem("");
     204
     205        final JMenuItem browserLauncher;
    190206        if (CONSOLE_ENABLED) {
    191207            browserLauncher = new JMenuItem(_t("Launch I2P Browser"));
     
    305321        });
    306322
     323        popup.add(statusItem);
     324        popup.addSeparator();
    307325        if (CONSOLE_ENABLED) {
    308326            popup.add(browserLauncher);
     
    320338        popup.add(cancelItem);
    321339       
     340        _jstatusItem = statusItem;
     341        _jbrowserItem = browserLauncher;
     342        _jconfigItem = desktopguiConfigurationLauncher;
    322343        _jrestartItem = restartItem;
    323344        _jstopItem = stopItem;
     345        _jrestartHardItem = restartItem2;
     346        _jstopHardItem = stopItem2;
    324347        _jcancelItem = cancelItem;
    325348
     
    331354     * @since 0.9.26
    332355     */
    333     protected void updateMenu() {
     356    protected synchronized void updateMenu() {
    334357        boolean x = RouterManager.isShutdownInProgress(_context);
     358        boolean imminent = false;
     359        String status;
     360        if (x) {
     361            long time = RouterManager.getShutdownTimeRemaining(_context);
     362            if (time > 5000) {
     363                status = _t("Shutdown in {0}", DataHelper.formatDuration2(time).replace("&nbsp;", " "));
     364            } else {
     365                status = _t("Shutdown imminent");
     366                imminent = true;
     367            }
     368        } else {
     369            // status translations are in the console bundle
     370            status = _t("Network") + ": " +
     371                     Translate.getString(RouterManager.getStatus(_context), _context, CONSOLE_BUNDLE_NAME);
     372        }
     373        PopupMenu awt = trayIcon.getPopupMenu();
     374        if (awt != null) {
     375            awt.remove(0);
     376            awt.insert(status, 0);
     377        }
     378        if (_browserItem != null)
     379            _browserItem.setEnabled(!imminent);
     380        if (_configItem != null)
     381            _configItem.setEnabled(!imminent);
    335382        if (_restartItem != null)
    336383            _restartItem.setEnabled(!x);
    337384        if (_stopItem != null)
    338385            _stopItem.setEnabled(!x);
     386        if (_restartHardItem != null)
     387            _restartHardItem.setEnabled(!imminent);
     388        if (_stopHardItem != null)
     389            _stopHardItem.setEnabled(!imminent);
    339390        if (_cancelItem != null)
    340             _cancelItem.setEnabled(x);
     391            _cancelItem.setEnabled(x && !imminent);
     392
     393        if (_jstatusItem != null)
     394            _jstatusItem.setText(status);
     395        if (_jbrowserItem != null)
     396            _jbrowserItem.setVisible(!imminent);
     397        if (_jconfigItem != null)
     398            _jconfigItem.setVisible(!imminent);
    341399        if (_jrestartItem != null)
    342             _jrestartItem.setEnabled(!x);
     400            _jrestartItem.setVisible(!x);
    343401        if (_jstopItem != null)
    344             _jstopItem.setEnabled(!x);
     402            _jstopItem.setVisible(!x);
     403        if (_jrestartHardItem != null)
     404            _jrestartHardItem.setVisible(!imminent);
     405        if (_jstopHardItem != null)
     406            _jstopHardItem.setVisible(!imminent);
    345407        if (_jcancelItem != null)
    346             _jcancelItem.setEnabled(x);
     408            _jcancelItem.setVisible(x && !imminent);
    347409    }
    348410
  • apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java

    rbf1fa06 r99a5b10  
    193193        return DesktopguiTranslator._t(_appContext, s);
    194194    }
     195   
     196    /**
     197     * @since 0.9.26
     198     */
     199    protected String _t(String s, Object o) {
     200        return DesktopguiTranslator._t(_appContext, s, o);
     201    }
    195202}
  • apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java

    rbf1fa06 r99a5b10  
    9898        return ctx.router().scheduledGracefulExitCode() > 0;
    9999    }
     100
     101    /**
     102     * Get time until shutdown
     103     * @return -1 if no shutdown in progress.
     104     * @since 0.9.26
     105     */
     106    public static long getShutdownTimeRemaining(RouterContext ctx) {
     107        return ctx.router().getShutdownTimeRemaining();
     108    }
     109
     110    /**
     111     * Get network status, untranslated
     112     * @since 0.9.26
     113     */
     114    public static String getStatus(RouterContext ctx) {
     115        return ctx.commSystem().getStatus().toStatusString();
     116    }
    100117}
Note: See TracChangeset for help on using the changeset viewer.