Results 1 to 1 of 1
Thread: SWT Undo Redo
-
SWT Undo Redo
Java Code:import java.util.LinkedList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ExtendedModifyEvent; import org.eclipse.swt.custom.ExtendedModifyListener; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; public class Ch5Undoable extends Composite { private static final int MAX_STACK_SIZE = 25; private List undoStack; private List redoStack; private StyledText styledText; public Ch5Undoable(Composite parent) { super(parent, SWT.NONE); undoStack = new LinkedList(); redoStack = new LinkedList(); buildControls(); } private void buildControls() { this.setLayout(new FillLayout()); styledText = new StyledText(this, SWT.MULTI | SWT.V_SCROLL); styledText.addExtendedModifyListener(new ExtendedModifyListener() { public void modifyText(ExtendedModifyEvent event) { String currText = styledText.getText(); String newText = currText.substring(event.start, event.start + event.length); if (newText != null && newText.length() > 0) { if (undoStack.size() == MAX_STACK_SIZE) { undoStack.remove(undoStack.size() - 1); } undoStack.add(0, newText); } } }); styledText.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { switch (e.keyCode) { case SWT.F1: undo(); break; case SWT.F2: redo(); break; default: //ignore everything else } } }); } private void undo() { if (undoStack.size() > 0) { String lastEdit = (String) undoStack.remove(0); int editLength = lastEdit.length(); String currText = styledText.getText(); int startReplaceIndex = currText.length() - editLength; styledText.replaceTextRange(startReplaceIndex, editLength, ""); redoStack.add(0, lastEdit); } } private void redo() { if (redoStack.size() > 0) { String text = (String) redoStack.remove(0); moveCursorToEnd(); styledText.append(text); moveCursorToEnd(); } } private void moveCursorToEnd() { styledText.setCaretOffset(styledText.getText().length()); } }"The sole cause of man’s unhappiness is that he does not know how to stay quietly in his room." - Blaise Pascal
Similar Threads
-
add an undo listener to a Jtable
By christina in forum Advanced JavaReplies: 12Last Post: 01-29-2009, 07:47 AM -
Undo/Redo JTextArea
By Java Tip in forum javax.swingReplies: 0Last Post: 06-27-2008, 07:52 PM -
Undo Folder Drag and Drop
By natel in forum EclipseReplies: 0Last Post: 04-08-2008, 11:01 PM -
Undo shortcut malfunctioning.
By Eranga in forum NetBeansReplies: 0Last Post: 03-31-2008, 05:12 AM -
undo java
By new214 in forum New To JavaReplies: 1Last Post: 11-20-2007, 09:16 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks