Here is a macro that inserts the path of the current buffer in the text:
String newText = buffer.getPath(); textArea.setSelectedText(newText);
Unlike in our first macro example, here we are calling class methods on
particular objects. First, we call getPath()
on the
current Buffer object to get the full path of the
text file currently being edited. Next, we call
setSelectedText()
on the current text display
component, specifying the text to be inserted as a parameter.
In precise terms, the setSelectedText()
method
substitutes the contents of the String
parameter for a range of selected text that includes the current caret
position. If no text is selected at the caret position, the effect
of this operation is simply to insert the new text at that position.
Here's a few alternatives to the full file path that you could use to insert various useful things:
// the file name (without full path) String newText = buffer.getName(); // today's date import java.text.DateFormat; String newText = DateFormat.getDateInstance() .format(new Date()); // a line count for the current buffer String newText = "This file contains " + textArea.getLineCount() + " lines.";
Here are brief comments on each:
In the first, the call to getName()
invokes
another method of the Buffer class.
The syntax of the second example chains the results of several methods. You could write it this way:
import java.text.DateFormat; Date d = new Date(); DateFormat df = DateFormat.getDateInstance(); String result = df.format(d);
Taking the pieces in order:
A Java Date
object is created using the
new
keyword. The empty parenthesis after
Date
signify a call on the
constructor method of Date
having no
parameters; here, a Date
is created representing
the current date and time.
DateFormat.getDateInstance()
is a static method
that creates and returns a DateFormat
object. As
the name implies, DateFormat
is a Java class
that takes Date
objects and produces readable
text. The method getDateInstance()
returns a
DateFormat
object that parses and formats dates.
It will use the default locale or text format
specified in the user's Java installation.
Finally, DateFormat.format()
is called on the
new DateFormat
object using the
Date
object as a parameter. The result is a
String
containing the date in the default
locale.
Note that the Date
class is contained in
the java.util
package, so an explicit import
statement is not required. However, DateFormat
is part of the java.text
package, which is
not automatically imported, so an explicit
import
statement must be used.
The third example shows three items of note:
getLineCount()
is a method in jEdit's
JEditTextArea class. It returns an
int
representing the number of lines in the
current text buffer. We call it on textArea
, the
pre-defined, current JEditTextArea object.
The use of the +
operator (which can be chained,
as here) appends objects and string
literals to return a single, concatenated String
.