mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 16:57:49 +08:00
[code] Project modification
This commit is contained in:
parent
e4fdb48ae6
commit
36453ed153
@ -37,5 +37,9 @@
|
|||||||
description="Illustrates how to get source roots">
|
description="Illustrates how to get source roots">
|
||||||
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
|
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
|
||||||
</action>
|
</action>
|
||||||
|
<action id="ProjectModel.ModificationAction" class="com.intellij.plugins.project.model.ModificationAction" text="Project Modification in Action"
|
||||||
|
description="Illustrates how to get source roots">
|
||||||
|
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
|
||||||
|
</action>
|
||||||
</actions>
|
</actions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.intellij.plugins.project.model;
|
||||||
|
|
||||||
|
import com.intellij.openapi.actionSystem.AnAction;
|
||||||
|
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||||
|
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||||
|
import com.intellij.openapi.module.Module;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.openapi.roots.ModuleRootManager;
|
||||||
|
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||||
|
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||||
|
import com.intellij.openapi.roots.ProjectRootManager;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import com.intellij.pom.Navigatable;
|
||||||
|
import com.intellij.psi.PsiClass;
|
||||||
|
import com.intellij.psi.PsiFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Anna Bulenkova
|
||||||
|
*/
|
||||||
|
public class ModificationAction extends AnAction {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final AnActionEvent event) {
|
||||||
|
Project project = event.getProject();
|
||||||
|
if (project == null) return;
|
||||||
|
Navigatable element = event.getData(CommonDataKeys.NAVIGATABLE);
|
||||||
|
if (element instanceof PsiClass) {
|
||||||
|
PsiFile file = ((PsiClass) element).getContainingFile();
|
||||||
|
if (file == null) return;
|
||||||
|
final VirtualFile virtualFile = file.getVirtualFile();
|
||||||
|
if (virtualFile == null) return;
|
||||||
|
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
|
||||||
|
final Module module = fileIndex.getModuleForFile(virtualFile);
|
||||||
|
if (module == null) return;
|
||||||
|
if (!ModuleRootManager.getInstance(module).getFileIndex().isInContent(virtualFile)) {
|
||||||
|
ModuleRootModificationUtil.addModuleLibrary(module, virtualFile.getUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(final AnActionEvent event) {
|
||||||
|
Project project = event.getProject();
|
||||||
|
Navigatable element = event.getData(CommonDataKeys.NAVIGATABLE);
|
||||||
|
event.getPresentation().setEnabledAndVisible(project != null && element != null);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user