Как убедиться, что пункты меню плагинов правильно выделены серым или нет (включено / отключено) ( javascript, Adobe Bridge)

Я делаю несколько плагинов Adobe Bridge (CS 5.1).

Моя проблема в том, что я не могу понять, как гарантировать, что их соответствующие пункты меню будут выделены серым, если пользователь не выбрал допустимые элементы для сценария.
Я могу достичь желаемого состояния, кодируя что-то вроде

function greyOutMenu () {
    var doc = application.document;
    var these = [];
    these = doc.selections;
    menuItem.enabled = true;
    if ( these.length < 1 ) {
        menuItem.enabled = false;
        return;
    }
    for ( var i in these ) {
        if ( these[i] /* is invalid */ ) { menuItem.enabled = false;
        return;
    }
}

но как заставить эту проверку запускаться непосредственно при открытии меню? Если я использую

myMenu.onSelect = greyOutMenu();

Он просто запускает проверку при запуске, а не при открытии меню!

1 ответ

Решение

Хорошо, я понял, что случилось. Я изменил это на...

function greyOutMenu () {
    var doc = app.document;
    var here = doc.presentationPath;
    var thisFolder = Folder ( here );

    if ( decodeURI ( thisFolder.name ) === "correct folder name" ) { menuItem.enabled = true; }
    else { menuItem.enabled = false; }
    if (!app.document.selectionsLength > 0 ) { menuItem.enabled = false; }
}
menuItem.onDisplay = greyOutMenu;

Я мог бы поклясться, что уже пытался menuItem.onDisplay, но я должен был сделать синтаксическую ошибку.

Кроме того, в моем случае достаточно оказаться в нужной папке и выбрать что-то, так как файлы добавляются непосредственно камерой. Вместо этого к самой функции добавляются более сложные проверки, чтобы предотвратить заикание при каждом открытии меню.

Другие вопросы по тегам