package com.cfsoft.ofbiz.gotosymbol;
import com.cfsoft.ofbiz.OfbizIcons;
import com.cfsoft.ofbiz.dom.controller.api.ViewMap;
import com.cfsoft.ofbiz.dom.controller.model.ControllerModel;
import com.cfsoft.ofbiz.dom.controller.model.ControllerManager;
import com.cfsoft.ofbiz.facet.OfbizFacet;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.module.Module;
import com.intellij.util.Processor;
import com.intellij.util.xml.model.gotosymbol.GoToSymbolProvider;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Set;
public class GoToViewMapSymbolProvider extends GoToSymbolProvider {
protected boolean acceptModule(final Module module) {
return OfbizFacet.getInstance(module) != null;
}
protected void addNames(@NotNull final Module module, final Set<String> result) {
final ControllerModel controllerModel = ControllerManager.getInstance(module.getProject()).getCombinedModel(module);
if (controllerModel == null) {
return;
}
controllerModel.processViewMap(new Processor<ViewMap>() {
public boolean process(final ViewMap action) {
result.add(action.getName().getStringValue());
return true;
}
});
}
protected void addItems(@NotNull final Module module, final String name, final List<NavigationItem> result) {
final ControllerModel controllerModel = ControllerManager.getInstance(module.getProject()).getCombinedModel(module);
if (controllerModel == null) {
return;
}
final List<ViewMap> actions = controllerModel.findViewMapByName(name);
for (final ViewMap action : actions) {
final NavigationItem item = createNavigationItem(action.getXmlTag(),
action.getName().getStringValue() +
" [" + action.getPage() + "]",
OfbizIcons.VIEW);
result.add(item);
}
}
}