📄 configsectionipfilter.java
字号:
table = new Table(gFilter, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION | SWT.VIRTUAL);
String[] headers = { "ConfigView.section.ipfilter.description", "ConfigView.section.ipfilter.start", "ConfigView.section.ipfilter.end" };
int[] sizes = { 110, 110, 110 };
int[] aligns = { SWT.LEFT, SWT.CENTER, SWT.CENTER };
for (int i = 0; i < headers.length; i++) {
TableColumn tc = new TableColumn(table, aligns[i]);
tc.setText(headers[i]);
tc.setWidth(sizes[i]);
Messages.setLanguageText(tc, headers[i]); //$NON-NLS-1$
}
TableColumn[] columns = table.getColumns();
columns[0].setData(new Integer(FilterComparator.FIELD_NAME));
columns[1].setData(new Integer(FilterComparator.FIELD_START_IP));
columns[2].setData(new Integer(FilterComparator.FIELD_END_IP));
Listener listener = new Listener() {
public void handleEvent(Event e) {
TableColumn tc = (TableColumn) e.widget;
int field = ((Integer) tc.getData()).intValue();
comparator.setField(field);
if (field == FilterComparator.FIELD_NAME && !bIsCachingDescriptions) {
ipFilterManager.cacheAllDescriptions();
bIsCachingDescriptions = true;
}
ipRanges = getSortedRanges(filter.getRanges());
table.setItemCount(ipRanges.length);
table.clearAll();
// bug 69398 on Windows
table.redraw();
}
};
columns[0].addListener(SWT.Selection,listener);
columns[1].addListener(SWT.Selection,listener);
columns[2].addListener(SWT.Selection,listener);
table.setHeaderVisible(true);
gridData = new GridData(GridData.FILL_BOTH);
gridData.heightHint = table.getHeaderHeight() * 2;
gridData.widthHint = 200;
table.setLayoutData(gridData);
gridData = new GridData();
Composite cArea = new Composite(gFilter, SWT.NULL);
layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.numColumns = 3;
cArea.setLayout(layout);
cArea.setLayoutData(gridData);
Button add = new Button(cArea, SWT.PUSH);
gridData = new GridData(GridData.CENTER);
gridData.widthHint = 100;
add.setLayoutData(gridData);
Messages.setLanguageText(add, "ConfigView.section.ipfilter.add");
add.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
addRange();
}
});
Button remove = new Button(cArea, SWT.PUSH);
gridData = new GridData(GridData.CENTER);
gridData.widthHint = 100;
remove.setLayoutData(gridData);
Messages.setLanguageText(remove, "ConfigView.section.ipfilter.remove");
remove.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
TableItem[] selection = table.getSelection();
if (selection.length == 0)
return;
removeRange((IpRange) selection[0].getData());
ipRanges = getSortedRanges(filter.getRanges());
table.setItemCount(ipRanges.length);
table.clearAll();
table.redraw();
}
});
Button edit = new Button(cArea, SWT.PUSH);
gridData = new GridData(GridData.CENTER);
gridData.widthHint = 100;
edit.setLayoutData(gridData);
Messages.setLanguageText(edit, "ConfigView.section.ipfilter.edit");
edit.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
TableItem[] selection = table.getSelection();
if (selection.length == 0)
return;
editRange((IpRange) selection[0].getData());
}
});
table.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
TableItem[] selection = table.getSelection();
if (selection.length == 0)
return;
editRange((IpRange) selection[0].getData());
}
});
Control[] controls = new Control[3];
controls[0] = add;
controls[1] = remove;
controls[2] = edit;
IAdditionalActionPerformer enabler = new ChangeSelectionActionPerformer(controls);
enabled.setAdditionalActionPerformer(enabler);
ipRanges = getSortedRanges(filter.getRanges());
table.addListener(SWT.SetData,new Listener() {
public void handleEvent(Event event) {
TableItem item = (TableItem) event.item;
int index = table.indexOf (item);
// seems we can get -1 here (see bug 1219314 )
if ( index < 0 || index >= ipRanges.length ){
return;
}
IpRange range = ipRanges[index];
item.setText(0, range.getDescription());
item.setText(1, range.getStartIp());
item.setText(2, range.getEndIp());
item.setData(range);
}
});
table.setItemCount(ipRanges.length);
table.clearAll();
// bug 69398 on Windows
table.redraw();
table.addListener(SWT.Resize, new Listener() {
public void handleEvent(Event e) {
resizeTable();
}
});
gFilter.addListener(SWT.Resize, new Listener() {
public void handleEvent(Event e) {
resizeTable();
}
});
return gFilter;
}
private void resizeTable() {
int iNewWidth = table.getClientArea().width -
table.getColumn(1).getWidth() -
table.getColumn(2).getWidth() - 20;
if (iNewWidth > 50)
table.getColumn(0).setWidth(iNewWidth);
}
public void removeRange(IpRange range) {
filter.removeRange( range );
//noChange = false;
//refresh();
}
public void editRange(IpRange range) {
new IpFilterEditor(azureus_core,table.getShell(), table, range);
noChange = false;
//refresh();
}
public void addRange() {
new IpFilterEditor(azureus_core,table.getShell(), table, null);
//noChange = false;
//refresh();
}
public void refresh() {
if (table == null || table.isDisposed() || noChange)
return;
noChange = true;
TableItem[] items = table.getItems();
for (int i = 0; i < items.length; i++) {
if (items[i] == null || items[i].isDisposed())
continue;
String tmp = items[i].getText(0);
IpRange range = (IpRange) items[i].getData();
String desc = range.getDescription();
if (desc != null && !desc.equals(tmp))
items[i].setText(0, desc);
tmp = items[i].getText(1);
if (range.getStartIp() != null && !range.getStartIp().equals(tmp))
items[i].setText(1, range.getStartIp());
tmp = items[i].getText(2);
if (range.getEndIp() != null && !range.getEndIp().equals(tmp))
items[i].setText(2, range.getEndIp());
}
}
protected IpRange[]
getSortedRanges(
IpRange[] ranges )
{
Arrays.sort(
ranges,
comparator);
return( ranges );
}
protected void
setPercentageBlocked()
{
long nbIPsBlocked = filter.getTotalAddressesInRange();
if ( COConfigurationManager.getBooleanParameter( "Ip Filter Allow" )){
nbIPsBlocked = 0x100000000L - nbIPsBlocked;
}
int percentIPsBlocked = (int) (nbIPsBlocked * 1000L / (256L * 256L * 256L * 256L));
String nbIps = "" + nbIPsBlocked;
String percentIps = DisplayFormatters.formatPercentFromThousands(percentIPsBlocked);
Messages.setLanguageText(percentage_blocked,"ConfigView.section.ipfilter.totalIPs",new String[]{nbIps,percentIps});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -