package com.dd; import com.intellij.ide.projectView.ProjectView; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; public class ComposeAction extends AnAction { private static final String DECOMPOSE = "Ungroup"; private static final String COMPOSE = "Group"; @Override public void actionPerformed(AnActionEvent actionEvent) { Object nav = actionEvent.getData(CommonDataKeys.NAVIGATABLE); if (nav instanceof PsiDirectory) { PsiDirectory directory = (PsiDirectory) nav; String path = directory.getVirtualFile().getPath(); if (SettingsManager.isComposed(path)) { SettingsManager.removeComposedFolder(path); } else { SettingsManager.addComposedFolder(path); } Project project = actionEvent.getData(CommonDataKeys.PROJECT); if (project != null) { ProjectView.getInstance(project).refresh(); } } } @Override public void update(AnActionEvent actionEvent) { boolean enabledAndVisible = false; Project project = actionEvent.getData(CommonDataKeys.PROJECT); if (project != null) { Object nav = actionEvent.getData(CommonDataKeys.NAVIGATABLE); if (nav instanceof PsiDirectory) { PsiDirectory directory = (PsiDirectory) nav; String path = directory.getVirtualFile().getPath(); if (SettingsManager.isComposed(path)) { actionEvent.getPresentation().setText(DECOMPOSE); } else { actionEvent.getPresentation().setText(COMPOSE); } enabledAndVisible = true; } } actionEvent.getPresentation().setEnabledAndVisible(enabledAndVisible); } }