📄 wizard.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: Wizard.java
package org.gudy.azureus2.ui.swt.wizard;
import com.aelitis.azureus.core.AzureusCore;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;
// Referenced classes of package org.gudy.azureus2.ui.swt.wizard:
// IWizardPanel, WizardListener
public class Wizard
{
private static final int DEFAULT_WIDTH = 500;
List listeners;
AzureusCore azureus_core;
Display display;
Shell wizardWindow;
Label title;
Label currentInfo;
Label errorMessage;
IWizardPanel currentPanel;
Composite panel;
Font titleFont;
protected Button previous;
protected Button next;
protected Button finish;
protected Button cancel;
Listener closeCatcher = new Listener() {
final Wizard this$0;
public void handleEvent(Event event)
{
event.doit = false;
}
{
this$0 = Wizard.this;
super();
}
};
int wizardHeight;
public Wizard(AzureusCore azureus_core, String keyTitle, boolean modal)
{
this(azureus_core, modal);
setTitleKey(keyTitle);
}
public Wizard(AzureusCore azureus_core, String keyTitle)
{
this(azureus_core, keyTitle, false);
}
public Wizard(AzureusCore _azureus_core, boolean modal)
{
listeners = new ArrayList();
azureus_core = _azureus_core;
int style = 2160;
if (modal)
style |= 0x10000;
wizardWindow = ShellFactory.createMainShell(style);
display = wizardWindow.getDisplay();
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
layout.marginHeight = 0;
layout.marginWidth = 0;
wizardWindow.setLayout(layout);
Utils.setShellIcon(wizardWindow);
Composite cTitle = new Composite(wizardWindow, 0);
org.eclipse.swt.graphics.Color white = display.getSystemColor(1);
cTitle.setBackground(white);
GridData gridData = new GridData(768);
cTitle.setLayoutData(gridData);
GridLayout titleLayout = new GridLayout();
titleLayout.numColumns = 1;
cTitle.setLayout(titleLayout);
title = new Label(cTitle, 0);
title.setBackground(white);
gridData = new GridData(768);
title.setLayoutData(gridData);
Font font = title.getFont();
FontData data[] = font.getFontData();
for (int i = 0; i < data.length; i++)
data[i].setStyle(1);
titleFont = new Font(display, data);
title.setFont(titleFont);
currentInfo = new Label(cTitle, 0);
gridData = new GridData(768);
currentInfo.setLayoutData(gridData);
currentInfo.setBackground(white);
errorMessage = new Label(cTitle, 0);
gridData = new GridData(768);
errorMessage.setLayoutData(gridData);
errorMessage.setBackground(white);
org.eclipse.swt.graphics.Color red = display.getSystemColor(3);
errorMessage.setForeground(red);
gridData = new GridData(768);
(new Label(wizardWindow, 258)).setLayoutData(gridData);
panel = new Composite(wizardWindow, 0);
gridData = new GridData(1808);
panel.setLayoutData(gridData);
gridData = new GridData(768);
(new Label(wizardWindow, 258)).setLayoutData(gridData);
Composite cButtons = new Composite(wizardWindow, 0);
gridData = new GridData(768);
cButtons.setLayoutData(gridData);
GridLayout layoutButtons = new GridLayout();
layoutButtons.numColumns = 5;
cButtons.setLayout(layoutButtons);
gridData = new GridData(768);
(new Label(cButtons, 0)).setLayoutData(gridData);
cancel = new Button(cButtons, 8);
gridData = new GridData();
gridData.widthHint = 90;
gridData.horizontalAlignment = 2;
cancel.setLayoutData(gridData);
Messages.setLanguageText(cancel, "Button.cancel");
previous = new Button(cButtons, 8);
gridData = new GridData();
gridData.widthHint = 90;
gridData.horizontalAlignment = 3;
previous.setLayoutData(gridData);
Messages.setLanguageText(previous, "wizard.previous");
next = new Button(cButtons, 8);
gridData = new GridData();
gridData.widthHint = 90;
gridData.horizontalAlignment = 1;
next.setLayoutData(gridData);
Messages.setLanguageText(next, "wizard.next");
finish = new Button(cButtons, 8);
gridData = new GridData();
gridData.widthHint = 90;
gridData.horizontalAlignment = 2;
finish.setLayoutData(gridData);
Messages.setLanguageText(finish, "wizard.finish");
previous.addListener(13, new Listener() {
final Wizard this$0;
public void handleEvent(Event arg0)
{
clearPanel();
currentPanel = currentPanel.getPreviousPanel();
refresh();
}
{
this$0 = Wizard.this;
super();
}
});
next.addListener(13, new Listener() {
final Wizard this$0;
public void handleEvent(Event arg0)
{
IWizardPanel nextPanel = currentPanel.getNextPanel();
clearPanel();
currentPanel = nextPanel;
refresh();
}
{
this$0 = Wizard.this;
super();
}
});
finish.addListener(13, new Listener() {
final Wizard this$0;
public void handleEvent(Event arg0)
{
finishSelected();
}
{
this$0 = Wizard.this;
super();
}
});
cancel.addListener(13, new Listener() {
final Wizard this$0;
public void handleEvent(Event arg0)
{
wizardWindow.dispose();
}
{
this$0 = Wizard.this;
super();
}
});
wizardWindow.addDisposeListener(new DisposeListener() {
final Wizard this$0;
public void widgetDisposed(DisposeEvent de)
{
onClose();
}
{
this$0 = Wizard.this;
super();
}
});
wizardWindow.addListener(31, new Listener() {
final Wizard this$0;
public void handleEvent(Event e)
{
if (e.character == '\033' && cancel.isEnabled())
wizardWindow.dispose();
}
{
this$0 = Wizard.this;
super();
}
});
wizardHeight = wizardWindow.computeSize(500, -1).y - 50;
wizardWindow.setSize(500, 400);
}
private void finishSelected()
{
if (currentPanel.isFinishSelectionOK())
{
wizardWindow.addListener(21, closeCatcher);
clearPanel();
currentPanel = currentPanel.getFinishPanel();
refresh();
currentPanel.finish();
}
}
private void clearPanel()
{
Control controls[] = panel.getChildren();
for (int i = 0; i < controls.length; i++)
if (controls[i] != null && !controls[i].isDisposed())
controls[i].dispose();
setTitle("");
setCurrentInfo("");
}
private void refresh()
{
if (currentPanel == null)
{
setDefaultButton();
return;
} else
{
previous.setEnabled(currentPanel.isPreviousEnabled());
next.setEnabled(currentPanel.isNextEnabled());
finish.setEnabled(currentPanel.isFinishEnabled());
setDefaultButton();
currentPanel.show();
panel.layout();
panel.redraw();
insureSize();
return;
}
}
private void setDefaultButton()
{
if (!wizardWindow.isDisposed())
display.asyncExec(new AERunnable() {
final Wizard this$0;
public void runSupport()
{
if (!wizardWindow.isDisposed())
{
Button default_button = null;
if (next.isEnabled())
default_button = next;
else
if (finish.isEnabled())
default_button = finish;
else
if (previous.isEnabled())
default_button = previous;
else
if (cancel.isEnabled())
default_button = cancel;
if (default_button != null)
wizardWindow.setDefaultButton(default_button);
}
}
{
this$0 = Wizard.this;
super();
}
});
}
public Composite getPanel()
{
return panel;
}
public void setTitle(String title)
{
this.title.setText(title);
}
public void setTitleAsResourceID(String id)
{
Messages.setLanguageText(title, id);
}
public void setCurrentInfo(String currentInfo)
{
this.currentInfo.setText((new StringBuilder()).append("\t").append(currentInfo).toString());
}
public void setErrorMessage(String errorMessage)
{
this.errorMessage.setText(errorMessage);
}
public void setTitleKey(String key)
{
Messages.setLanguageText(wizardWindow, key);
}
public void setNextEnabled(boolean enabled)
{
next.setEnabled(enabled);
setDefaultButton();
}
public void setPreviousEnabled(boolean enabled)
{
previous.setEnabled(enabled);
setDefaultButton();
}
public void setFinishEnabled(boolean enabled)
{
finish.setEnabled(enabled);
setDefaultButton();
}
public void setFirstPanel(IWizardPanel panel)
{
currentPanel = panel;
refresh();
insureSize();
Utils.centreWindow(wizardWindow);
wizardWindow.open();
do
{
if (wizardWindow.isDisposed())
break;
try
{
if (!display.readAndDispatch())
display.sleep();
}
catch (Exception e)
{
Debug.out(e);
}
} while (true);
}
public Shell getWizardWindow()
{
return wizardWindow;
}
public String getErrorMessage()
{
return errorMessage.getText();
}
public Display getDisplay()
{
return display;
}
public void switchToClose()
{
if (!wizardWindow.isDisposed())
display.asyncExec(new AERunnable() {
final Wizard this$0;
public void runSupport()
{
if (closeCatcher != null && wizardWindow != null && !wizardWindow.isDisposed())
{
wizardWindow.removeListener(21, closeCatcher);
cancel.setText(MessageText.getString("wizard.close"));
cancel.setEnabled(true);
setDefaultButton();
}
}
{
this$0 = Wizard.this;
super();
}
});
}
public void onClose()
{
if (titleFont != null && !titleFont.isDisposed())
{
titleFont.dispose();
titleFont = null;
}
for (int i = 0; i < listeners.size(); i++)
((WizardListener)listeners.get(i)).closed();
}
public IWizardPanel getCurrentPanel()
{
return currentPanel;
}
private void insureSize()
{
Point p = panel.computeSize(wizardWindow.getSize().x, -1);
int height = p.y + wizardHeight;
if (height > wizardWindow.getSize().y)
wizardWindow.setSize(p.x, height);
}
public AzureusCore getAzureusCore()
{
return azureus_core;
}
public void addListener(WizardListener l)
{
if (wizardWindow.isDisposed() && closeCatcher != null)
l.closed();
listeners.add(l);
}
public void removeListener(WizardListener l)
{
listeners.remove(l);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -