diff --git a/MaxOpenedProjects/MaxOpenedProjects.iml b/MaxOpenedProjects/MaxOpenedProjects.iml
new file mode 100644
index 000000000..347e916d5
--- /dev/null
+++ b/MaxOpenedProjects/MaxOpenedProjects.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MaxOpenedProjects/src/META-INF/plugin.xml b/MaxOpenedProjects/src/META-INF/plugin.xml
new file mode 100644
index 000000000..3e3ce844c
--- /dev/null
+++ b/MaxOpenedProjects/src/META-INF/plugin.xml
@@ -0,0 +1,29 @@
+
+ Plugin name here
+ short description of the plugin
+ 1.0
+ YourCompany
+
+
+
+
+
+
+
+
+
+ MyPackage.MaxProject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MaxOpenedProjects/src/MyPackage/MaxProject.java b/MaxOpenedProjects/src/MyPackage/MaxProject.java
new file mode 100644
index 000000000..dbf179d55
--- /dev/null
+++ b/MaxOpenedProjects/src/MyPackage/MaxProject.java
@@ -0,0 +1,54 @@
+package MyPackage;
+
+import com.intellij.openapi.components.ProjectComponent;
+import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.project.ProjectManager;
+import com.intellij.openapi.ui.Messages;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Alexey.Chursin
+ * Date: Aug 13, 2010
+ * Time: 3:50:25 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class MaxProject implements ProjectComponent {
+ public MaxProject(Project project) {
+ }
+
+ public void initComponent() {
+ // TODO: insert component initialization logic here
+ }
+
+ public void disposeComponent() {
+ // TODO: insert component disposal logic here
+ }
+
+ @NotNull
+ public String getComponentName() {
+ return "MaxProject";
+ }
+
+ public void projectOpened() {
+ // called when project is opened
+ MyCounter CommandCounter = ServiceManager.getService(MyCounter.class);
+
+ if (CommandCounter.IncreaseCounter() == -1) {
+ Messages.showMessageDialog("The maximum number of opened projects exceeds " + String.valueOf(CommandCounter.MaxCount) +
+ " projects!", "Error", Messages.getErrorIcon());
+ ProjectManager PM=ProjectManager.getInstance();
+ Project[] AllProjects = PM.getOpenProjects();
+ Project project = AllProjects[AllProjects.length-1];
+ PM.closeProject(project);
+ }
+ }
+
+
+ public void projectClosed() {
+ // called when project is being closed
+ MyCounter CommandCounter = ServiceManager.getService(MyCounter.class);
+ CommandCounter.DecreaseCounter();
+ }
+}
diff --git a/MaxOpenedProjects/src/MyPackage/MyCounter.java b/MaxOpenedProjects/src/MyPackage/MyCounter.java
new file mode 100644
index 000000000..f2e5417a8
--- /dev/null
+++ b/MaxOpenedProjects/src/MyPackage/MyCounter.java
@@ -0,0 +1,29 @@
+package MyPackage;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Alexey.Chursin
+ * Date: Aug 13, 2010
+ * Time: 3:49:33 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class MyCounter {
+ private int Count = 0;
+ // Sets the maximum allowed number of opened projects.
+ public final int MaxCount = 3;
+ public MyCounter(){
+
+
+ }
+
+ public int IncreaseCounter() {
+ Count++;
+ return (Count > MaxCount) ? -1:Count;
+ }
+
+ public int DecreaseCounter() {
+ Count--;
+ return (Count > MaxCount) ? -1:Count;
+ }
+
+}