All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fife.ui.rtextarea.ClipboardHistory Maven / Gradle / Ivy

The newest version!
/*
 * 08/29/2014
 *
 * ClipboardHistory.java - A history of text added to the clipboard.
 * 
 * This library is distributed under a modified BSD license.  See the included
 * RSyntaxTextArea.License.txt file for details.
 */
package org.fife.ui.rtextarea;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * Listens for cuts and copies from instances of {@link RTextArea}.  This is
 * used for the "clipboard history" shortcut (Ctrl+Shift+V by default).

* * Note that this class does not listen for all events on the system clipboard, * because that functionality is pretty fragile. See * * http://stackoverflow.com/questions/5484927/listen-to-clipboard-changes-check-ownership * for more information. * * @author Robert Futrell * @version 1.0 */ public class ClipboardHistory { private static ClipboardHistory INSTANCE; private List history; private int maxSize; private static final int DEFAULT_MAX_SIZE = 12; private ClipboardHistory() { history = new ArrayList(); maxSize = DEFAULT_MAX_SIZE; } /** * Adds an entry to the clipboard history. * * @param str The text to add. * @see #getHistory() */ public void add(String str) { int size = history.size(); if (size==0) { history.add(str); } else { int index = history.indexOf(str); if (index!=size-1) { if (index>-1) { history.remove(index); } history.add(str); } trim(); } } /** * Returns the singleton instance of this class, lazily creating it if * necessary.

* * This method should only be called on the EDT. * * @return The singleton instance of this class. */ public static final ClipboardHistory get() { if (INSTANCE==null) { INSTANCE = new ClipboardHistory(); } return INSTANCE; } /** * Returns the clipboard history, in most-recently-used order. * * @return The clipboard history. */ public List getHistory() { List copy = new ArrayList(this.history); Collections.reverse(copy); return copy; } /** * Returns the maximum number of clipboard values remembered. * * @return The maximum number of clipboard values remembered. * @see #setMaxSize(int) */ public int getMaxSize() { return maxSize; } /** * Sets the maximum number of clipboard values remembered. * * @param maxSize The maximum number of clipboard values to remember. * @throws IllegalArgumentException If maxSize is not greater * than zero. * @see #getMaxSize() */ public void setMaxSize(int maxSize) { if (maxSize<=0) { throw new IllegalArgumentException("Maximum size must be >= 0"); } this.maxSize = maxSize; trim(); } /** * Ensures the remembered set of strings is not larger than the maximum * allowed size. */ private void trim() { while (history.size()>maxSize) { history.remove(0); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy