private void onTranslate(final String mode) {
		new Thread() {
			public void run() {
				try {
					copyMarkedText();
					final String text = getClipboardData();
					
					if(text != null) {
						translator = createSelectedTranslator();
						if(translator == null) return;
						translator.setFrom(gui.getComboFrom().getSelectedItem());
						translator.setTo(gui.getComboTo().getSelectedItem());
						List<String> translations = translator.translateSingleWord(text);
						if(translations != null) {
							String translation = "";
							for(String s : translations) {
								translation += s + "\n";
							}
							final String t = translation;
							Runnable setTranslation = new Runnable(){ public void run(){ 
								if(mode.equals("NORMAL"))
									setTranslationResultNormal(t);
								else 
									setTranslationResultOverlay(text, t);
							} };
						    Display.getDefault().asyncExec(setTranslation);
						}
					}
					if(robot == null) return;
					robot.keyPress(27); // escape druecken, um Markierungsbugs zu vermeiden
					robot.keyRelease(27);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}.start();
	}