public void setConnectedState(final ConnectionState state) {
		SwingUtilities.invokeLater( new Runnable() {
			public void run() {
				switch (state) {
				case CONNECTED: 
					mntmConnect.setEnabled(false);
					mntmDisconnect.setEnabled(true);
					mntmDownloadData.setEnabled(true);
					mntmEraseLogger.setEnabled(true);
					mntmSettings.setEnabled(true);
					mnSerialPort.setEnabled(false);
					mntmUploadSelectionerases.setEnabled(true);
					// os specific function
					if (controller.os != OS.OTHER) 
						mntmFlashFirmware.setEnabled(true);
					break;
				case DISCONNECTED: 
					mntmConnect.setEnabled(true);
					mntmDisconnect.setEnabled(false);
					mntmDownloadData.setEnabled(false);
					mntmEraseLogger.setEnabled(false);
					mntmSettings.setEnabled(false);
					mnSerialPort.setEnabled(true);
					mntmUploadSelectionerases.setEnabled(false);
					// os specific function
					if (controller.os != OS.OTHER) 
						mntmFlashFirmware.setEnabled(true);
					break;
				case BUSY: 
					mntmConnect.setEnabled(false);
					mntmDisconnect.setEnabled(false);
					mntmDownloadData.setEnabled(false);
					mntmEraseLogger.setEnabled(false);
					mntmSettings.setEnabled(false);
					mnSerialPort.setEnabled(false);
					mntmUploadSelectionerases.setEnabled(false);
					// os specific function
					if (controller.os != OS.OTHER) 
						mntmFlashFirmware.setEnabled(false);
					break;
				}
			}
		});
	}