Search in sources :

Example 1 with TrackersUtil

use of com.biglybt.core.util.TrackersUtil in project BiglyBT by BiglySoftware.

the class WebSeedPanel method webSeedsChanged.

@Override
public void webSeedsChanged(String oldName, String newName, Map ws) {
    TrackersUtil util = TrackersUtil.getInstance();
    if (oldName != null && !oldName.equals(newName))
        util.removeWebSeed(oldName);
    util.addWebSeed(newName, ws);
    refreshList(newName);
    refreshDetails();
    setEditDeleteEnable();
}
Also used : TrackersUtil(com.biglybt.core.util.TrackersUtil)

Example 2 with TrackersUtil

use of com.biglybt.core.util.TrackersUtil in project BiglyBT by BiglySoftware.

the class MultiTrackerPanel method trackersChanged.

@Override
public void trackersChanged(String oldName, String newName, List trackers) {
    TrackersUtil util = TrackersUtil.getInstance();
    if (oldName != null && !oldName.equals(newName))
        util.removeMultiTracker(oldName);
    util.addMultiTracker(newName, trackers);
    refreshList(newName);
    refreshDetails();
    setEditDeleteEnable();
}
Also used : TrackersUtil(com.biglybt.core.util.TrackersUtil)

Example 3 with TrackersUtil

use of com.biglybt.core.util.TrackersUtil in project BiglyBT by BiglySoftware.

the class MultiTrackerEditor method createWindow.

