Search in sources :

Example 21 with CoreRunningListener

use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.

the class SBC_DevicesView method skinObjectInitialShow.

// @see SkinView#skinObjectInitialShow(SWTSkinObject, java.lang.Object)
@Override
public Object skinObjectInitialShow(SWTSkinObject skinObject, Object params) {
    CoreFactory.addCoreRunningListener(new CoreRunningListener() {

        @Override
        public void coreRunning(Core core) {
            initColumns(core);
        }
    });
    device_manager = DeviceManagerFactory.getSingleton();
    transcode_manager = device_manager.getTranscodeManager();
    transcode_queue = transcode_manager.getQueue();
    MultipleDocumentInterfaceSWT mdi = UIFunctionsManagerSWT.getUIFunctionsSWT().getMDISWT();
    if (mdi != null) {
        mdiEntry = mdi.getCurrentEntrySWT();
        Object ds = mdiEntry.getDatasource();
        if (!(ds instanceof Device)) {
            return (null);
        }
        device = (Device) ds;
    }
    if (device instanceof TranscodeTarget) {
        transTarget = (TranscodeTarget) device;
    }
    if (device == null) {
        new InfoBarUtil(skinObject, "devicesview.infobar", false, "DeviceView.infobar", "v3.deviceview.infobar") {

            @Override
            public boolean allowShow() {
                return true;
            }
        };
    } else if (device instanceof DeviceMediaRenderer) {
        DeviceMediaRenderer renderer = (DeviceMediaRenderer) device;
        int species = renderer.getRendererSpecies();
        String speciesID = null;
        switch(species) {
            case DeviceMediaRenderer.RS_ITUNES:
                speciesID = "itunes";
                break;
            case DeviceMediaRenderer.RS_PS3:
                speciesID = "ps3";
                break;
            case DeviceMediaRenderer.RS_XBOX:
                speciesID = "xbox";
                break;
            case DeviceMediaRenderer.RS_OTHER:
                {
                    String classification = renderer.getClassification();
                    if (classification.equals("sony.PSP")) {
                        speciesID = "psp";
                    } else if (classification.startsWith("tivo.")) {
                        speciesID = "tivo";
                    } else if (classification.toLowerCase().contains("android")) {
                        speciesID = "android";
                    }
                }
            default:
                break;
        }
        if (speciesID != null) {
            final String fSpeciesID = speciesID;
            new InfoBarUtil(skinObject, "devicesview.infobar", false, "DeviceView.infobar." + speciesID, "v3.deviceview.infobar") {

                @Override
                public boolean allowShow() {
                    return true;
                }

                // @see InfoBarUtil#created(SWTSkinObject)
                @Override
                protected void created(SWTSkinObject parent) {
                    SWTSkinObjectText soLine1 = (SWTSkinObjectText) skin.getSkinObject("line1", parent);
                    soLine1.setTextID("v3.deviceview.infobar.line1.generic", new String[] { device.getName() });
                    SWTSkinObjectText soLine2 = (SWTSkinObjectText) skin.getSkinObject("line2", parent);
                    soLine2.setTextID("v3.deviceview.infobar.line2." + fSpeciesID);
                }
            };
        }
    }
    SWTSkinObject soAdvInfo = getSkinObject("advinfo");
    if (soAdvInfo != null) {
        initAdvInfo(soAdvInfo);
    }
    if (device != null) {
        device_name = device.getName();
        SWTSkinObject soTitle = getSkinObject("title");
        if (soTitle instanceof SWTSkinObjectText) {
            ((SWTSkinObjectText) soTitle).setTextID("device.view.heading", new String[] { device_name });
        }
    }
    return null;
}
Also used : SWTSkinObject(com.biglybt.ui.swt.skin.SWTSkinObject) SWTSkinObjectText(com.biglybt.ui.swt.skin.SWTSkinObjectText) CoreRunningListener(com.biglybt.core.CoreRunningListener) MultipleDocumentInterfaceSWT(com.biglybt.ui.swt.mdi.MultipleDocumentInterfaceSWT) SWTSkinObject(com.biglybt.ui.swt.skin.SWTSkinObject) InfoBarUtil(com.biglybt.ui.swt.views.skin.InfoBarUtil) Core(com.biglybt.core.Core)

Example 22 with CoreRunningListener

use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.

the class BaseMDI method processAutoOpenMap.

