Gridarta Editor
FunctionMenu.java
Go to the documentation of this file.
1 /*
2  * InputHandler.java - Manages key bindings and executes actions
3  * Copyright (C) 1999 Slava Pestov
4  * Copyright (C) 2000-2023 The Gridarta Developers.
5  *
6  * You may use and modify this package for any purpose. Redistribution is
7  * permitted, in both source and binary form, provided that this notice
8  * remains intact in all source distributions of this package.
9  */
10 
11 package net.sf.gridarta.textedit.textarea.actions;
12 
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15 import javax.swing.text.BadLocationException;
21 import org.jetbrains.annotations.NotNull;
22 
28 public class FunctionMenu implements ActionListener {
29 
30  // popup menu for CFPython function
31 
33 
39  public FunctionMenu(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries) {
40  cfPythonPopup = new CFPythonPopup(scriptEditControl, menuEntries);
41  }
42 
47  @Override
48  public void actionPerformed(final ActionEvent e) {
49  final JEditTextArea textArea = InputHandler.getTextArea(e);
50  final int caretPos = textArea.getCaretPosition(); // caret position
51 
52  try {
53  // insert the '.' character
54  final String selectedText = textArea.getSelectedText();
55  if (selectedText != null && !selectedText.isEmpty()) {
56  textArea.setSelectedText(".");
57  } else {
58  textArea.getDocument().insertString(caretPos, ".", null);
59  }
60 
61  if (caretPos >= 7 && cfPythonPopup.isInitialized()) {
62  final String fileName = textArea.getDocument().getText(textArea.getCaretPosition() - 9, 8);
63  if (fileName.equalsIgnoreCase("cfpython")) {
64  final int line = textArea.getCaretLine();
65  final int offset = textArea.getCaretPosition() - textArea.getLineStartOffset(line);
66 
67  cfPythonPopup.setCaretPosition(caretPos + 1);
68  cfPythonPopup.getMenu().show(textArea, textArea.offsetToX2(line, offset), 30 + textArea.lineToY(line));
69  }
70  }
71  } catch (final BadLocationException ignored) {
72  }
73  }
74 
75 }
net.sf.gridarta.textedit.textarea.JEditTextArea.getDocument
Document getDocument()
Returns the document this text area is editing.
Definition: JEditTextArea.java:500
net.sf.gridarta.textedit.textarea.JEditTextArea
jEdit's text area component.
Definition: JEditTextArea.java:91
net.sf.gridarta.textedit.scripteditor
Classes for the script editor used within the editor to create and modify Python and Lua scripts.
Definition: Actions.java:20
net.sf.gridarta.textedit.textarea.actions.FunctionMenu
When a '.
Definition: FunctionMenu.java:28
net.sf.gridarta.textedit.textarea
This package contains the other part of the script editor.
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.textedit.textarea.JEditTextArea.getCaretLine
int getCaretLine()
Returns the caret line.
Definition: JEditTextArea.java:612
net.sf.gridarta.textedit.scripteditor.CFPythonPopup.setCaretPosition
void setCaretPosition(final int pos)
Set the caret position where this menu has been invoked.
Definition: CFPythonPopup.java:111
net.sf
net.sf.gridarta.textedit.textarea.InputHandler
An input handler converts the user's key strokes into concrete actions.
Definition: InputHandler.java:36
net.sf.gridarta.textedit.textarea.JEditTextArea.offsetToX2
int offsetToX2(final int line, final int offset)
Converts an offset in a line into an x co-ordinate.
Definition: JEditTextArea.java:483
net.sf.gridarta.textedit
net.sf.gridarta.textedit.textarea.actions.FunctionMenu.cfPythonPopup
final CFPythonPopup cfPythonPopup
Definition: FunctionMenu.java:32
net.sf.gridarta.textedit.textarea.JEditTextArea.getSelectedText
String getSelectedText()
Returns the selected text, or null if no selection is active.
Definition: JEditTextArea.java:709
net
net.sf.gridarta.textedit.scripteditor.MenuEntries
List of menu entries (all CFPython commands).
Definition: MenuEntries.java:42
net.sf.gridarta.textedit.textarea.JEditTextArea.setSelectedText
void setSelectedText(@NotNull final String selectedText)
Replaces the selection with the specified text.
Definition: JEditTextArea.java:717
net.sf.gridarta.textedit.textarea.InputHandler.getTextArea
static JEditTextArea getTextArea(final EventObject evt)
Returns the text area that fired the specified event.
Definition: InputHandler.java:144
net.sf.gridarta.textedit.textarea.actions.FunctionMenu.FunctionMenu
FunctionMenu(@NotNull final ScriptEditControl scriptEditControl, @NotNull final MenuEntries menuEntries)
Creates a new instance.
Definition: FunctionMenu.java:39
net.sf.gridarta.textedit.textarea.JEditTextArea.lineToY
int lineToY(final int line)
Converts a line index to a y co-ordinate.
Definition: JEditTextArea.java:462
net.sf.gridarta.textedit.scripteditor.CFPythonPopup
This class implements a popup window which shows all python methods in the 'CFPython' package.
Definition: CFPythonPopup.java:44
net.sf.gridarta.textedit.scripteditor.ScriptEditControl
ScriptEditControl - Manages events and data flow for the script editor entity.
Definition: ScriptEditControl.java:59
net.sf.gridarta.textedit.scripteditor.CFPythonPopup.isInitialized
boolean isInitialized()
Returns whether this popup menu has been fully initialized and is ready for use.
Definition: CFPythonPopup.java:103
net.sf.gridarta.textedit.textarea.JEditTextArea.getLineStartOffset
int getLineStartOffset(final int line)
Returns the start offset of the specified line.
Definition: JEditTextArea.java:525
net.sf.gridarta.textedit.scripteditor.CFPythonPopup.getMenu
JPopupMenu getMenu()
Definition: CFPythonPopup.java:118
net.sf.gridarta.textedit.textarea.actions.FunctionMenu.actionPerformed
void actionPerformed(final ActionEvent e)
Get content of the system clipboard and insert it at caret position.
Definition: FunctionMenu.java:48
net.sf.gridarta.textedit.textarea.JEditTextArea.getCaretPosition
int getCaretPosition()
Returns the caret position.
Definition: JEditTextArea.java:605