package com.aelitis.azureus.ui.swt.devices;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;
import com.aelitis.azureus.core.devices.Device;
import com.aelitis.azureus.core.devices.DeviceTemplate;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
public class
DevicesWizard
{
private DeviceManagerUI device_manager_ui;
private Display display;
private Shell shell;
private Label title;
private Font boldFont;
private Font titleFont;
private Font subTitleFont;
private Font textInputFont;
private Composite main;
private ImageLoader imageLoader;
public
DevicesWizard(
DeviceManagerUI dm_ui )
{
device_manager_ui = dm_ui;
imageLoader = ImageLoader.getInstance();
shell = ShellFactory.createMainShell(SWT.TITLE | SWT.CLOSE | SWT.ICON
| SWT.RESIZE);
shell.setSize(650,400);
Utils.centreWindow(shell);
shell.setMinimumSize(550,400);
display = shell.getDisplay();
Utils.setShellIcon(shell);
createFonts();
shell.setText(MessageText.getString("wizard.device.title"));
shell.addListener(SWT.Dispose, new Listener() {
public void handleEvent(Event event) {
imageLoader.releaseImage("wizard_header_bg");
if(titleFont != null && !titleFont.isDisposed()) {
titleFont.dispose();
}
if(textInputFont != null && !textInputFont.isDisposed()) {
textInputFont.dispose();
}
if(boldFont != null && !boldFont.isDisposed()) {
boldFont.dispose();
}
if(subTitleFont != null && !subTitleFont.isDisposed()) {
subTitleFont.dispose();
}
}
});
Composite header = new Composite(shell, SWT.NONE);
header.setBackgroundMode(SWT.INHERIT_DEFAULT);
header.setBackgroundImage(imageLoader.getImage("wizard_header_bg"));
Label topSeparator = new Label(shell,SWT.SEPARATOR |SWT.HORIZONTAL);
main = new Composite(shell, SWT.NONE);
Label bottomSeparator = new Label(shell,SWT.SEPARATOR |SWT.HORIZONTAL);
Composite footer = new Composite(shell, SWT.NONE);
FormLayout layout = new FormLayout();
shell.setLayout(layout);
FormData data;
data = new FormData();
data.top = new FormAttachment(0,0);
data.left = new FormAttachment(0,0);
data.right = new FormAttachment(100,0);
//data.height = 50;
header.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(header,0);
data.left = new FormAttachment(0,0);
data.right = new FormAttachment(100,0);
topSeparator.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(topSeparator,0);
data.left = new FormAttachment(0,0);
data.right = new FormAttachment(100,0);
data.bottom = new FormAttachment(bottomSeparator,0);
main.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(0,0);
data.right = new FormAttachment(100,0);
data.bottom = new FormAttachment(footer,0);
bottomSeparator.setLayoutData(data);
data = new FormData();
data.bottom = new FormAttachment(100,0);
data.left = new FormAttachment(0,0);
data.right = new FormAttachment(100,0);
footer.setLayoutData(data);
populateHeader(header);
populateFooter(footer);
shell.layout();
shell.open();
}
private void
populateHeader(
Composite header)
{
header.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
title = new Label(header, SWT.WRAP);
title.setFont(titleFont);
title.setText( MessageText.getString("device.wizard.header") );
FillLayout layout = new FillLayout();
layout.marginHeight = 10;
layout.marginWidth = 10;
header.setLayout(layout);
}
private void
createFonts()
{
FontData[] fDatas = shell.getFont().getFontData();
for(int i = 0 ; i < fDatas.length ; i++) {
fDatas[i].setStyle(SWT.BOLD);
}
boldFont = new Font(display,fDatas);
for(int i = 0 ; i < fDatas.length ; i++) {
if(org.gudy.azureus2.core3.util.Constants.isOSX) {
fDatas[i].setHeight(12);
} else {
fDatas[i].setHeight(10);
}
}
subTitleFont = new Font(display,fDatas);
for(int i = 0 ; i < fDatas.length ; i++) {
if(org.gudy.azureus2.core3.util.Constants.isOSX) {
fDatas[i].setHeight(17);
} else {
fDatas[i].setHeight(14);
}
}
titleFont = new Font(display,fDatas);
for(int i = 0 ; i < fDatas.length ; i++) {
if(org.gudy.azureus2.core3.util.Constants.isOSX) {
fDatas[i].setHeight(14);
} else {
fDatas[i].setHeight(12);
}
fDatas[i].setStyle(SWT.NONE);
}
textInputFont = new Font(display,fDatas);
}
private void
populateFooter(
Composite footer)
{
Button cancelButton;
Button createButton;
cancelButton = new Button(footer,SWT.PUSH);
cancelButton.setText(MessageText.getString("Button.cancel"));
createButton = new Button(footer,SWT.PUSH);
createButton.setText(MessageText.getString("device.wizard.create"));
FormLayout layout = new FormLayout();
layout.marginHeight = 5;
layout.marginWidth = 5;
layout.spacing = 5;
footer.setLayout(layout);
FormData data;
data = new FormData();
data.right = new FormAttachment(100);
data.width = 100;
cancelButton.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(0);
data.width = 175;
createButton.setLayoutData(data);
createButton.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
try{
DeviceTemplate[] templates = device_manager_ui.getDeviceManager().getDeviceTemplates( Device.DT_MEDIA_RENDERER );
for ( DeviceTemplate template: templates ){
if ( !template.isAuto()){
Device device = template.createInstance( template.getName() + " test!" );
device.requestAttention();
break;
}
}
}catch( Throwable e ){
Debug.printStackTrace(e);
}
}
});
cancelButton.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
shell.close();
}
});
}
public static void
main(
String args[])
{
final DevicesWizard sw = new DevicesWizard( null );
while( ! sw.shell.isDisposed()) {
if(! sw.display.readAndDispatch()) {
sw.display.sleep();
}
}
sw.display.dispose();
}
}