Создайте новый модуль NetBeans «Сохранить как»
Моя цель проста - сохранить текущий 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.
1 ответ
Используйте мастер New Action, чтобы создать исходный код для
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
Параметр дает вам контекст выбранного узла, поэтому вы можете получить путь к файлу и т. д.