All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yiwowang.intellij.finding.util.UIUtils Maven / Gradle / Ivy

The newest version!
package com.yiwowang.intellij.finding.util;

import com.intellij.ide.util.PsiNavigationSupport;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassType;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiType;
import com.yiwowang.intellij.finding.base.bean.ClassBean;

import javax.swing.*;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.util.Enumeration;

public class UIUtils {

    public static void navigate(Project project, ClassBean classBean) {
        String path = "jar:///" + classBean.component.filePath + "!/" + classBean.name.replace(".", "/");
//    if (moduleBinInfo.isAar) {
//        path = "jar:///" + moduleBinInfo.getJarPath() + "!/" + classInfo.classPath;
//    } else {
//        path = "file:///" + moduleBinInfo.getJavaSrcPath() + "/" + classInfo.classPath;
//    }
        final VirtualFileManager manager = VirtualFileManager.getInstance();
        VirtualFile file = manager.findFileByUrl(path);
        if (file != null) {
            PsiNavigationSupport.getInstance().createNavigatable(project, file, -1).navigate(true);
        }
    }

    public static void navigate(Project project, String path) {
        final VirtualFileManager manager = VirtualFileManager.getInstance();
        VirtualFile file = manager.findFileByUrl(path);
        if (file != null) {
            PsiNavigationSupport.getInstance().createNavigatable(project, file, -1).navigate(true);
        }
    }

    public static void navigate(String filePath, String entryName) {
//        String path;
//        if (entryName.endsWith(".class")) {
//            path = "jar:///" + filePath + "!/" + entryName;
//        } else {
//            path = "file:///" + filePath + "/" + entryName;
//        }
//        final VirtualFileManager manager = VirtualFileManager.getInstance();
//        VirtualFile file = manager.findFileByUrl(path);
//        if (file != null) {
//            PsiNavigationSupport.getInstance().createNavigatable(mProject, file, -1).navigate(true);
//        }
    }

    public static void copy(String text) {
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable trans = new StringSelection(text);
        clipboard.setContents(trans, null);
    }

    public static void expandAll(JTree tree, boolean expand) {
        TreeNode root = (TreeNode) tree.getModel().getRoot();
        expandAll(tree, new TreePath(root), expand);
    }

    public static void expandAll(JTree tree, TreePath parent, boolean expand) {
        // Traverse children
        TreeNode node = (TreeNode) parent.getLastPathComponent();
        if (node.getChildCount() >= 0) {
            for (Enumeration e = node.children(); e.hasMoreElements(); ) {
                TreeNode n = (TreeNode) e.nextElement();
                TreePath path = parent.pathByAddingChild(n);
                expandAll(tree, path, expand);
            }
        }

        // Expansion or collapse must be done bottom-up
        if (expand) {
            tree.expandPath(parent);
        } else {
            tree.collapsePath(parent);
        }
    }

    public static PsiClass getPsiClass(PsiType psiType) {
        if (psiType instanceof PsiClassType) {
            return ((PsiClassType) psiType).resolve();
        }
        return null;
    }


    /**
     *
     * @param psiClass psiClass object
     * @return return class name
     */
    public static String getClassFullName(PsiClass psiClass) {
        if (psiClass == null) {
            return null;
        }
        StringBuilder builder = new StringBuilder();
        PsiElement curr = psiClass;
        while (curr != null && curr.getParent() instanceof PsiClass) {
            builder.insert(0, "$" + ((PsiClass) curr).getName());
            curr = curr.getParent();
        }
        String outerClassName = ((PsiClass) curr).getQualifiedName();
        builder.insert(0, outerClassName);
        return builder.toString();
    }
    public static void runOnUi(Runnable runnable) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                runnable.run();
            }
        });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy