From f8ac7ad5b9553500ffbe9b3aec7738d22066cafe Mon Sep 17 00:00:00 2001 From: Anna Bulenkova Date: Fri, 30 Jan 2015 10:40:04 +0100 Subject: [PATCH] [code] framework sample --- framework/META-INF/plugin.xml | 43 +++++++++++ framework/framework.iml | 12 ++++ .../tutorials/framework/DemoFramework.java | 71 +++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 framework/META-INF/plugin.xml create mode 100644 framework/framework.iml create mode 100644 framework/src/com/intellij/tutorials/framework/DemoFramework.java diff --git a/framework/META-INF/plugin.xml b/framework/META-INF/plugin.xml new file mode 100644 index 000000000..3cc67f1d9 --- /dev/null +++ b/framework/META-INF/plugin.xml @@ -0,0 +1,43 @@ + + com.intellij.demo.framework + Framework example + 1.0 + YourCompany + + + most HTML tags may be used + ]]> + + + most HTML tags may be used + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/framework/framework.iml b/framework/framework.iml new file mode 100644 index 000000000..de3c6c143 --- /dev/null +++ b/framework/framework.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/framework/src/com/intellij/tutorials/framework/DemoFramework.java b/framework/src/com/intellij/tutorials/framework/DemoFramework.java new file mode 100644 index 000000000..6c4db74e7 --- /dev/null +++ b/framework/src/com/intellij/tutorials/framework/DemoFramework.java @@ -0,0 +1,71 @@ +package com.intellij.tutorials.framework; + +import com.intellij.framework.FrameworkTypeEx; +import com.intellij.framework.addSupport.FrameworkSupportInModuleConfigurable; +import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider; +import com.intellij.icons.AllIcons; +import com.intellij.ide.util.frameworkSupport.FrameworkSupportModel; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.roots.ModifiableModelsProvider; +import com.intellij.openapi.roots.ModifiableRootModel; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +/** + * @author Anna Bulenkova + */ +public class DemoFramework extends FrameworkTypeEx { + public static final String FRAMEWORK_ID = "Demo"; + protected DemoFramework() { + super(FRAMEWORK_ID); + } + + @NotNull + @Override + public FrameworkSupportInModuleProvider createProvider() { + return new FrameworkSupportInModuleProvider() { + @NotNull + @Override + public FrameworkTypeEx getFrameworkType() { + return DemoFramework.this; + } + + @NotNull + @Override + public FrameworkSupportInModuleConfigurable createConfigurable(@NotNull FrameworkSupportModel model) { + return new FrameworkSupportInModuleConfigurable() { + @Nullable + @Override + public JComponent createComponent() { + return new JCheckBox("Extra Option"); + } + + @Override + public void addSupport(@NotNull Module module, @NotNull ModifiableRootModel model, @NotNull ModifiableModelsProvider provider) { + //do what you want here: setup a library, generate a specific file, etc + } + }; + } + + @Override + public boolean isEnabledForModuleType(@NotNull ModuleType type) { + return true; + } + }; + } + + @NotNull + @Override + public String getPresentableName() { + return "Demo Framework"; + } + + @NotNull + @Override + public Icon getIcon() { + return AllIcons.Providers.Apache; + } +}