public void mouseDown(MouseEvent event) {
		if (event.button == 1) {
			// draw with left mouse button
			getPaintSurface().commitRubberbandSelection();
		} else {
			// set text with right mouse button
			getPaintSurface().clearRubberbandSelection();
			Shell shell = getPaintSurface().getShell();
			final Shell dialog = new Shell(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
			dialog.setText(PaintExample.getResourceString("tool.Text.dialog.title"));
			dialog.setLayout(new GridLayout());
			Label label = new Label(dialog, SWT.NONE);
			label.setText(PaintExample.getResourceString("tool.Text.dialog.message"));
			label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
			final Text field = new Text(dialog, SWT.SINGLE | SWT.BORDER);
			field.setText(drawText);
			field.selectAll();
			field.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
			Composite buttons = new Composite(dialog, SWT.NONE);
			GridLayout layout = new GridLayout(2, true);
			layout.marginWidth = 0;
			buttons.setLayout(layout);
			buttons.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false));
			Button ok = new Button(buttons, SWT.PUSH);
			ok.setText(PaintExample.getResourceString("OK"));
			ok.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
			ok.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					drawText = field.getText();
					dialog.dispose();
				}
			});
			Button cancel = new Button(buttons, SWT.PUSH);
			cancel.setText(PaintExample.getResourceString("Cancel"));
			cancel.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					dialog.dispose();
				}
			});
			dialog.setDefaultButton(ok);
			dialog.pack();
			dialog.open();
			Display display = dialog.getDisplay();
			while (! shell.isDisposed() && ! dialog.isDisposed()) {
				if (! display.readAndDispatch()) display.sleep();
			}
		}	
	}