Package wicketforge.facet

Source Code of wicketforge.facet.WicketForgeFacet

/*
* Copyright 2010 The WicketForge-Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package wicketforge.facet;

import com.intellij.facet.Facet;
import com.intellij.facet.FacetManager;
import com.intellij.facet.FacetType;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.pointers.VirtualFilePointer;
import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import wicketforge.Constants;
import wicketforge.search.WicketSearchScope;
import wicketforge.util.WicketFileUtil;

import java.util.ArrayList;
import java.util.List;

/**
* WicketForgeFacet
*/
public class WicketForgeFacet extends Facet<WicketForgeFacetConfiguration> {
    private List<VirtualFilePointer> resourcePaths;

    public WicketForgeFacet(@NotNull FacetType facetType, @NotNull Module module, String name, @NotNull WicketForgeFacetConfiguration configuration, Facet underlyingFacet) {
        super(facetType, module, name, configuration, underlyingFacet);
    }

    @NotNull
    public List<VirtualFilePointer> getResourcePaths() {
        if (resourcePaths == null) {
            resourcePaths = new ArrayList<VirtualFilePointer>();
            for (String resourceUrl : getConfiguration().resourceUrls) {
                resourcePaths.add(VirtualFilePointerManager.getInstance().create(resourceUrl, getModule(), null));
            }
        }
        return resourcePaths;
    }

    public void setResourcePaths(@NotNull List<VirtualFilePointer> resourcePaths) {
        this.resourcePaths = resourcePaths;
        WicketForgeFacetConfiguration configuration = getConfiguration();
        configuration.resourceUrls.clear();
        for (VirtualFilePointer virtualFilePointer : resourcePaths) {
            configuration.resourceUrls.add(FileUtil.toSystemIndependentName(virtualFilePointer.getUrl()));
        }
    }

    @Nullable
    public static WicketForgeFacet getInstance(@NotNull final Module module) {
        return FacetManager.getInstance(module).getFacetByType(WicketForgeFacetType.ID);
    }

    /**
     * Returns true if the passed Module contains the Wicket's Component class.
     * This method works with Wicket version 1.3 and higher.
     *
     * @param module Module
     * @return boolean
     */
    public static boolean isLibraryPresent(@Nullable Module module) {
        if (module == null) {
            return false;
        }
        JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(module.getProject());
        return psiFacade.findClass(Constants.WICKET_COMPONENT, WicketSearchScope.classInModuleWithDependenciesAndLibraries(module)) != null;
    }

    /**
     * @param element
     * @return true if element has WicketForgeFacet or is from library
     */
    public static boolean hasFacetOrIsFromLibrary(@Nullable PsiElement element) {
        if (element != null) {
            VirtualFile vf = PsiUtil.getVirtualFile(element);
            if (vf != null) {
                Project project = element.getProject();
                Module module = ModuleUtil.findModuleForFile(vf, project);
                // if we got a module -> check if WicketForgeFacet available
                if (module != null) {
                    return getInstance(module) != null;
                }
                // else check if file from lib
                return WicketFileUtil.isInLibrary(vf, project);
            }
        }
        return false;
    }
}
TOP

Related Classes of wicketforge.facet.WicketForgeFacet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.