Это относится к инструменту ( Software AG Web Designer ), который добавил функции над Eclipse IDE в качестве плагинов.
Как видно ниже, пользовательский навигатор называется Package Navigator
. Также видна кнопка Refresh
, выбранная на верхнем узле (в данном случае имя Default
).
Есть ли способ программно вызвать функцию Refresh
из пользовательского плагина, над которым я работаю ?
Обновление
Все, что я могу найти, это ниже-
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
adaptable="false"
id="com.softwareag.is.ui.navigator.actions.refresh"
objectClass="com.softwareag.is.ui.navigator.model.ISLazyTreeParent">
<action
class="com.softwareag.is.ui.navigator.actions.RefreshFromServerAction"
definitionId="org.eclipse.ui.file.refresh"
enablesFor="1"
helpContextId="org.eclipse.ui.edit.delete"
icon="icons/tree/refresh.gif"
id="com.softwareag.is.ui.navigator.actions.refresh"
label="%refresh_label"
menubarPath="group.edit"
tooltip="%refresh_tooltip">
</action>
<enablement>
<or>
<test property="com.softwareag.is.navigator.property.vcsEnabled"
value="true" forcePluginActivation="true"/>
<test property="com.softwareag.is.navigator.property.vcsNotEnabled"
value="true" forcePluginActivation="true"/>
</or>
</enablement>
</objectContribution>
И класс RefreshFromServerAction
-
public class RefreshFromServerAction extends Action implements IActionDelegate {
private IStructuredSelection selection;
public RefreshFromServerAction() {
this.selection = StructuredSelection.EMPTY;
this.setId(ActionFactory.REFRESH.getId());
this.setActionDefinitionId("org.eclipse.ui.file.refresh");
}
public void selectionChanged(IAction action, ISelection sel) {
if (sel instanceof IStructuredSelection) {
this.selection = (IStructuredSelection) sel;
} else {
this.selection = StructuredSelection.EMPTY;
}
}
public void run() {
this.run((IAction) null);
}
public void run(IAction action) {
ISServerNode[] servers = AssetUtils.getSelectedServersFromSelection(this.selection);
if (servers != null) {
NavigatorHelper.getInstance().setExpandAllPath((ISServerObjectBase) null, (ISServerNode) null);
List<ISServerNode> refreshedServers = new ArrayList();
for (int i = 0; i < servers.length; ++i) {
if (!refreshedServers.contains(servers[i])) {
ServerConnection serverConnection = servers[i].getServerConnection();
if (serverConnection != null && !serverConnection.isConnected()) {
return;
}
ISTreeParent[] selectedAssetsFromSelection = AssetUtils
.getSelectedAssetsFromSelection(this.selection);
ISTreeParent[] var7 = selectedAssetsFromSelection;
int var8 = selectedAssetsFromSelection.length;
for (int var9 = 0; var9 < var8; ++var9) {
ISTreeParent isTreeParent = var7[var9];
ServerElementsCache.getInstance().clearCache(serverConnection, isTreeParent);
}
if ((new ISAssetSaver()).askAndSaveDirtyEditors(servers[i].getServerConnection())) {
ISNavigatorPlugin.getDefault().notifyListeners(new NavigatorEvent(5, servers[i], this));
refreshedServers.add(servers[i]);
}
}
}
}
}
}
Вам нужно сначала создать свой объект, а затем сделать все необходимое. Или есть какой-нибудь стандартный способ вызова команды?