Search in sources :

Example 1 with ViewTitleInfo

use of com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo in project BiglyBT by BiglySoftware.

the class SB_Discovery method setupHeader.

private void setupHeader(final MdiEntry entry) {
    ViewTitleInfo titleInfo = new ViewTitleInfo() {

        @Override
        public Object getTitleInfoProperty(int propertyID) {
            if (propertyID == TITLE_INDICATOR_TEXT) {
                if (entry.isExpanded()) {
                    return null;
                }
                StringBuilder sb = new StringBuilder();
                MdiEntry[] entries = entry.getMDI().getEntries();
                for (MdiEntry subEntry : entries) {
                    // System.out.println(subEntry.getId());
                    if (subEntry.getId().startsWith("Subscription_")) {
                        continue;
                    }
                    if (entry.getId().equals(subEntry.getParentID())) {
                        ViewTitleInfo titleInfo = subEntry.getViewTitleInfo();
                        if (titleInfo != null) {
                            Object text = titleInfo.getTitleInfoProperty(TITLE_INDICATOR_TEXT);
                            if (text instanceof String) {
                                if (sb.length() > 0) {
                                    sb.append(" | ");
                                }
                                sb.append(text);
                            }
                        }
                    }
                }
                if (sb.length() > 0) {
                    return sb.toString();
                }
            } else if (propertyID == TITLE_INDICATOR_TEXT_TOOLTIP) {
                if (entry.isExpanded()) {
                    return null;
                }
                StringBuilder sb = new StringBuilder();
                MdiEntry[] entries = entry.getMDI().getEntries();
                for (MdiEntry subEntry : entries) {
                    if (entry.getId().equals(subEntry.getParentID())) {
                        ViewTitleInfo titleInfo = subEntry.getViewTitleInfo();
                        if (titleInfo != null) {
                            Object text = titleInfo.getTitleInfoProperty(TITLE_INDICATOR_TEXT);
                            if (text instanceof String) {
                                if (sb.length() > 0) {
                                    sb.append("\n");
                                }
                                sb.append(subEntry.getTitle()).append(": ").append(text);
                            }
                        }
                    }
                }
                if (sb.length() > 0) {
                    return sb.toString();
                }
            }
            return null;
        }
    };
    entry.setViewTitleInfo(titleInfo);
}
Also used : MdiEntry(com.biglybt.ui.mdi.MdiEntry) ViewTitleInfo(com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)

Example 2 with ViewTitleInfo

use of com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo in project BiglyBT by BiglySoftware.

the class SB_Transfers method createSeedingEntry.

/**
 * @param mdi
 * @return
 *
 * @since 4.5.1.1
 */
protected MdiEntry createSeedingEntry(MultipleDocumentInterface mdi) {
    ViewTitleInfo titleInfoSeeding = new ViewTitleInfo() {

        @Override
        public Object getTitleInfoProperty(int propertyID) {
            if (propertyID == TITLE_INDICATOR_TEXT) {
                // numSeeding + " of " + numComplete;
                return null;
            }
            if (propertyID == TITLE_INDICATOR_TEXT_TOOLTIP) {
                return MessageText.getString("sidebar.LibraryCD.tooltip", new String[] { "" + statsNoLowNoise.numComplete, "" + statsNoLowNoise.numSeeding });
            }
            return null;
        }
    };
    MdiEntry entry = mdi.createEntryFromSkinRef(SideBar.SIDEBAR_HEADER_TRANSFERS, SideBar.SIDEBAR_SECTION_LIBRARY_DL, "library", "{sidebar.LibraryDL}", titleInfoSeeding, null, false, null);
    entry.setImageLeftID("image.sidebar.downloading");
    MdiEntryVitalityImage vitalityImage = entry.addVitalityImage(ID_VITALITY_ALERT);
    vitalityImage.setVisible(false);
    entry.setViewTitleInfo(titleInfoSeeding);
    return entry;
}
Also used : ViewTitleInfo(com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)

Example 3 with ViewTitleInfo

use of com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo in project BiglyBT by BiglySoftware.

the class SB_Transfers method setupCategory.

