Search in sources :

Example 41 with UIFunctions

use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.

the class DebugMenuHelper method createDebugMenuItem.

/**
 * Creates the Debug menu and its children
 * NOTE: This is a development only menu and so it's not modularized into separate menu items
 * because this menu is always rendered in its entirety
 * @param menu
 * @param mainWindow
 * @return
 */
public static Menu createDebugMenuItem(final Menu menu) {
    MenuItem item;
    final UIFunctionsSWT uiFunctions = UIFunctionsManagerSWT.getUIFunctionsSWT();
    if (null == uiFunctions) {
        throw new IllegalStateException("UIFunctionsManagerSWT.getUIFunctionsSWT() is returning null");
    }
    item = new MenuItem(menu, SWT.CASCADE);
    Messages.setLanguageText(item, "MainWindow.menu.debug");
    Menu menuDebug = new Menu(menu.getParent(), SWT.DROP_DOWN);
    item.setMenu(menuDebug);
    item = new MenuItem(menuDebug, SWT.CASCADE);
    item.setText("ScreenSize");
    Menu menuSS = new Menu(menu.getParent(), SWT.DROP_DOWN);
    item.setMenu(menuSS);
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("640x400");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(640, 400);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("800x560");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(850, 560);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1024x700");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1024, 700);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1024x768");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1024, 768);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1152x784");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1152, 784);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1280x720");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1280, 720);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1280x1024");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1280, 1024);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1440x820");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1440, 820);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1600x970");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1600, 970);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("1920x1200");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(1920, 1200);
        }
    });
    item = new MenuItem(menuSS, SWT.NONE);
    item.setText("2560x1520");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            uiFunctions.getMainShell().setSize(2560, 1520);
        }
    });
    item = new MenuItem(menuDebug, SWT.NONE);
    item.setText("Reload messagebundle");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            MessageText.loadBundle(true);
            DisplayFormatters.setUnits();
            DisplayFormatters.loadMessages();
            UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
            if (uiFunctions != null) {
                uiFunctions.refreshLanguage();
            }
        }
    });
    item = new MenuItem(menuDebug, SWT.CHECK);
    item.setText("SR ChangeFlagChecker Paused");
    item.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            StartStopRulesDefaultPlugin.pauseChangeFlagChecker = !StartStopRulesDefaultPlugin.pauseChangeFlagChecker;
            ((MenuItem) e.widget).setSelection(StartStopRulesDefaultPlugin.pauseChangeFlagChecker);
        }
    });
    return menuDebug;
}
Also used : UIFunctions(com.biglybt.ui.UIFunctions) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SelectionEvent(org.eclipse.swt.events.SelectionEvent) MenuItem(org.eclipse.swt.widgets.MenuItem) UIFunctionsSWT(com.biglybt.ui.swt.UIFunctionsSWT) Menu(org.eclipse.swt.widgets.Menu)

Example 42 with UIFunctions

use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.

the class MainStatusBar method initStatusBar.

/**
 * @return composite holding the statusbar
 */
