committed by
Tomas Slusny
parent
c0dfe2ec7c
commit
ad15999b9c
@@ -26,14 +26,19 @@
|
|||||||
package net.runelite.client.plugins.notes;
|
package net.runelite.client.plugins.notes;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
import java.awt.event.FocusListener;
|
import java.awt.event.FocusListener;
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
import javax.swing.text.BadLocationException;
|
import javax.swing.text.BadLocationException;
|
||||||
import javax.swing.text.Document;
|
import javax.swing.text.Document;
|
||||||
|
import javax.swing.undo.CannotUndoException;
|
||||||
|
import javax.swing.undo.UndoManager;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.client.ui.ColorScheme;
|
import net.runelite.client.ui.ColorScheme;
|
||||||
import net.runelite.client.ui.PluginPanel;
|
import net.runelite.client.ui.PluginPanel;
|
||||||
@@ -42,6 +47,7 @@ import net.runelite.client.ui.PluginPanel;
|
|||||||
class NotesPanel extends PluginPanel
|
class NotesPanel extends PluginPanel
|
||||||
{
|
{
|
||||||
private final JTextArea notesEditor = new JTextArea();
|
private final JTextArea notesEditor = new JTextArea();
|
||||||
|
private final UndoManager undoRedo = new UndoManager();
|
||||||
|
|
||||||
void init(NotesConfig config)
|
void init(NotesConfig config)
|
||||||
{
|
{
|
||||||
@@ -68,6 +74,53 @@ class NotesPanel extends PluginPanel
|
|||||||
String data = config.notesData();
|
String data = config.notesData();
|
||||||
notesEditor.setText(data);
|
notesEditor.setText(data);
|
||||||
|
|
||||||
|
// setting the limit to a 500 as UndoManager registers every key press,
|
||||||
|
// which means that be default we would be able to undo only a sentence.
|
||||||
|
// note: the default limit is 100
|
||||||
|
undoRedo.setLimit(500);
|
||||||
|
notesEditor.getDocument().addUndoableEditListener(e -> undoRedo.addEdit(e.getEdit()));
|
||||||
|
|
||||||
|
notesEditor.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
|
||||||
|
notesEditor.getInputMap().put(KeyStroke.getKeyStroke("control Y"), "Redo");
|
||||||
|
|
||||||
|
notesEditor.getActionMap().put("Undo", new AbstractAction("Undo")
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (undoRedo.canUndo())
|
||||||
|
{
|
||||||
|
undoRedo.undo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (CannotUndoException ex)
|
||||||
|
{
|
||||||
|
log.warn("Notes Document Unable To Undo: " + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
notesEditor.getActionMap().put("Redo", new AbstractAction("Redo")
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (undoRedo.canRedo())
|
||||||
|
{
|
||||||
|
undoRedo.redo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (CannotUndoException ex)
|
||||||
|
{
|
||||||
|
log.warn("Notes Document Unable To Redo: " + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
notesEditor.addFocusListener(new FocusListener()
|
notesEditor.addFocusListener(new FocusListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user