/* * @(#)EditableComponent.java * * Copyright (c) 1996-2010 The authors and contributors of JHotDraw. * You may not use, copy or modify this file, except in compliance with the * accompanying license terms. */ package org.jhotdraw.gui; import java.beans.PropertyChangeListener; /** * This interface must be implemented by components * which are editable. * <p> * FIXME - Investigate if we can replace this interface by querying the * TransferHandler of a component and retrieve its cut/copy/paste actions. * See http://java.sun.com/docs/books/tutorial/uiswing/dnd/intro.html#cut * * <hr> * <b>Design Patterns</b> * * <p><em>Framework</em><br> * The interfaces and classes listed below work together: * <br> * Contract: {@link org.jhotdraw.gui.EditableComponent}, {@code JTextComponent}.<br> * Client: {@link org.jhotdraw.app.action.edit.AbstractSelectionAction}, * {@link org.jhotdraw.app.action.edit.DeleteAction}, * {@link org.jhotdraw.app.action.edit.DuplicateAction}, * {@link org.jhotdraw.app.action.edit.SelectAllAction}, * {@link org.jhotdraw.app.action.edit.ClearSelectionAction}. * <hr> * * @author Werner Randelshofer * @version $Id$ */ public interface EditableComponent { /** The name of the "selectionEmpty" property. */ public static final String SELECTION_EMPTY_PROPERTY = "selectionEmpty"; /** * Deletes the selected components or the component at (or after) the * caret position. */ public void delete(); /** * Duplicates the selected region. */ public void duplicate(); /** * Selects all. */ public void selectAll(); /** * Selects nothing. */ public void clearSelection(); /** * Returns true if the selection is empty. * This is a bound property. */ public boolean isSelectionEmpty(); /** Adds a property change listener. */ public void addPropertyChangeListener(PropertyChangeListener l); /** Removes a property change listener. */ public void removePropertyChangeListener(PropertyChangeListener l); }