| package org.eclipse.epf.richtext.actions; |
| |
| import org.eclipse.epf.richtext.IRichText; |
| import org.eclipse.epf.richtext.RichTextCommand; |
| import org.eclipse.epf.richtext.RichTextEditor; |
| import org.eclipse.epf.richtext.RichTextImages; |
| import org.eclipse.epf.richtext.RichTextResources; |
| import org.eclipse.swt.dnd.Clipboard; |
| import org.eclipse.swt.dnd.TextTransfer; |
| import org.eclipse.swt.widgets.Display; |
| |
| public class PastePlainTextAction extends RichTextAction { |
| |
| protected final String LINE_FEED = System.getProperty("line.separator"); //$NON-NLS-1$ |
| |
| protected final String LINE_FEED_REGEX = LINE_FEED.replaceAll("\\\\", "\\\\"); //$NON-NLS-1$ //$NON-NLS-2$ |
| |
| protected final String HTML_BREAK = "<br/>";//$NON-NLS-1$ |
| |
| /** |
| * Creates a new instance. |
| */ |
| public PastePlainTextAction() { |
| super(); |
| // TODO need image |
| setImage(RichTextImages.IMG_PASTE); |
| // TODO need image |
| setDisabledImage(RichTextImages.DISABLED_IMG_PASTE); |
| setToolTipText(RichTextResources.pastePlainTextAction_toolTipText); |
| setEnabled(true); |
| } |
| |
| /** |
| * Returns <code>true</code> if this action should be disabled when the |
| * rich text editor is in source edit mode. |
| */ |
| public boolean disableInSourceMode() { |
| return false; |
| } |
| |
| public void execute(IRichText richText) { |
| if (richText != null) { |
| // get text from clipboard |
| Clipboard clipboard = new Clipboard(Display.getCurrent()); |
| String text = (String) clipboard.getContents(TextTransfer |
| .getInstance()); |
| if (text != null && text.length() > 0) { |
| text = text.replaceAll(LINE_FEED_REGEX, HTML_BREAK + LINE_FEED); |
| if (richText instanceof RichTextEditor) { |
| ((RichTextEditor)richText).addHTML(text); |
| } else { |
| richText.executeCommand(RichTextCommand.ADD_HTML, text); |
| } |
| } |
| } |
| } |
| |
| } |