Реализация обработчика команд ShowInSystemExplorerHandler
оказывается довольно странной. Хотя вы можете передать ресурс для открытия в качестве параметра (что вы и делаете), он по-прежнему смотрит на количество выбранных в данный момент элементов, чтобы определить, включен ли обработчик, и будет включен только тогда, когда выбран ровно один элемент.
Если вы отлаживаете код, вы увидите, что handlerService.canExecute(parameterizedCommand)
возвращает false, потому что выбрано более одного элемента.
Так что не похоже, что вы можете использовать это напрямую с несколькими выбранными элементами.
Что вы можете сделать, так это определить свою собственную команду и обработчик, которые вызывают тот же код. Что-то вроде:
<extension
point="org.eclipse.ui.commands">
<command
categoryId="org.eclipse.ui.category.navigate"
name="show in explorer"
id="my.showInSystemExplorer"
description="Show in Explorer">
<commandParameter
id="org.eclipse.ui.ide.showInSystemExplorer.path"
name="Resource path"
optional="false">
</commandParameter>
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="org.eclipse.ui.internal.ide.handlers.ShowInSystemExplorerHandler"
commandId="my.showInSystemExplorer">
</handler>
</extension>
Затем замените ShowInSystemExplorerHandler.ID
в коде на идентификатор вашей команды (my.showInSystemExplorer
в примере).