+++ /dev/null
-/**
- * Copyright (c) 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- */
-package org.eclipse.webbrowser.internal;
-
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.dnd.*;
-import org.eclipse.webbrowser.internal.WebBrowser;
-import org.eclipse.jface.action.Action;
-/**
- * Text actions (cut, copy, paste) for the Web browser.
- */
-public class TextAction extends Action {
- protected WebBrowser browser;
- protected byte type;
-
- public static final byte CUT = 0;
- public static final byte COPY = 1;
- public static final byte PASTE = 2;
-
- /**
- * TextAction constructor comment.
- */
- protected TextAction(WebBrowser browser, byte type) {
- super(type + "!");
- this.browser = browser;
- this.type = type;
- }
-
- /**
- * Copies the selected text to the clipboard. The text will be put in the
- * clipboard in plain text format.
- * <p>
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- */
- public void copy() {
- Point selection = browser.combo.getSelection();
-
- int length = selection.y - selection.x;
- if (length > 0) {
- TextTransfer plainTextTransfer = TextTransfer.getInstance();
- try {
- browser.clipboard.setContents(
- new String[] { browser.combo.getText().substring(selection.x, selection.y) },
- new Transfer[] { plainTextTransfer });
- } catch (SWTError error) {
- // Copy to clipboard failed. This happens when another application
- // is accessing the clipboard while we copy. Ignore the error.
- // Fixes 1GDQAVN
- }
- }
- }
-
- /**
- * Moves the selected text to the clipboard. The text will be put in the
- * clipboard in plain text format and RTF format.
- * <p>
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- */
- public void cut(){
- Point selection = browser.combo.getSelection();
-
- if (selection.y > selection.x) {
- copy();
- delete();
- }
- }
-
- /**
- * Deletes the character to the right of the caret. Delete the selected text if any.
- */
- public void delete() {
- Point selection = browser.combo.getSelection();
- String text = browser.combo.getText();
-
- if (selection.x != selection.y) {
- text = text.substring(0, selection.x) + text.substring(selection.y);
- browser.combo.setText(text);
- browser.combo.setSelection(new Point(selection.x, selection.x));
- }
- }
-
- /**
- * Replaces the selection with the clipboard text or insert the text at
- * the current caret offset if there is no selection.
- * If the widget has the SWT.SINGLE style and the clipboard text contains
- * more than one line, only the first line without line delimiters is
- * inserted in the widget.
- * <p>
- *
- * @exception SWTException <ul>
- * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- */
- public void paste() {
- TextTransfer transfer = TextTransfer.getInstance();
- Point selection = browser.combo.getSelection();
- String text = browser.combo.getText();
-
- String newText = (String) browser.clipboard.getContents(transfer);
- if (newText != null && newText.length() > 0) {
- text = text.substring(0, selection.x) + newText + text.substring(selection.y);
- browser.combo.setText(text);
-
- // set the selection to the end of the paste
- int x = selection.x + newText.length();
- browser.combo.setSelection(new Point(x, x));
- }
- }
-
- /**
- * Implementation of method defined on <code>IAction</code>.
- */
- public void run() {
- if (browser == null || browser.combo == null)
- return;
- if (type == CUT)
- cut();
- else if (type == COPY)
- copy();
- else if (type == PASTE)
- paste();
- }
-
- /**
- *
- */
- protected void update() { }
-}
\ No newline at end of file