private void setupCategory(final Category category) {
    MultipleDocumentInterface mdi = UIFunctionsManager.getUIFunctions().getMDI();
    if (mdi == null) {
        return;
    }
    String name = category.getName();
    String id = "Cat." + Base32.encode(name.getBytes());
    if (category.getType() != Category.TYPE_USER) {
        name = "{" + name + "}";
    }
    ViewTitleInfo viewTitleInfo = new ViewTitleInfo() {

        @Override
        public Object getTitleInfoProperty(int propertyID) {
            if (propertyID == TITLE_INDICATOR_TEXT) {
                if (statsNoLowNoise.numIncomplete > 0) {
                    List<?> dms = category.getDownloadManagers(null);
                    if (dms != null) {
                        return "" + dms.size();
                    }
                }
            }
            return null;
        }
    };
    MdiEntry entry = mdi.createEntryFromSkinRef(MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, id, "library", name, viewTitleInfo, category, false, null);
    if (entry != null) {
        entry.setImageLeftID("image.sidebar.library");
        entry.addListener(new MdiEntryDropListener() {

            @Override
            public boolean mdiEntryDrop(MdiEntry entry, Object payload) {
                if (!(payload instanceof String)) {
                    return false;
                }
                String dropped = (String) payload;
                String[] split = Constants.PAT_SPLIT_SLASH_N.split(dropped);
                if (split.length > 1) {
                    String type = split[0];
                    if (type.startsWith("DownloadManager")) {
                        GlobalManager gm = CoreFactory.getSingleton().getGlobalManager();
                        for (int i = 1; i < split.length; i++) {
                            String hash = split[i];
                            try {
                                DownloadManager dm = gm.getDownloadManager(new HashWrapper(Base32.decode(hash)));
                                if (dm != null) {
                                    TorrentUtil.assignToCategory(new Object[] { dm }, category);
                                }
                            } catch (Throwable t) {
                            }
                        }
                    }
                }
                return true;
            }
        });
    }
    if (entry instanceof SideBarEntrySWT) {
        final SideBarEntrySWT entrySWT = (SideBarEntrySWT) entry;
        entrySWT.addListener(new MdiSWTMenuHackListener() {

            @Override
            public void menuWillBeShown(MdiEntry entry, Menu menuTree) {
                CategoryUIUtils.createMenuItems(menuTree, category);
            }
        });
    }
}
Also used : SideBarEntrySWT(com.biglybt.ui.swt.views.skin.sidebar.SideBarEntrySWT) MdiSWTMenuHackListener(com.biglybt.ui.swt.mdi.MdiSWTMenuHackListener) DownloadManager(com.biglybt.core.download.DownloadManager) GlobalManager(com.biglybt.core.global.GlobalManager) Menu(org.eclipse.swt.widgets.Menu) ViewTitleInfo(com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)

Example 4 with ViewTitleInfo

use of com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo in project BiglyBT by BiglySoftware.

the class SB_Transfers method setupTag.

