if(instance != null)
{
instance.open();
return;
}
Properties properties = new Properties();
try {
properties.load(AboutWindow.class.getClassLoader().getResourceAsStream("org/gudy/azureus2/ui/swt/about.properties"));
}
catch (Exception e1) {
Debug.printStackTrace( e1 );
return;
}
final Shell window = ShellFactory.createMainShell((Constants.isOSX)
? SWT.DIALOG_TRIM : (SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL));
Utils.setShellIcon(window);
window.setText(MessageText.getString("MainWindow.about.title") + " " + Constants.AZUREUS_VERSION); //$NON-NLS-1$
GridData gridData;
window.setLayout(new GridLayout(3, false));
image = new Image(display,ImageRepository.getImage("azureus_splash"),SWT.IMAGE_GRAY);
Group gDevelopers = new Group(window, SWT.NULL);
gDevelopers.setLayout(new GridLayout());
Messages.setLanguageText(gDevelopers, "MainWindow.about.section.developers"); //$NON-NLS-1$
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gDevelopers.setLayoutData(gridData);
Label label = new Label(gDevelopers, SWT.LEFT);
label.setText(properties.getProperty("developers")); //$NON-NLS-1$ //$NON-NLS-2$
label.setLayoutData(gridData = new GridData());
final Label labelImage = new Label(window, SWT.NONE);
labelImage.setImage(image);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
labelImage.setLayoutData(gridData);
Group gTranslators = new Group(window, SWT.NULL);
gTranslators.setLayout(new GridLayout());
Messages.setLanguageText(gTranslators, "MainWindow.about.section.translators"); //$NON-NLS-1$
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gTranslators.setLayoutData(gridData);
Text txtTrans = new Text(gTranslators, SWT.READ_ONLY | SWT.MULTI | SWT.WRAP | SWT.NO_FOCUS);
txtTrans.setText(properties.getProperty("translators")); //$NON-NLS-1$ //$NON-NLS-2$
gridData = new GridData(GridData.FILL_BOTH);
txtTrans.setLayoutData(gridData);
txtTrans.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
Group gInternet = new Group(window, SWT.NULL);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
gridLayout.makeColumnsEqualWidth = true;
gInternet.setLayout(gridLayout);
Messages.setLanguageText(gInternet, "MainWindow.about.section.internet"); //$NON-NLS-1$
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
gInternet.setLayoutData(gridData);
Group gSys = new Group(window, SWT.NULL);
gSys.setLayout(new GridLayout());
Messages.setLanguageText(gSys, "MainWindow.about.section.system"); //$NON-NLS-1$
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gridData.verticalSpan = 1;
gSys.setLayoutData(gridData);
Text txtSysInfo = new Text(gSys, SWT.READ_ONLY | SWT.MULTI | SWT.WRAP);
txtSysInfo.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
txtSysInfo.setText("Java " + System.getProperty("java.version") + "\n "
+ System.getProperty("java.vendor") + "\n"
+ "SWT v" + SWT.getVersion() + ", " + SWT.getPlatform() + "\n"
+ System.getProperty("os.name") + " v"
+ System.getProperty("os.version") + ", "
+ System.getProperty("os.arch"));
txtSysInfo.setLayoutData(gridData = new GridData(GridData.FILL_BOTH));
if (window.getCaret() != null)
window.getCaret().setVisible(false);
final String[][] link =
{ { "homepage", "sourceforge", "sourceforgedownloads", "bugreports", "forumdiscussion", "wiki" }, {
Constants.GETAZUREUS_WEB_SITE,
"http://sourceforge.net/projects/azureus/",
"http://sourceforge.net/project/showfiles.php?group_id=84122",
"http://sourceforge.net/tracker/?atid=575154&group_id=84122&func=browse",
"http://sourceforge.net/forum/?group_id=84122",
Constants.AZUREUS_WIKI }
};
for (int i = 0; i < link[0].length; i++) {
final CLabel linkLabel = new CLabel(gInternet, SWT.NULL);
linkLabel.setText(MessageText.getString("MainWindow.about.internet." + link[0][i]));
linkLabel.setData(link[1][i]);
linkLabel.setCursor(Cursors.handCursor);
linkLabel.setForeground(Colors.blue);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
linkLabel.setLayoutData(gridData);
linkLabel.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
Utils.launch((String) ((CLabel) arg0.widget).getData());
}
public void mouseDown(MouseEvent arg0) {
Utils.launch((String) ((CLabel) arg0.widget).getData());
}
});
}
Listener keyListener = new Listener() {
public void handleEvent(Event e) {
if(e.character == SWT.ESC) {
window.dispose();
}
}
};
window.addListener(SWT.KeyUp,keyListener);
window.pack();
txtSysInfo.setFocus();
Utils.centreWindow(window);
window.open();
instance = window;
window.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent event) {
instance = null;
disposeImage();
}
});
Thread updater = new AEThread("Splash Screen Updater") {
public void runSupport() {
if(image == null || image.isDisposed())
return;
final boolean finished[] = new boolean[1];
final int[] x = new int[1];
final int maxX = image.getBounds().width;
final int maxY = image.getBounds().height;
final Image imgSrc = ImageRepository.getImage("azureus_splash");
while(!finished[0]) {
if(image == null || image.isDisposed()) {
finished[0] = true;
break;
}
if(display == null || display.isDisposed()) {
finished[0] = true;
break;
}
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if(labelImage.isDisposed())
return;
GC gcImage = new GC(labelImage);
gcImage.setClipping(x[0],0,1,maxY);
gcImage.drawImage(imgSrc,0,0);
gcImage.dispose();
x[0]++;
if(x[0] >= maxX) {
finished[0] = true;
labelImage.setImage(imgSrc);
}
}
});
try {
Thread.sleep(30);
}catch(Exception e) {
Debug.printStackTrace( e );
}
}
}};
updater.start();