【问题标题】:Create new NetBeans "save as" module创建新的 NetBeans “另存为”模块
【发布时间】:2021-05-18 21:04:48
【问题描述】:

我的目标很简单 - 将当前 HTML 文件保存在 NetBeans 编辑器中,并在文件的顶部和底部增加一行,并以“.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、JDK 13、Windows 10。

【问题讨论】:

    标签: netbeans netbeans-12 openide


    【解决方案1】:

    使用新建操作向导为Conditionally Enabled 操作创建源代码,在User Selects One Node 时启用。

    在第二个向导面板中选择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());
        }
    }
    

    向导会创建一个上下文感知操作,该操作仅在用户选择单个 HTML 文件节点时启用。 DataObject 参数为您提供所选节点的上下文,因此您可以检索文件路径等。

    【讨论】:

    • DataObject、Logger、FileObject 的依赖项和导入并没有自动出现,但是一旦我弄清楚了,它就起作用了。看来NB12.0并没有完全实现……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    相关资源
    最近更新 更多