public Composite initStatusBar(final Composite _parent) {
    this.parent = _parent;
    this.display = parent.getDisplay();
    this.uiFunctions = UIFunctionsManager.getUIFunctions();
    ImageLoader imageLoader = ImageLoader.getInstance();
    FormData formData;
    Color fgColor = parent.getForeground();
    statusBar = new Composite(parent, SWT.NONE);
    statusBar.setForeground(fgColor);
    isAZ3 = "az3".equalsIgnoreCase(COConfigurationManager.getStringParameter("ui"));
    statusBar.getShell().addListener(SWT.Deiconify, new Listener() {

        @Override
        public void handleEvent(Event event) {
            Utils.execSWTThreadLater(0, new AERunnable() {

                @Override
                public void runSupport() {
                    if (!statusBar.isDisposed()) {
                        statusBar.layout();
                    }
                }
            });
        }
    });
    statusBar.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            if (uiFunctions != null) {
                UIUpdater uiUpdater = uiFunctions.getUIUpdater();
                if (uiUpdater != null) {
                    uiUpdater.removeUpdater(MainStatusBar.this);
                }
            }
            PRManager.removeListener(progressListener);
            Utils.disposeSWTObjects(imgRec, imgSent);
            Utils.removeParameterListeners(mapConfigListeners);
            if (alert_flasher_event != null) {
                alert_flasher_event.cancel();
                alert_flasher_event = null;
            }
            if (alertHistoryListener != null) {
                Alerts.removeMessageHistoryListener(alertHistoryListener);
                alertHistoryListener = null;
            }
        }
    });
    GridLayout layout_status = new GridLayout();
    layout_status.numColumns = 20;
    layout_status.horizontalSpacing = 0;
    layout_status.verticalSpacing = 0;
    layout_status.marginHeight = 0;
    if (Constants.isOSX) {
        // OSX has a resize widget on the bottom right.  It's about 15px wide.
        try {
            layout_status.marginRight = 15;
        } catch (NoSuchFieldError e) {
            // Pre SWT 3.1
            layout_status.marginWidth = 15;
        }
    } else {
        layout_status.marginWidth = 0;
    }
    statusBar.setLayout(layout_status);
    // Either the Status Text
    statusText = new CLabel(statusBar, borderFlag);
    statusText.setForeground(fgColor);
    Utils.setLayoutData(statusText, new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
    addStatusBarMenu(statusText);
    GC gc = new GC(statusText);
    // add 6, because CLabel forces a 3 pixel indent
    int height = Math.max(16, gc.getFontMetrics().getHeight()) + 6;
    gc.dispose();
    formData = new FormData();
    formData.height = height;
    // 2 params for Pre SWT 3.0
    formData.bottom = new FormAttachment(100, 0);
    // 2 params for Pre SWT 3.0
    formData.left = new FormAttachment(0, 0);
    // 2 params for Pre SWT 3.0
    formData.right = new FormAttachment(100, 0);
    statusBar.setLayoutData(formData);
    Listener listener = new Listener() {

        @Override
        public void handleEvent(Event e) {
            if (clickListener == null) {
                if (updateWindow != null) {
                    updateWindow.show();
                }
            } else {
                clickListener.UIStatusTextClicked();
            }
        }
    };
    statusText.addListener(SWT.MouseUp, listener);
    statusText.addListener(SWT.MouseDoubleClick, listener);
    // KN: Don't know why OSX is treated differently but this check was already here from the previous code
    if (Constants.isOSX) {
        progressBar = new AZProgressBar(statusBar, true);
    } else {
        progressBar = new AZProgressBar(statusBar, false);
    }
    progressBar.setVisible(false);
    progressGridData = new GridData(SWT.CENTER, SWT.CENTER, false, false);
    progressGridData.widthHint = 5;
    Utils.setLayoutData(progressBar, progressGridData);
    // addRIP();
    /*
		 * Progress reporting window image label
		 */
    progressViewerImageLabel = new CLabelPadding(statusBar, SWT.NONE);
    // image set below after adding listener
    progressViewerImageLabel.setToolTipText(MessageText.getString("Progress.reporting.statusbar.button.tooltip"));
    progressViewerImageLabel.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent e) {
            /*
				 * Opens the progress viewer if any of the reporters in the array is NOT already opened
				 * KN: TODO -- This is only a partial solution to minimize the occurrence of the main progress window
				 * opening more than once.  The one remaining case where multiple windows will still open is
				 * when you have one opened already... then run another process such as a torrent file download...
				 * at this point this new process is not in the already opened window so the check would
				 * allow the second window to open.
				 */
            IProgressReporter[] reporters = PRManager.getReportersArray(false);
            if (reporters.length == 0) {
                /*
					 * If there's nothing to see then open the window; the default widow will say there's nothing to see
					 * KN: calling isShowingEmpty return true is there is already a window opened showing the empty panel
					 */
                if (!ProgressReporterWindow.isShowingEmpty()) {
                    ProgressReporterWindow.open(reporters, ProgressReporterWindow.SHOW_TOOLBAR);
                }
            } else {
                for (int i = 0; i < reporters.length; i++) {
                    if (!ProgressReporterWindow.isOpened(reporters[i])) {
                        ProgressReporterWindow.open(reporters, ProgressReporterWindow.SHOW_TOOLBAR);
                        break;
                    }
                }
            }
        }
    });
    progressViewerImageLabel.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            ImageLoader imageLoader = ImageLoader.getInstance();
            imageLoader.releaseImage("progress_error");
            imageLoader.releaseImage("progress_info");
            imageLoader.releaseImage("progress_viewer");
        }
    });
    this.plugin_label_composite = new Composite(statusBar, SWT.NONE);
    this.plugin_label_composite.setForeground(fgColor);
    GridLayout gridLayout = new GridLayout();
    gridLayout.horizontalSpacing = 0;
    gridLayout.verticalSpacing = 0;
    gridLayout.marginHeight = 0;
    gridLayout.marginBottom = 0;
    gridLayout.marginTop = 0;
    gridLayout.marginLeft = 0;
    gridLayout.marginRight = 0;
    // Something nice and big. :)
    gridLayout.numColumns = 20;
    GridData gridData = new GridData(GridData.FILL_VERTICAL);
    gridData.heightHint = height;
    gridData.minimumHeight = height;
    plugin_label_composite.setLayout(gridLayout);
    plugin_label_composite.setLayoutData(gridData);
    srStatus = new CLabelPadding(statusBar, borderFlag);
    srStatus.setText(MessageText.getString("SpeedView.stats.ratio"));
    Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show SR", new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            srStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
            statusBar.layout();
        }
    });
    natStatus = new CLabelPadding(statusBar, borderFlag);
    natStatus.setText("");
    final Menu natStatusMenu = new Menu(statusBar.getShell(), SWT.POP_UP);
    natStatus.setMenu(natStatusMenu);
    MenuItem nat_test = new MenuItem(natStatusMenu, SWT.PUSH);
    Messages.setLanguageText(nat_test, "MainWindow.menu.tools.nattest");
    nat_test.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent arg0) {
            new NatTestWindow();
        }
    });
    Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show NAT", new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            natStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
            statusBar.layout();
        }
    });
    dhtStatus = new CLabelPadding(statusBar, borderFlag);
    dhtStatus.setText("");
    dhtStatus.setToolTipText(MessageText.getString("MainWindow.dht.status.tooltip"));
    Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show DDB", new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            dhtStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
            statusBar.layout();
        }
    });
    // ip filters
    ipBlocked = new CLabelPadding(statusBar, borderFlag);
    // $NON-NLS-1$
    ipBlocked.setText("{} IPs:");
    Messages.setLanguageText(ipBlocked, "MainWindow.IPs.tooltip");
    ipBlocked.addListener(SWT.MouseDoubleClick, new ListenerNeedingCoreRunning() {

        @Override
        public void handleEvent(Core core, Event event) {
            BlockedIpsWindow.showBlockedIps(core, parent.getShell());
        }
    });
    final Menu menuIPFilter = new Menu(statusBar.getShell(), SWT.POP_UP);
    ipBlocked.setMenu(menuIPFilter);
    menuIPFilter.addListener(SWT.Show, new Listener() {

        @Override
        public void handleEvent(Event e) {
            MenuItem[] oldItems = menuIPFilter.getItems();
            for (int i = 0; i < oldItems.length; i++) {
                oldItems[i].dispose();
            }
            if (!CoreFactory.isCoreRunning()) {
                return;
            }
            Core core = CoreFactory.getSingleton();
            final IpFilter ip_filter = core.getIpFilterManager().getIPFilter();
            final MenuItem ipfEnable = new MenuItem(menuIPFilter, SWT.CHECK);
            ipfEnable.setSelection(ip_filter.isEnabled());
            Messages.setLanguageText(ipfEnable, "MyTorrentsView.menu.ipf_enable");
            ipfEnable.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    ip_filter.setEnabled(ipfEnable.getSelection());
                }
            });
            final MenuItem ipfOptions = new MenuItem(menuIPFilter, SWT.PUSH);
            Messages.setLanguageText(ipfOptions, "ipfilter.options");
            ipfOptions.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    UIFunctions uif = UIFunctionsManager.getUIFunctions();
                    if (uif != null) {
                        uif.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_CONFIG, "ipfilter");
                    }
                }
            });
        }
    });
    Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show IPF", new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            ipBlocked.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
            statusBar.layout();
        }
    });
    // down speed
    statusDown = new CLabelPadding(statusBar, borderFlag);
    statusDown.setImage(imageLoader.getImage("down"));
    // statusDown.setText(/*MessageText.getString("ConfigView.download.abbreviated") +*/"n/a");
    Messages.setLanguageText(statusDown, "MainWindow.status.updowndetails.tooltip");
    Listener lStats = new Listener() {

        @Override
        public void handleEvent(Event e) {
            uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "TransferStatsView");
        }
    };
    statusUp = new CLabelPadding(statusBar, borderFlag);
    statusUp.setImage(imageLoader.getImage("up"));
    // statusUp.setText(/*MessageText.getString("ConfigView.upload.abbreviated") +*/"n/a");
    Messages.setLanguageText(statusUp, "MainWindow.status.updowndetails.tooltip");
    statusDown.addListener(SWT.MouseDoubleClick, lStats);
    statusUp.addListener(SWT.MouseDoubleClick, lStats);
    Listener lDHT = new Listener() {

        @Override
        public void handleEvent(Event e) {
            uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "DHTView");
        }
    };
    dhtStatus.addListener(SWT.MouseDoubleClick, lDHT);
    Listener lSR = new Listener() {

        @Override
        public void handleEvent(Event e) {
            uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "SpeedView");
            OverallStats stats = StatsFactory.getStats();
            if (stats == null) {
                return;
            }
            long ratio = (1000 * stats.getUploadedBytes() / (stats.getDownloadedBytes() + 1));
            if (ratio < 900) {
            // Utils.launch(Constants.AZUREUS_WIKI + "Share_Ratio");
            }
        }
    };
    srStatus.addListener(SWT.MouseDoubleClick, lSR);
    Listener lNAT = new ListenerNeedingCoreRunning() {

        @Override
        public void handleEvent(Core core, Event e) {
            uiFunctions.getMDI().loadEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_CONFIG, true, false, ConfigSection.SECTION_CONNECTION);
            if (PluginInitializer.getDefaultInterface().getConnectionManager().getNATStatus() != ConnectionManager.NAT_OK) {
                Utils.launch(Constants.AZUREUS_WIKI + "NAT_problem");
            }
        }
    };
    natStatus.addListener(SWT.MouseDoubleClick, lNAT);
    boolean bSpeedMenu = COConfigurationManager.getBooleanParameter("GUI_SWT_bOldSpeedMenu");
    if (bSpeedMenu) {
        // Status Bar Menu construction
        final Menu menuUpSpeed = new Menu(statusBar.getShell(), SWT.POP_UP);
        menuUpSpeed.addListener(SWT.Show, new Listener() {

            @Override
            public void handleEvent(Event e) {
                if (!CoreFactory.isCoreRunning()) {
                    return;
                }
                Core core = CoreFactory.getSingleton();
                GlobalManager globalManager = core.getGlobalManager();
                SelectableSpeedMenu.generateMenuItems(menuUpSpeed, core, globalManager, true);
            }
        });
        statusUp.setMenu(menuUpSpeed);
    } else {
        statusUp.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseDown(MouseEvent e) {
                if (!(e.button == 3 || (e.button == 1 && e.stateMask == SWT.CONTROL))) {
                    return;
                }
                Event event = new Event();
                event.type = SWT.MouseUp;
                event.widget = e.widget;
                event.stateMask = e.stateMask;
                event.button = e.button;
                e.widget.getDisplay().post(event);
                CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {

                    @Override
                    public void coreRunning(Core core) {
                        SelectableSpeedMenu.invokeSlider(statusUp, core, true);
                    }
                });
            }
        });
    }
    if (bSpeedMenu) {
        final Menu menuDownSpeed = new Menu(statusBar.getShell(), SWT.POP_UP);
        menuDownSpeed.addListener(SWT.Show, new Listener() {

            @Override
            public void handleEvent(Event e) {
                if (!CoreFactory.isCoreRunning()) {
                    return;
                }
                Core core = CoreFactory.getSingleton();
                GlobalManager globalManager = core.getGlobalManager();
                SelectableSpeedMenu.generateMenuItems(menuDownSpeed, core, globalManager, false);
            }
        });
        statusDown.setMenu(menuDownSpeed);
    } else {
        statusDown.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseDown(MouseEvent e) {
                if (!(e.button == 3 || (e.button == 1 && e.stateMask == SWT.CONTROL))) {
                    return;
                }
                Event event = new Event();
                event.type = SWT.MouseUp;
                event.widget = e.widget;
                event.stateMask = e.stateMask;
                event.button = e.button;
                e.widget.getDisplay().post(event);
                CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {

                    @Override
                    public void coreRunning(Core core) {
                        SelectableSpeedMenu.invokeSlider(statusDown, core, false);
                    }
                });
            }
        });
    }
    statusWarnings = new CLabelPadding(statusBar, borderFlag);
    warningIcon = imageLoader.getImage("image.sidebar.vitality.alert");
    warningGreyIcon = imageLoader.getImage("image.sidebar.vitality.alert-gray");
    infoIcon = imageLoader.getImage("image.sidebar.vitality.info");
    updateStatusWarnings(null, false);
    Messages.setLanguageText(statusWarnings, "MainWindow.status.warning.tooltip");
    alertHistoryListener = new AlertHistoryListener() {

        @Override
        public void alertHistoryAdded(LogAlert alert) {
            updateStatusWarnings(alert, true);
        }

        @Override
        public void alertHistoryRemoved(LogAlert alert) {
            updateStatusWarnings(alert, false);
        }
    };
    Alerts.addMessageHistoryListener(alertHistoryListener);
    statusWarnings.addMouseListener(new MouseListener() {

        @Override
        public void mouseUp(MouseEvent e) {
            if (e.button != 1) {
                return;
            }
            if (SystemWarningWindow.numWarningWindowsOpen > 0) {
                return;
            }
            ArrayList<LogAlert> alerts = Alerts.getUnviewedLogAlerts();
            if (alerts.size() == 0) {
                return;
            }
            Shell shell = statusWarnings.getShell();
            Rectangle bounds = statusWarnings.getClientArea();
            Point ptBottomRight = statusWarnings.toDisplay(bounds.x + bounds.width, bounds.y);
            new SystemWarningWindow(alerts.get(0), ptBottomRight, shell, 0);
        }

        @Override
        public void mouseDown(MouseEvent e) {
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
        }
    });
    Menu menuStatusWarnings = new Menu(statusBar.getShell(), SWT.POP_UP);
    statusWarnings.setMenu(menuStatusWarnings);
    final MenuItem dismissAllItem = new MenuItem(menuStatusWarnings, SWT.PUSH);
    menuStatusWarnings.addListener(SWT.Show, new Listener() {

        @Override
        public void handleEvent(Event e) {
            dismissAllItem.setEnabled(Alerts.getUnviewedLogAlerts().size() > 0);
        }
    });
    Messages.setLanguageText(dismissAllItem, "label.dismiss.all");
    dismissAllItem.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event event) {
            ArrayList<LogAlert> alerts = Alerts.getUnviewedLogAlerts();
            for (LogAlert a : alerts) {
                Alerts.markAlertAsViewed(a);
            }
        }
    });
    Utils.addAndFireParameterListener(mapConfigListeners, true, "status.rategraphs", new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            boolean doRateGraphs = COConfigurationManager.getBooleanParameter("status.rategraphs");
            if (doRateGraphs) {
                if (imgRec == null || imgRec.isDisposed()) {
                    imgRec = new Image(display, 100, 20);
                    GC gc = new GC(imgRec);
                    gc.setBackground(statusDown.getBackground());
                    gc.fillRectangle(0, 0, 100, 20);
                    gc.dispose();
                    statusDown.setBackgroundImage(imgRec);
                }
                if (imgSent == null || imgSent.isDisposed()) {
                    imgSent = new Image(display, 100, 20);
                    GC gc = new GC(imgSent);
                    gc.setBackground(statusUp.getBackground());
                    gc.fillRectangle(0, 0, 100, 20);
                    gc.dispose();
                    statusUp.setBackgroundImage(imgSent);
                }
            } else {
                statusUp.setBackgroundImage(null);
                statusDown.setBackgroundImage(null);
                Utils.disposeSWTObjects(imgRec, imgSent);
                imgRec = imgSent = null;
            }
        }
    });
    // ///////
    progressListener = new ProgressListener();
    PRManager.addListener(progressListener);
    uiFunctions.getUIUpdater().addUpdater(this);
    ArrayList<Runnable> list;
    this_mon.enter();
    try {
        list = listRunAfterInit;
        listRunAfterInit = null;
    } finally {
        this_mon.exit();
    }
    for (Runnable runnable : list) {
        try {
            runnable.run();
        } catch (Exception e) {
            Debug.out(e);
        }
    }
    statusBar.layout(true);
    return statusBar;
}
Also used : GlobalManager(com.biglybt.core.global.GlobalManager) UIFunctions(com.biglybt.ui.UIFunctions) AlertHistoryListener(com.biglybt.ui.swt.Alerts.AlertHistoryListener) CoreRunningListener(com.biglybt.core.CoreRunningListener) FormAttachment(org.eclipse.swt.layout.FormAttachment) Core(com.biglybt.core.Core) FormData(org.eclipse.swt.layout.FormData) LogAlert(com.biglybt.core.logging.LogAlert) UIUpdater(com.biglybt.ui.common.updater.UIUpdater) CLabel(org.eclipse.swt.custom.CLabel) IpFilter(com.biglybt.core.ipfilter.IpFilter) ParameterListener(com.biglybt.core.config.ParameterListener) UIStatusTextClickListener(com.biglybt.ui.UIStatusTextClickListener) AlertHistoryListener(com.biglybt.ui.swt.Alerts.AlertHistoryListener) CoreRunningListener(com.biglybt.core.CoreRunningListener) OverallStats(com.biglybt.core.stats.transfer.OverallStats) GridLayout(org.eclipse.swt.layout.GridLayout) NatTestWindow(com.biglybt.ui.swt.nat.NatTestWindow) GridData(org.eclipse.swt.layout.GridData) ParameterListener(com.biglybt.core.config.ParameterListener) ImageLoader(com.biglybt.ui.swt.imageloader.ImageLoader)

