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

package com.ibm.lpex.samples;

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

/**
 * Sample action <b>deleteBlockDelete</b> - delete any selection.
 * This action is similar to the <b>delete</b> default editor action, but
 * it will delete any current selection in the current view (even though
 * the cursor is not anchored to it), not just a stream selection.
 *
 * <p>Here is the TestAction
 * <a href="doc-files/TestAction.java.html">source code</a>.</p>
 *
 * <p>To run this sample:
 * <ul>
 *  <li>Define this user action via an editor preference page, where available,
 *   or from the editor command line:
 *   <pre>set actionClass.deleteBlockDelete com.ibm.lpex.samples.TestAction</pre></li>
 *  <li>Run it from the editor command line:
 *   <pre>action deleteBlockDelete</pre>
 *   or associate it with a key (here, <b>Delete</b>):
 *   <pre>set keyAction.delete deleteBlockDelete</pre></li>
 * </ul></p>
 *
 * <p>A user action is a Java class that implements the
 * com.ibm.lpex.core.LpexAction interface.  Several actions are also defined in
 * {@link com.ibm.lpex.samples.TestUserProfile TestUserProfile}.</p>
 *
 * @see com.ibm.lpex.samples All the samples
 */
public class TestAction implements LpexAction
{
 public void doAction(LpexView lpexView)
 {
  // if there is a selection in this view, delete it
  if (lpexView.queryOn("block.inView"))
   {
    lpexView.doCommand("block delete");
   }
  // otherwise run the editor "delete" action to delete character(s)
  else
   {
    lpexView.doAction(lpexView.actionId("delete"));
   }
 }

 public boolean available(LpexView lpexView)
 {
  // this action can be run whenever the editor action "delete" can
  return lpexView.actionAvailable(lpexView.actionId("delete"));
 }
}