//----------------------------------------------------------------------------
// COMPONENT NAME: LPEX Editor
//
// © Copyright IBM Corporation 2005, 2006
// All Rights Reserved.
//
// DESCRIPTION:
// BlockNewMarkToMouseAction - sample user-defined action (blockNewMarkToMouse)
//----------------------------------------------------------------------------

package com.ibm.lpex.samples;

import com.ibm.lpex.core.LpexAction;
import com.ibm.lpex.core.LpexView;

/**
 * Sample action <b>blockNewMarkToMouse</b> - start new selections on new mouse
 * drags.
 *
 * <p>LPEX non-stream selections are by default <i>extended</i> on mouse drags.
 * They must be explicitly cleared (with, for example, Alt+U) before marking
 * a new block.  This action is similar to the <b>blockMarkToMouse</b> default
 * editor action, but it makes a new mouse button 1 drag start a new selection.</p>
 *
 * <p>Here is the BlockNewMarkToMouseAction
 * <a href="doc-files/BlockNewMarkToMouseAction.java.html">source code</a>.</p>
 *
 * <p>To redefine the default <b>blockMarkToMouse</b> action:
 * <ul>
 *  <li>Register this new action implementation via the editor preference page,
 *   where available, or from the editor command line:
 *   <pre>set actionClass.blockMarkToMouse com.ibm.lpex.samples.BlockNewMarkToMouseAction</pre></li>
 * </ul></p>
 *
 * @see MouseReselect
 * @see com.ibm.lpex.samples All the samples
 */
public class BlockNewMarkToMouseAction implements LpexAction
{
 /**
  * Runs the action.  It ensures that our {@linkplain MouseReselect
  * mouse-reselect} tracking of mouse events is installed in this view,
  * and lets the editor do its regular <b>blockMarkToMouse</b> action.
  */
 public void doAction(LpexView lpexView)
 {
  MouseReselect.install(lpexView);
  lpexView.doDefaultAction(lpexView.actionId("blockMarkToMouse"));
 }

 /**
  * Returns the availability of this action. This action can be
  * run whenever editor's default <b>blockMarkToMouse</b> can.
  */
 public boolean available(LpexView lpexView)
 {
  return lpexView.defaultActionAvailable(lpexView.actionId("blockMarkToMouse"));
 }
}