diff options
Diffstat (limited to 'examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java')
-rwxr-xr-x | examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java deleted file mode 100755 index 1e55871502..0000000000 --- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/texteditor/TextEditor.java +++ /dev/null @@ -1,348 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 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 Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.examples.texteditor; - - -import org.eclipse.swt.*; -import org.eclipse.swt.custom.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import java.util.*; - -/** - */ -public class TextEditor { - Shell shell; - ToolBar toolBar; - StyledText text; - - Images images = new Images(); - Vector cachedStyles = new Vector(); - Color RED = null; - Color BLUE = null; - Color GREEN = null; - Font font = null; - - boolean isBold = false; - - ExtendedModifyListener extendedModifyListener; - static ResourceBundle resources = ResourceBundle.getBundle("examples_texteditor"); - -Menu createEditMenu() { - Menu bar = shell.getMenuBar (); - Menu menu = new Menu (bar); - - MenuItem item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Cut_menuitem")); - item.setAccelerator(SWT.MOD1 + 'X'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - handleCutCopy(); - text.cut(); - } - }); - - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Copy_menuitem")); - item.setAccelerator(SWT.MOD1 + 'C'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - handleCutCopy(); - text.copy(); - } - }); - - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Paste_menuitem")); - item.setAccelerator(SWT.MOD1 + 'V'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - text.paste(); - } - }); - - new MenuItem (menu, SWT.SEPARATOR); - - item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Font_menuitem")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - setFont(); - } - }); - return menu; -} - -Menu createFileMenu() { - Menu bar = shell.getMenuBar (); - Menu menu = new Menu (bar); - - MenuItem item = new MenuItem (menu, SWT.PUSH); - item.setText (resources.getString("Exit_menuitem")); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - shell.close (); - } - }); - - return menu; -} - -/* - * Set the text state to bold. - */ -void bold(boolean bold) { - isBold = bold; - Point sel = text.getSelectionRange(); - if ((sel != null) && (sel.y != 0)) { - StyleRange style; - int fontStyle = SWT.NORMAL; - if (isBold) fontStyle = SWT.BOLD; - style = new StyleRange(sel.x, sel.y, null, null, fontStyle); - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} -/* - * Clear all style data for the selected text. - */ -void clear() { - Point sel = text.getSelectionRange(); - if ((sel != null) && (sel.y != 0)) { - StyleRange style; - style = new StyleRange(sel.x, sel.y, null, null, SWT.NORMAL); - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} -/* - * Set the foreground color for the selected text. - */ -void fgColor(int color) { - Point sel = text.getSelectionRange(); - if ((sel == null) || (sel.y == 0)) return; - Color fg; - if (color == SWT.COLOR_RED) { - fg = RED; - } else if (color == SWT.COLOR_GREEN) { - fg = GREEN; - } else if (color == SWT.COLOR_BLUE) { - fg = BLUE; - } else { - fg = null; - } - StyleRange style; - for (int i = sel.x; i<sel.x+sel.y; i++) { - StyleRange range = text.getStyleRangeAtOffset(i); - if (range == null) {style = new StyleRange(i, 1, fg, null, SWT.NORMAL);} - else {style = new StyleRange(i, 1, fg, null, range.fontStyle);}; - text.setStyleRange(style); - } - text.setSelectionRange(sel.x + sel.y, 0); -} -void createMenuBar () { - Menu bar = new Menu (shell, SWT.BAR); - shell.setMenuBar (bar); - - MenuItem fileItem = new MenuItem (bar, SWT.CASCADE); - fileItem.setText (resources.getString("File_menuitem")); - fileItem.setMenu (createFileMenu ()); - - MenuItem editItem = new MenuItem (bar, SWT.CASCADE); - editItem.setText (resources.getString("Edit_menuitem")); - editItem.setMenu (createEditMenu ()); -} - -void createShell (Display display) { - shell = new Shell (display); - shell.setText (resources.getString("Window_title")); - images.loadAll (display); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - shell.setLayout(layout); - shell.addDisposeListener (new DisposeListener () { - public void widgetDisposed (DisposeEvent e) { - if (font != null) font.dispose(); - images.freeAll (); - RED.dispose(); - GREEN.dispose(); - BLUE.dispose(); - } - }); -} -void createStyledText() { - initializeColors(); - text = new StyledText (shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - GridData spec = new GridData(); - spec.horizontalAlignment = GridData.FILL; - spec.grabExcessHorizontalSpace = true; - spec.verticalAlignment = GridData.FILL; - spec.grabExcessVerticalSpace = true; - text.setLayoutData(spec); - extendedModifyListener = new ExtendedModifyListener() { - public void modifyText(ExtendedModifyEvent e) { - handleExtendedModify(e); - } - }; - text.addExtendedModifyListener(extendedModifyListener); -} - -void createToolBar() { - toolBar = new ToolBar(shell, SWT.NULL); - - ToolItem item = new ToolItem(toolBar, SWT.CHECK); - item.setImage(images.Bold); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - bold(((ToolItem)event.widget).getSelection()); - } - }); - - item = new ToolItem(toolBar, SWT.SEPARATOR); - - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Red); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(SWT.COLOR_RED); - } - }); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Green); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(SWT.COLOR_GREEN); - } - }); - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Blue); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - fgColor(SWT.COLOR_BLUE); - } - }); - - item = new ToolItem(toolBar, SWT.SEPARATOR); - - item = new ToolItem(toolBar, SWT.PUSH); - item.setImage(images.Erase); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - clear(); - } - }); -} -void displayError(String msg) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage(msg); - box.open(); -} -/* - * Cache the style information for text that has been cut or copied. - */ -void handleCutCopy() { - // Save the cut/copied style info so that during paste we will maintain - // the style information. Cut/copied text is put in the clipboard in - // RTF format, but is not pasted in RTF format. The other way to - // handle the pasting of styles would be to access the Clipboard directly and - // parse the RTF text. - cachedStyles = new Vector(); - Point sel = text.getSelectionRange(); - int startX = sel.x; - for (int i=sel.x; i<=sel.x+sel.y-1; i++) { - StyleRange style = text.getStyleRangeAtOffset(i); - if (style != null) { - style.start = style.start - startX; - if (!cachedStyles.isEmpty()) { - StyleRange lastStyle = (StyleRange)cachedStyles.lastElement(); - if (lastStyle.similarTo(style) && lastStyle.start + lastStyle.length == style.start) { - lastStyle.length++; - } else { - cachedStyles.addElement(style); - } - } else { - cachedStyles.addElement(style); - } - } - } -} -void handleExtendedModify(ExtendedModifyEvent event) { - if (event.length == 0) return; - StyleRange style; - if (event.length == 1 || text.getTextRange(event.start, event.length).equals(text.getLineDelimiter())) { - // Have the new text take on the style of the text to its right (during - // typing) if no style information is active. - int caretOffset = text.getCaretOffset(); - style = null; - if (caretOffset < text.getCharCount()) style = text.getStyleRangeAtOffset(caretOffset); - if (style != null) { - style.start = event.start; - style.length = event.length; - int fontStyle = SWT.NORMAL; - if (isBold) fontStyle = SWT.BOLD; - style.fontStyle = fontStyle; - text.setStyleRange(style); - } else if (isBold) { - StyleRange newStyle = new StyleRange(event.start, event.length, null, null, SWT.BOLD); - text.setStyleRange(newStyle); - } - } else { - // paste occurring, have text take on the styles it had when it was - // cut/copied - for (int i=0; i<cachedStyles.size(); i++) { - style = (StyleRange)cachedStyles.elementAt(i); - StyleRange newStyle = (StyleRange)style.clone(); - newStyle.start = style.start + event.start; - text.setStyleRange(newStyle); - } - } -} - -public static void main (String [] args) { - Display display = new Display (); - TextEditor example = new TextEditor (); - Shell shell = example.open (display); - while (!shell.isDisposed ()) - if (!display.readAndDispatch ()) display.sleep (); - display.dispose (); -} - -public Shell open (Display display) { - createShell (display); - createMenuBar (); - createToolBar (); - createStyledText (); - shell.setSize(500, 300); - shell.open (); - return shell; -} - -void setFont() { - FontDialog fontDialog = new FontDialog(shell); - fontDialog.setFontList((text.getFont()).getFontData()); - FontData fontData = fontDialog.open(); - if(fontData != null) { - if(font != null) - font.dispose(); - font = new Font(shell.getDisplay(), fontData); - text.setFont(font); - } -} - -void initializeColors() { - Display display = Display.getDefault(); - RED = new Color (display, new RGB(255,0,0)); - BLUE = new Color (display, new RGB(0,0,255)); - GREEN = new Color (display, new RGB(0,255,0)); -} -} |