Package com.dci.intellij.dbn.common.util

Source Code of com.dci.intellij.dbn.common.util.ActionUtil

package com.dci.intellij.dbn.common.util;

import com.intellij.ide.DataManager;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionToolbar;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nullable;

import javax.swing.JComponent;
import java.awt.Component;

public class ActionUtil {
    public static final AnAction SEPARATOR = new AnAction() {
        public void actionPerformed(AnActionEvent e) {}
    };


    public static ActionToolbar createActionToolbar(String place, boolean horizontal, String actionGroupName){
        ActionManager actionManager = ActionManager.getInstance();
        ActionGroup actionGroup = (ActionGroup) actionManager.getAction(actionGroupName);
        return actionManager.createActionToolbar(place, actionGroup, horizontal);
    }

    public static ActionToolbar createActionToolbar(String place, boolean horizontal, ActionGroup actionGroup){
        ActionManager actionManager = ActionManager.getInstance();
        return actionManager.createActionToolbar(place, actionGroup, horizontal);
    }

    public static ActionToolbar createActionToolbar(String place, boolean horizontal, AnAction... actions){
        ActionManager actionManager = ActionManager.getInstance();
        DefaultActionGroup actionGroup = new DefaultActionGroup();
        for (AnAction action : actions) {
            if (action == SEPARATOR)
                actionGroup.addSeparator(); else
                actionGroup.add(action);
        }

        return actionManager.createActionToolbar(place, actionGroup, horizontal);
    }

    @Nullable
    public static Project getProject(AnActionEvent e) {
        return e.getData(PlatformDataKeys.PROJECT);
    }

    /**
     * @deprecated use getProject(Component)
     */
    public static Project getProject(){
        DataContext dataContext = DataManager.getInstance().getDataContextFromFocus().getResult();
        return PlatformDataKeys.PROJECT.getData(dataContext);
    }

    public static Project getProject(Component component){
        return PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(component));
    }
   
    public static void registerDataProvider(JComponent component, DataProvider dataProvider, boolean recursive) {
        DataManager.registerDataProvider(component, dataProvider);
        if (recursive) {
            for (Component child : component.getComponents()) {
                if (child instanceof JComponent) {
                    JComponent childComponent = (JComponent) child;
                    registerDataProvider(childComponent, dataProvider, recursive);
                }
            }
        }
    }
   
    public static DataProvider getDataProvider(JComponent component) {
        if (component != null) {
            DataProvider dataProvider = DataManager.getDataProvider(component);
            if (dataProvider == null) {
                JComponent parent = (JComponent) component.getParent();
                return getDataProvider(parent);
            } else {
                return dataProvider;
            }
        }
        return null;
    }

}
TOP

Related Classes of com.dci.intellij.dbn.common.util.ActionUtil

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.