Search in sources :

Example 16 with UIManagerListener

use of com.biglybt.pif.ui.UIManagerListener in project BiglyBT by BiglySoftware.

the class NetStatusPlugin method initialize.

@Override
public void initialize(final PluginInterface _plugin_interface) {
    plugin_interface = _plugin_interface;
    logger = plugin_interface.getLogger().getChannel("NetStatus");
    logger.setDiagnostic();
    BasicPluginConfigModel config = plugin_interface.getUIManager().createBasicPluginConfigModel("Views.plugins." + VIEW_ID + ".title");
    logging_detailed = config.addBooleanParameter2("plugin.aznetstatus.logfull", "plugin.aznetstatus.logfull", false);
    plugin_interface.getUIManager().addUIListener(new UIManagerListener() {

        @Override
        public void UIAttached(UIInstance instance) {
            if (instance.getUIType().equals(UIInstance.UIT_SWT)) {
                try {
                    swt_ui = (NetStatusPluginViewInterface) Class.forName("com.biglybt.plugin.net.netstatus.swt.NetStatusPluginView").getConstructor(new Class[] { NetStatusPlugin.class, UIInstance.class, String.class }).newInstance(new Object[] { NetStatusPlugin.this, instance, VIEW_ID });
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }
        }

        @Override
        public void UIDetached(UIInstance instance) {
            if (instance.getUIType().equals(UIInstance.UIT_SWT) && swt_ui != null) {
                swt_ui.detach(instance);
                swt_ui = null;
            }
        }
    });
    plugin_interface.addListener(new PluginListener() {

        @Override
        public void initializationComplete() {
            new AEThread2("NetstatusPlugin:init", true) {

                @Override
                public void run() {
                    try {
                        protocol_tester = new NetStatusProtocolTester(NetStatusPlugin.this, plugin_interface);
                        if (test_button != null) {
                            test_button.setEnabled(true);
                        }
                    } finally {
                        protocol_tester_sem.releaseForever();
                    }
                }
            }.start();
        }

        @Override
        public void closedownInitiated() {
        }

        @Override
        public void closedownComplete() {
        }
    });
}
Also used : UIManagerListener(com.biglybt.pif.ui.UIManagerListener) UIInstance(com.biglybt.pif.ui.UIInstance) AEThread2(com.biglybt.core.util.AEThread2) BasicPluginConfigModel(com.biglybt.pif.ui.model.BasicPluginConfigModel) PluginListener(com.biglybt.pif.PluginListener)

Example 17 with UIManagerListener

use of com.biglybt.pif.ui.UIManagerListener in project BiglyBT by BiglySoftware.

the class SBC_ArchivedDownloadsView method registerPluginViews.

private void registerPluginViews(final UISWTInstance pluginUI) {
    if (registeredCoreSubViews) {
        return;
    }
    pluginUI.addView(TABLE_NAME, "ArchivedFilesView", ArchivedFilesView.class, null);
    registeredCoreSubViews = true;
    final UIManager uiManager = PluginInitializer.getDefaultInterface().getUIManager();
    uiManager.addUIListener(new UIManagerListener() {

        @Override
        public void UIAttached(UIInstance instance) {
        }

        @Override
        public void UIDetached(UIInstance instance) {
            if (!(instance instanceof UISWTInstance)) {
                return;
            }
            registeredCoreSubViews = false;
            pluginUI.removeViews(TABLE_NAME, "ArchivedFilesView");
            uiManager.removeUIListener(this);
        }
    });
}
Also used : UIManager(com.biglybt.pif.ui.UIManager) UISWTInstance(com.biglybt.ui.swt.pif.UISWTInstance) UIManagerListener(com.biglybt.pif.ui.UIManagerListener) UIInstance(com.biglybt.pif.ui.UIInstance)

Example 18 with UIManagerListener

use of com.biglybt.pif.ui.UIManagerListener in project BiglyBT by BiglySoftware.

the class SBC_LibraryView method skinObjectInitialShow.

// @see SkinView#showSupport(SWTSkinObject, java.lang.Object)
@Override
public Object skinObjectInitialShow(final SWTSkinObject skinObject, Object params) {
    selectedContentListener = new SelectedContentListener() {

        @Override
        public void currentlySelectedContentChanged(ISelectedContent[] currentContent, String viewId) {
            selection_count = currentContent.length;
            long total_size = 0;
            long total_done = 0;
            ArrayList<DownloadManager> dms = new ArrayList<>(currentContent.length);
            for (ISelectedContent sc : currentContent) {
                DownloadManager dm = sc.getDownloadManager();
                if (dm != null) {
                    dms.add(dm);
                    int file_index = sc.getFileIndex();
                    if (file_index == -1) {
                        DiskManagerFileInfo[] file_infos = dm.getDiskManagerFileInfoSet().getFiles();
                        for (DiskManagerFileInfo file_info : file_infos) {
                            if (!file_info.isSkipped()) {
                                total_size += file_info.getLength();
                                total_done += file_info.getDownloaded();
                            }
                        }
                    } else {
                        DiskManagerFileInfo file_info = dm.getDiskManagerFileInfoSet().getFiles()[file_index];
                        if (!file_info.isSkipped()) {
                            total_size += file_info.getLength();
                            total_done += file_info.getDownloaded();
                        }
                    }
                }
            }
            selection_size = total_size;
            selection_done = total_done;
            selection_dms = dms.toArray(new DownloadManager[dms.size()]);
            SB_Transfers transfers = MainMDISetup.getSb_transfers();
            if (transfers != null) {
                transfers.triggerCountRefreshListeners();
            }
        }
    };
    SelectedContentManager.addCurrentlySelectedContentListener(selectedContentListener);
    soWait = null;
    try {
        soWait = getSkinObject("library-wait");
        soWaitProgress = getSkinObject("library-wait-progress");
        soWaitTask = (SWTSkinObjectText) getSkinObject("library-wait-task");
        if (soWaitProgress != null) {
            soWaitProgress.getControl().addPaintListener(new PaintListener() {

                @Override
                public void paintControl(PaintEvent e) {
                    assert e != null;
                    Control c = (Control) e.widget;
                    Point size = c.getSize();
                    e.gc.setBackground(ColorCache.getColor(e.display, "#23a7df"));
                    int breakX = size.x * waitProgress / 100;
                    e.gc.fillRectangle(0, 0, breakX, size.y);
                    e.gc.setBackground(ColorCache.getColor(e.display, "#cccccc"));
                    e.gc.fillRectangle(breakX, 0, size.x - breakX, size.y);
                }
            });
        }
        soLibraryInfo = (SWTSkinObjectText) getSkinObject("library-info");
        if (soLibraryInfo != null) {
            MainMDISetup.getSb_transfers().addCountRefreshListener(new SB_Transfers.countRefreshListener() {

                final Map<Composite, ExtraInfoProvider> extra_info_map = new HashMap<>();

                {
                    soLibraryInfo.getControl().getParent().setData("ViewUtils:ViewTitleExtraInfo", new ViewUtils.ViewTitleExtraInfo() {

                        @Override
                        public void update(Composite reporter, int count, int active) {
                            ExtraInfoProvider provider = getProvider(reporter);
                            if (provider == null) {
                                return;
                            }
                            if (provider.value != count || provider.active != active) {
                                provider.value = count;
                                provider.active = active;
                                if (viewMode == provider.view_mode && provider.enabled) {
                                    MainMDISetup.getSb_transfers().triggerCountRefreshListeners();
                                }
                            }
                        }

                        @Override
                        public void setEnabled(Composite reporter, boolean enabled) {
                            ExtraInfoProvider provider = getProvider(reporter);
                            if (provider == null) {
                                return;
                            }
                            if (provider.enabled != enabled) {
                                provider.enabled = enabled;
                                if (viewMode == provider.view_mode) {
                                    MainMDISetup.getSb_transfers().triggerCountRefreshListeners();
                                }
                            }
                        }

                        private ExtraInfoProvider getProvider(Composite reporter) {
                            synchronized (extra_info_map) {
                                ExtraInfoProvider provider = extra_info_map.get(reporter);
                                if (provider != null) {
                                    return (provider);
                                }
                                Composite temp = reporter;
                                while (temp != null) {
                                    Integer vm = (Integer) temp.getData("SBC_LibraryView:ViewMode");
                                    if (vm != null) {
                                        provider = new ExtraInfoProvider(vm);
                                        extra_info_map.put(reporter, provider);
                                        return (provider);
                                    }
                                    temp = temp.getParent();
                                }
                                Debug.out("No view mode found for " + reporter);
                                return (null);
                            }
                        }
                    });
                }

                // @see SBC_LibraryView.countRefreshListener#countRefreshed(SBC_LibraryView.stats, SBC_LibraryView.stats)
                @Override
                public void countRefreshed(SB_Transfers.stats statsWithLowNoise, SB_Transfers.stats statsNoLowNoise) {
                    SB_Transfers.stats stats = viewMode == MODE_SMALLTABLE ? statsWithLowNoise : statsNoLowNoise;
                    String s;
                    if (torrentFilterMode == TORRENTS_ALL || (datasource instanceof Tag)) {
                        if (datasource instanceof Category) {
                            Category cat = (Category) datasource;
                            String id = "library.category.header";
                            s = MessageText.getString(id, new String[] { (cat.getType() != Category.TYPE_USER) ? MessageText.getString(cat.getName()) : cat.getName() });
                        } else if (datasource instanceof Tag) {
                            Tag tag = (Tag) datasource;
                            String id = "library.tag.header";
                            s = MessageText.getString(id, new String[] { tag.getTagName(true) });
                            String desc = tag.getDescription();
                            if (desc != null) {
                                s += " - " + desc;
                            }
                        } else {
                            String id = "library.all.header";
                            if (stats.numComplete + stats.numIncomplete != 1) {
                                id += ".p";
                            }
                            s = MessageText.getString(id, new String[] { String.valueOf(stats.numComplete + stats.numIncomplete), String.valueOf(stats.numSeeding + stats.numDownloading) });
                            if (stats.numQueued > 0) {
                                s += ", " + MessageText.getString("label.num_queued", new String[] { String.valueOf(stats.numQueued) });
                            }
                        }
                    } else if (torrentFilterMode == TORRENTS_INCOMPLETE) {
                        String id = "library.incomplete.header";
                        if (stats.numDownloading != 1) {
                            id += ".p";
                        }
                        int numWaiting = Math.max(stats.numIncomplete - stats.numDownloading, 0);
                        s = MessageText.getString(id, new String[] { String.valueOf(stats.numDownloading), String.valueOf(numWaiting) });
                    } else if (torrentFilterMode == TORRENTS_UNOPENED || torrentFilterMode == TORRENTS_COMPLETE) {
                        // complete filtering currently uses same display text as unopened
                        String id = "library.unopened.header";
                        if (stats.numUnOpened != 1) {
                            id += ".p";
                        }
                        s = MessageText.getString(id, new String[] { String.valueOf(stats.numUnOpened) });
                    } else {
                        s = "";
                    }
                    synchronized (extra_info_map) {
                        int filter_total = 0;
                        int filter_active = 0;
                        boolean filter_enabled = false;
                        for (ExtraInfoProvider provider : extra_info_map.values()) {
                            if (viewMode == provider.view_mode) {
                                if (provider.enabled) {
                                    filter_enabled = true;
                                    filter_total += provider.value;
                                    filter_active += provider.active;
                                }
                            }
                        }
                        if (filter_enabled) {
                            String extra = MessageText.getString("filter.header.matches2", new String[] { String.valueOf(filter_total), String.valueOf(filter_active) });
                            s += " " + extra;
                        }
                    }
                    SB_Transfers transfers = MainMDISetup.getSb_transfers();
                    if (selection_count > 1) {
                        s += ", " + MessageText.getString("label.num_selected", new String[] { String.valueOf(selection_count) });
                        String size_str = null;
                        String rate_str = null;
                        if (selection_size > 0) {
                            if (selection_size == selection_done) {
                                size_str = DisplayFormatters.formatByteCountToKiBEtc(selection_size);
                            } else {
                                size_str = DisplayFormatters.formatByteCountToKiBEtc(selection_done) + "/" + DisplayFormatters.formatByteCountToKiBEtc(selection_size);
                            }
                        }
                        DownloadManager[] dms = selection_dms;
                        if (transfers.header_show_rates && dms.length > 1) {
                            long total_data_up = 0;
                            long total_prot_up = 0;
                            long total_data_down = 0;
                            long total_prot_down = 0;
                            for (DownloadManager dm : dms) {
                                DownloadManagerStats dm_stats = dm.getStats();
                                total_prot_up += dm_stats.getProtocolSendRate();
                                total_data_up += dm_stats.getDataSendRate();
                                total_prot_down += dm_stats.getProtocolReceiveRate();
                                total_data_down += dm_stats.getDataReceiveRate();
                            }
                            rate_str = MessageText.getString("ConfigView.download.abbreviated") + DisplayFormatters.formatDataProtByteCountToKiBEtcPerSec(total_data_down, total_prot_down) + " " + MessageText.getString("ConfigView.upload.abbreviated") + DisplayFormatters.formatDataProtByteCountToKiBEtcPerSec(total_data_up, total_prot_up);
                        }
                        if (size_str != null || rate_str != null) {
                            String temp;
                            if (size_str == null) {
                                temp = rate_str;
                            } else if (rate_str == null) {
                                temp = size_str;
                            } else {
                                temp = size_str + "; " + rate_str;
                            }
                            s += " (" + temp + ")";
                        }
                    }
                    if (transfers.header_show_uptime && transfers.totalStats != null) {
                        long up_secs = (transfers.totalStats.getSessionUpTime() / 60) * 60;
                        String op;
                        if (up_secs < 60) {
                            up_secs = 60;
                            op = "<";
                        } else {
                            op = " ";
                        }
                        String up_str = TimeFormatter.format2(up_secs, false);
                        if (s.equals("")) {
                            Debug.out("eh");
                        }
                        s += "; " + MessageText.getString("label.uptime_coarse", new String[] { op, up_str });
                    }
                    soLibraryInfo.setText(s);
                }

                class ExtraInfoProvider {

                    int view_mode;

                    boolean enabled;

                    int value;

                    int active;

                    private ExtraInfoProvider(int vm) {
                        view_mode = vm;
                    }
                }
            });
        }
    } catch (Exception ignored) {
    }
    // Core core = CoreFactory.getSingleton();
    if (!CoreFactory.isCoreRunning()) {
        if (soWait != null) {
            soWait.setVisible(true);
        // soWait.getControl().getParent().getParent().getParent().layout(true, true);
        }
        final Initializer initializer = Initializer.getLastInitializer();
        if (initializer != null) {
            initializer.addListener(new InitializerListener() {

                @Override
                public void reportPercent(final int percent) {
                    Utils.execSWTThread(new AERunnable() {

                        @Override
                        public void runSupport() {
                            if (soWaitProgress != null && !soWaitProgress.isDisposed()) {
                                waitProgress = percent;
                                soWaitProgress.getControl().redraw();
                                soWaitProgress.getControl().update();
                            }
                        }
                    });
                    if (percent > 100) {
                        initializer.removeListener(this);
                    }
                }

                @Override
                public void reportCurrentTask(String currentTask) {
                    if (soWaitTask != null && !soWaitTask.isDisposed()) {
                        soWaitTask.setText(currentTask);
                    }
                }
            });
        }
    }
    CoreFactory.addCoreRunningListener(new CoreRunningListener() {

        @Override
        public void coreRunning(final Core core) {
            PluginInterface pi = PluginInitializer.getDefaultInterface();
            final UIManager uim = pi.getUIManager();
            uim.addUIListener(new UIManagerListener() {

                @Override
                public void UIDetached(UIInstance instance) {
                }

                @Override
                public void UIAttached(UIInstance instance) {
                    if (instance instanceof UISWTInstance) {
                        uim.removeUIListener(this);
                        Utils.execSWTThread(new AERunnable() {

                            @Override
                            public void runSupport() {
                                if (soWait != null) {
                                    soWait.setVisible(false);
                                }
                                if (!skinObject.isDisposed()) {
                                    setupView(core, skinObject);
                                }
                            }
                        });
                    }
                }
            });
        }
    });
    return null;
}
Also used : Category(com.biglybt.core.category.Category) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) UIManager(com.biglybt.pif.ui.UIManager) DownloadManager(com.biglybt.core.download.DownloadManager) Control(org.eclipse.swt.widgets.Control) CoreRunningListener(com.biglybt.core.CoreRunningListener) DownloadManagerStats(com.biglybt.core.download.DownloadManagerStats) UIInstance(com.biglybt.pif.ui.UIInstance) Core(com.biglybt.core.Core) DiskManagerFileInfo(com.biglybt.core.disk.DiskManagerFileInfo) ISelectedContent(com.biglybt.ui.selectedcontent.ISelectedContent) PaintEvent(org.eclipse.swt.events.PaintEvent) Composite(org.eclipse.swt.widgets.Composite) PaintListener(org.eclipse.swt.events.PaintListener) PluginInterface(com.biglybt.pif.PluginInterface) SelectedContentListener(com.biglybt.ui.selectedcontent.SelectedContentListener) InitializerListener(com.biglybt.ui.InitializerListener) Point(org.eclipse.swt.graphics.Point) Point(org.eclipse.swt.graphics.Point) PluginInitializer(com.biglybt.pifimpl.local.PluginInitializer) Initializer(com.biglybt.ui.swt.Initializer) Tag(com.biglybt.core.tag.Tag) UISWTInstance(com.biglybt.ui.swt.pif.UISWTInstance) UIManagerListener(com.biglybt.pif.ui.UIManagerListener)