private void createWindow(Shell parent_shell) {
    if (parent_shell == null) {
        this.shell = ShellFactory.createMainShell(SWT.DIALOG_TRIM | SWT.RESIZE);
    } else {
        this.shell = ShellFactory.createShell(parent_shell, SWT.DIALOG_TRIM | SWT.RESIZE);
    }
    Messages.setLanguageText(this.shell, anonymous ? "wizard.multitracker.edit.title" : "wizard.multitracker.template.title");
    Utils.setShellIcon(shell);
    GridLayout layout = new GridLayout();
    layout.numColumns = 3;
    shell.setLayout(layout);
    GridData gridData;
    if (!anonymous) {
        Label labelName = new Label(shell, SWT.NULL);
        Messages.setLanguageText(labelName, "wizard.multitracker.edit.name");
        textName = new Text(shell, SWT.BORDER);
        textName.setText(currentName);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 2;
        textName.setLayoutData(gridData);
        textName.addModifyListener(new ModifyListener() {

            @Override
            public void modifyText(ModifyEvent arg0) {
                currentName = textName.getText();
                computeSaveEnable();
            }
        });
    }
    treeGroups = new Tree(shell, SWT.BORDER);
    gridData = new GridData(GridData.FILL_BOTH);
    gridData.horizontalSpan = 3;
    gridData.heightHint = 150;
    treeGroups.setLayoutData(gridData);
    treeGroups.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDoubleClick(MouseEvent arg0) {
            if (treeGroups.getSelectionCount() == 1) {
                TreeItem treeItem = treeGroups.getSelection()[0];
                String type = (String) treeItem.getData("type");
                if (type.equals("tracker")) {
                    editTreeItem(treeItem);
                }
            }
        }
    });
    if (showTemplates) {
        // template operations
        Composite cTemplate = new Composite(shell, SWT.NONE);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 3;
        cTemplate.setLayoutData(gridData);
        GridLayout layoutTemplate = new GridLayout();
        layoutTemplate.numColumns = 5;
        cTemplate.setLayout(layoutTemplate);
        final Label labelTitle = new Label(cTemplate, SWT.NULL);
        Messages.setLanguageText(labelTitle, "Search.menu.engines");
        final Combo configList = new Combo(cTemplate, SWT.READ_ONLY);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        configList.setLayoutData(gridData);
        final List<Button> buttons = new ArrayList<>();
        String sel_str = COConfigurationManager.getStringParameter("multitrackereditor.last.selection", null);
        final String[] currentTemplate = { sel_str == null || sel_str.length() == 0 ? null : sel_str };
        final Runnable updateSelection = new Runnable() {

            @Override
            public void run() {
                int selection = configList.getSelectionIndex();
                boolean enabled = selection != -1;
                String sel_str = currentTemplate[0] = enabled ? configList.getItem(selection) : null;
                COConfigurationManager.setParameter("multitrackereditor.last.selection", sel_str == null ? "" : sel_str);
                Iterator<Button> it = buttons.iterator();
                // skip the new button
                it.next();
                while (it.hasNext()) {
                    it.next().setEnabled(enabled);
                }
            }
        };
        final Runnable updateTemplates = new Runnable() {

            @Override
            public void run() {
                Map<String, List<List<String>>> multiTrackers = TrackersUtil.getInstance().getMultiTrackers();
                configList.removeAll();
                List<String> names = new ArrayList<String>(multiTrackers.keySet());
                Collections.sort(names, new FormattersImpl().getAlphanumericComparator(true));
                for (String str : names) {
                    configList.add(str);
                }
                String toBeSelected = currentTemplate[0];
                if (toBeSelected != null) {
                    int selection = configList.indexOf(toBeSelected);
                    if (selection != -1) {
                        configList.select(selection);
                    } else if (configList.getItemCount() > 0) {
                        currentTemplate[0] = configList.getItem(0);
                        configList.select(0);
                    }
                }
                updateSelection.run();
            }
        };
        final TrackerEditorListener templateTEL = new TrackerEditorListener() {

            @Override
            public void trackersChanged(String oldName, String newName, List<List<String>> trackers) {
                TrackersUtil util = TrackersUtil.getInstance();
                if (oldName != null && !oldName.equals(newName)) {
                    util.removeMultiTracker(oldName);
                }
                util.addMultiTracker(newName, trackers);
                currentTemplate[0] = newName;
                updateTemplates.run();
            }
        };
        final Button btnNew = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnNew);
        Messages.setLanguageText(btnNew, "wizard.multitracker.new");
        btnNew.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                List group = new ArrayList();
                List tracker = new ArrayList();
                group.add(tracker);
                new MultiTrackerEditor(btnNew.getShell(), null, group, templateTEL);
            }
        });
        configList.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                updateSelection.run();
            }
        });
        final Button btnEdit = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnEdit);
        Messages.setLanguageText(btnEdit, "wizard.multitracker.edit");
        btnEdit.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                Map multiTrackers = TrackersUtil.getInstance().getMultiTrackers();
                String selected = currentTemplate[0];
                new MultiTrackerEditor(btnEdit.getShell(), selected, (List) multiTrackers.get(selected), templateTEL);
            }
        });
        final Button btnDelete = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnDelete);
        Messages.setLanguageText(btnDelete, "wizard.multitracker.delete");
        btnDelete.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                final String selected = currentTemplate[0];
                MessageBoxShell mb = new MessageBoxShell(MessageText.getString("message.confirm.delete.title"), MessageText.getString("message.confirm.delete.text", new String[] { selected }), new String[] { MessageText.getString("Button.yes"), MessageText.getString("Button.no") }, 1);
                mb.open(new UserPrompterResultListener() {

                    @Override
                    public void prompterClosed(int result) {
                        if (result == 0) {
                            TrackersUtil.getInstance().removeMultiTracker(selected);
                            updateTemplates.run();
                        }
                    }
                });
            }
        });
        Label labelApply = new Label(cTemplate, SWT.NULL);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 2;
        labelApply.setLayoutData(gridData);
        Messages.setLanguageText(labelApply, "apply.selected.template");
        final Button btnReplace = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnReplace);
        Messages.setLanguageText(btnReplace, "label.replace");
        btnReplace.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                Map<String, List<List<String>>> multiTrackers = TrackersUtil.getInstance().getMultiTrackers();
                String selected = currentTemplate[0];
                trackers = TorrentUtils.getClone(multiTrackers.get(selected));
                refresh();
                computeSaveEnable();
            }
        });
        final Button btnMerge = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnMerge);
        Messages.setLanguageText(btnMerge, "label.merge");
        btnMerge.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                Map<String, List<List<String>>> multiTrackers = TrackersUtil.getInstance().getMultiTrackers();
                String selected = currentTemplate[0];
                trackers = TorrentUtils.mergeAnnounceURLs(trackers, multiTrackers.get(selected));
                refresh();
                computeSaveEnable();
            }
        });
        final Button btnRemove = new Button(cTemplate, SWT.PUSH);
        buttons.add(btnRemove);
        Messages.setLanguageText(btnRemove, "Button.remove");
        btnRemove.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event e) {
                Map<String, List<List<String>>> multiTrackers = TrackersUtil.getInstance().getMultiTrackers();
                String selected = currentTemplate[0];
                trackers = TorrentUtils.removeAnnounceURLs(trackers, multiTrackers.get(selected), false);
                refresh();
                computeSaveEnable();
            }
        });
        updateTemplates.run();
        Utils.makeButtonsEqualWidth(buttons);
    }
    Label labelSeparator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 3;
    labelSeparator.setLayoutData(gridData);
    // button row
    Composite cButtons = new Composite(shell, SWT.NONE);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 3;
    cButtons.setLayoutData(gridData);
    GridLayout layoutButtons = new GridLayout();
    layoutButtons.numColumns = 5;
    cButtons.setLayout(layoutButtons);
    List<Button> buttons = new ArrayList<>();
    final Button btnedittext = new Button(cButtons, SWT.PUSH);
    buttons.add(btnedittext);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.END;
    btnedittext.setLayoutData(gridData);
    Messages.setLanguageText(btnedittext, "wizard.multitracker.edit.text");
    btnedittext.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            btnSave.setEnabled(false);
            btnedittext.setEnabled(false);
            trackers = new ArrayList();
            TreeItem[] groupItems = treeGroups.getItems();
            for (int i = 0; i < groupItems.length; i++) {
                TreeItem group = groupItems[i];
                TreeItem[] trackerItems = group.getItems();
                List groupList = new ArrayList(group.getItemCount());
                for (int j = 0; j < trackerItems.length; j++) {
                    groupList.add(trackerItems[j].getText());
                }
                trackers.add(groupList);
            }
            final String old_text = TorrentUtils.announceGroupsToText(trackers);
            final TextViewerWindow viewer = new TextViewerWindow(shell, "wizard.multitracker.edit.text.title", "wizard.multitracker.edit.text.msg", old_text, false, false);
            viewer.setEditable(true);
            viewer.addListener(new TextViewerWindow.TextViewerWindowListener() {

                @Override
                public void closed() {
                    try {
                        if (viewer.getOKPressed()) {
                            String new_text = viewer.getText();
                            if (!old_text.equals(new_text)) {
                                String[] lines = new_text.split("\n");
                                StringBuilder valid_text = new StringBuilder(new_text.length() + 1);
                                for (String line : lines) {
                                    line = line.trim();
                                    if (line.length() > 0) {
                                        if (!validURL(line)) {
                                            continue;
                                        }
                                    }
                                    valid_text.append(line);
                                    valid_text.append("\n");
                                }
                                trackers = TorrentUtils.announceTextToGroups(valid_text.toString());
                                refresh();
                            }
                        }
                    } finally {
                        computeSaveEnable();
                        btnedittext.setEnabled(true);
                    }
                }
            });
        }
    });
    final Button btnAddTrackerList = new Button(cButtons, SWT.PUSH);
    buttons.add(btnAddTrackerList);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.END;
    btnAddTrackerList.setLayoutData(gridData);
    Messages.setLanguageText(btnAddTrackerList, "wizard.multitracker.add.trackerlist");
    btnAddTrackerList.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            SimpleTextEntryWindow entryWindow = new SimpleTextEntryWindow("enter.url", "enter.trackerlist.url");
            entryWindow.prompt(new UIInputReceiverListener() {

                @Override
                public void UIInputReceiverClosed(UIInputReceiver receiver) {
                    if (!receiver.hasSubmittedInput()) {
                        return;
                    }
                    String url = receiver.getSubmittedInput().trim();
                    if (!url.isEmpty()) {
                        TreeItem group = newGroup();
                        TreeItem itemTracker = newTracker(group, "trackerlist:" + url.trim());
                    }
                }
            });
        }
    });
    Label label = new Label(cButtons, SWT.NULL);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    label.setLayoutData(gridData);
    btnSave = new Button(cButtons, SWT.PUSH);
    buttons.add(btnSave);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.END;
    btnSave.setLayoutData(gridData);
    Messages.setLanguageText(btnSave, "wizard.multitracker.edit.save");
    btnSave.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            update();
            shell.dispose();
        }
    });
    btnCancel = new Button(cButtons, SWT.PUSH);
    buttons.add(btnCancel);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.END;
    btnCancel.setLayoutData(gridData);
    Messages.setLanguageText(btnCancel, "Button.cancel");
    btnCancel.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            shell.dispose();
        }
    });
    Utils.makeButtonsEqualWidth(buttons);
    shell.setDefaultButton(btnSave);
    shell.addListener(SWT.Traverse, new Listener() {

        @Override
        public void handleEvent(Event e) {
            if (e.character == SWT.ESC) {
                shell.dispose();
            }
        }
    });
    computeSaveEnable();
    refresh();
    constructMenu();
    editor = new TreeEditor(treeGroups);
    treeGroups.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent arg0) {
            if (itemEdited != null && !itemEdited.isDisposed() && !editor.getEditor().isDisposed()) {
                itemEdited.setText(((Text) editor.getEditor()).getText());
            }
            removeEditor();
        }
    });
    Point size = shell.computeSize(500, SWT.DEFAULT);
    shell.setSize(size);
    Utils.centreWindow(shell);
    shell.open();
}
Also used : UserPrompterResultListener(com.biglybt.ui.UserPrompterResultListener) UIInputReceiverListener(com.biglybt.pif.ui.UIInputReceiverListener) ArrayList(java.util.ArrayList) GridLayout(org.eclipse.swt.layout.GridLayout) SimpleTextEntryWindow(com.biglybt.ui.swt.SimpleTextEntryWindow) TrackersUtil(com.biglybt.core.util.TrackersUtil) ArrayList(java.util.ArrayList) List(java.util.List) TextViewerWindow(com.biglybt.ui.swt.TextViewerWindow) TreeEditor(org.eclipse.swt.custom.TreeEditor) MessageBoxShell(com.biglybt.ui.swt.shells.MessageBoxShell) MessageText(com.biglybt.core.internat.MessageText) Point(org.eclipse.swt.graphics.Point) FormattersImpl(com.biglybt.pifimpl.local.utils.FormattersImpl) Point(org.eclipse.swt.graphics.Point) UserPrompterResultListener(com.biglybt.ui.UserPrompterResultListener) UIInputReceiver(com.biglybt.pif.ui.UIInputReceiver) GridData(org.eclipse.swt.layout.GridData) UIInputReceiverListener(com.biglybt.pif.ui.UIInputReceiverListener) Map(java.util.Map)

Aggregations

TrackersUtil (com.biglybt.core.util.TrackersUtil)3 MessageText (com.biglybt.core.internat.MessageText)1 UIInputReceiver (com.biglybt.pif.ui.UIInputReceiver)1 UIInputReceiverListener (com.biglybt.pif.ui.UIInputReceiverListener)1 FormattersImpl (com.biglybt.pifimpl.local.utils.FormattersImpl)1 UserPrompterResultListener (com.biglybt.ui.UserPrompterResultListener)1 SimpleTextEntryWindow (com.biglybt.ui.swt.SimpleTextEntryWindow)1 TextViewerWindow (com.biglybt.ui.swt.TextViewerWindow)1 MessageBoxShell (com.biglybt.ui.swt.shells.MessageBoxShell)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 TreeEditor (org.eclipse.swt.custom.TreeEditor)1 Point (org.eclipse.swt.graphics.Point)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1