📄 localeutilswt.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: LocaleUtilSWT.java
package org.gudy.azureus2.ui.swt;
import com.aelitis.azureus.core.AzureusCore;
import java.util.ArrayList;
import java.util.Arrays;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.internat.*;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;
// Referenced classes of package org.gudy.azureus2.ui.swt:
// Messages, Utils
public class LocaleUtilSWT
implements LocaleUtilListener
{
protected static boolean rememberEncodingDecision = true;
protected static LocaleUtilDecoder rememberedDecoder = null;
protected static Object remembered_on_behalf_of;
public LocaleUtilSWT(AzureusCore core)
{
LocaleTorrentUtil.addListener(this);
}
public LocaleUtilDecoderCandidate selectDecoder(LocaleUtil locale_util, Object decision_owner, LocaleUtilDecoderCandidate candidates[])
throws LocaleUtilEncodingException
{
if (decision_owner != remembered_on_behalf_of)
{
remembered_on_behalf_of = decision_owner;
rememberedDecoder = null;
}
if (rememberEncodingDecision && rememberedDecoder != null)
{
for (int i = 0; i < candidates.length; i++)
if (candidates[i].getValue() != null && rememberedDecoder == candidates[i].getDecoder())
return candidates[i];
}
LocaleUtilDecoderCandidate default_candidate = candidates[0];
String defaultString = candidates[0].getValue();
Arrays.sort(candidates);
boolean always_prompt = COConfigurationManager.getBooleanParameter("File.Decoder.Prompt", false);
if (!always_prompt)
{
int minlength = candidates[0].getValue().length();
if (defaultString != null && defaultString.length() == minlength)
return null;
String default_name = COConfigurationManager.getStringParameter("File.Decoder.Default", "");
if (default_name.length() > 0)
{
for (int i = 0; i < candidates.length; i++)
if (candidates[i].getValue() != null && candidates[i].getDecoder().getName().equals(default_name))
return candidates[i];
}
}
ArrayList choosableCandidates = new ArrayList();
if (defaultString != null)
choosableCandidates.add(default_candidate);
LocaleUtilDecoder general_decoders[] = locale_util.getGeneralDecoders();
label0:
for (int j = 0; j < general_decoders.length; j++)
{
int i = 0;
do
{
if (i >= candidates.length)
continue label0;
if (candidates[i].getValue() != null && candidates[i].getDecoder() != null && general_decoders[j] != null && general_decoders[j].getName().equals(candidates[i].getDecoder().getName()) && !choosableCandidates.contains(candidates[i]))
{
choosableCandidates.add(candidates[i]);
continue label0;
}
i++;
} while (true);
}
for (int i = 0; i < candidates.length; i++)
if (candidates[i].getValue() != null && candidates[i].getDecoder() != null && !choosableCandidates.contains(candidates[i]))
choosableCandidates.add(candidates[i]);
final LocaleUtilDecoderCandidate candidatesToChoose[] = (LocaleUtilDecoderCandidate[])(LocaleUtilDecoderCandidate[])choosableCandidates.toArray(new LocaleUtilDecoderCandidate[choosableCandidates.size()]);
final LocaleUtilDecoderCandidate selected_candidate[] = {
null
};
Utils.execSWTThread(new AERunnable() {
final LocaleUtilDecoderCandidate val$candidatesToChoose[];
final LocaleUtilDecoderCandidate val$selected_candidate[];
final LocaleUtilSWT this$0;
public void runSupport()
{
try
{
showChoosableEncodingWindow(Utils.findAnyShell(), candidatesToChoose, selected_candidate);
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
}
{
this$0 = LocaleUtilSWT.this;
candidatesToChoose = alocaleutildecodercandidate;
selected_candidate = alocaleutildecodercandidate1;
super();
}
}, false);
if (selected_candidate[0] == null)
throw new LocaleUtilEncodingException(true);
else
return selected_candidate[0];
}
private void showChoosableEncodingWindow(Shell shell, final LocaleUtilDecoderCandidate candidates[], final LocaleUtilDecoderCandidate selected_candidate[])
{
final Shell s = ShellFactory.createShell(shell, 34928);
Utils.setShellIcon(s);
s.setText(MessageText.getString("LocaleUtil.title"));
s.setLayout(new GridLayout(1, true));
Label label = new Label(s, 16384);
Messages.setLanguageText(label, "LocaleUtil.label.chooseencoding");
final Table table = new Table(s, 0x10a04);
GridData gridData = new GridData(1808);
table.setLayoutData(gridData);
table.setLinesVisible(true);
table.setHeaderVisible(true);
String titlesPieces[] = {
"encoding", "text"
};
for (int i = 0; i < titlesPieces.length; i++)
{
TableColumn column = new TableColumn(table, 16384);
Messages.setLanguageText(column, (new StringBuilder()).append("LocaleUtil.column.").append(titlesPieces[i]).toString());
}
for (int i = 0; i < candidates.length; i++)
{
TableItem item = new TableItem(table, 0);
String name = candidates[i].getDecoder().getName();
item.setText(0, name);
item.setText(1, candidates[i].getValue());
}
int lastSelectedIndex = 0;
int i = 1;
do
{
if (i >= candidates.length)
break;
if (candidates[i].getValue() != null && candidates[i].getDecoder() == rememberedDecoder)
{
lastSelectedIndex = i;
break;
}
i++;
} while (true);
table.select(lastSelectedIndex);
table.getColumn(0).pack();
table.getColumn(1).pack();
label = new Label(s, 16384);
Messages.setLanguageText(label, "LocaleUtil.label.hint.doubleclick");
Composite composite = new Composite(s, 0);
gridData = new GridData(768);
composite.setLayoutData(gridData);
GridLayout subLayout = new GridLayout();
subLayout.numColumns = 2;
composite.setLayout(subLayout);
final Button checkBox = new Button(composite, 32);
checkBox.setLayoutData(new GridData(32));
checkBox.setSelection(rememberEncodingDecision);
Messages.setLanguageText(checkBox, "LocaleUtil.label.checkbox.rememberdecision");
Button ok = new Button(composite, 8);
ok.setText(" ".concat(MessageText.getString("Button.next")).concat(" "));
gridData = new GridData(3);
gridData.widthHint = 100;
ok.setLayoutData(gridData);
s.setSize(500, 500);
s.layout();
Utils.centreWindow(s);
ok.addSelectionListener(new SelectionAdapter() {
final Shell val$s;
final Table val$table;
final Button val$checkBox;
final LocaleUtilDecoderCandidate val$candidates[];
final LocaleUtilDecoderCandidate val$selected_candidate[];
final LocaleUtilSWT this$0;
public void widgetSelected(SelectionEvent event)
{
setSelectedIndex(s, table, checkBox, candidates, selected_candidate);
s.dispose();
}
{
this$0 = LocaleUtilSWT.this;
s = shell;
table = table1;
checkBox = button;
candidates = alocaleutildecodercandidate;
selected_candidate = alocaleutildecodercandidate1;
super();
}
});
table.addMouseListener(new MouseAdapter() {
final Shell val$s;
final Table val$table;
final Button val$checkBox;
final LocaleUtilDecoderCandidate val$candidates[];
final LocaleUtilDecoderCandidate val$selected_candidate[];
final LocaleUtilSWT this$0;
public void mouseDoubleClick(MouseEvent mEvent)
{
setSelectedIndex(s, table, checkBox, candidates, selected_candidate);
s.dispose();
}
{
this$0 = LocaleUtilSWT.this;
s = shell;
table = table1;
checkBox = button;
candidates = alocaleutildecodercandidate;
selected_candidate = alocaleutildecodercandidate1;
super();
}
});
s.open();
do
{
if (s.isDisposed())
break;
if (!s.getDisplay().readAndDispatch())
s.getDisplay().sleep();
} while (true);
}
private void setSelectedIndex(Shell s, Table table, Button checkBox, LocaleUtilDecoderCandidate candidates[], LocaleUtilDecoderCandidate selected_candidate[])
{
int selectedIndex = table.getSelectionIndex();
if (-1 == selectedIndex)
return;
rememberEncodingDecision = checkBox.getSelection();
selected_candidate[0] = candidates[selectedIndex];
if (rememberEncodingDecision)
rememberedDecoder = selected_candidate[0].getDecoder();
else
rememberedDecoder = null;
s.dispose();
}
private void abandonSelection(Shell s)
{
s.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -