package gmarques.androidservlet.activity;
import gmarques.androidservlet.R;
import gmarques.androidservlet.server.ServerRunner;
import gmarques.androidservlet.server.factory.ServerRunnerFactory;
import gmarques.androidservlet.server.factory.ServerRunnerFactory.ServerType;
import gmarques.androidservlet.server.task.RunServerTask;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private RunServerTask task;
private ServerType runningServer;
private Button btnJetty;
private Button btnWinstone;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnJetty = (Button) findViewById(R.id.btnjetty);
btnWinstone = (Button) findViewById(R.id.btnwinstone);
initializeButtons();
updateStatus();
}
private void initializeButtons() {
initializeButton(btnJetty, ServerType.JETTY);
initializeButton(btnWinstone, ServerType.WINSTONE);
}
private void initializeButton(Button button, final ServerType serverType) {
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (runningServer != null) {
if (runningServer != serverType) {
Toast.makeText(getApplicationContext(), runningServer.getDescription() + " is already running", Toast.LENGTH_SHORT).show();
} else {
stopServer();
}
} else {
startServer(serverType);
Toast.makeText(getApplicationContext(), serverType.getDescription() + " server is now running", Toast.LENGTH_SHORT).show();
runningServer = serverType;
}
updateStatus();
}
});
}
private void updateStatus() {
btnJetty.setText(runningServer == ServerType.JETTY ? "Stop Jetty" : "Launch Jetty");
btnWinstone.setText(runningServer == ServerType.WINSTONE ? "Stop Winstone" : "Launch Winstone");
}
private void startServer(ServerType serverType) {
ServerRunner runner = ServerRunnerFactory.createServer(serverType);
task = new RunServerTask(runner);
task.execute();
}
private void stopServer() {
task.stop();
Toast.makeText(getApplicationContext(), runningServer.getDescription() + " server stopped", Toast.LENGTH_SHORT).show();
runningServer = null;
}
}