После месяца работы над моим приложением я обнаружил кое-что необычное. У меня есть модуль Viewer, в котором находятся все TopComponents, и модуль MenuToolbar, в котором я храню все действия на панели инструментов. Вот мое дополнение:
package com.demo.toolbar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.openide.awt.ActionRegistration;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.awt.ActionID;
import org.openide.util.NbBundle.Messages;
@ActionID(category = "Edit",
id = "com.demo.toolbar.AddAction")
@ActionRegistration(iconBase = "com/demo/toolbar/icons/add.png",
displayName = "#CTL_AddAction")
@ActionReferences({
@ActionReference(path = "Toolbars/AddEditDelete", position = 1),
@ActionReference(path = "Shortcuts", name = "D-A")
})
@Messages("CTL_AddAction=Add")
public final class AddAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
//code here
}
}
Этот ярлык активируется через CTRL+A и переводит TopComponent в режим добавления. У меня также есть DeleteAction, который активируется командой CTRL+D. Когда человек нажимает CTRL+A, происходит следующее:
List<Component> c = new ArrayList<Component>();
c.addAll(Arrays.asList(ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents()));
if (mode.equals("add")) {
for (Component component : c) {
component.setEnabled(false);
}
c.get(13).setEnabled(true);
c.get(14).setEnabled(true);
}
Таким образом, когда пользователь нажимает кнопку «Добавить» на панели инструментов, он отключает все остальные кнопки (включая «Удалить»), поэтому пользователи не могут выполнять эти действия в режиме «Добавить».
Однако они все еще могут нажать CTRL+D для удаления. Что является большим нет-нет...
Как я могу исправить это поведение?