package org.mobicents.sip.servlet.tooling.wst.server.ui.editor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServerListener;
import org.eclipse.wst.server.core.ServerEvent;
import org.eclipse.wst.server.core.ServerPort;
import org.eclipse.wst.server.ui.editor.ServerEditorPart;
public class ApplicationRouterEditorPart extends
ServerEditorPart {
private Browser browser;
private Label startServerLabel;
private Composite parent;
private void loadMgmtConsole() {
try {
parent.getDisplay().asyncExec(new Runnable() {
public void run() {
if (startServerLabel != null) {
startServerLabel.dispose();
startServerLabel = null;
}
if(browser != null) {
browser.dispose();
browser = null;
}
browser = new Browser(parent, SWT.MOZILLA);
String host = getServer().getOriginal().getHost();
int httpPort = 8080;
ServerPort[] ports = getServer().getOriginal()
.getServerPorts(null);
for (ServerPort port : ports) {
if (port.getProtocol().equalsIgnoreCase("http")) {
httpPort = port.getPort();
}
}
browser.setUrl("http://" + host + ":" + Integer.toString(httpPort)
+ "/sip-servlets-management");
parent.redraw();
browser.redraw();
browser.update();
parent.update();
// The following hack is need to redraw correctly the browser.
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new Thread(){
public void run() {
parent.setSize(parent.getSize().x-1,parent.getSize().y);
parent.getShell().redraw();
}
}.run();
}
});
} catch (Exception e) {
e = e;
}
}
@Override
public void createPartControl(Composite parent) {
try {
this.parent = parent;
int state = getServer().getOriginal().getServerState();
if(state == IServer.STATE_STARTED) {
loadMgmtConsole();
} else {
if(browser != null) browser.dispose();
startServerLabel = new Label(parent, SWT.NONE);
startServerLabel.setText("Sip Servlets management is only available when the server is running. Please start the server and the console will be loaded automatically.");
getServer().getOriginal().addServerListener(new IServerListener() {
public void serverChanged(ServerEvent event) {
if(event.getState() == IServer.STATE_STARTED) {
loadMgmtConsole();
}
}
});
}
} catch (SWTError e) {
}
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
}