//----------------------------------------------------------------------------
// COMPONENT NAME: LPEX Editor
//
// (C) Copyright IBM Corporation 1998, 2000
// All Rights Reserved.
//
// DESCRIPTION:
// TestCommand - sample user-defined command.
//----------------------------------------------------------------------------

package com.ibm.lpex.samples;

import com.ibm.lpex.core.LpexCommand;
import com.ibm.lpex.core.LpexView;
import java.util.StringTokenizer;

/**
 * This class is a sample command implementation.  Running this command will
 * display a short message on the editor message line.
 *
 * <p>Here is the <A HREF="doc-files/TestCommand.java.html">TestCommand code</A>.
 *
 * <p>To run this sample:
 * <ul>
 * <li>Compile the command class:
 *   <pre>javac TestCommand.java</pre>
 * <li>Define the command, by entering this on the editor command line:
 *   <pre>set commandClass.testCommand com.ibm.lpex.samples.TestCommand</pre>
 * <li>Run the command from the editor command line, by entering:
 *   <pre>testCommand message</pre>
 * </ul>
 *
 * @see com.ibm.lpex.core.LpexCommand
 * @see com.ibm.lpex.core.LpexView
 */
public class TestCommand implements LpexCommand
{
   public boolean doCommand(LpexView lpexView, String parameters)
   {
      StringTokenizer st = new StringTokenizer(parameters);
      if (!st.hasMoreTokens()) {
         lpexView.doCommand("set messageText " +
          "Parameters are required for the \"testCommand\" command.");
         // return false to indicate that the command syntax was invalid
         return false;
         }

      String token = st.nextToken();
      if (st.hasMoreTokens()) {
         lpexView.doCommand("set messageText \"" + st.nextToken() +
          "\" is not a valid parameter for the \"testCommand\" command.");
         return false;
         }

      if (token.equals("message")) {
         lpexView.doCommand("set messageText Hello there from testCommand!");
         }
      else if (!token.equals("quiet")) {
         lpexView.doCommand("set messageText \"" + token +
          "\" is not a valid parameter for the \"testCommand\" command.");
         return false;
         }

      // return true to indicate the parameters were specified correctly
      return true;
   }
}