创建新的 NetBeans "save as" 模块
Create new NetBeans "save as" module
我的目标很简单 - 在 NetBeans 编辑器中保存当前的 HTML 文件,并在文件的顶部和底部添加一行,并使用“.h”作为扩展名。
这是我第一次尝试使用 NetBeans 模块,但在学习了一些教程和进行研究后,我在编辑器中右键单击 HTML 文件时向弹出菜单添加了一个条目.它目前只显示一条“Hello World”消息:
执行此操作的代码在这里:
package ksmiller99.savehtmlasarduinoresource;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle.Messages;
@ActionID(
category = "Edit",
id = "ksmiller99.savehtmlasarduinoresource.SaveHtmlAsArduinoResource"
)
@ActionRegistration(
displayName = "#CTL_SaveHtmlAsArduinoResource"
)
@ActionReference(path = "Editors/text/html/Popup")
@Messages("CTL_SaveHtmlAsArduinoResource=Save as Arduino Resource")
public final class SaveHtmlAsArduinoResource implements ActionListener {
@Override
public void actionPerformed(ActionEvent ev) {
//todo add a line to top and bottom of current file and save with .h extension
JOptionPane.showMessageDialog(null, "Hello Save As World");
}
}
如何访问当前编辑器的内容?另一种方法会更有意义吗?
我正在使用 NetBeans 12.0,JDK13,Windows10。
使用新建操作向导为 Conditionally Enabled
操作创建源代码,在 User Selects One Node
时启用。
在第二个向导面板中 select File Type Context Menu
并选择 text/html
作为内容类型。如果您希望您的操作仅出现在上下文菜单中,您可以禁用 Global Menu Item
.
你应该得到这样的代码:
@ActionID(
category = "File",
id = "org.test.TestHtmlAction"
)
@ActionRegistration(
displayName = "#CTL_TestHtmlAction"
)
@ActionReference(path = "Loaders/text/html/Actions", position = 0)
@Messages("CTL_TestHtmlAction=TestHtmlAction")
public final class TestHtmlAction implements ActionListener
{
private final DataObject context;
private static final Logger LOGGER = Logger.getLogger(TestHtmlAction.class.getName());
public TestHtmlAction(DataObject context)
{
this.context = context;
}
@Override
public void actionPerformed(ActionEvent ev)
{
FileObject file = context.getPrimaryFile();
LOGGER.info("context=" + context.getName() + " file.getPath()=" + file.getPath());
}
}
该向导创建一个上下文感知操作,仅当用户 select 是单个 HTML 文件节点时才启用。 DataObject
参数为您提供 selected 节点的上下文,因此您可以检索文件路径等。
我的目标很简单 - 在 NetBeans 编辑器中保存当前的 HTML 文件,并在文件的顶部和底部添加一行,并使用“.h”作为扩展名。
这是我第一次尝试使用 NetBeans 模块,但在学习了一些教程和进行研究后,我在编辑器中右键单击 HTML 文件时向弹出菜单添加了一个条目.它目前只显示一条“Hello World”消息:
执行此操作的代码在这里:
package ksmiller99.savehtmlasarduinoresource;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle.Messages;
@ActionID(
category = "Edit",
id = "ksmiller99.savehtmlasarduinoresource.SaveHtmlAsArduinoResource"
)
@ActionRegistration(
displayName = "#CTL_SaveHtmlAsArduinoResource"
)
@ActionReference(path = "Editors/text/html/Popup")
@Messages("CTL_SaveHtmlAsArduinoResource=Save as Arduino Resource")
public final class SaveHtmlAsArduinoResource implements ActionListener {
@Override
public void actionPerformed(ActionEvent ev) {
//todo add a line to top and bottom of current file and save with .h extension
JOptionPane.showMessageDialog(null, "Hello Save As World");
}
}
如何访问当前编辑器的内容?另一种方法会更有意义吗?
我正在使用 NetBeans 12.0,JDK13,Windows10。
使用新建操作向导为 Conditionally Enabled
操作创建源代码,在 User Selects One Node
时启用。
在第二个向导面板中 select File Type Context Menu
并选择 text/html
作为内容类型。如果您希望您的操作仅出现在上下文菜单中,您可以禁用 Global Menu Item
.
你应该得到这样的代码:
@ActionID(
category = "File",
id = "org.test.TestHtmlAction"
)
@ActionRegistration(
displayName = "#CTL_TestHtmlAction"
)
@ActionReference(path = "Loaders/text/html/Actions", position = 0)
@Messages("CTL_TestHtmlAction=TestHtmlAction")
public final class TestHtmlAction implements ActionListener
{
private final DataObject context;
private static final Logger LOGGER = Logger.getLogger(TestHtmlAction.class.getName());
public TestHtmlAction(DataObject context)
{
this.context = context;
}
@Override
public void actionPerformed(ActionEvent ev)
{
FileObject file = context.getPrimaryFile();
LOGGER.info("context=" + context.getName() + " file.getPath()=" + file.getPath());
}
}
该向导创建一个上下文感知操作,仅当用户 select 是单个 HTML 文件节点时才启用。 DataObject
参数为您提供 selected 节点的上下文,因此您可以检索文件路径等。