configview.java
来自「Azureus is a powerful, full-featured, cr」· Java 代码 · 共 746 行 · 第 1/2 页
JAVA
746 行
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite cConfigSection = new Composite(sc, SWT.NULL);
TreeItem treeItem;
if (treeItemParent == null) {
if (position >= 0)
treeItem = new TreeItem(tree, SWT.NULL, position);
else
treeItem = new TreeItem(tree, SWT.NULL);
} else {
if (position >= 0)
treeItem = new TreeItem(treeItemParent, SWT.NULL, position);
else
treeItem = new TreeItem(treeItemParent, SWT.NULL);
}
Messages.setLanguageText(treeItem, ((bPrefix) ? sSectionPrefix : "") + sNameID);
treeItem.setData("Panel", sc);
treeItem.setData("ID", sNameID);
sc.setContent(cConfigSection);
return cConfigSection;
}
private TreeItem findTreeItem(Tree tree, String ID) {
TreeItem[] items = tree.getItems();
for (int i = 0; i < items.length; i++) {
String itemID = (String)items[i].getData("ID");
if (itemID != null && itemID.equalsIgnoreCase(ID)) {
return items[i];
}
TreeItem itemFound = findTreeItem(items[i], ID);
if (itemFound != null)
return itemFound;
}
return null;
}
private TreeItem findTreeItem(TreeItem item, String ID) {
TreeItem[] subItems = item.getItems();
for (int i = 0; i < subItems.length; i++) {
String itemID = (String)subItems[i].getData("ID");
if (itemID != null && itemID.equalsIgnoreCase(ID)) {
return subItems[i];
}
TreeItem itemFound = findTreeItem(subItems[i], ID);
if (itemFound != null)
return itemFound;
}
return null;
}
private void initSaveButton() {
GridData gridData;
Button save = new Button(cConfig, SWT.PUSH);
Messages.setLanguageText(save, "ConfigView.button.save"); //$NON-NLS-1$
gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gridData.horizontalSpan = 2;
gridData.widthHint = 80;
save.setLayoutData(gridData);
save.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
COConfigurationManager.setParameter("updated", 1); //$NON-NLS-1$
COConfigurationManager.save();
for (int i = 0; i < pluginSections.size(); i++)
((ConfigSection)pluginSections.get(i)).configSectionSave();
}
});
}
private void initGroupPlugins()
{
Label label;
Composite infoGroup = createConfigSection(ConfigSection.SECTION_PLUGINS, 6);
TreeItem treePlugins = findTreeItem(tree, ConfigSection.SECTION_PLUGINS);
infoGroup.setLayout(new GridLayout());
infoGroup.addControlListener(new Utils.LabelWrapControlListener());
String sep = System.getProperty("file.separator");
String sUserPluginDir = FileUtil.getUserFile( "plugins" ).toString();
if ( !sUserPluginDir.endsWith(sep)){
sUserPluginDir += sep;
}
String sAppPluginDir = FileUtil.getApplicationFile( "plugins" ).toString();
if ( !sAppPluginDir.endsWith(sep)){
sAppPluginDir += sep;
}
label = new Label(infoGroup, SWT.WRAP);
label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Messages.setLanguageText(label, "ConfigView.pluginlist.whereToPut");
label = new Label(infoGroup, SWT.WRAP);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalIndent = 10;
label.setLayoutData(gridData);
label.setText(sUserPluginDir);
label.setForeground(Colors.blue);
label.setCursor(Cursors.handCursor);
final String _sUserPluginDir = sUserPluginDir;
//TODO : Fix it for windows
label.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent arg0) {
if(_sUserPluginDir.endsWith("/plugins/") || _sUserPluginDir.endsWith("\\plugins\\")) {
File f = new File(_sUserPluginDir);
if(f.exists() && f.isDirectory()) {
Program.launch(_sUserPluginDir);
} else {
String azureusDir = _sUserPluginDir.substring(0,_sUserPluginDir.length() - 9);
System.out.println(azureusDir);
Program.launch(azureusDir);
}
}
}
});
label = new Label(infoGroup, SWT.WRAP);
label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Messages.setLanguageText(label, "ConfigView.pluginlist.whereToPutOr");
label = new Label(infoGroup, SWT.WRAP);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalIndent = 10;
label.setLayoutData(gridData);
label.setText(sAppPluginDir);
label.setForeground(Colors.blue);
label.setCursor(Cursors.handCursor);
final String _sAppPluginDir = sAppPluginDir;
//TODO : Fix it for windows
label.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent arg0) {
if(_sAppPluginDir.endsWith("/plugins/") || _sAppPluginDir.endsWith("\\plugins\\")) {
File f = new File(_sAppPluginDir);
if(f.exists() && f.isDirectory()) {
Program.launch(_sAppPluginDir);
} else {
String azureusDir = _sAppPluginDir.substring(0,_sAppPluginDir.length() - 9);
System.out.println(azureusDir);
Program.launch(azureusDir);
}
}
}
});
List pluginIFs = Arrays.asList( azureus_core.getPluginManager().getPlugins());
Collections.sort(
pluginIFs,
new Comparator()
{
public int
compare(
Object o1,
Object o2 )
{
return( ((PluginInterface)o1).getPluginName().compareToIgnoreCase(((PluginInterface)o2).getPluginName()));
}
});
Label labelInfo = new Label(infoGroup, SWT.WRAP);
labelInfo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
int numPlugins = 0;
for (int i = 0; i < pluginIFs.size(); i++) {
PluginInterface pluginIF = (PluginInterface)pluginIFs.get(i);
Properties p = pluginIF.getPluginProperties();
String plugin_name = pluginIF.getPluginName();
String plugin_version = pluginIF.getPluginVersion();
String sDirName = pluginIF.getPluginDirectoryName();
boolean user_plugin = false;
if (sDirName.length() > sUserPluginDir.length() &&
sDirName.substring(0, sUserPluginDir.length()).equals(sUserPluginDir)){
sDirName = sDirName.substring(sUserPluginDir.length());
user_plugin = true;
}else if (sDirName.length() > sAppPluginDir.length() &&
sDirName.substring(0, sAppPluginDir.length()).equals(sAppPluginDir)){
sDirName = sDirName.substring(sAppPluginDir.length());
}
// Blank means it's internal
if (!sDirName.equals("")){
label = new Label(infoGroup, SWT.NULL);
String broken_str = pluginIF.isOperational()?"":(" - " + MessageText.getString("ConfigView.pluginlist.broken"));
String shared_str = user_plugin?"":" [" + MessageText.getString("ConfigView.pluginlist.shared") + "]";
label.setText( " - " + plugin_name + (plugin_version==null?"":(" " + plugin_version ))+ " (" + sDirName + ")" + broken_str + shared_str );
numPlugins++;
}
}
Messages.setLanguageText(labelInfo, (numPlugins == 0) ? "ConfigView.pluginlist.noplugins"
: "ConfigView.pluginlist.info");
// lastly the built-in plugins
label = new Label(infoGroup, SWT.NULL);
Messages.setLanguageText(label, "ConfigView.pluginlist.coreplugins");
for (int i = 0; i < pluginIFs.size(); i++) {
PluginInterface pluginIF = (PluginInterface)pluginIFs.get(i);
String plugin_name = pluginIF.getPluginName();
String version = pluginIF.getPluginVersion();
if ( pluginIF.isBuiltIn()){
label = new Label(infoGroup, SWT.NULL);
label.setText(" - " + plugin_name + (version==null?"":(" " + version )));
}
}
ParameterRepository repository = ParameterRepository.getInstance();
String[] names = repository.getNames();
Arrays.sort( names );
for(int i = 0; i < names.length; i++)
{
String pluginName = names[i];
Parameter[] parameters = repository.getParameterBlock(pluginName);
// Note: 2070's plugin documentation for PluginInterface.addConfigUIParameters
// said to pass <"ConfigView.plugins." + displayName>. This was
// never implemented in 2070. 2070 read the key <displayName> without
// the prefix.
//
// 2071+ uses <sSectionPrefix ("ConfigView.section.plugins.") + pluginName>
// and falls back to <displayName>. Since
// <"ConfigView.plugins." + displayName> was never implemented in the
// first place, a check for it has not been created
boolean bUsePrefix = MessageText.keyExists(sSectionPrefix + "plugins." + pluginName);
Composite pluginGroup = createConfigSection(treePlugins, pluginName, -1, bUsePrefix);
GridLayout pluginLayout = new GridLayout();
pluginLayout.numColumns = 3;
pluginGroup.setLayout(pluginLayout);
Map parameterToPluginParameter = new HashMap();
//Add all parameters
for(int j = 0; j < parameters.length; j++)
{
Parameter parameter = parameters[j];
parameterToPluginParameter.put(parameter,new PluginParameter(pluginGroup,parameter));
}
//Check for dependencies
for(int j = 0; j < parameters.length; j++) {
Parameter parameter = parameters[j];
if(parameter instanceof org.gudy.azureus2.pluginsimpl.local.ui.config.BooleanParameterImpl) {
List parametersToEnable =
((org.gudy.azureus2.pluginsimpl.local.ui.config.BooleanParameterImpl)parameter).getEnabledOnSelectionParameters();
List controlsToEnable = new ArrayList();
Iterator iter = parametersToEnable.iterator();
while(iter.hasNext()) {
Parameter parameterToEnable = (Parameter) iter.next();
PluginParameter pp = (PluginParameter) parameterToPluginParameter.get(parameterToEnable);
Control[] controls = pp.getControls();
for(int k = 0 ; k < controls.length ; k++) {
controlsToEnable.add(controls[k]);
}
}
List parametersToDisable =
((org.gudy.azureus2.pluginsimpl.local.ui.config.BooleanParameterImpl)parameter).getDisabledOnSelectionParameters();
List controlsToDisable = new ArrayList();
iter = parametersToDisable.iterator();
while(iter.hasNext()) {
Parameter parameterToDisable = (Parameter) iter.next();
PluginParameter pp = (PluginParameter) parameterToPluginParameter.get(parameterToDisable);
Control[] controls = pp.getControls();
for(int k = 0 ; k < controls.length ; k++) {
controlsToDisable.add(controls[k]);
}
}
Control[] ce = new Control[controlsToEnable.size()];
Control[] cd = new Control[controlsToDisable.size()];
if(ce.length + cd.length > 0) {
IAdditionalActionPerformer ap = new DualChangeSelectionActionPerformer(
(Control[]) controlsToEnable.toArray(ce),
(Control[]) controlsToDisable.toArray(cd));
PluginParameter pp = (PluginParameter) parameterToPluginParameter.get(parameter);
pp.setAdditionalActionPerfomer(ap);
}
}
}
}
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#getComposite()
*/
public Composite getComposite() {
return cConfig;
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#refresh()
*/
public void refresh() {
}
public void updateLanguage() {
super.updateLanguage();
updateHeader(tree.getSelection()[0]);
// cConfig.setSize(cConfig.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
public void delete() {
MainWindow.getWindow().setConfig(null);
for (int i = 0; i < pluginSections.size(); i++)
((ConfigSection)pluginSections.get(i)).configSectionDelete();
pluginSections.clear();
if(! tree.isDisposed()) {
TreeItem[] items = tree.getItems();
for (int i = 0; i < items.length; i++) {
Composite c = (Composite)items[i].getData("Panel");
Utils.disposeComposite(c);
items[i].setData("Panel", null);
items[i].setData("ConfigSectionSWT", null);
}
}
Utils.disposeComposite(cConfig);
if (headerFont != null && !headerFont.isDisposed()) {
headerFont.dispose();
headerFont = null;
}
}
public String getFullTitle() {
return MessageText.getString("ConfigView.title.full"); //$NON-NLS-1$
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?