package com.aelitis.azureus.ui.swt.shells.main;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.ui.swt.donations.DonationWindow;
import org.gudy.azureus2.ui.swt.shells.CoreWaiterSWT;
import org.gudy.azureus2.ui.swt.shells.MessageBoxShell;
import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreRunningListener;
import com.aelitis.azureus.ui.UIFunctionsManager;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.UIFunctionsSWT;
import com.aelitis.azureus.ui.swt.skin.SWTSkin;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObjectContainer;
import com.aelitis.azureus.ui.swt.views.skin.VuzeMessageBox;
import com.aelitis.azureus.ui.swt.views.skin.VuzeMessageBoxListener;
import com.aelitis.azureus.util.ConstantsVuze;
/**
* A convenience class for creating the Debug menu
* <p>
* This has been extracted out into its own class since it does not really belong to production code
* @author knguyen
*
*/
public class DebugMenuHelper
{
/**
* Creates the Debug menu and its children
* NOTE: This is a development only menu and so it's not modularized into separate menu items
* because this menu is always rendered in its entirety
* @param menu
* @param mainWindow
* @return
*/
public static MenuItem createDebugMenuItem(final Menu menuDebug) {
MenuItem item;
final UIFunctionsSWT uiFunctions = UIFunctionsManagerSWT.getUIFunctionsSWT();
if (null == uiFunctions) {
throw new IllegalStateException(
"UIFunctionsManagerSWT.getUIFunctionsSWT() is returning null");
}
item = new MenuItem(menuDebug, SWT.CASCADE);
item.setText("Run GC");
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.gc();
}
});
item = new MenuItem(menuDebug, SWT.PUSH);
item.setText("&CoreReq");
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
CoreWaiterSWT.waitForCoreRunning(new AzureusCoreRunningListener() {
public void azureusCoreRunning(AzureusCore core) {
new MessageBoxShell(0, "Done", "Core Now Avail").open(null);
}
});
}
});
/*
item = new MenuItem(menuDebug, SWT.CASCADE);
item.setText("Subscriptions");
Menu menuSubscriptions = new Menu(menuDebug.getParent(), SWT.DROP_DOWN);
item.setMenu(menuSubscriptions);
item = new MenuItem(menuSubscriptions, SWT.NONE);
item.setText("Create RSS Feed");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
final Shell shell = new Shell(uiFunctions.getMainShell());
shell.setLayout(new FormLayout());
Label label = new Label(shell,SWT.NONE);
label.setText("RSS Feed URL :");
final Text urlText = new Text(shell,SWT.BORDER);
urlText.setText(Utils.getLinkFromClipboard(shell.getDisplay(),false));
Label separator = new Label(shell,SWT.SEPARATOR | SWT.HORIZONTAL);
Button cancel = new Button(shell,SWT.PUSH);
cancel.setText("Cancel");
Button ok = new Button(shell,SWT.PUSH);
ok.setText("Ok");
FormData data;
data = new FormData();
data.left = new FormAttachment(0,5);
data.right = new FormAttachment(100,-5);
data.top = new FormAttachment(0,5);
label.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(0,5);
data.right = new FormAttachment(100,-5);
data.top = new FormAttachment(label);
data.width = 400;
urlText.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(0,5);
data.right = new FormAttachment(100,-5);
data.top = new FormAttachment(urlText);
separator.setLayoutData(data);
data = new FormData();
data.right = new FormAttachment(ok);
data.width = 100;
data.top = new FormAttachment(separator);
cancel.setLayoutData(data);
data = new FormData();
data.right = new FormAttachment(100,-5);
data.width = 100;
data.top = new FormAttachment(separator);
ok.setLayoutData(data);
cancel.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
shell.dispose();
}
});
ok.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
String url_str = urlText.getText();
shell.dispose();
try{
URL url = new URL( url_str );
SubscriptionManagerFactory.getSingleton().createSingletonRSS( url_str, url, 120, true );
}catch( Throwable e ){
Debug.printStackTrace(e);
}
}
});
shell.pack();
Utils.centerWindowRelativeTo(shell, uiFunctions.getMainShell());
shell.open();
shell.setFocus();
urlText.setFocus();
}
});
*/
item = new MenuItem(menuDebug, SWT.CASCADE);
item.setText("DW");
Menu menuBrowserTB = new Menu(menuDebug.getParent(), SWT.DROP_DOWN);
item.setMenu(menuBrowserTB);
item = new MenuItem(menuBrowserTB, SWT.NONE);
item.setText("popup check");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
boolean oldDebug = DonationWindow.DEBUG;
DonationWindow.DEBUG = true;
DonationWindow.checkForDonationPopup();
DonationWindow.DEBUG = oldDebug;
}
});
item = new MenuItem(menuBrowserTB, SWT.NONE);
item.setText("show");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
boolean oldDebug = DonationWindow.DEBUG;
DonationWindow.DEBUG = true;
DonationWindow.open(true, "debug");
DonationWindow.DEBUG = oldDebug;
}
});
item = new MenuItem(menuDebug, SWT.NONE);
item.setText("Alerts");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
String text = "This is a long message with lots of information and "
+ "stuff you really should read. Are you still reading? Good, because "
+ "reading <a href=\"http://moo.com\">stimulates</a> the mind.\n\nYeah Baby.";
LogAlert logAlert = new LogAlert(true, LogAlert.AT_INFORMATION, "Simple");
Logger.log(logAlert);
logAlert = new LogAlert(true, LogAlert.AT_WARNING, text);
logAlert.details = "Details: \n\n" + text;
Logger.log(logAlert);
logAlert = new LogAlert(true, LogAlert.AT_ERROR, "ShortText");
logAlert.details = "Details";
Logger.log(logAlert);
}
});
item = new MenuItem(menuDebug, SWT.NONE);
item.setText("MsgBox");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
VuzeMessageBox box = new VuzeMessageBox("Title", "Text", new String[] { "Ok", "Cancel" }, 0);
box.setListener(new VuzeMessageBoxListener() {
public void shellReady(Shell shell, SWTSkinObjectContainer soExtra) {
SWTSkin skin = soExtra.getSkin();
skin.createSkinObject("dlg.generic.test", "dlg.generic.test", soExtra);
skin.layout(soExtra);
shell.layout(true, true);
}
});
box.open(null);
}
});
item = new MenuItem(menuDebug, SWT.CASCADE);
item.setText("Size");
Menu menuSize = new Menu(menuDebug.getParent(), SWT.DROP_DOWN);
item.setMenu(menuSize);
int[] sizes = {
640, 430,
800, 550,
1024, 718,
1280, 700,
};
for (int i = 0; i < sizes.length; i += 2) {
final int x = sizes[i];
final int y = sizes[i + 1];
item = new MenuItem(menuSize, SWT.NONE);
item.setText("" + x + "," + y);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
UIFunctionsManagerSWT.getUIFunctionsSWT().getMainShell().setSize(x, y);
}
});
}
return item;
}
}