📄 webseedseditor.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: WebSeedsEditor.java
package org.gudy.azureus2.ui.swt.maketorrent;
import java.net.URL;
import java.util.*;
import org.eclipse.swt.custom.TreeEditor;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
// Referenced classes of package org.gudy.azureus2.ui.swt.maketorrent:
// WebSeedsEditorListener
public class WebSeedsEditor
{
WebSeedsEditorListener listener;
String oldName;
String currentName;
boolean anonymous;
Map webseeds;
Display display;
Shell shell;
Text textName;
Tree treeGroups;
TreeEditor editor;
TreeItem itemEdited;
Button btnSave;
Button btnCancel;
Menu menu;
public WebSeedsEditor(String name, Map webseeds, WebSeedsEditorListener listener)
{
this(name, webseeds, listener, false);
}
public WebSeedsEditor(String name, Map webseeds, WebSeedsEditorListener listener, boolean _anonymous)
{
oldName = name;
if (name != null)
currentName = name;
else
currentName = "";
this.listener = listener;
anonymous = _anonymous;
this.webseeds = new HashMap(webseeds);
createWindow();
}
private void createWindow()
{
display = Display.getCurrent();
shell = ShellFactory.createShell(0x10860);
Messages.setLanguageText(shell, "wizard.multitracker.edit.title");
Utils.setShellIcon(shell);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
shell.setLayout(layout);
GridData gridData;
if (!anonymous)
{
Label labelName = new Label(shell, 0);
Messages.setLanguageText(labelName, "wizard.multitracker.edit.name");
textName = new Text(shell, 2048);
textName.setText(currentName);
gridData = new GridData(768);
gridData.horizontalSpan = 2;
textName.setLayoutData(gridData);
textName.addModifyListener(new ModifyListener() {
final WebSeedsEditor this$0;
public void modifyText(ModifyEvent arg0)
{
currentName = textName.getText();
computeSaveEnable();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
}
treeGroups = new Tree(shell, 2048);
gridData = new GridData(1808);
gridData.horizontalSpan = 3;
gridData.heightHint = 150;
treeGroups.setLayoutData(gridData);
treeGroups.addMouseListener(new MouseAdapter() {
final WebSeedsEditor this$0;
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);
}
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
Label labelSeparator = new Label(shell, 258);
gridData = new GridData(768);
gridData.horizontalSpan = 3;
labelSeparator.setLayoutData(gridData);
Label label = new Label(shell, 0);
gridData = new GridData(768);
label.setLayoutData(gridData);
Composite cButtons = new Composite(shell, 0);
gridData = new GridData(768);
gridData.horizontalSpan = 2;
cButtons.setLayoutData(gridData);
GridLayout layoutButtons = new GridLayout();
layoutButtons.numColumns = 3;
cButtons.setLayout(layoutButtons);
label = new Label(cButtons, 0);
gridData = new GridData(768);
label.setLayoutData(gridData);
btnSave = new Button(cButtons, 8);
gridData = new GridData();
gridData.widthHint = 70;
gridData.horizontalAlignment = 3;
btnSave.setLayoutData(gridData);
Messages.setLanguageText(btnSave, "wizard.multitracker.edit.save");
btnSave.addListener(13, new Listener() {
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
update();
shell.dispose();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
btnCancel = new Button(cButtons, 8);
gridData = new GridData();
gridData.horizontalAlignment = 3;
gridData.widthHint = 70;
btnCancel.setLayoutData(gridData);
Messages.setLanguageText(btnCancel, "Button.cancel");
btnCancel.addListener(13, new Listener() {
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
shell.dispose();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
shell.setDefaultButton(btnSave);
shell.addListener(31, new Listener() {
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
if (e.character == '\033')
shell.dispose();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
computeSaveEnable();
refresh();
constructMenu();
editor = new TreeEditor(treeGroups);
treeGroups.addSelectionListener(new SelectionAdapter() {
final WebSeedsEditor this$0;
public void widgetSelected(SelectionEvent arg0)
{
if (itemEdited != null && !editor.getEditor().isDisposed())
itemEdited.setText(((Text)editor.getEditor()).getText());
removeEditor();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
org.eclipse.swt.graphics.Point size = shell.computeSize(400, -1);
shell.setSize(size);
Utils.centreWindow(shell);
shell.open();
}
private void update()
{
webseeds = new HashMap();
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());
webseeds.put(group.getText(), groupList);
}
listener.webSeedsChanged(oldName, currentName, webseeds);
oldName = currentName;
}
private void computeSaveEnable()
{
boolean enabled = anonymous || !"".equals(currentName);
if (enabled)
{
TreeItem groupItems[] = treeGroups.getItems();
label0:
for (int i = 0; i < groupItems.length; i++)
{
TreeItem group = groupItems[i];
TreeItem trackerItems[] = group.getItems();
int j = 0;
do
{
if (j >= trackerItems.length)
continue label0;
if (!validURL(trackerItems[j].getText()))
{
enabled = false;
break label0;
}
j++;
} while (true);
}
}
if (enabled != btnSave.getEnabled())
btnSave.setEnabled(enabled);
}
private void refresh()
{
treeGroups.removeAll();
for (Iterator iter = webseeds.entrySet().iterator(); iter.hasNext();)
{
java.util.Map.Entry entry = (java.util.Map.Entry)iter.next();
TreeItem itemRoot = newGroup((String)entry.getKey());
Iterator iter2 = ((List)entry.getValue()).iterator();
while (iter2.hasNext())
{
String url = (String)iter2.next();
newTracker(itemRoot, url);
}
}
}
private void constructMenu()
{
menu = new Menu(shell, 0);
menu.addListener(22, new Listener() {
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
MenuItem items[] = menu.getItems();
for (int i = 0; i < items.length; i++)
items[i].dispose();
final TreeItem treeItem = treeGroups.getSelection()[0];
String type = (String)treeItem.getData("type");
if (type.equals("tracker"))
{
MenuItem item = new MenuItem(menu, 0);
Messages.setLanguageText(item, "wizard.multitracker.edit.deletetracker");
item.addListener(13, new Listener() {
final TreeItem val$treeItem;
final 7 this$1;
public void handleEvent(Event arg0)
{
treeItem.dispose();
}
{
this$1 = 7.this;
treeItem = treeitem;
super();
}
});
item = new MenuItem(menu, 0);
Messages.setLanguageText(item, "wizard.multitracker.edit.edit");
item.addListener(13, new Listener() {
final TreeItem val$treeItem;
final 7 this$1;
public void handleEvent(Event arg0)
{
editTreeItem(treeItem);
}
{
this$1 = 7.this;
treeItem = treeitem;
super();
}
});
} else
if (type.equals("group"))
{
MenuItem item = new MenuItem(menu, 0);
Messages.setLanguageText(item, "wizard.multitracker.edit.newtracker");
item.addListener(13, new Listener() {
final TreeItem val$treeItem;
final 7 this$1;
public void handleEvent(Event arg0)
{
TreeItem itemTracker = newTracker(treeItem, "http://");
editTreeItem(itemTracker);
}
{
this$1 = 7.this;
treeItem = treeitem;
super();
}
});
}
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
treeGroups.setMenu(menu);
}
private void editTreeItem(final TreeItem item)
{
Control oldEditor = editor.getEditor();
if (oldEditor != null)
oldEditor.dispose();
itemEdited = item;
final Text text = new Text(treeGroups, 2048);
text.setText(item.getText());
text.setForeground(item.getForeground());
text.setSelection(item.getText().length());
text.addListener(14, new Listener() {
final Text val$text;
final TreeItem val$item;
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
String url = text.getText();
if (validURL(url))
{
text.setForeground(null);
item.setForeground(null);
} else
{
text.setForeground(Colors.colorError);
item.setForeground(Colors.colorError);
}
item.setText(url);
computeSaveEnable();
removeEditor();
}
{
this$0 = WebSeedsEditor.this;
text = text1;
item = treeitem;
super();
}
});
text.addListener(24, new Listener() {
final Text val$text;
final TreeItem val$item;
final WebSeedsEditor this$0;
public void handleEvent(Event e)
{
String url = text.getText();
if (validURL(url))
{
text.setForeground(null);
item.setForeground(null);
} else
{
text.setForeground(Colors.colorError);
item.setForeground(Colors.colorError);
}
item.setText(url);
computeSaveEnable();
}
{
this$0 = WebSeedsEditor.this;
text = text1;
item = treeitem;
super();
}
});
text.addKeyListener(new KeyAdapter() {
final WebSeedsEditor this$0;
public void keyReleased(KeyEvent keyEvent)
{
if (keyEvent.character == '\033')
removeEditor();
}
{
this$0 = WebSeedsEditor.this;
super();
}
});
editor.horizontalAlignment = 16384;
editor.grabHorizontal = true;
editor.minimumWidth = 50;
Rectangle r = text.computeTrim(0, 0, 100, text.getLineHeight());
editor.minimumHeight = r.height;
editor.setEditor(text, item);
text.setFocus();
}
private boolean validURL(String str)
{
String prot;
URL url = new URL(str);
prot = url.getProtocol().toLowerCase();
if (prot.equals("http"))
return true;
return false;
Throwable e;
e;
return false;
}
private void removeEditor()
{
Control oldEditor = editor.getEditor();
if (oldEditor != null)
oldEditor.dispose();
}
private TreeItem newGroup(String name)
{
TreeItem item = new TreeItem(treeGroups, 0);
item.setData("type", "group");
item.setText(name);
return item;
}
private TreeItem newTracker(TreeItem root, String url)
{
TreeItem item = new TreeItem(root, 0);
item.setText(url);
item.setData("type", "tracker");
root.setExpanded(true);
return item;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -