Как изменить значок кнопки NewProject [разработка плагина IDE Netbeans]? - PullRequest
0 голосов
/ 31 мая 2019

Я пишу плагин IDE Netbeans, который должен заменить некоторые значки на панели инструментов. Согласно этой записи в блоге, я искал конкретные действия и написал соответствующий класс IconReplacer, который отлично работает:

import org.openide.filesystems.FileUtil;
import org.openide.windows.OnShowing;
import javax.swing.*;

@OnShowing
public class IconReplacer implements Runnable{

public static final String ICON_DIR = "com/geometror/iconreplacer/icons/";

@Override
public void run() {

    replaceIcon("Actions/Project/org-netbeans-modules-project-ui-NewFile.instance",
            "newFile");

}

private void replaceIcon(String configObj, String iconName){
    Action newFileAction =
            FileUtil.getConfigObject(configObj, Action.class);

    newFileAction.putValue("iconBase", ICON_DIR + iconName + ".png");
    newFileAction.putValue("PreferredIconSize", 24);

}
}

Однако, когда я пытаюсь заменить значок действия NewProject, старый значок сохраняется и остается неизменным! После сравнения исходного кода NewProject.java и NewFile.java (который работает) в модуле projectui я обнаружил одну странную разницу. В NewProject.java Акция зарегистрирована с дополнительными аннотациями:

@ActionID(id = "org.netbeans.modules.project.ui.NewProject", category =     "Project")
@ActionRegistration(displayName = "#LBL_NewProjectAction_Name", iconBase = "org/netbeans/modules/project/ui/resources/newProject.png")
@ActionReferences({
@ActionReference(path = "Shortcuts", name = "DS-N"),
@ActionReference(path = ProjectsRootNode.ACTIONS_FOLDER, position = 100),
@ActionReference(path = "Menu/File", position = 100),
@ActionReference(path = "Toolbars/File", position = 200)
})

Эти аннотации отсутствуют в NewFile.java. Там свойство baseIcon установлено как

putValue("iconBase","org/netbeans/modules/project/ui/resources/newFile.png"); //NOI18N

Хотя эти два варианта должны выполнять одно и то же, значок кнопки NewProject не меняется!

...