To many undo redo button

Hi to everyone!!!
I need your advice for my problem!!
when I cliked new in the file to create a new JTextPane the undo redo button will multiply and if I have so many JTextPane then I have many undo redo in my toolbar
here is my code.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.util.*;
import javax.swing.undo.*;
public class URTest extends JFrame {
     JToolBar toolBar = new JToolBar();
     JButton undo;
     JButton redo = new JButton("Redo");
     JMenuBar menuBar = new JMenuBar();
     JMenu menu = new JMenu("File");
     JMenuItem item = new JMenuItem("New");
     JMenuItem item2 = new JMenuItem("Close");
     JTabbedPane tabbedPane = new JTabbedPane();
     JTextPane pane;
     public URTest() {
          item.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                    create();
          item2.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                    removeCreate();
          menu.add(item);
          menu.add(item2);
          menuBar.add(menu);
          this.add(toolBar,BorderLayout.NORTH);
          this.add(tabbedPane);
          this.setJMenuBar(menuBar);
     void create() {
          undo = new JButton("Undo");
          redo = new JButton("Redo");
          pane = new JTextPane();
          EditorKit editorKit = new StyledEditorKit() {
               public Document createDefaultDocument() {
                    return new SyntaxDocument();
          pane.setEditorKit(editorKit);
          final CompoundUndoManager undoManager = new CompoundUndoManager( pane );
          undo.addActionListener( new ActionListener()
               public void actionPerformed(ActionEvent e)
                    try
                         undoManager.undo();
                         pane.requestFocus();
                    catch (CannotUndoException ex)
                         System.out.println("Unable to undo: " + ex);
          redo.addActionListener( new ActionListener()
               public void actionPerformed(ActionEvent e)
                    try
                         undoManager.redo();
                         pane.requestFocus();
                    catch (CannotRedoException ex)
                         System.out.println("Unable to redo: " + ex);
          toolBar.add(undo);
          toolBar.add(redo);
          tabbedPane.addTab("Tab",pane);
     void removeCreate() {
          tabbedPane.remove(tabbedPane.getSelectedIndex());
     public static void main(String[] args) {
          URTest frame = new URTest();
          frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
          frame.setSize(400,400);
          frame.setVisible(true);
class CompoundUndoManager extends UndoManager
     implements UndoableEditListener, DocumentListener
     public CompoundEdit compoundEdit;
     private JTextComponent editor;
     //  These fields are used to help determine whether the edit is an
     //  incremental edit. For each character added the offset and length
     //  should increase by 1 or decrease by 1 for each character removed.
     private int lastOffset;
     private int lastLength;
     public CompoundUndoManager(JTextComponent editor)
          this.editor = editor;
          editor.getDocument().addUndoableEditListener( this );
     **  Add a DocumentLister before the undo is done so we can position
     **  the Caret correctly as each edit is undone.
     public void undo()
          editor.getDocument().addDocumentListener( this );
          super.undo();
          editor.getDocument().removeDocumentListener( this );
     **  Add a DocumentLister before the redo is done so we can position
     **  the Caret correctly as each edit is redone.
     public void redo()
          editor.getDocument().addDocumentListener( this );
          super.redo();
          editor.getDocument().removeDocumentListener( this );
     **  Whenever an UndoableEdit happens the edit will either be absorbed
     **  by the current compound edit or a new compound edit will be started
     public void undoableEditHappened(UndoableEditEvent e)
          //  Start a new compound edit
          if (compoundEdit == null)
               compoundEdit = startCompoundEdit( e.getEdit() );
               lastLength = editor.getDocument().getLength();
               return;
          //  Check for an attribute change
          AbstractDocument.DefaultDocumentEvent event =
               (AbstractDocument.DefaultDocumentEvent)e.getEdit();
          if  (event.getType().equals(DocumentEvent.EventType.CHANGE))
               compoundEdit.addEdit( e.getEdit() );
               return;
          //  Check for an incremental edit or backspace.
          //  The change in Caret position and Document length should be either
          //  1 or -1 .
          int offsetChange = editor.getCaretPosition() - lastOffset;
          int lengthChange = editor.getDocument().getLength() - lastLength;
          if (Math.abs(offsetChange) == 1
          &&  Math.abs(lengthChange) == 1)
               compoundEdit.addEdit( e.getEdit() );
               lastOffset = editor.getCaretPosition();
               lastLength = editor.getDocument().getLength();
               return;
          //  Not incremental edit, end previous edit and start a new one
          compoundEdit.end();
          compoundEdit = startCompoundEdit( e.getEdit() );
     **  Each CompoundEdit will store a group of related incremental edits
     **  (ie. each character typed or backspaced is an incremental edit)
     private CompoundEdit startCompoundEdit(UndoableEdit anEdit)
          //  Track Caret and Document information of this compound edit
          lastOffset = editor.getCaretPosition();
          lastLength = editor.getDocument().getLength();
          //  The compound edit is used to store incremental edits
          compoundEdit = new MyCompoundEdit();
          compoundEdit.addEdit( anEdit );
          //  The compound edit is added to the UndoManager. All incremental
          //  edits stored in the compound edit will be undone/redone at once
          addEdit( compoundEdit );
          return compoundEdit;
     //  Implement DocumentListener
     //      Updates to the Document as a result of Undo/Redo will cause the
     //  Caret to be repositioned
     public void insertUpdate(final DocumentEvent e)
          SwingUtilities.invokeLater(new Runnable()
               public void run()
                    int offset = e.getOffset() + e.getLength();
                    offset = Math.min(offset, editor.getDocument().getLength());
                    editor.setCaretPosition( offset );
     public void removeUpdate(DocumentEvent e)
          editor.setCaretPosition(e.getOffset());
     public void changedUpdate(DocumentEvent e)      {}
     class MyCompoundEdit extends CompoundEdit
          public boolean isInProgress()
               //  in order for the canUndo() and canRedo() methods to work
               //  assume that the compound edit is never in progress
               return false;
          public void undo() throws CannotUndoException
               //  End the edit so future edits don't get absorbed by this edit
               if (compoundEdit != null)
                    compoundEdit.end();
               super.undo();
               //  Always start a new compound edit after an undo
               compoundEdit = null;

I was not actually sure what you wanted so I made the wild guess that you actually wanted only one pair of Undo/Redo buttons. Here you go :import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.undo.*;
public class URTest extends JPanel {
     private JMenuBar theMenuBar;
     private JTabbedPane theTabbedPane;
     private List<Pane> thePanes;
     private static class Pane {
          private JTextPane theTextPane;
          private CompoundUndoManager theUndoManager;
          private class CompoundUndoManager extends UndoManager implements UndoableEditListener, DocumentListener {
               public CompoundEdit compoundEdit;
               private int lastOffset;
               private int lastLength;
               public CompoundUndoManager() {
                    compoundEdit = null;
               public void undo() {
                    theTextPane.getDocument().addDocumentListener(this);
                    super.undo();
                    theTextPane.getDocument().removeDocumentListener(this);
               public void redo() {
                    theTextPane.getDocument().addDocumentListener(this);
                    super.redo();
                    theTextPane.getDocument().removeDocumentListener(this);
               public void undoableEditHappened(UndoableEditEvent e) {
                    if (compoundEdit == null) {
                         compoundEdit = startCompoundEdit(e.getEdit());
                         lastLength = theTextPane.getDocument().getLength();
                         return;
                    AbstractDocument.DefaultDocumentEvent event = (AbstractDocument.DefaultDocumentEvent)e.getEdit();
                    if (event.getType().equals(DocumentEvent.EventType.CHANGE)) {
                         compoundEdit.addEdit(e.getEdit());
                         return;
                    int offsetChange = theTextPane.getCaretPosition() - lastOffset;
                    int lengthChange = theTextPane.getDocument().getLength() - lastLength;
                    if (Math.abs(offsetChange) == 1
                         && Math.abs(lengthChange) == 1) {
                         compoundEdit.addEdit(e.getEdit());
                         lastOffset = theTextPane.getCaretPosition();
                         lastLength = theTextPane.getDocument().getLength();
                         return;
                    compoundEdit.end();
                    compoundEdit = startCompoundEdit(e.getEdit());
               private CompoundEdit startCompoundEdit(UndoableEdit anEdit) {
                    lastOffset = theTextPane.getCaretPosition();
                    lastLength = theTextPane.getDocument().getLength();
                    compoundEdit = new MyCompoundEdit();
                    compoundEdit.addEdit(anEdit);
                    addEdit(compoundEdit);
                    return compoundEdit;
               public void insertUpdate(final DocumentEvent e) {
                    SwingUtilities.invokeLater(new Runnable() {
                         public void run() {
                              int offset = e.getOffset() + e.getLength();
                              offset = Math.min(offset, theTextPane.getDocument().getLength());
                              theTextPane.setCaretPosition(offset);
               public void removeUpdate(DocumentEvent e) {
                    theTextPane.setCaretPosition(e.getOffset());
               public void changedUpdate(DocumentEvent e) {}
               class MyCompoundEdit extends CompoundEdit {
                    public boolean isInProgress() {
                         return false;
                    public void undo() throws CannotUndoException {
                         if (compoundEdit != null) compoundEdit.end();
                         super.undo();
                         compoundEdit = null;
          public Pane() {
               theTextPane = new JTextPane();
               theTextPane.setEditorKit(new StyledEditorKit() {
                    public Document createDefaultDocument() {
                         return new SyntaxDocument();
               theUndoManager = new CompoundUndoManager();
               theTextPane.getDocument().addUndoableEditListener(theUndoManager);
          public JTextPane getTextPane() {
               return theTextPane;
          public UndoManager getUndoManager() {
               return theUndoManager;
     public URTest() {
          super(new BorderLayout(5, 5));
          setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
          JToolBar toolBar = new JToolBar();
          toolBar.setFloatable(false);
          toolBar.add(new AbstractAction("Undo") {
               public void actionPerformed(ActionEvent e) {
                    undo();
          toolBar.add(new AbstractAction("Redo") {
               public void actionPerformed(ActionEvent e) {
                    redo();
          add(toolBar, BorderLayout.NORTH);
          thePanes = new LinkedList<Pane>();
          theTabbedPane = new JTabbedPane();
          add(theTabbedPane, BorderLayout.CENTER);
          theMenuBar = new JMenuBar();
          JMenu menu = new JMenu("File");
          menu.add(new AbstractAction("New") {
               public void actionPerformed(ActionEvent e) {
                    create();
          menu.add(new AbstractAction("Close") {
               public void actionPerformed(ActionEvent e) {
                    remove();
          theMenuBar.add(menu);
     public JMenuBar getMenuBar() {
          return theMenuBar;
     private void create() {
          Pane pane = new Pane();
          thePanes.add(pane);
          theTabbedPane.addTab("Tab", pane.getTextPane());
     private void remove() {
          Pane selectedPane = getSelectedPane();
          if (selectedPane == null) return;
          thePanes.remove(selectedPane);
          theTabbedPane.remove(selectedPane.getTextPane());
     private void undo() {
          Pane selectedPane = getSelectedPane();
          if (selectedPane == null) return;
          try {
               selectedPane.getUndoManager().undo();
               selectedPane.getTextPane().requestFocus();
          } catch (CannotUndoException ex) {
               System.out.println("Unable to undo: " + ex);
     private void redo() {
          Pane selectedPane = getSelectedPane();
          if (selectedPane == null) return;
          try {
               selectedPane.getUndoManager().redo();
               selectedPane.getTextPane().requestFocus();
          } catch (CannotRedoException ex) {
               System.out.println("Unable to redo: " + ex);
     private Pane getSelectedPane() {
          Component selectedComponent = theTabbedPane.getSelectedComponent();
          if (selectedComponent == null) return null;
          for (Pane pane : thePanes) {
               if (pane.getTextPane() == selectedComponent) return pane;
          return null;
     private static void test() {
          JFrame f = new JFrame("URTest");
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          URTest urTest = new URTest();
          f.setContentPane(urTest);
          f.setJMenuBar(urTest.getMenuBar());
          f.setSize(400, 400);
          f.setLocationRelativeTo(null);
          f.setVisible(true);
     public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable() {
               public void run() {
                    test();
}Hope it helps.

Similar Messages

  • Undo/Redo button are not performing more than one operation at a time

    Hi,
    I have created undo/redo button on my paint application. But it performing only last action to undo.I have just the code which store offscreen image into undo buffer image like this :
        if (OSC == null || widthOfOSC != getSize().width || heightOfOSC != getSize().height) {
                     // Create the OSC, or make a new one if canvas size has changed.
                 OSC = null;  // (If OSC & undoBuffer already exist, this frees up the memory.)
                 undoBuffer = null;
                 OSC = createImage(getSize().width, getSize().height);
                 widthOfOSC = getSize().width;
                 heightOfOSC = getSize().height;
                 OSG = OSC.getGraphics();  // Graphics context for drawing to OSC.
                 OSG.setColor(getBackground());              
                 OSG.dispose();
                 undoBuffer = createImage(widthOfOSC, heightOfOSC);
                  OSG = undoBuffer.getGraphics();  // Graphics context for drawing to the undoBuffer.
                  OSG.setColor(getBackground());            
                  OSG.fillRect(0, 0,widthOfOSC, heightOfOSC);
                   and the button performed it's action :
    else if (command.equals("Undo")) {
                 // Swap the off-screen canvas with the undoBuffer and repaint.
                 Image temp = OSC;
                 OSC = undoBuffer;
                 undoBuffer = temp;
                 repaint();I want to create undo button that performed end operation on canvas.
    please help me
    Thanks in advance....

    Don't post the same question repeatedly. I've removed the thread you started 4 days after this one with the identical same question.
    db

  • Feature request: Bring back Idea's undo/redo buttons

    I get the convenience of swipe to undo/redo and I've been using it very successfully, but for me the big advantage of drawing on the iPad is the ability to zoom quickly. I'm finding that the undo/redo swipe is getting in the way of pinch/zoom working smoothly. Could we have the option to have a undo/redo button and turn the swipe gesture off? Thanks

    I'd like for the undo and redo buttons to be added back to the tool bar as well. I think the gestures for undo/redo and pan are conflicting (both two fingers and swipe) and it takes a moment for the app to register what gesture you are trying to make. A lot of the time it's delayed or doesn't respond at all. It's just so much easier to tap on the undo/redo buttons than to hold two fingers to the screen and wait for a gesture to register.
    For what it's worth to other users, the gestures seem to respond better when using a pressure sensitive stylus. I'm not sure if that has anything to do with the way the app is designed or if it's because using a pressure sensitive stylus slows down the process enough where you don't notice it as much.

  • Keybindings for undo/redo buttons.

    I thought I knew how to do this, and I do seem to have this working fine for cut/copy/paste/select all keybindings CTRL X/C/V/A respectively.
    However I tried to do this for CTRL X and Y undo/redo and it's not working as I intended. Can anyone see what I'm doing wrong?
    I created a SSCCE based off the original example I was following from: [http://www.java2s.com/Code/Java/Swing-JFC/Undoredotextarea.htm]
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.KeyStroke;
    import javax.swing.event.UndoableEditEvent;
    import javax.swing.event.UndoableEditListener;
    import javax.swing.undo.CannotRedoException;
    import javax.swing.undo.UndoManager;
    public class UndoRedoTextArea extends JFrame implements KeyListener{
        private static final long serialVersionUID = 1L;
        protected JTextArea textArea = new JTextArea();
        protected UndoManager undoManager = new UndoManager();
        protected JButton undoButton = new JButton("Undo");
        protected JButton redoButton = new JButton("Redo");
        public UndoRedoTextArea() {
            super("Undo/Redo Demo");
            undoButton.setEnabled(false);
            redoButton.setEnabled(false);
            JPanel buttonPanel = new JPanel(new GridLayout());
            buttonPanel.add(undoButton);
            buttonPanel.add(redoButton);
            JScrollPane scroller = new JScrollPane(textArea);
            getContentPane().add(buttonPanel, BorderLayout.NORTH);
            getContentPane().add(scroller, BorderLayout.CENTER);
            textArea.getDocument().addUndoableEditListener(
                new UndoableEditListener() {
                    public void undoableEditHappened(UndoableEditEvent e) {
                        undoManager.addEdit(e.getEdit());
                        updateButtons();
            undoButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        undoManager.undo();
                    } catch (CannotRedoException cre) {
                        cre.printStackTrace();
                    updateButtons();
            undoButton.addKeyListener(this);
            redoButton.addKeyListener(this);
            redoButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        undoManager.redo();
                    } catch (CannotRedoException cre)  {
                        cre.printStackTrace();
                    updateButtons();
            setSize(400, 300);
            setVisible(true);
        public void updateButtons() {
            undoButton.setText(undoManager.getUndoPresentationName());
            redoButton.setText(undoManager.getRedoPresentationName());
            undoButton.setEnabled(undoManager.canUndo());
            redoButton.setEnabled(undoManager.canRedo());
        public static void main(String argv[]) {
            new UndoRedoTextArea();
        public void keyPressed(KeyEvent e){
            if (e.equals(KeyStroke.getKeyStroke
                (KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK))){
                // undo
                try {
                    undoManager.undo();
                } catch (CannotRedoException cre)  {
                    cre.printStackTrace();
                updateButtons();
            else if (e.equals(KeyStroke.getKeyStroke
                    (KeyEvent.VK_Y, InputEvent.CTRL_DOWN_MASK))){
                // redo
                try  {
                    undoManager.redo();
                } catch (CannotRedoException cre) {
                    cre.printStackTrace();
                updateButtons();
        public void keyTyped(KeyEvent e){}
        public void keyReleased(KeyEvent e){}
    }Edited by: G-Unit on Oct 24, 2010 5:30 AM

    camickr wrote:
    So the way I posted in the second lump of code OK (3rd post) or did you mean something different? Why did you set the key bindings? Did I not state they would be created automatically? I think you need to reread my suggestion (and the tutorial).Because I don't get it, it says only Menu items can contain accelerators and buttons only get mnemonics. I'm not using menu items here, I only have a text pane and 2 buttons. So I set the actions for the InputMap in TextPane. For the buttons, I pretty much used the small bit of code using undoManager.
    I tried to set KEYSTROKE constructor for the action and simply add them to the buttons that way, but this didn't seem to have any response.
    Also I don't get how this could happen anyway if the TextPane has the focus.
    Not like the example using MNEMONICS.
        Action leftAction = new LeftAction(); //LeftAction code is shown later
        button = new JButton(leftAction)
        menuItem = new JMenuItem(leftAction);
    To create an Action object, you generally create a subclass of AbstractAction and then instantiate it. In your subclass, you must implement the actionPerformed method to react appropriately when the action event occurs. Here's an example of creating and instantiating an AbstractAction subclass:
        leftAction = new LeftAction("Go left", anIcon,
                     "This is the left button.",
                     new Integer(KeyEvent.VK_L));
        class LeftAction extends AbstractAction {
            public LeftAction(String text, ImageIcon icon,
                              String desc, Integer mnemonic) {
                super(text, icon);
                putValue(SHORT_DESCRIPTION, desc);
                putValue(MNEMONIC_KEY, mnemonic);
            public void actionPerformed(ActionEvent e) {
                displayResult("Action for first button/menu item", e);
        }This is what I attempted. No errors... It just doesn't work.
    public JPanel p()
        undoButton.addActionListener(new UndoAction(KeyStroke.getKeyStroke(KeyEvent.VK_Z, Event.CTRL_MASK)));
        panel.add(undoButton);
        return panel;
    private class UndoAction extends AbstractAction
         public UndoAction(KeyStroke keyStroke)
              putValue(ACCELERATOR_KEY, keyStroke);
         private static final long serialVersionUID = 1L;
         public void actionPerformed(ActionEvent e)
              try
                   if (undoManager.canUndo())
                        undoManager.undo();
              catch (CannotRedoException cre)
                   cre.printStackTrace();
              updateButtons();
    }Edited by: G-Unit on Oct 25, 2010 8:32 AM

  • Adding Undo-Redo buttons to toolbar?

    Is it possible to add Undo and Redo buttons to the toolbar?  Seems to me like this would be an obvious capability.
    Thanks!

    Well, that would be a Feature Request, and this is a volunteer staffed troubleshooting forum, from time to time Adobe Employees do check in.
    So this would be the proper venue for that request: Photoshop Family Customer Community
    The second part you may not like. Photoshop CS6 is no longer being updated for anything other than Adobe Camera Raw, so even if that feature passed muster, CS6 would not get it.
    Best thing you can do is assign a pair of keyboard shortcuts. F11/F12 for example. That would under Edit > Keyboard Shortcuts.

  • Undo/Redo Jgraph

    Hi,
    I need to implement an undo and redo function within a Jgraph application, I have my buttons created and want to have an undo and redo function available for when the user wants to undo or redo the last action (i.e. they have drawn a component or a connection on the graph). Does anyone have any idea how to go about this, would very much appreciate it.
    Thanks,
    Jason

    I get confused every time I try to use Undo/Redo but I'll try to remember what I've done in the past.
    textPane.getDocument().addUndoAbleEditListener(new MyUndoAbleEditListener()); The above is used to to accumulate the edits for undo/redo. The UndoManager is responsible for undo/redo of the actual edit, so in your case you would also have 3 UndoManagers. Presumably you have a toolbar button or menuItem to invoke the undo/redo. When you click on the button, you must make sure you are using the correct UndoManager to undo/redo the edit.
    When I was playing around trying to learn Swing I created a [url http://www.discoverteenergy.com/files/Editor.zip]Simple Editor that handles this. In my EditPanel class I created a UndoManager class for each textPane. This class also contains undo/redo buttons and menuItems for this UndoManager. Whenever I switch tabs to work with a new textpane, I also switch the undo/redo buttons and menuItems so that the buttons displayed are for the UndoManager of the current textpane. This code is done by the updateToolbarAndMenubar() method of the Editor class.

  • Undo/redo animation

    I'm begging you guys to move the giant "undo/redo" message that appears in the center of the screen someplace less conspicuous. Also I'd like the undo/redo of the last step to be buffered for fast toggling (like show before image). The way it is now is very distracting.

    I get confused every time I try to use Undo/Redo but I'll try to remember what I've done in the past.
    textPane.getDocument().addUndoAbleEditListener(new MyUndoAbleEditListener()); The above is used to to accumulate the edits for undo/redo. The UndoManager is responsible for undo/redo of the actual edit, so in your case you would also have 3 UndoManagers. Presumably you have a toolbar button or menuItem to invoke the undo/redo. When you click on the button, you must make sure you are using the correct UndoManager to undo/redo the edit.
    When I was playing around trying to learn Swing I created a [url http://www.discoverteenergy.com/files/Editor.zip]Simple Editor that handles this. In my EditPanel class I created a UndoManager class for each textPane. This class also contains undo/redo buttons and menuItems for this UndoManager. Whenever I switch tabs to work with a new textpane, I also switch the undo/redo buttons and menuItems so that the buttons displayed are for the UndoManager of the current textpane. This code is done by the updateToolbarAndMenubar() method of the Editor class.

  • Undo Redo Function

    Hi all,
    I want to implement Undo Redo functionality in my application.For example , I have a JFrame with a button in it. On clicking the button i am importing a image in to it,and performing some action like resizing the image and dragging it within the frame.What if i want to go back in the process.I have no idea about it.Please help me do that.
    Thanks in advance
    Ravisenan

    This is far from being easy...
    Basically, you have to put every action on a stack, where you can recall them. Each action must contain ALL Information that has been changed, before it was changed. So when you undo it, you copy back all necessary properties.
    Based on the complexity and design of your program, this can be one hell of a problem. I wish you good luck.

  • Undo/redo bug

    Hi Adobe-ites!
    I recently changed all sorts of syntax and font properties to my installation of Flash Builder 4 in an effort to reduce long-term eye damage .
    Somehow, I inadvertently induced a nasty bug of some sort. I haven't totally wrapped my head around it's behavior, but basically - I lose code undo/redo functionality at some point while working on a given component or class. If I close the window for the component/class and reopen it, I get undo/redo functionality back. However, at some point while typing code, the functionality goes away. Any programmer can imagine how counter-productive this can be . Any one have any ideas what could be causing the issue and how to remedy?
    Many thanks,
    JJ

    Hi,
    Thanks for the adding comments in the issue https://bugs.adobe.com/jira/browse/FB-29897. The problem is faced whenever preferences are changed and there is an active editor opened.
    I have re-ropened the issue.
    -Radhakrishna

  • Undo back button

    I was almost finished typing out a thoughtful, somewhat long paragraph when I accidentally tapped the back button on the left-hand side of my iPhone 6's keyboard in landscape mode, and the entire paragraph was deleted. I then tapped Undo and it just kept deleting. If that back button is going to exist in such a precarious spot, there must be a redo button. I'm not finding such a feature and am hoping to get someone's insight as to how I can get my paragraph back. Thanks much!

    I'm confident the keyboard is working properly and I've included an image here of what it looks like. I had a chance to play with it more during my train ride home and found that the "back" button, when tapped, goes back as far as the last time you hit back space or enter, whichever comes first. It would seem I didn't make any errors in my long paragraph this morning to warrant back spacing, therefore it wiped out the entire paragraph when I hit that key by accident.
    I was still unsuccessful at figuring out how to recover from an accident. Ultimately I was/am hoping for a redo option. That key is a hazard without one. Nevertheless, thanks much for your input.

  • Can Undo & Redo text writing functions be set as icons?

    Undo & Redo are available as CTRL functions or from a menu but how do I set them up with an icon along with the other text editor icons?

    The Redo and Undo buttons are available with Toolbar Buttons, as part of the full add-on, or just those buttons.
    https://codefisher.org/toolbar_button/toolbar_button_maker/
    http://chrisramsden.vfast.co.uk/3_How_to_install_Add-ons_in_Thunderbird.html
    Right-click a Write window toolbar, Customize, and drag the buttons onto the toolbar.

  • View in expert mode shows following on the bottom PHOTO BIN, TOOL OPTIONS, UNDO, REDO, ROTATE, LAYOUT ORGANIZER how do i remove this?

    Adobe Photoshop Elements 11. When in EXPERT MODE i get the following  on the bottom PHOTO BIN, TOOL OPTIONS, UNDO, REDO, ROTATE, LAYOUT ORGANIZER how do i remove this?

    Sorry, but you don't. That's part of the way adobe changed PSE starting with PSE 11. If you don't like it, you can leave feedback here:
    Photoshop Family Customer Community

  • Undo,redo not working properly with JPopupMenu

    if i use JButton for undo ,redo it is working fine. but the same code is not
    working properly if i add it in JPopupMenu.
    what could be the problem.
    thanks

    what could be the problem.Your code is different or written incorrectly and since you didn't post any we can't help.
    [url http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html]How to Use Actions
    If you need further help then you need to create a [url http://homepage1.nifty.com/algafield/sscce.html]Short, Self Contained, Compilable and Executable, Example Program that demonstrates the incorrect behaviour, because I can't guess exactly what you are doing based on the information provided.
    And don't forget to use the [url http://forum.java.sun.com/help.jspa?sec=formatting]Code Formatting Tags so the code retains its original formatting.

  • Lazy Notification and Command Undo/Redo

    I have a two-part CS3 plug-in (model and UI).<br /><br />When I click on one of the checkboxes in the UI, it causes a command to be executed that highlights certain fields in the document and sets a persistent boolean indicating the state of the higlighting.<br /><br />I want to be able to uncheck the checkbox when an Edit > Undo is done using lazy notification, but I've been working on this for a few days now and I can't get it to work.<br /><br />I've made the following changes to the model plug-in code:<br /><br />1. In the .fr file, I added this:<br />AddIn<br />{<br />     kDocWorkspaceBoss,<br />     kInvalidClass,<br />     {<br />          // Interface to the persistent prefs implementation<br />          IID_IVIPREFERENCES, kVIPrefsImpl,<br />               <br />          // Interface to the Toggle Highlighting command<br />          IID_IVIHIGHLIGHTCHANGE, kVISetHighlightDisplayedCmdImpl,<br />     }<br />},<br /><br />2. In the command's DoNotify method, I do a ModelChange call with an 'interestedIn' parameter of IID_IVIHIGHLIGHTCHANGE. I've tried invoking this method on various subjects, e.g., document subject, document workspace subject, document preferences subject (i.e., getting my persistent interface on the workspace and then getting an ISubject interface on it), all to no apparent avail.<br /><br />I've made the following changes to the UI plug-in code:<br /><br />1. In the .fr file, I added this:<br /><br />AddIn<br />{<br />     kDocWorkspaceBoss,<br />     kInvalidClass,<br />     {<br />          // Interface to the preference change observer<br />          IID_IPREFSOBSERVER, kVIPUIPrefsObserverImpl,<br />     }<br />},<br /><br />2. In the preference change observer's AutoAttach method, I do the following (with error checking removed here for clarity). I've tried various subjects besides the document workspace subject here as well...<br /><br />InterfacePtr<IActiveContext><br />    ac(gSession->GetActiveContext(), UseDefaultIID());<br />IDocument *doc = ac->GetContextDocument();<br />InterfacePtr<ISubject> subject(doc->GetDocWorkSpace(), UseDefaultIID());<br /><br />if (!subject->IsAttached(ISubject::kLazyAttachment, this,<br />    IID_IVIHIGHLIGHTCHANGE, IID_IPREFSOBSERVER)<br />) {<br />    subject->AttachObserver(ISubject::kLazyAttachment, this,<br />        IID_IVIHIGHLIGHTCHANGE, IID_IPREFSOBSERVER);<br />}<br /><br />I've implemented a LazyUpdate method in the preference change observer, but it never gets called -- not when the checkbox is checked, and not when an Undo or Redo is done. I've verified that the observer's AutoAttach method is getting called, and that the ModelChange method inside the command's DoNotify method is being called.<br /><br />Has anyone gotten lazy notification on command undo/redo to work? If so, can you tell me what I might be doing wrong?

    Don't post the same question repeatedly. I've removed the thread you started 4 days after this one with the identical same question.
    db

  • Undo/redo generate 'Save Changes to filename' pop up after 3 or 4 clicks.  Is there a way to turn this off?

    Running into issue with undo/redo(ctrl-z,ctrl-y) generating 'Save Changes to filename' pop up after 3 or 4 clicks.  Is there a way to turn this off?

    Sounds like some strange shortcut key conflict.
    The first thing to try is Deleting Corrupted Cache in DW.  Be sure hidden files & folders are enabled in Windows Explorer.
    http://forums.adobe.com/thread/494811
    If that doesn't help, try Restore Preferences
    http://helpx.adobe.com/dreamweaver/kb/restore-preferences-dreamweaver-cs4-cs5.html
    Nancy O.

Maybe you are looking for

  • Mid month payroll area change

    Hi, i am at the client site and I have been asked to change the payroll area of few employees in the system but system is not allowing me to do that. What is the best possible solution so that i can change the payroll area so that the changes are ref

  • AP_WFAPPROVAL_PKG.Get_Approver

    Hi, How can i get who is the next approver for my invoice in AP. I need to add this logic in my code for getting the Approver if Invoice Approval Status is NOT APPROVED. I came across this procedure, AP_WFAPPROVAL_PKG.Get_Approver Not sure if i can u

  • Web services manager control login problem

    hi, I have installed SOA suite using Advanced installation type. After installation I am able to login into BPEL Console and it's working fine , but unable to login into web services manager control(http://localhost:8888/ccore) with oc4jadmin user...

  • Search for checked out content

    Hello, I use UCM 10g with SiteStudio. I would like to create a QueryText that searches for all the checked out content. I checked in the database and found that dIsCheckedOut is the variable that is keeping this information. The following code gves m

  • How to stop the java timer

    I tried writing a program for a scheduler using java , compiled and ran in java 1.6 .The code is given below import java.util.*; public class TimerTaskEx2 {      public static void main(String[] args) {           Timer timer = new Timer();