public MdiEntry setupTag(final Tag tag) {
    MultipleDocumentInterfaceSWT mdi = UIFunctionsManagerSWT.getUIFunctionsSWT().getMDISWT();
    if (mdi == null) {
        return null;
    }
    synchronized (tag_setup_lock) {
        String id = "Tag." + tag.getTagType().getTagType() + "." + tag.getTagID();
        if (mdi.getEntry(id) != null) {
            return null;
        }
        // find where to locate this in the sidebar
        TreeMap<Tag, String> name_map = new TreeMap<>(TagUIUtils.getTagComparator());
        name_map.put(tag, id);
        for (Tag t : tag.getTagType().getTags()) {
            if (t.isVisible()) {
                String tid = "Tag." + tag.getTagType().getTagType() + "." + t.getTagID();
                if (mdi.getEntry(tid) != null) {
                    name_map.put(t, tid);
                }
            }
        }
        String prev_id = null;
        for (String this_id : name_map.values()) {
            if (this_id == id) {
                break;
            }
            prev_id = this_id;
        }
        if (prev_id == null && name_map.size() > 1) {
            Iterator<String> it = name_map.values().iterator();
            it.next();
            prev_id = "~" + it.next();
        }
        boolean auto = tag.getTagType().isTagTypeAuto();
        ViewTitleInfo viewTitleInfo = new ViewTitleInfo() {

            @Override
            public Object getTitleInfoProperty(int pid) {
                if (pid == TITLE_TEXT) {
                    return (tag.getTagName(true));
                } else if (pid == TITLE_INDICATOR_TEXT) {
                    return (String.valueOf(tag.getTaggedCount()));
                } else if (pid == TITLE_INDICATOR_COLOR) {
                    TagType tag_type = tag.getTagType();
                    int[] def_color = tag_type.getColorDefault();
                    int[] tag_color = tag.getColor();
                    if (tag_color != def_color) {
                        return (tag_color);
                    }
                } else if (pid == TITLE_INDICATOR_TEXT_TOOLTIP) {
                    return (TagUIUtils.getTagTooltip(tag));
                }
                return null;
            }
        };
        MdiEntry entry;
        boolean closable = auto;
        if (tag.getTaggableTypes() == Taggable.TT_DOWNLOAD) {
            closable = true;
            String name = tag.getTagName(true);
            entry = mdi.createEntryFromSkinRef(MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, id, "library", name, viewTitleInfo, tag, closable, prev_id);
        } else {
            entry = mdi.createEntryFromEventListener(MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, new PeersGeneralView(tag), id, closable, null, prev_id);
            entry.setViewTitleInfo(viewTitleInfo);
        }
        if (closable) {
            entry.addListener(new MdiCloseListener() {

                @Override
                public void mdiEntryClosed(MdiEntry entry, boolean userClosed) {
                    if (userClosed && entry.getUserData(AUTO_CLOSE_KEY) == null) {
                        if (COConfigurationManager.getBooleanParameter("Library.TagInSideBar")) {
                            tag.setVisible(false);
                        }
                    }
                }
            });
        }
        if (entry != null) {
            String image_id = tag.getImageID();
            if (image_id != null) {
                entry.setImageLeftID(image_id);
            } else if (tag.getTagType().getTagType() == TagType.TT_PEER_IPSET) {
                entry.setImageLeftID("image.sidebar.tag-red");
            } else if (tag.getTagType().isTagTypePersistent()) {
                entry.setImageLeftID("image.sidebar.tag-green");
            } else {
                entry.setImageLeftID("image.sidebar.tag-blue");
            }
        }
        if (entry instanceof SideBarEntrySWT) {
            final SideBarEntrySWT entrySWT = (SideBarEntrySWT) entry;
            entrySWT.addListener(new MdiSWTMenuHackListener() {

                @Override
                public void menuWillBeShown(MdiEntry entry, Menu menuTree) {
                    TagUIUtils.createSideBarMenuItems(menuTree, tag);
                }
            });
        }
        if (!auto && entry != null) {
            MdiEntryDropListener dl = new MdiEntryDropListener() {

                @Override
                public boolean mdiEntryDrop(MdiEntry entry, Object payload) {
                    if (!(payload instanceof String)) {
                        return false;
                    }
                    boolean[] auto = tag.isTagAuto();
                    if (auto[0] && auto[1]) {
                        return (false);
                    }
                    final String dropped = (String) payload;
                    new AEThread2("Tagger") {

                        @Override
                        public void run() {
                            dropTorrentOnTag(tag, dropped);
                        }
                    }.start();
                    return true;
                }

                private void dropTorrentOnTag(Tag tag, String dropped) {
                    String[] split = Constants.PAT_SPLIT_SLASH_N.split(dropped);
                    if (split.length <= 1) {
                        return;
                    }
                    String type = split[0];
                    if (!type.startsWith("DownloadManager") && !type.startsWith("DiskManagerFileInfo")) {
                        return;
                    }
                    GlobalManager gm = CoreFactory.getSingleton().getGlobalManager();
                    List<DownloadManager> listDMs = new ArrayList<>();
                    boolean doAdd = false;
                    for (int i = 1; i < split.length; i++) {
                        String hash = split[i];
                        // for files
                        int sep = hash.indexOf(";");
                        if (sep != -1) {
                            hash = hash.substring(0, sep);
                        }
                        try {
                            DownloadManager dm = gm.getDownloadManager(new HashWrapper(Base32.decode(hash)));
                            if (dm != null) {
                                listDMs.add(dm);
                                if (!doAdd && !tag.hasTaggable(dm)) {
                                    doAdd = true;
                                }
                            }
                        } catch (Throwable t) {
                        }
                        boolean[] auto = tag.isTagAuto();
                        for (DownloadManager dm : listDMs) {
                            if (doAdd) {
                                if (!auto[0]) {
                                    tag.addTaggable(dm);
                                }
                            } else {
                                if (!(auto[0] && auto[1])) {
                                    tag.removeTaggable(dm);
                                }
                            }
                        }
                    }
                }
            };
            boolean[] tag_auto = tag.isTagAuto();
            entry.setUserData(TAG_DATA_KEY, new Object[] { dl, tag_auto });
            if (!(tag_auto[0] && tag_auto[1])) {
                entry.addListener(dl);
            }
        }
        return entry;
    }
}
Also used : SideBarEntrySWT(com.biglybt.ui.swt.views.skin.sidebar.SideBarEntrySWT) MdiSWTMenuHackListener(com.biglybt.ui.swt.mdi.MdiSWTMenuHackListener) DownloadManager(com.biglybt.core.download.DownloadManager) GlobalManager(com.biglybt.core.global.GlobalManager) MultipleDocumentInterfaceSWT(com.biglybt.ui.swt.mdi.MultipleDocumentInterfaceSWT) Menu(org.eclipse.swt.widgets.Menu) PeersGeneralView(com.biglybt.ui.swt.views.PeersGeneralView) ViewTitleInfo(com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)

Example 5 with ViewTitleInfo

use of com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo in project BiglyBT by BiglySoftware.

the class SideBar method fillDropDownMenu.

/**
 * @param menuDropDown
 *
 * @since 3.1.1.1
 */
protected void fillDropDownMenu(Menu menuDropDown, TreeItem[] items, int indent) {
    String s = "";
    for (int i = 0; i < indent; i++) {
        s += "   ";
    }
    for (int i = 0; i < items.length; i++) {
        TreeItem treeItem = items[i];
        SideBarEntrySWT entry = (SideBarEntrySWT) treeItem.getData("MdiEntry");
        if (entry == null) {
            continue;
        }
        org.eclipse.swt.widgets.MenuItem menuItem = new org.eclipse.swt.widgets.MenuItem(menuDropDown, entry.isSelectable() ? SWT.RADIO : SWT.CASCADE);
        String id = entry.getId();
        menuItem.setData("Plugin.viewID", id);
        ViewTitleInfo titleInfo = entry.getViewTitleInfo();
        String ind = "";
        if (titleInfo != null) {
            String o = (String) titleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_INDICATOR_TEXT);
            if (o != null) {
                ind = "  (" + o + ")";
            // ind = "\t" + o;
            }
        }
        menuItem.setText(s + entry.getTitle() + ind);
        menuItem.addSelectionListener(dropDownSelectionListener);
        if (currentEntry != null && currentEntry.getId().equals(id)) {
            menuItem.setSelection(true);
        }
        TreeItem[] subItems = treeItem.getItems();
        if (subItems.length > 0) {
            Menu parent = menuDropDown;
            if (!entry.isSelectable()) {
                parent = new Menu(menuDropDown.getParent().getShell(), SWT.DROP_DOWN);
                menuItem.setMenu(parent);
            }
            fillDropDownMenu(parent, subItems, indent + 1);
        }
    }
}
Also used : MenuItem(com.biglybt.pif.ui.menus.MenuItem) org.eclipse.swt.widgets(org.eclipse.swt.widgets) com.biglybt.ui.swt(com.biglybt.ui.swt) ViewTitleInfo(com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)

Aggregations

ViewTitleInfo (com.biglybt.ui.common.viewtitleinfo.ViewTitleInfo)16 PluginInterface (com.biglybt.pif.PluginInterface)4 MenuItem (com.biglybt.pif.ui.menus.MenuItem)4 MdiEntry (com.biglybt.ui.mdi.MdiEntry)4 MenuItemListener (com.biglybt.pif.ui.menus.MenuItemListener)3 MenuManager (com.biglybt.pif.ui.menus.MenuManager)3 DownloadManager (com.biglybt.core.download.DownloadManager)2 GlobalManager (com.biglybt.core.global.GlobalManager)2 TimerEvent (com.biglybt.core.util.TimerEvent)2 TimerEventPerformer (com.biglybt.core.util.TimerEventPerformer)2 UIManager (com.biglybt.pif.ui.UIManager)2 MdiEntryVitalityImage (com.biglybt.ui.mdi.MdiEntryVitalityImage)2 MdiListener (com.biglybt.ui.mdi.MdiListener)2 MultipleDocumentInterface (com.biglybt.ui.mdi.MultipleDocumentInterface)2 MdiSWTMenuHackListener (com.biglybt.ui.swt.mdi.MdiSWTMenuHackListener)2 UISWTViewEventListener (com.biglybt.ui.swt.pif.UISWTViewEventListener)2 SWTSkinObject (com.biglybt.ui.swt.skin.SWTSkinObject)2 SideBarEntrySWT (com.biglybt.ui.swt.views.skin.sidebar.SideBarEntrySWT)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2