Example 43 with UIFunctions

use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.

the class TagUIUtils method setupSideBarMenus.

public static void setupSideBarMenus(final MenuManager menuManager) {
    com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem("sidebar." + MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, "ConfigView.section.style.TagInSidebar");
    menuItem.setDisposeWithUIDetach(UIInstance.UIT_SWT);
    menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
    menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

        @Override
        public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
            boolean b = COConfigurationManager.getBooleanParameter("Library.TagInSideBar");
            COConfigurationManager.setParameter("Library.TagInSideBar", !b);
        }
    });
    menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

        @Override
        public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
            menu.setData(Boolean.valueOf(COConfigurationManager.getBooleanParameter("Library.TagInSideBar")));
        }
    });
    // tag options
    menuItem = menuManager.addMenuItem("sidebar." + MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, "label.tags");
    menuItem.setDisposeWithUIDetach(UIInstance.UIT_SWT);
    menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
    menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

        @Override
        public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
            menu.removeAllChildItems();
            // manual
            final TagType manual_tt = TagManagerFactory.getTagManager().getTagType(TagType.TT_DOWNLOAD_MANUAL);
            com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, manual_tt.getTagTypeName(false));
            menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
            menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

                @Override
                public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
                    menu.removeAllChildItems();
                    final List<Tag> all_tags = manual_tt.getTags();
                    List<String> menu_names = new ArrayList<>();
                    Map<String, Tag> menu_name_map = new IdentityHashMap<>();
                    boolean all_visible = true;
                    boolean all_invisible = true;
                    boolean has_ut = false;
                    for (Tag t : all_tags) {
                        String name = t.getTagName(true);
                        menu_names.add(name);
                        menu_name_map.put(name, t);
                        if (t.isVisible()) {
                            all_invisible = false;
                        } else {
                            all_visible = false;
                        }
                        TagFeatureProperties props = (TagFeatureProperties) t;
                        TagProperty prop = props.getProperty(TagFeatureProperties.PR_UNTAGGED);
                        if (prop != null) {
                            Boolean b = prop.getBoolean();
                            if (b != null && b) {
                                has_ut = true;
                            }
                        }
                    }
                    com.biglybt.pif.ui.menus.MenuItem showAllItem = menuManager.addMenuItem(menu, "label.show.all");
                    showAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
                    showAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                        @Override
                        public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                            for (Tag t : all_tags) {
                                t.setVisible(true);
                            }
                        }
                    });
                    com.biglybt.pif.ui.menus.MenuItem hideAllItem = menuManager.addMenuItem(menu, "popup.error.hideall");
                    hideAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
                    hideAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                        @Override
                        public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                            for (Tag t : all_tags) {
                                t.setVisible(false);
                            }
                        }
                    });
                    com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sepm");
                    sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
                    showAllItem.setEnabled(!all_visible);
                    hideAllItem.setEnabled(!all_invisible);
                    List<Object> menu_structure = MenuBuildUtils.splitLongMenuListIntoHierarchy(menu_names, TagUIUtils.MAX_TOP_LEVEL_TAGS_IN_MENU);
                    for (Object obj : menu_structure) {
                        List<Tag> bucket_tags = new ArrayList<>();
                        com.biglybt.pif.ui.menus.MenuItem parent_menu;
                        if (obj instanceof String) {
                            parent_menu = menu;
                            bucket_tags.add(menu_name_map.get((String) obj));
                        } else {
                            Object[] entry = (Object[]) obj;
                            List<String> tag_names = (List<String>) entry[1];
                            boolean sub_all_visible = true;
                            boolean sub_some_visible = false;
                            for (String name : tag_names) {
                                Tag tag = menu_name_map.get(name);
                                if (tag.isVisible()) {
                                    sub_some_visible = true;
                                } else {
                                    sub_all_visible = false;
                                }
                                bucket_tags.add(tag);
                            }
                            String mod;
                            if (sub_all_visible) {
                                mod = " (*)";
                            } else if (sub_some_visible) {
                                mod = " (+)";
                            } else {
                                mod = "";
                            }
                            parent_menu = menuManager.addMenuItem(menu, "!" + (String) entry[0] + mod + "!");
                            parent_menu.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
                        }
                        for (final Tag tag : bucket_tags) {
                            com.biglybt.pif.ui.menus.MenuItem m = menuManager.addMenuItem(parent_menu, tag.getTagName(false));
                            m.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
                            m.setData(Boolean.valueOf(tag.isVisible()));
                            m.addListener(new MenuItemListener() {

                                @Override
                                public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                                    tag.setVisible(!tag.isVisible());
                                }
                            });
                        }
                    }
                    if (!has_ut) {
                        sepItem = menuManager.addMenuItem(menu, "sepu");
                        sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
                        com.biglybt.pif.ui.menus.MenuItem m = menuManager.addMenuItem(menu, "label.untagged");
                        m.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
                        m.addListener(new MenuItemListener() {

                            @Override
                            public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                                try {
                                    String tag_name = MessageText.getString("label.untagged");
                                    Tag ut_tag = manual_tt.getTag(tag_name, true);
                                    if (ut_tag == null) {
                                        ut_tag = manual_tt.createTag(tag_name, true);
                                    }
                                    TagFeatureProperties tp = (TagFeatureProperties) ut_tag;
                                    tp.getProperty(TagFeatureProperties.PR_UNTAGGED).setBoolean(true);
                                } catch (TagException e) {
                                    Debug.out(e);
                                }
                            }
                        });
                    }
                }
            });
            menuItem = menuManager.addMenuItem(menu, "label.add.tag");
            menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                @Override
                public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                    createManualTag(null);
                }
            });
            com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sep1");
            sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
            // auto
            menuItem = menuManager.addMenuItem(menu, "wizard.maketorrent.auto");
            menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
            menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

                @Override
                public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
                    menu.removeAllChildItems();
                    // autos
                    List<TagType> tag_types = TagManagerFactory.getTagManager().getTagTypes();
                    for (final TagType tag_type : tag_types) {
                        if (tag_type.getTagType() == TagType.TT_DOWNLOAD_CATEGORY) {
                            continue;
                        }
                        if (!tag_type.isTagTypeAuto()) {
                            continue;
                        }
                        if (tag_type.getTags().size() == 0) {
                            continue;
                        }
                        com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, tag_type.getTagTypeName(false));
                        menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
                        menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

                            @Override
                            public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
                                menu.removeAllChildItems();
                                final List<Tag> tags = tag_type.getTags();
                                com.biglybt.pif.ui.menus.MenuItem showAllItem = menuManager.addMenuItem(menu, "label.show.all");
                                showAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
                                showAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                                    @Override
                                    public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                                        for (Tag t : tags) {
                                            t.setVisible(true);
                                        }
                                    }
                                });
                                com.biglybt.pif.ui.menus.MenuItem hideAllItem = menuManager.addMenuItem(menu, "popup.error.hideall");
                                hideAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
                                hideAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                                    @Override
                                    public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                                        for (Tag t : tags) {
                                            t.setVisible(false);
                                        }
                                    }
                                });
                                boolean all_visible = true;
                                boolean all_invisible = true;
                                for (Tag t : tags) {
                                    if (t.isVisible()) {
                                        all_invisible = false;
                                    } else {
                                        all_visible = false;
                                    }
                                }
                                showAllItem.setEnabled(!all_visible);
                                hideAllItem.setEnabled(!all_invisible);
                                com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sep2");
                                sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
                                for (final Tag t : tags) {
                                    com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, t.getTagName(false));
                                    menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
                                    menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                                        @Override
                                        public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                                            t.setVisible(menu.isSelected());
                                        }
                                    });
                                    menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {

                                        @Override
                                        public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
                                            menu.setData(t.isVisible());
                                        }
                                    });
                                }
                            }
                        });
                    }
                }
            });
            sepItem = menuManager.addMenuItem(menu, "sep3");
            sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
            menuItem = menuManager.addMenuItem(menu, "tag.show.stats");
            menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                @Override
                public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                    UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
                    uiFunctions.getMDI().showEntryByID(StatsView.VIEW_ID, "TagStatsView");
                }
            });
            menuItem = menuManager.addMenuItem(menu, "tag.show.overview");
            menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {

                @Override
                public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
                    UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
                    uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TAGS);
                }
            });
        }
    });
    CoreFactory.addCoreRunningListener(new CoreRunningListener() {

        @Override
        public void coreRunning(Core core) {
            checkTagSharing(true);
        }
    });
}
Also used : MenuItemListener(com.biglybt.pif.ui.menus.MenuItemListener) UIFunctions(com.biglybt.ui.UIFunctions) CoreRunningListener(com.biglybt.core.CoreRunningListener) List(java.util.List) MenuItemListener(com.biglybt.pif.ui.menus.MenuItemListener) Core(com.biglybt.core.Core) TagProperty(com.biglybt.core.tag.TagFeatureProperties.TagProperty)