Aggregations

UIInstance (com.biglybt.pif.ui.UIInstance)18 UIManagerListener (com.biglybt.pif.ui.UIManagerListener)18 UIManager (com.biglybt.pif.ui.UIManager)13 UISWTInstance (com.biglybt.ui.swt.pif.UISWTInstance)10 DownloadManager (com.biglybt.core.download.DownloadManager)4 PluginListener (com.biglybt.pif.PluginListener)4 BasicPluginConfigModel (com.biglybt.pif.ui.model.BasicPluginConfigModel)4 Download (com.biglybt.pif.download.Download)3 MenuItem (com.biglybt.pif.ui.menus.MenuItem)3 MenuItemListener (com.biglybt.pif.ui.menus.MenuItemListener)3 Tag (com.biglybt.core.tag.Tag)2 DownloadException (com.biglybt.pif.download.DownloadException)2 Torrent (com.biglybt.pif.torrent.Torrent)2 BooleanParameter (com.biglybt.pif.ui.config.BooleanParameter)2 Parameter (com.biglybt.pif.ui.config.Parameter)2 ParameterListener (com.biglybt.pif.ui.config.ParameterListener)2 TableContextMenuItem (com.biglybt.pif.ui.tables.TableContextMenuItem)2 TableRow (com.biglybt.pif.ui.tables.TableRow)2 Core (com.biglybt.core.Core)1 CoreRunningListener (com.biglybt.core.CoreRunningListener)1