diff --git a/code_samples/project_model/META-INF/plugin.xml b/code_samples/project_model/META-INF/plugin.xml
index 135be9e00..79b2d2a00 100644
--- a/code_samples/project_model/META-INF/plugin.xml
+++ b/code_samples/project_model/META-INF/plugin.xml
@@ -37,5 +37,9 @@
description="Illustrates how to get source roots">
+
+
+
\ No newline at end of file
diff --git a/code_samples/project_model/src/com/intellij/plugins/project/model/ModificationAction.java b/code_samples/project_model/src/com/intellij/plugins/project/model/ModificationAction.java
new file mode 100644
index 000000000..fa61936ef
--- /dev/null
+++ b/code_samples/project_model/src/com/intellij/plugins/project/model/ModificationAction.java
@@ -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);
+ }
+}