Example 44 with UIFunctions

use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.

the class TagUIUtils method createSideBarMenuItems.

public static void createSideBarMenuItems(final Menu menu, final Tag tag) {
    int userMode = COConfigurationManager.getIntParameter("User Mode");
    final TagType tag_type = tag.getTagType();
    boolean needs_separator_next = false;
    int countBefore = menu.getItemCount();
    if (tag_type.hasTagTypeFeature(TagFeature.TF_RATE_LIMIT)) {
        createTF_RateLimitMenuItems(menu, tag, tag_type, userMode);
    }
    if (tag_type.hasTagTypeFeature(TagFeature.TF_RUN_STATE)) {
        createTF_RunState(menu, tag);
    }
    if (tag_type.hasTagTypeFeature(TagFeature.TF_FILE_LOCATION)) {
        createTF_FileLocationMenuItems(menu, tag);
    }
    if (tag_type.hasTagTypeFeature(TagFeature.TF_EXEC_ON_ASSIGN)) {
        final TagFeatureExecOnAssign tf_eoa = (TagFeatureExecOnAssign) tag;
        int supported_actions = tf_eoa.getSupportedActions();
        if (supported_actions != TagFeatureExecOnAssign.ACTION_NONE) {
            final Menu eoa_menu = new Menu(menu.getShell(), SWT.DROP_DOWN);
            MenuItem eoa_item = new MenuItem(menu, SWT.CASCADE);
            Messages.setLanguageText(eoa_item, "label.exec.on.assign");
            eoa_item.setMenu(eoa_menu);
            int[] action_ids = { TagFeatureExecOnAssign.ACTION_APPLY_OPTIONS_TEMPLATE, TagFeatureExecOnAssign.ACTION_DESTROY, TagFeatureExecOnAssign.ACTION_START, TagFeatureExecOnAssign.ACTION_FORCE_START, TagFeatureExecOnAssign.ACTION_NOT_FORCE_START, TagFeatureExecOnAssign.ACTION_STOP, TagFeatureExecOnAssign.ACTION_PAUSE, TagFeatureExecOnAssign.ACTION_RESUME, TagFeatureExecOnAssign.ACTION_SCRIPT };
            String[] action_keys = { "label.apply.options.template", "v3.MainWindow.button.delete", "v3.MainWindow.button.start", "v3.MainWindow.button.forcestart", "v3.MainWindow.button.notforcestart", "v3.MainWindow.button.stop", "v3.MainWindow.button.pause", "v3.MainWindow.button.resume", "label.script" };
            for (int i = 0; i < action_ids.length; i++) {
                final int action_id = action_ids[i];
                if (tf_eoa.supportsAction(action_id)) {
                    if (action_id == TagFeatureExecOnAssign.ACTION_APPLY_OPTIONS_TEMPLATE) {
                        final MenuItem opts_item = new MenuItem(eoa_menu, SWT.CHECK);
                        opts_item.setText(MessageText.getString(action_keys[i]) + "...");
                        opts_item.setSelection(tf_eoa.getOptionsTemplateHandler().isActive());
                        opts_item.addListener(SWT.Selection, new Listener() {

                            @Override
                            public void handleEvent(Event event) {
                                UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
                                if (uiFunctions != null) {
                                    uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TORRENT_OPTIONS, tf_eoa.getOptionsTemplateHandler());
                                }
                            }
                        });
                        new MenuItem(eoa_menu, SWT.SEPARATOR);
                    } else if (action_id == TagFeatureExecOnAssign.ACTION_SCRIPT) {
                        final MenuItem action_item = new MenuItem(eoa_menu, SWT.PUSH);
                        String script = tf_eoa.getActionScript();
                        if (script.length() > 23) {
                            script = script.substring(0, 20) + "...";
                        }
                        String msg = MessageText.getString(action_keys[i]);
                        if (script.length() > 0) {
                            msg += ": " + script;
                        }
                        msg += "...";
                        action_item.setText(msg);
                        action_item.addListener(SWT.Selection, new Listener() {

                            @Override
                            public void handleEvent(Event event) {
                                String msg = MessageText.getString("UpdateScript.message");
                                SimpleTextEntryWindow entryWindow = new SimpleTextEntryWindow("UpdateScript.title", "!" + msg + "!");
                                entryWindow.setPreenteredText(tf_eoa.getActionScript(), false);
                                entryWindow.selectPreenteredText(true);
                                entryWindow.prompt(new UIInputReceiverListener() {

                                    @Override
                                    public void UIInputReceiverClosed(UIInputReceiver entryWindow) {
                                        if (entryWindow.hasSubmittedInput()) {
                                            String text = entryWindow.getSubmittedInput().trim();
                                            tf_eoa.setActionScript(text);
                                        }
                                    }
                                });
                            }
                        });
                    } else {
                        final MenuItem action_item = new MenuItem(eoa_menu, SWT.CHECK);
                        Messages.setLanguageText(action_item, action_keys[i]);
                        action_item.setSelection(tf_eoa.isActionEnabled(action_id));
                        action_item.addListener(SWT.Selection, new Listener() {

                            @Override
                            public void handleEvent(Event event) {
                                tf_eoa.setActionEnabled(action_id, action_item.getSelection());
                            }
                        });
                    }
                }
            }
        }
    }
    if (tag instanceof TagDownload) {
        needs_separator_next = true;
        MenuItem itemOptions = new MenuItem(menu, SWT.PUSH);
        final Set<DownloadManager> dms = ((TagDownload) tag).getTaggedDownloads();
        Messages.setLanguageText(itemOptions, "cat.options");
        itemOptions.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
                if (uiFunctions != null) {
                    uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TORRENT_OPTIONS, dms.toArray(new DownloadManager[dms.size()]));
                }
            }
        });
        if (dms.size() == 0) {
            itemOptions.setEnabled(false);
        }
    }
    if (userMode > 0) {
        if (tag_type.hasTagTypeFeature(TagFeature.TF_PROPERTIES)) {
            createTFProperitesMenuItems(menu, tag);
        }
    }
    if (menu.getItemCount() > countBefore) {
        needs_separator_next = true;
    }
    if (needs_separator_next) {
        new MenuItem(menu, SWT.SEPARATOR);
        needs_separator_next = false;
    }
    if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
        needs_separator_next = true;
        MenuItem search = new MenuItem(menu, SWT.PUSH);
        Messages.setLanguageText(search, "tag.search");
        search.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                UIFunctionsManager.getUIFunctions().doSearch("tag:" + tag.getTagName(true));
            }
        });
    }
    // share with friends
    addShareWithFriendsMenuItems(menu, tag, tag_type);
    if (tag_type.hasTagTypeFeature(TagFeature.TF_RSS_FEED)) {
        final TagFeatureRSSFeed tfrss = (TagFeatureRSSFeed) tag;
        // rss feed
        final MenuItem rssOption = new MenuItem(menu, SWT.CHECK);
        rssOption.setSelection(tfrss.isTagRSSFeedEnabled());
        Messages.setLanguageText(rssOption, "cat.rss.gen");
        rssOption.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                boolean set = rssOption.getSelection();
                tfrss.setTagRSSFeedEnabled(set);
            }
        });
    }
    if (tag_type.hasTagTypeFeature(TagFeature.TF_XCODE)) {
        createXCodeMenuItems(menu, tag);
    }
    needs_separator_next = true;
    if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
        MenuBuildUtils.addChatMenu(menu, "label.chat", getChatKey(tag));
    }
    MenuItem itemShowStats = new MenuItem(menu, SWT.PUSH);
    Messages.setLanguageText(itemShowStats, "tag.show.stats");
    itemShowStats.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event event) {
            UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
            uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "TagStatsView");
        }
    });
    if (tag.getTaggableTypes() == Taggable.TT_DOWNLOAD) {
        MenuItem itemShowFiles = new MenuItem(menu, SWT.PUSH);
        Messages.setLanguageText(itemShowFiles, "menu.show.files");
        itemShowFiles.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                showFilesView((TagDownload) tag);
            }
        });
    }
    if (needs_separator_next) {
        new MenuItem(menu, SWT.SEPARATOR);
        needs_separator_next = false;
    }
    boolean auto = tag_type.isTagTypeAuto();
    boolean closable = auto;
    if (tag.getTaggableTypes() == Taggable.TT_DOWNLOAD) {
        // extended closable tags to include manual ones due to user request
        closable = true;
    }
    Menu[] menuShowHide = { null };
    if (closable) {
        createCloseableMenuItems(menu, tag, tag_type, menuShowHide, needs_separator_next);
    }
    if (!auto) {
        createNonAutoMenuItems(menu, tag, tag_type, menuShowHide);
    }
    if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
        MenuItem itemExport = new MenuItem(menu, SWT.PUSH);
        Messages.setLanguageText(itemExport, "Subscription.menu.export");
        itemExport.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event event) {
                export(Arrays.asList(tag));
            }
        });
    }
    MenuItem menuSettings = new MenuItem(menu, SWT.PUSH);
    Messages.setLanguageText(menuSettings, "TagSettingsView.title");
    menuSettings.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event event) {
            UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
            uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TAGS, tag);
        }
    });
    com.biglybt.pif.ui.menus.MenuItem[] items = MenuItemManager.getInstance().getAllAsArray(MenuManager.MENU_TAG_CONTEXT);
    if (items.length > 0) {
        MenuFactory.addSeparatorMenuItem(menu);
        // TODO: Don't send Tag.. send a yet-to-be-created plugin interface version of Tag
        MenuBuildUtils.addPluginMenuItems(items, menu, true, true, new MenuBuildUtils.MenuItemPluginMenuControllerImpl(new Tag[] { tag }));
    }
}
Also used : DisposeListener(org.eclipse.swt.events.DisposeListener) MenuItemListener(com.biglybt.pif.ui.menus.MenuItemListener) UserPrompterResultListener(com.biglybt.ui.UserPrompterResultListener) UIInputReceiverListener(com.biglybt.pif.ui.UIInputReceiverListener) CoreRunningListener(com.biglybt.core.CoreRunningListener) TrackerEditorListener(com.biglybt.ui.swt.maketorrent.TrackerEditorListener) DownloadManager(com.biglybt.core.download.DownloadManager) UIFunctions(com.biglybt.ui.UIFunctions) SimpleTextEntryWindow(com.biglybt.ui.swt.SimpleTextEntryWindow) UIInputReceiver(com.biglybt.pif.ui.UIInputReceiver) DisposeEvent(org.eclipse.swt.events.DisposeEvent) UIInputReceiverListener(com.biglybt.pif.ui.UIInputReceiverListener) MenuBuildUtils(com.biglybt.ui.swt.MenuBuildUtils)

