void installListeners() {
		styledText.addCaretListener(new CaretListener() {
			public void caretMoved(CaretEvent event) {
				updateStatusBar();
				updateToolBar();
			}
		});
		styledText.addListener(SWT.MouseUp, new Listener() {
			public void handleEvent(Event event) {
				handleMouseUp(event);
			}
		});
		styledText.addListener(SWT.KeyDown, new Listener() {
			public void handleEvent(Event event) {
				handleKeyDown(event);
			}
		});
		styledText.addVerifyListener(new VerifyListener() {
			public void verifyText(VerifyEvent event) {
				handleVerifyText(event);
			}
		});
		styledText.addModifyListener(new ModifyListener(){
			public void modifyText(ModifyEvent event) {
				handleModify(event);
			}
		});
		styledText.addPaintObjectListener(new PaintObjectListener() {
			public void paintObject(PaintObjectEvent event) {
				handlePaintObject(event);
			}
		});
		styledText.addListener(SWT.Dispose, new Listener() {
			public void handleEvent(Event event) {
				StyleRange[] styles = styledText.getStyleRanges(0, styledText.getCharCount(), false);
				for (int i = 0; i < styles.length; i++) {
					Object data = styles[i].data;
					if (data != null) {
						if (data instanceof Image) ((Image)data).dispose();
						if (data instanceof Control) ((Control)data).dispose();
					}
				}
			}
		});
		shell.addControlListener(new ControlAdapter() {
			public void controlResized(ControlEvent event) {
				handleResize(event);
			}
		});
	}