private boolean processAutoOpenMap(String id, Map<?, ?> autoOpenInfo, IViewInfo viewInfo) {
    try {
        MdiEntry entry = getEntry(id);
        if (entry != null) {
            return true;
        }
        Object datasource = autoOpenInfo.get("datasource");
        String title = MapUtils.getMapString(autoOpenInfo, "title", id);
        MdiEntry mdiEntry = createEntryByCreationListener(id, datasource, autoOpenInfo);
        if (mdiEntry != null) {
            if (mdiEntry.getTitle().equals("")) {
                mdiEntry.setTitle(title);
            }
            return true;
        }
        String parentID = MapUtils.getMapString(autoOpenInfo, "parentID", SIDEBAR_HEADER_PLUGINS);
        if (viewInfo != null) {
            if (viewInfo.event_listener != null) {
                entry = createEntryFromEventListener(parentID, viewInfo.event_listener, id, true, datasource, null);
                if (entry != null) {
                    entry.setTitle(title);
                }
            }
        }
        if (entry != null && datasource == null) {
            final MdiEntry fEntry = entry;
            final String dmHash = MapUtils.getMapString(autoOpenInfo, "dm", null);
            if (dmHash != null) {
                CoreFactory.addCoreRunningListener(new CoreRunningListener() {

                    @Override
                    public void coreRunning(Core core) {
                        GlobalManager gm = core.getGlobalManager();
                        HashWrapper hw = new HashWrapper(Base32.decode(dmHash));
                        DownloadManager dm = gm.getDownloadManager(hw);
                        if (dm != null) {
                            fEntry.setDatasource(dm);
                        }
                    }
                });
            } else {
                final List<?> listHashes = MapUtils.getMapList(autoOpenInfo, "dms", null);
                if (listHashes != null) {
                    CoreFactory.addCoreRunningListener(new CoreRunningListener() {

                        @Override
                        public void coreRunning(Core core) {
                            List<DownloadManager> listDMS = new ArrayList<>(1);
                            GlobalManager gm = core.getGlobalManager();
                            for (Object oDM : listHashes) {
                                if (oDM instanceof String) {
                                    String hash = (String) oDM;
                                    DownloadManager dm = gm.getDownloadManager(new HashWrapper(Base32.decode(hash)));
                                    if (dm != null) {
                                        listDMS.add(dm);
                                    }
                                }
                                fEntry.setDatasource(listDMS.toArray(new DownloadManager[0]));
                            }
                        }
                    });
                }
            }
        }
        return entry != null;
    } catch (Throwable e) {
        Debug.out(e);
    }
    return false;
}
Also used : DownloadManager(com.biglybt.core.download.DownloadManager) GlobalManager(com.biglybt.core.global.GlobalManager) CoreRunningListener(com.biglybt.core.CoreRunningListener) SWTSkinObject(com.biglybt.ui.swt.skin.SWTSkinObject) UISWTViewCore(com.biglybt.ui.swt.pifimpl.UISWTViewCore) Core(com.biglybt.core.Core)

Example 23 with CoreRunningListener

use of com.biglybt.core.CoreRunningListener 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 24 with CoreRunningListener

use of com.biglybt.core.CoreRunningListener 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 25 with CoreRunningListener

use of com.biglybt.core.CoreRunningListener in project BiglyBT by BiglySoftware.

the class MySharesView method tableViewInitialized.

private void tableViewInitialized() {
    CoreFactory.addCoreRunningListener(new CoreRunningListener() {

        @Override
        public void coreRunning(Core core) {
            createRows(core);
        }
    });
    if (dropTarget == null) {
        dropTarget = tv.createDropTarget(DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK | DND.DROP_TARGET_MOVE);
        if (dropTarget != null) {
            dropTarget.setTransfer(new Transfer[] { FixedHTMLTransfer.getInstance(), FixedURLTransfer.getInstance(), FileTransfer.getInstance(), TextTransfer.getInstance() });
            dropTarget.addDropListener(new DropTargetAdapter() {

                @Override
                public void drop(DropTargetEvent event) {
                    if (!share(event.data)) {
                        TorrentOpener.openDroppedTorrents(event, true);
                    }
                }
            });
        }
    }
}
Also used : CoreRunningListener(com.biglybt.core.CoreRunningListener) Core(com.biglybt.core.Core)

Aggregations

Core (com.biglybt.core.Core)35 CoreRunningListener (com.biglybt.core.CoreRunningListener)35 DownloadManager (com.biglybt.core.download.DownloadManager)8 GridLayout (org.eclipse.swt.layout.GridLayout)6 Composite (org.eclipse.swt.widgets.Composite)6 GlobalManager (com.biglybt.core.global.GlobalManager)5 AERunnable (com.biglybt.core.util.AERunnable)5 ImageLoader (com.biglybt.ui.swt.imageloader.ImageLoader)4 SWTSkinObject (com.biglybt.ui.swt.skin.SWTSkinObject)4 MessageText (com.biglybt.core.internat.MessageText)3 LogAlert (com.biglybt.core.logging.LogAlert)3 Tag (com.biglybt.core.tag.Tag)3 TOTorrent (com.biglybt.core.torrent.TOTorrent)3 VuzeFile (com.biglybt.core.vuzefile.VuzeFile)3 UIFunctions (com.biglybt.ui.UIFunctions)3 File (java.io.File)3 List (java.util.List)3 GridData (org.eclipse.swt.layout.GridData)3 ParameterListener (com.biglybt.core.config.ParameterListener)2 DiskManagerFileInfo (com.biglybt.core.disk.DiskManagerFileInfo)2