//----------------------------------------------------------------------------
// COMPONENT NAME: LPEX Editor
//
// © Copyright IBM Corporation 1998, 2006
// 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.LpexStringTokenizer;
import com.ibm.lpex.core.LpexView;
/**
* Sample command - display a message.
* Running this command displays, on the editor message line, a short message
* identifying itself and its parameters.
*
* <p>Here is the TestCommand <a href="doc-files/TestCommand.java.html">source
* code</a>.</p>
*
* <p>To run this sample:
* <ul>
* <li>Define the command via an editor preference page, where available, or
* from the editor command line:
* <pre>set commandClass.testCommand com.ibm.lpex.samples.TestCommand</pre></li>
* <li>Run it from the editor command line:
* <pre>testCommand [<i>parameters</i>]</pre></li>
* </ul></p>
*
* <p>A user command is a Java class that implements the
* com.ibm.lpex.core.LpexCommand interface.</p>
*
* @see com.ibm.lpex.samples All the samples
*/
public class TestCommand implements LpexCommand
{
/**
* Runs this command.
*
* @param lpexView the document view in which the command was issued
* @param parameters optional command parameters
*/
public boolean doCommand(LpexView lpexView, String parameters)
{
if (lpexView != null)
{
String command = commandName(this, lpexView);
parameters = parameters.trim();
if ("?".equals(parameters)) // command help
{
lpexView.doCommand("set messageText Syntax: " + command + " [<parameters>]");
return true;
}
if (parameters.length() != 0)
{
command += ' ' + parameters;
}
lpexView.doCommand("set messageText Command \"" + command + "\" was run.");
}
return true;
}
/**
* Returns the name assigned to an instance of a user-defined command
* in the specified view.
*
* @param lpexCommand instance of an LPEX command
* @param lpexView a document view in which it is defined
* @return command name as defined with e.g., <b>set commandClass.</b>
*/
public static String commandName(LpexCommand lpexCommand, LpexView lpexView)
{
String className = (lpexCommand != null)? lpexCommand.getClass().getName() : null;
if (className != null && lpexView != null)
{
LpexStringTokenizer st = new LpexStringTokenizer(lpexView.query("commands"));
while (st.hasMoreTokens())
{
String commandName = st.nextToken();
// first name found is OK (there may, though unlikely, be more)
if (className.equals(lpexView.query("commandClass." + commandName)))
{
return commandName;
}
}
}
return className;
}
}