Example 45 with UIFunctions

use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.

the class PlatformManagerUnixPlugin method showScriptManualUpdateDialog.

private void showScriptManualUpdateDialog(String newFilePath, String oldFilePath, final int version) {
    final UIFunctions uif = UIFunctionsManager.getUIFunctions();
    if (uif != null) {
        final String sCopyLine = "cp \"" + newFilePath + "\" \"" + oldFilePath + "\"";
        uif.promptUser(MessageText.getString("unix.script.new.title"), MessageText.getString("unix.script.new.text", new String[] { newFilePath, sCopyLine }), new String[] { MessageText.getString("unix.script.new.button.quit"), MessageText.getString("unix.script.new.button.continue"), MessageText.getString("unix.script.new.button.asknomore") }, 0, null, null, false, 0, new UserPrompterResultListener() {

            @Override
            public void prompterClosed(int answer) {
                if (answer == 0) {
                    System.out.println("The line you should run:\n" + sCopyLine);
                    uif.dispose(false, false);
                } else if (answer == 2) {
                    COConfigurationManager.setParameter("unix.script.lastaskversion", version);
                }
            }
        });
    } else {
        System.out.println("NO UIF");
    }
}
Also used : UserPrompterResultListener(com.biglybt.ui.UserPrompterResultListener) UIFunctions(com.biglybt.ui.UIFunctions)

