/*******************************************************************************
* Copyright (c) 2011, Christian Gruber and MEDEVIT OG
* All rights reserved.
*******************************************************************************/
package at.gruber.elexis.mythic22.command;
import java.util.Map;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.State;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.menus.IMenuStateIds;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.menus.UIElement;
import at.gruber.elexis.mythic22.netlistener.NetListener;
import at.gruber.elexis.mythic22.ui.Preferences;
import at.medevit.elexis.mythic22.EarlyStartup;
import ch.elexis.core.data.activator.CoreHub;
import de.ralfebert.rcputils.handler.ToggleHandler;
/**
* The command, which is used in the Lab toolbar to start and stop the listener for incoming
* mythic22 results
*
* @author Christian, modified by M. Descher to use a ToggleHandler
*
*/
public class ServerControl extends ToggleHandler {
public static final String ID = "at.gruber.elexis.mythic22.ui.ServerControl";
private NetListener m_netlistener;
private boolean earlyStartup;
@Override
protected void executeToggle(ExecutionEvent event, boolean checked){
earlyStartup = Boolean.parseBoolean(event.getParameter(EarlyStartup.PARAM_EARLYSTARTUP));
if (checked) {
if (m_netlistener == null)
m_netlistener =
new NetListener(Integer.parseInt(CoreHub.localCfg.get(Preferences.CFG_PORT,
"1200")));
m_netlistener.startContinousRead();
if (!earlyStartup)
MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getShell(), Messages.ServerControl_1, Messages.ServerControl_3);
} else {
if (m_netlistener != null) {
m_netlistener.requestThreadToStop();
if (!earlyStartup)
MessageDialog.openInformation(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getShell(), Messages.ServerControl_1,
Messages.ServerControl_5);
}
}
}
@Override
public void updateElement(final UIElement element, Map parameters){
ICommandService commandService =
(ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
Command command = commandService.getCommand(ID);
final State state = command.getState(IMenuStateIds.STYLE);
if (state != null) {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
@Override
public void run(){
element.setChecked((Boolean) state.getValue());
}
});
}
}
}