package com.cfsoft.ofbiz;
import com.cfsoft.ofbiz.dom.component.api.Component;
import com.cfsoft.ofbiz.dom.controller.api.Controller;
import com.cfsoft.ofbiz.dom.controller.model.ControllerManager;
import com.cfsoft.ofbiz.dom.controller.model.ControllerModel;
import com.cfsoft.ofbiz.dom.entity.api.EntityModel;
import com.cfsoft.ofbiz.dom.screen.api.Screens;
import com.cfsoft.ofbiz.dom.service.api.Services;
import com.cfsoft.ofbiz.dom.simplemethod.api.SimpleMethods;
import com.cfsoft.ofbiz.facet.OfbizFacet;
import com.intellij.ide.presentation.PresentationProvider;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public class OfbizDomPresentationProvider extends PresentationProvider {
public Icon getIcon(@NotNull PsiElement element, int flags) {
if (element == null)
throw new IllegalArgumentException("Argument 0 for @NotNull parameter of com/intellij/struts2/Struts2IconProvider.getIcon must not be null");
if (!(element instanceof PsiClass)) {
return null;
}
if ((!element.isPhysical()) || (!element.isValid())) {
return null;
}
OfbizFacet strutsFacet = OfbizFacet.getInstance(element);
if (strutsFacet == null) {
return null;
}
PsiClass psiClass = (PsiClass) element;
Module module = ModuleUtil.findModuleForPsiElement(psiClass);
ControllerModel strutsModel = ControllerManager.getInstance(psiClass.getProject()).getCombinedModel(module);
if ((strutsModel == null) || (!strutsModel.isServiceClass(psiClass))) {
return null;
}
// LayeredIcon layeredIcon = new LayeredIcon(2);
// Icon original = PsiClassImplUtil.getClassIcon(flags, psiClass);
// layeredIcon.setIcon(original, 0);
// layeredIcon.setIcon(StrutsIcons.ACTION_SMALL, 1, 0, 6);
// return layeredIcon;
return OfbizIcons.CONTROLLER_CONFIG_FILE;
}
public Icon getIcon(Object o, int i) {
if (o instanceof Controller) {
return OfbizIcons.CONTROLLER_CONFIG_FILE;
}
return null;
}
public OfbizDomPresentationProvider() {
super(); //To change body of overridden methods use File | Settings | File Templates.
}
@Nullable
@Override
public Icon getIcon(Object o) {
if (o instanceof SimpleMethods) {
return OfbizIcons.SIMPLE_METHODS_FILE;
} else if(o instanceof Services){
return OfbizIcons.SERVICE_CONFIG_FILE;
}else if(o instanceof Screens){
return OfbizIcons.SCREEN_CONFIG_FILE;
}else if (o instanceof EntityModel) {
return OfbizIcons.ENTITY_CONFIG_FILE;
}else if (o instanceof Controller) {
return OfbizIcons.CONTROLLER_CONFIG_FILE;
}else if(o instanceof Component){
return OfbizIcons.COMPONENT_CONFIG_FILE;
}else{
return null;
}
}
}