Aggregations

UIFunctions (com.biglybt.ui.UIFunctions)68 DownloadManager (com.biglybt.core.download.DownloadManager)16 MenuItemListener (com.biglybt.pif.ui.menus.MenuItemListener)9 GridLayout (org.eclipse.swt.layout.GridLayout)9 PluginInterface (com.biglybt.pif.PluginInterface)8 MenuItem (com.biglybt.pif.ui.menus.MenuItem)8 File (java.io.File)8 SelectionEvent (org.eclipse.swt.events.SelectionEvent)8 GridData (org.eclipse.swt.layout.GridData)8 CoreRunningListener (com.biglybt.core.CoreRunningListener)7 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)7 Menu (org.eclipse.swt.widgets.Menu)7 Core (com.biglybt.core.Core)6 LogEvent (com.biglybt.core.logging.LogEvent)6 UIFunctionsUserPrompter (com.biglybt.ui.UIFunctionsUserPrompter)6 Composite (org.eclipse.swt.widgets.Composite)6 MenuItem (org.eclipse.swt.widgets.MenuItem)6 DiskManagerFileInfo (com.biglybt.core.disk.DiskManagerFileInfo)5 GlobalManager (com.biglybt.core.global.GlobalManager)5 LogAlert (com.biglybt.core.logging.LogAlert)5