diff --git a/CHANGELOG.md b/CHANGELOG.md
index 128dad9330f897b3dbfb01f35f2a230f959052bb..b767c0c0d9f7997284e1a66029ecda00cddb0dc8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
# Solon Changelog
-## [Unreleased]
-### Added
-- Initial scaffold created from [IntelliJ Platform Plugin Template](https://github.com/JetBrains/intellij-platform-plugin-template)
+## [0.0.1-M2] - 2023-03-30
+
+### [Fixed]
+
+1. 修复sdk一直加载为空的bug
+2. 修复无法获取远程版本和依赖的问题
+3. 修复勾选git没有git init的问题
diff --git a/README.md b/README.md
index 22e2bdba6fab60cf6bbc7f480b5055b71d9a8be0..12ad425bf4efc155362073376170527d7a3c0cc9 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,23 @@
-# Solon
-
-[](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
-[](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
-
-## Template ToDo list
-- [x] Create a new [IntelliJ Platform Plugin Template][template] project.
-- [ ] Get familiar with the [template documentation][template].
-- [ ] Verify the [pluginGroup](./gradle.properties), [plugin ID](./src/main/resources/META-INF/plugin.xml) and [sources package](./src/main/kotlin).
-- [ ] Review the [Legal Agreements](https://plugins.jetbrains.com/docs/marketplace/legal-agreements.html?from=IJPluginTemplate).
-- [ ] [Publish a plugin manually](https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate) for the first time.
-- [ ] Set the Plugin ID in the above README badges.
-- [ ] Set the [Plugin Signing](https://plugins.jetbrains.com/docs/intellij/plugin-signing.html?from=IJPluginTemplate) related [secrets](https://github.com/JetBrains/intellij-platform-plugin-template#environment-variables).
-- [ ] Set the [Deployment Token](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html?from=IJPluginTemplate).
-- [ ] Click the Watch button on the top of the [IntelliJ Platform Plugin Template][template] to be notified about releases containing new features and fixes.
+# Solon Intellij Plugin
+
+[中文文档](README_ZH.md)
+
-This Fancy IntelliJ Platform Plugin is going to be your implementation of the brilliant ideas that you have.
+
+future:
-This specific section is a source for the [plugin.xml](/src/main/resources/META-INF/plugin.xml) file which will be extracted by the [Gradle](/build.gradle.kts) during the build process.
+1. solon initializr : create solon project
+2. solon completion : yml .. completion
-To keep everything working, do not remove `` sections.
## Installation
- Using IDE built-in plugin system:
-
+
Settings/Preferences > Plugins > Marketplace > Search for "Solon" >
Install Plugin
-
-- Manually:
-
- Download the [latest release](https://gitee.com/noear/solon-idea-plugin/releases) and install it manually using
- Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
-
---
Plugin based on the [IntelliJ Platform Plugin Template][template].
diff --git a/README_ZH.md b/README_ZH.md
new file mode 100644
index 0000000000000000000000000000000000000000..46ed382c234a384c651bb139693bfa2a0e9f0207
--- /dev/null
+++ b/README_ZH.md
@@ -0,0 +1,21 @@
+# Solon Intellij Plugin
+
+[Enginsh Document](README.md)
+
+
+
+
+功能:
+
+1. solon项目创建向导 : 用于创建solon项目
+2. solon代码补全 :各种补全
+
+
+
+## 安装方式
+
+在intellij idea的plugin marketplace里搜索solon点击install安装重启idea即可享用
+
+
+---
+感谢Intellij
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index cc4aa2778bb001ac79b5e940c09f68399d9bd545..ec847d7de52ce8c38445096d562218bcf87448af 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -7,11 +7,12 @@ plugins {
// Java support
id("java")
// Kotlin support
- id("org.jetbrains.kotlin.jvm") version "1.8.0"
+ id("org.jetbrains.kotlin.jvm") version "1.8.10"
// Gradle IntelliJ Plugin
- id("org.jetbrains.intellij") version "1.12.0"
+ id("org.jetbrains.intellij") version "1.13.3"
// Gradle Changelog Plugin
id("org.jetbrains.changelog") version "2.0.0"
+ id("idea")
}
group = properties("pluginGroup")
@@ -20,18 +21,18 @@ version = properties("pluginVersion")
// Configure project's dependencies
repositories {
mavenCentral()
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
}
-dependencies{
- // https://github.com/alibaba/fastjson2
+dependencies {
+ implementation("org.noear:snack3:3.2.61")
implementation("com.alibaba.fastjson2:fastjson2:2.0.23")
- // https://mvnrepository.com/artifact/org.apache.commons/commons-collections4
+// implementation("org.projectlombok:lombok:1.18.26")
+// annotationProcessor("org.projectlombok:lombok:1.18.26")
+ implementation("com.squareup.okhttp3:okhttp:5.0.0-alpha.11")
implementation("org.apache.commons:commons-collections4:4.4")
+ implementation("cn.hutool:hutool-core:5.8.16")
}
-// Set the JVM language level used to build the project. Use Java 11 for 2020.3+, and Java 17 for 2022.2+.
-kotlin {
- jvmToolchain(11)
-}
// Configure Gradle IntelliJ Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
@@ -55,6 +56,16 @@ tasks {
gradleVersion = properties("gradleVersion")
}
+ withType {
+ sourceCompatibility = "11"
+ targetCompatibility = "11"
+ }
+
+
+ runIde {
+ jvmArgs = listOf("-Dfile.encoding=UTF-8")
+ }
+
patchPluginXml {
version.set(properties("pluginVersion"))
sinceBuild.set(properties("pluginSinceBuild"))
diff --git a/gradle.properties b/gradle.properties
index 55cde7790ff6d49297d0709905a6b4b62f292345..132a7b27ba711fddfd2f7814354f03ae7250536f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,22 +1,18 @@
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
-
-pluginGroup = org.noear.solon.idea.plugin
-pluginName = Solon
-pluginRepositoryUrl = https://gitee.com/noear/solon-idea-plugin
+pluginGroup=org.noear.solon.idea.plugin
+pluginName=Solon
+pluginRepositoryUrl=https://gitee.com/noear/solon-idea-plugin
# SemVer format -> https://semver.org
-pluginVersion = 0.0.1-M1
-
+pluginVersion=0.0.1-M2
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
-pluginSinceBuild = 213
-pluginUntilBuild = 223.*
-
+pluginSinceBuild=213.7172.25
+pluginUntilBuild=231.*
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
-platformType = IC
-platformVersion = 2021.3.3
-
+platformType=IC
+platformVersion=2021.3.3
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
-platformPlugins = com.intellij.java, properties, yaml
+platformPlugins = com.intellij.java, properties, yaml, com.intellij.uiDesigner
# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 7.6
@@ -28,3 +24,4 @@ kotlin.stdlib.default.dependency = false
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
# suppress inspection "UnusedProperty"
org.gradle.unsafe.configuration-cache = false
+
diff --git a/screenshots/img.png b/screenshots/img.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ae14bbe7bf3b393bdfe7c908c6fcfdf4735f5ef
Binary files /dev/null and b/screenshots/img.png differ
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/InitializerDownloader.java b/src/main/java/org/noear/solon/idea/plugin/initializr/InitializerDownloader.java
new file mode 100644
index 0000000000000000000000000000000000000000..e13d44f81f98a0a2cc4480ad5b0128633b24a1c0
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/InitializerDownloader.java
@@ -0,0 +1,84 @@
+package org.noear.solon.idea.plugin.initializr;
+
+import com.intellij.openapi.application.ApplicationInfo;
+import com.intellij.openapi.application.ApplicationNamesInfo;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.progress.ProgressIndicator;
+import com.intellij.openapi.vfs.LocalFileSystem;
+import com.intellij.openapi.vfs.VirtualFile;
+import okhttp3.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import static cn.hutool.core.util.ZipUtil.unzip;
+import static com.intellij.openapi.util.text.StringUtil.isEmpty;
+import static com.intellij.openapi.vfs.newvfs.RefreshQueue.getInstance;
+import static java.util.Objects.requireNonNull;
+
+class InitializerDownloader {
+ private static final Logger log = Logger.getInstance(InitializerDownloader.class);
+
+ private final SolonInitializrBuilder builder;
+
+ InitializerDownloader(SolonInitializrBuilder builder) {
+ this.builder = builder;
+ }
+
+ @NotNull
+ private String extractFilenameFromContentDisposition(@Nullable String contentDispositionHeader) {
+ String fileName = null;
+ if (contentDispositionHeader != null) {
+ fileName = contentDispositionHeader
+ .replaceFirst(".*filename=\"?(?[^;\"]+);?\"?.*", "${fileName}");
+ }
+ return !isEmpty(fileName) ? fileName : "unknown";
+ }
+
+ void execute(ProgressIndicator indicator) throws IOException {
+ String downloadUrl = builder.getMetadata().getServerUrl();
+ File targetExtractionDir = new File(requireNonNull(builder.getContentEntryPath()));
+ if (!targetExtractionDir.exists()) {
+ targetExtractionDir.mkdirs();
+ }
+ System.out.println("Downloading project from: " + downloadUrl);
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("multipart/form-data; boundary=--------------------------232777208425725075004432");
+ RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("project", builder.getMetadata().getProject())
+ .addFormDataPart("language", builder.getMetadata().getLanguage())
+ .addFormDataPart("solonVer", builder.getMetadata().getSolonVer())
+ .addFormDataPart("group", builder.getMetadata().getGroupId())
+ .addFormDataPart("artifact", builder.getMetadata().getArtifactId())
+ .addFormDataPart("packageName", builder.getMetadata().getPackageName())
+ .addFormDataPart("packaging", builder.getMetadata().getPackaging())
+ .addFormDataPart("javaVer", builder.getMetadata().getJavaVersion())
+ .addFormDataPart("dependencies", builder.getMetadata().getDependencies())
+ .build();
+ Request request = new Request.Builder()
+ .url(downloadUrl)
+ .method("POST", body)
+ .addHeader("User-Agent", ApplicationNamesInfo.getInstance().getFullProductName() + "/" + ApplicationInfo.getInstance().getBuild().asStringWithoutProductCode())
+ .addHeader("Accept", "*/*")
+ .addHeader("Host", "solon.noear.org")
+ .addHeader("Connection", "keep-alive")
+ .addHeader("Content-Type", mediaType.toString())
+ .build();
+ Response response = client.newCall(request).execute();
+ File file = new File(targetExtractionDir + File.separator + extractFilenameFromContentDisposition(response.header("Content-Disposition").toString()));
+ FileOutputStream fos = new FileOutputStream(file);
+ fos.write(response.body().bytes());
+ fos.close();
+// extract(file, targetExtractionDir, null);
+ unzip(file, targetExtractionDir);
+ file.delete();
+ VirtualFile targetFile =
+ LocalFileSystem.getInstance().refreshAndFindFileByIoFile(targetExtractionDir);
+ getInstance().refresh(false, true, null, targetFile);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/SolonCreationMetadata.java b/src/main/java/org/noear/solon/idea/plugin/initializr/SolonCreationMetadata.java
index 9f9094ef5b36f715971eca8d6200c1df162fdfa2..38cb0bf073f95e820b2d2a6be5b00a4e43fa5502 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/SolonCreationMetadata.java
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/SolonCreationMetadata.java
@@ -1,14 +1,10 @@
package org.noear.solon.idea.plugin.initializr;
-import com.intellij.ide.util.projectWizard.ModuleBuilder;
-import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.Sdk;
-import com.intellij.openapi.projectRoots.SdkModel;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.pom.java.LanguageLevel;
-import org.noear.solon.idea.plugin.initializr.util.SolonInitializrUtil;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
@@ -36,7 +32,18 @@ public class SolonCreationMetadata {
private Sdk sdk;
- private String javaVersion = "8";
+ private String javaVersion = "1.8";
+
+
+ private String packaging = "jar";
+
+ private String dependencies = "";
+ private String project = "maven";
+ private String language = "java";
+ private String solonVer = "2.2.6";
+
+ private String ServerUrl;
+
private static String sanitize(String input) {
return sanitizeFileName(input, false).replace(' ', '-').toLowerCase();
@@ -64,7 +71,7 @@ public class SolonCreationMetadata {
}
public boolean hasCompatibleJavaVersion() {
- if (this.sdk != null){
+ if (this.sdk != null) {
JavaSdkVersion wizardSdkVersion = JavaSdk.getInstance().getVersion(this.sdk);
if (wizardSdkVersion != null) {
LanguageLevel selectedLanguageLevel = LanguageLevel.parse(javaVersion);
@@ -141,5 +148,51 @@ public class SolonCreationMetadata {
this.javaVersion = javaVersion;
}
+ public String getDependencies() {
+ return dependencies;
+ }
+
+ public void setDependencies(String dependencies) {
+ this.dependencies = dependencies;
+ }
+
+ public String getPackaging() {
+ return packaging;
+ }
+
+ public void setPackaging(String packaging) {
+ this.packaging = packaging;
+ }
+
+ public String getProject() {
+ return project;
+ }
+ public void setProject(String project) {
+ this.project = project;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ public String getSolonVer() {
+ return solonVer;
+ }
+
+ public void setSolonVer(String solonVer) {
+ this.solonVer = solonVer;
+ }
+
+ public String getServerUrl() {
+ return "https://solon.noear.org/start/build.do";
+ }
+
+ public void setServerUrl(String serverUrl) {
+ ServerUrl = serverUrl;
+ }
}
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/SolonInitializrBuilder.java b/src/main/java/org/noear/solon/idea/plugin/initializr/SolonInitializrBuilder.java
index 0db9e7e62706b7302f9a7c01188a24511001be3f..480e7f34d20ff6a4a63f77386c591974cd5ba0f7 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/SolonInitializrBuilder.java
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/SolonInitializrBuilder.java
@@ -1,18 +1,19 @@
package org.noear.solon.idea.plugin.initializr;
import com.intellij.ide.projectWizard.ProjectSettingsStep;
-import com.intellij.ide.util.projectWizard.ModuleBuilder;
-import com.intellij.ide.util.projectWizard.ModuleWizardStep;
-import com.intellij.ide.util.projectWizard.WizardContext;
+import com.intellij.ide.util.projectWizard.*;
import com.intellij.openapi.Disposable;
+import com.intellij.openapi.GitRepositoryInitializer;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.ModuleWithNameAlreadyExists;
import com.intellij.openapi.options.ConfigurationException;
+import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.NlsContexts;
+import com.intellij.openapi.vfs.LocalFileSystem;
import org.jdom.JDOMException;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
@@ -20,27 +21,48 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.noear.solon.idea.plugin.SolonIcons;
import org.noear.solon.idea.plugin.initializr.step.ProjectDetailsStep;
+import org.noear.solon.idea.plugin.initializr.util.pojo.MetaDataBean;
import javax.swing.*;
+import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+
+import static com.intellij.openapi.application.ApplicationManager.getApplication;
+import static com.intellij.openapi.application.ModalityState.current;
+import static com.intellij.openapi.module.StdModuleTypes.JAVA;
+import static com.intellij.util.net.IOExceptionDialog.showErrorDialog;
+import static org.noear.solon.idea.plugin.initializr.util.SolonInitializrUtil.getRemoteMetaData;
public class SolonInitializrBuilder extends ModuleBuilder {
private SolonCreationMetadata metadata;
-
@Override
- public void setupRootModel(@NotNull ModifiableRootModel modifiableRootModel) throws ConfigurationException {
+ public void setupRootModel(@NotNull ModifiableRootModel modifiableRootModel) {
doAddContentEntry(modifiableRootModel);
}
@Override
public @NotNull Module createModule(@NotNull ModifiableModuleModel moduleModel) throws InvalidDataException, IOException, ModuleWithNameAlreadyExists, ConfigurationException, JDOMException {
-
// Create Maven Project
Module module = super.createModule(moduleModel);
+ getApplication().invokeLater(() -> {
+ ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> {
+ try {
+ InitializerDownloader downloader = new InitializerDownloader(this);
+ downloader.execute(ProgressManager.getInstance().getProgressIndicator());
+ } catch (IOException e) {
+ getApplication().invokeLater(() -> showErrorDialog("Error: " + e.getMessage(), "Creation Failed"));
+ }
+ if (metadata.isInitGit()) {
+ Objects.requireNonNull(GitRepositoryInitializer.getInstance()).initRepository(moduleModel.getProject(), Objects.requireNonNull(LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(Objects.requireNonNull(getContentEntryPath())))));
+ }
+ }, "Downloading Required Files...", true, null);
+ }, current());
+
return module;
}
@@ -82,21 +104,31 @@ public class SolonInitializrBuilder extends ModuleBuilder {
return "Build Tools";
}
- @Override
- public boolean isAvailable() {
- return true;
- }
-
@Override
public ModuleType> getModuleType() {
- return ModuleType.EMPTY;
+ return JAVA;
}
public SolonCreationMetadata getMetadata() {
- if (metadata == null){
+ if (metadata == null) {
metadata = new SolonCreationMetadata();
}
return metadata;
}
+ public MetaDataBean getRemoteMeta() {
+ return getRemoteMetaData();
+ }
+
+ @Override
+ public @Nullable String getContentEntryPath() {
+ return metadata.getLocation() + File.separator + metadata.getName();
+ }
+
+ @Override
+ public @Nullable ModuleWizardStep modifySettingsStep(@NotNull SettingsStep settingsStep) {
+ return new SdkSettingsStep(settingsStep, this, this::isSuitableSdkType);
+ }
+
+
}
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.form b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.form
index 190cfe4828777988b3b6bc7f1471e921b3191312..54607632652ac9b5d027914066c8b5639cdcfc89 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.form
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.form
@@ -1,9 +1,9 @@
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.java b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.java
index 620242eae09691dcea7defc40b22e8a9cf776cac..1eecb2193ab737fbd83666d82b13f8c3e4e3d776 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.java
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetails.java
@@ -1,12 +1,15 @@
package org.noear.solon.idea.plugin.initializr.step;
+
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
-import com.intellij.openapi.projectRoots.*;
+import com.intellij.openapi.projectRoots.JavaSdk;
+import com.intellij.openapi.projectRoots.JavaSdkType;
+import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.roots.ui.configuration.JdkComboBox;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
@@ -18,11 +21,13 @@ import com.intellij.ui.components.JBTextField;
import org.jetbrains.annotations.NotNull;
import org.noear.solon.idea.plugin.initializr.SolonCreationMetadata;
import org.noear.solon.idea.plugin.initializr.SolonInitializrBuilder;
-import org.noear.solon.idea.plugin.initializr.util.SolonInitializrUtil;
+import org.noear.solon.idea.plugin.initializr.util.pojo.MetaDataBean;
+import org.noear.solon.idea.plugin.initializr.util.pojo.Options;
import javax.swing.*;
-
-import java.io.File;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import java.util.*;
import static java.util.Objects.requireNonNull;
@@ -41,22 +46,88 @@ public class ProjectDetails {
private JBTextField TextField_Group;
private JBTextField TextField_Artifact;
private JBTextField TextField_PackageName;
- private ComboBox ComboBox_JavaVersion;
+ private ComboBox ComboBox_JavaVersion;
private JCheckBox CheckBox_InitGit;
- private JdkComboBox ComboBox_JDK;
+ // private JdkComboBox ComboBox_JDK;
+ private JRadioButton mavenButton;
+ private JRadioButton gradleKotlinButton;
+ private JRadioButton gradleGroovyButton;
+ private JRadioButton javaButton;
+ private JRadioButton kotlinButton;
+ private JRadioButton groovyButton;
+ private JRadioButton snapshotVersionButton;
+ private JRadioButton defaultVersionButton;
+ private JList list;
+ private JRadioButton jarRadioButton;
+ private JRadioButton warRadioButton;
+
+
+ private MetaDataBean remoteMetaData;
+
+ public ProjectDetails(SolonInitializrBuilder moduleBuilder, WizardContext context) {
+
- public ProjectDetails(SolonInitializrBuilder moduleBuilder, WizardContext context){
-
this.moduleBuilder = moduleBuilder;
this.wizardContext = context;
this.metadata = this.moduleBuilder.getMetadata();
+ this.remoteMetaData = this.moduleBuilder.getRemoteMeta();
+ DocumentListener dl = new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
- ComboBox_JDK.addActionListener(e -> {
- this.metadata.setSdk(ComboBox_JDK.getSelectedJdk());
- });
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
+
+ protected void updateFieldState() {
+ TextField_Artifact.setText(TextField_Name.getText());
+ TextField_PackageName.setText(TextField_Group.getText() + "." + TextField_Artifact.getText());
+ }
+ };
+ DocumentListener dl2 = new DocumentListener() {
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ updateFieldState();
+ }
+
+ protected void updateFieldState() {
+ TextField_PackageName.setText(TextField_Group.getText() + "." + TextField_Artifact.getText());
+ }
+ };
+ TextField_Name.getDocument().addDocumentListener(dl);
+ TextField_Artifact.getDocument().addDocumentListener(dl2);
+ TextField_Group.getDocument().addDocumentListener(dl2);
+ TextField_PackageName.setEditable(false);
+// ComboBox_JDK.addActionListener(e -> {
+// this.metadata.setSdk(ComboBox_JDK.getSelectedJdk());
+// });
TextField_Name.setText(this.metadata.getName());
TextField_Name.addCaretListener(e -> {
+// String text = TextField_Name.getText();
+// String text1 = TextField_Location.getText();
+// File file = new File(text1 + File.separatorChar + text);
+// if (file.exists()) {
+//
+// }
this.metadata.setName(TextField_Name.getText());
});
@@ -75,9 +146,13 @@ public class ProjectDetails {
this.metadata.setPackageName(TextField_PackageName.getText());
});
+ List options1 = remoteMetaData.getJavaVer().getOptions();
+ for (Options options : options1) {
+ ComboBox_JavaVersion.addItem(options.getValue());
+ }
ComboBox_JavaVersion.setSelectedItem(this.metadata.getJavaVersion());
ComboBox_JavaVersion.addActionListener(e -> {
- this.metadata.setJavaVersion(ComboBox_JavaVersion.getSelectedItem().toString());
+ this.metadata.setJavaVersion(requireNonNull(ComboBox_JavaVersion.getSelectedItem()).toString());
});
CheckBox_InitGit.setSelected(this.metadata.isInitGit());
@@ -98,21 +173,55 @@ public class ProjectDetails {
jTextField.setText(s);
metadata.setLocation(jTextField.getText());
}
+ });
+ mavenButton.addActionListener(e -> this.metadata.setProject("maven"));
+ gradleKotlinButton.addActionListener(e -> this.metadata.setProject("gradle-kotlin"));
+ gradleGroovyButton.addActionListener(e -> this.metadata.setProject("gradle-groovy"));
+ javaButton.addActionListener(e -> this.metadata.setLanguage("java"));
+ kotlinButton.addActionListener(e -> this.metadata.setLanguage("kotlin"));
+ groovyButton.addActionListener(e -> this.metadata.setLanguage("groovy"));
+ List options = remoteMetaData.getSolonVer().getOptions();
+ for (Options option : options) {
+ if (Objects.equals(option.getValue(), remoteMetaData.getSolonVer().getDefaultValue())) {
+ defaultVersionButton.setText(option.getValue());
+ }
+ snapshotVersionButton.setText(option.getValue());
+ }
+ snapshotVersionButton.addActionListener(e -> this.metadata.setSolonVer(snapshotVersionButton.getText()));
+ defaultVersionButton.addActionListener(e -> this.metadata.setSolonVer(defaultVersionButton.getText()));
+ jarRadioButton.addActionListener(e -> this.metadata.setPackaging("jar"));
+ warRadioButton.addActionListener(e -> this.metadata.setPackaging("war"));
+
+ List options2 = remoteMetaData.getDependencies().getOptions();
+ HashMap hashMap = new HashMap<>();
+ for (Options options3 : options2) {
+ hashMap.put(options3.getTitle() + " - " + options3.getDescription(), options3.getValue());
+ }
+ Set> entries = hashMap.entrySet();
+ DefaultListModel model = new DefaultListModel();
+ for (Map.Entry stringStringEntry : entries) {
+ model.addElement(stringStringEntry.getKey());
+ }
+ list.setModel(model);
+ list.addListSelectionListener(e -> {
+ this.metadata.setDependencies(hashMap.get(list.getSelectedValue()));
+ System.out.println(hashMap.get(list.getSelectedValue()));
});
}
- public JPanel getRoot(){
+ public JPanel getRoot() {
return Panel_Root;
}
- public void createUIComponents(){
- Project project = this.wizardContext.getProject() != null ? wizardContext.getProject() : ProjectManager.getInstance().getDefaultProject();
-
- ProjectStructureConfigurable projectConfig = ProjectStructureConfigurable.getInstance(project);
- ProjectSdksModel jdksModel = projectConfig.getProjectJdksModel();
- ComboBox_JDK = new JdkComboBox(project, jdksModel, (sdk) -> sdk instanceof JavaSdkType, null, null, null);
- }
+// public void createUIComponents() {
+// Project project = this.wizardContext.getProject() != null ? wizardContext.getProject() : ProjectManager.getInstance().getDefaultProject();
+//
+// ProjectStructureConfigurable projectConfig = ProjectStructureConfigurable.getInstance(project);
+// ProjectSdksModel jdksModel = projectConfig.getProjectJdksModel();
+// System.out.println(jdksModel.getProjectSdks());
+// ComboBox_JDK = new JdkComboBox(project, jdksModel, (sdk) -> sdk instanceof JavaSdkType, null, null, null);
+// }
public boolean validate(ModuleBuilder moduleBuilder, WizardContext wizardContext)
throws ConfigurationException {
@@ -139,5 +248,9 @@ public class ProjectDetails {
}
+ public void setModuleBuilder(SolonInitializrBuilder moduleBuilder) {
+
+ }
+
}
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetailsStep.java b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetailsStep.java
index 0ee388d7782b1016977c9b64bef6db235a0af35f..b663d162a56fd461d7259a6d62ecd5dc01adc125 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetailsStep.java
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/step/ProjectDetailsStep.java
@@ -4,6 +4,7 @@ import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.options.ConfigurationException;
+import org.jetbrains.annotations.NonNls;
import org.noear.solon.idea.plugin.initializr.SolonCreationMetadata;
import org.noear.solon.idea.plugin.initializr.SolonInitializrBuilder;
@@ -15,7 +16,6 @@ public class ProjectDetailsStep extends ModuleWizardStep implements Disposable {
private final SolonInitializrBuilder moduleBuilder;
private final WizardContext wizardContext;
private final SolonCreationMetadata metadata;
-
private ProjectDetails detailsForm;
public ProjectDetailsStep(SolonInitializrBuilder moduleBuilder, WizardContext wizardContext) {
@@ -32,7 +32,7 @@ public class ProjectDetailsStep extends ModuleWizardStep implements Disposable {
@Override
public boolean validate() throws ConfigurationException {
- if (this.metadata == null){
+ if (this.metadata == null) {
throw new ConfigurationException(
"Could not fetch metadata. Please go back and try again.",
"Error");
@@ -50,4 +50,11 @@ public class ProjectDetailsStep extends ModuleWizardStep implements Disposable {
@Override
public void dispose() {
}
+
+ @Override
+ public @NonNls String getHelpId() {
+ return "https://solon.noear.org/";
+ }
+
+
}
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/SolonInitializrUtil.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/SolonInitializrUtil.java
index b372a38affc88527a8707fa18e2cd97c88db212a..4e7b82171350209895cf06c5d5587e28659bd0f7 100644
--- a/src/main/java/org/noear/solon/idea/plugin/initializr/util/SolonInitializrUtil.java
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/SolonInitializrUtil.java
@@ -6,7 +6,14 @@ import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.util.ObjectUtils;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
import org.jetbrains.annotations.Nullable;
+import org.noear.snack.ONode;
+import org.noear.solon.idea.plugin.initializr.util.pojo.MetaDataBean;
+
+import java.io.IOException;
/**
* @author liupeiqiang
@@ -22,4 +29,21 @@ public class SolonInitializrUtil {
return wizardSdk == null ? null : JavaSdk.getInstance().getVersion(wizardSdk);
}
+
+ public static MetaDataBean getRemoteMetaData() {
+ MetaDataBean metaDataBean;
+ String metaDataUrl = "https://solon.noear.org/start/matedata.json";
+ OkHttpClient okHttpClient = new OkHttpClient();
+ Request request = new Request.Builder().url(metaDataUrl).build();
+ try {
+ Response response = okHttpClient.newCall(request).execute();
+ String metajson = response.body().string();
+ ONode o = ONode.loadStr(metajson);
+ metaDataBean = o.toObject(MetaDataBean.class);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return metaDataBean;
+ }
+
}
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Artifact.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Artifact.java
new file mode 100644
index 0000000000000000000000000000000000000000..3404b21cb0fe318eb09646769eb1f9de7b099b73
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Artifact.java
@@ -0,0 +1,18 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+public class Artifact {
+
+ private String defaultValue;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Dependencies.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Dependencies.java
new file mode 100644
index 0000000000000000000000000000000000000000..7bfda176213648ca08cc59007b38706e6453bff6
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Dependencies.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.List;
+
+public class Dependencies {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Description.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Description.java
new file mode 100644
index 0000000000000000000000000000000000000000..35521ba65f96783a0b2ef692b846e672098a28e4
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Description.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+
+public class Description {
+
+ private String defaultValue;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Group.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Group.java
new file mode 100644
index 0000000000000000000000000000000000000000..00d1634c0bb5abd6143be0ef44a1c5365565c8b7
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Group.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+
+public class Group {
+
+ private String defaultValue;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/JavaVer.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/JavaVer.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba1759f6e74be5c659183394fa819843a0201194
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/JavaVer.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.List;
+
+
+public class JavaVer {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Language.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Language.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcab6bbd87adfecc593f67f373595c71516c5eaf
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Language.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.List;
+
+
+public class Language {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/MetaDataBean.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/MetaDataBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..71af7ddce3f8eb682a5c5de43dd17ffedfcdbd04
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/MetaDataBean.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+
+public class MetaDataBean {
+
+ private Project project;
+ private Language language;
+ private SolonVer solonVer;
+ private Group group;
+ private Artifact artifact;
+ private Description description;
+ private PackageName packageName;
+ private Packaging packaging;
+ private JavaVer javaVer;
+ private Dependencies dependencies;
+
+ public Project getProject() {
+ return project;
+ }
+
+ public void setProject(Project project) {
+ this.project = project;
+ }
+
+ public Language getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(Language language) {
+ this.language = language;
+ }
+
+ public SolonVer getSolonVer() {
+ return solonVer;
+ }
+
+ public void setSolonVer(SolonVer solonVer) {
+ this.solonVer = solonVer;
+ }
+
+ public Group getGroup() {
+ return group;
+ }
+
+ public void setGroup(Group group) {
+ this.group = group;
+ }
+
+ public Artifact getArtifact() {
+ return artifact;
+ }
+
+ public void setArtifact(Artifact artifact) {
+ this.artifact = artifact;
+ }
+
+ public Description getDescription() {
+ return description;
+ }
+
+ public void setDescription(Description description) {
+ this.description = description;
+ }
+
+ public PackageName getPackageName() {
+ return packageName;
+ }
+
+ public void setPackageName(PackageName packageName) {
+ this.packageName = packageName;
+ }
+
+ public Packaging getPackaging() {
+ return packaging;
+ }
+
+ public void setPackaging(Packaging packaging) {
+ this.packaging = packaging;
+ }
+
+ public JavaVer getJavaVer() {
+ return javaVer;
+ }
+
+ public void setJavaVer(JavaVer javaVer) {
+ this.javaVer = javaVer;
+ }
+
+ public Dependencies getDependencies() {
+ return dependencies;
+ }
+
+ public void setDependencies(Dependencies dependencies) {
+ this.dependencies = dependencies;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Options.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Options.java
new file mode 100644
index 0000000000000000000000000000000000000000..f45769f047da481ab3490b3a95144934d7320db5
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Options.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+
+public class Options {
+
+ private String value;
+ private String title;
+ private String description;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/PackageName.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/PackageName.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd6157525a241e7909efc7ef8b3d84e10ff28bd6
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/PackageName.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+
+public class PackageName {
+
+ private String defaultValue;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Packaging.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Packaging.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb1c215917f6469535565ff487343e59ca6308e0
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Packaging.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.List;
+
+
+public class Packaging {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Project.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Project.java
new file mode 100644
index 0000000000000000000000000000000000000000..a815cdddb4b8e2d8e9c363f1a21c6359f4ab3b30
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/Project.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.List;
+
+
+public class Project {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/SolonVer.java b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/SolonVer.java
new file mode 100644
index 0000000000000000000000000000000000000000..4880925a209cabdfb82efd02a7c972f9d5f98639
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/SolonVer.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2023 json.cn
+ */
+package org.noear.solon.idea.plugin.initializr.util.pojo;
+
+import java.util.Date;
+import java.util.List;
+
+public class SolonVer {
+
+ private String defaultValue;
+ private List options;
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public List getOptions() {
+ return options;
+ }
+
+ public void setOptions(List options) {
+ this.options = options;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/metadata.json b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/metadata.json
new file mode 100644
index 0000000000000000000000000000000000000000..d7f4615b86b4b42b8dd11fc467efb49373e7a946
--- /dev/null
+++ b/src/main/java/org/noear/solon/idea/plugin/initializr/util/pojo/metadata.json
@@ -0,0 +1,140 @@
+{
+ "project": {
+ "defaultValue": "maven",
+ "options": [
+ {
+ "value": "maven",
+ "title": "Maven"
+ },
+ {
+ "value": "gradle_groovy",
+ "title": "Gradle - Groovy"
+ },
+ {
+ "value": "gradle_kotlin",
+ "title": "Gradle - Kotlin"
+ }
+ ]
+ },
+ "language": {
+ "defaultValue": "java",
+ "options": [
+ {
+ "value": "java",
+ "title": "Java"
+ },
+ {
+ "value": "kotlin",
+ "title": "Kotlin"
+ },
+ {
+ "value": "groovy",
+ "title": "Groovy"
+ }
+ ]
+ },
+ "solonVer": {
+ "defaultValue": "2.2.7",
+ "options": [
+ {
+ "value": "2.2.7",
+ "title": "2.2.7"
+ },
+ {
+ "value": "2.2.8-SNAPSHOT",
+ "title": "2.2.8-SNAPSHOT"
+ }
+ ]
+ },
+ "group": {
+ "defaultValue": "com.example"
+ },
+ "artifact": {
+ "defaultValue": "demo"
+ },
+ "description": {
+ "defaultValue": "Demo project for Solon"
+ },
+ "packageName": {
+ "defaultValue": "com.example.demo"
+ },
+ "packaging": {
+ "defaultValue": "jar",
+ "options": [
+ {
+ "value": "jar",
+ "title": "Jar"
+ },
+ {
+ "value": "war",
+ "title": "War"
+ }
+ ]
+ },
+ "javaVer": {
+ "defaultValue": "1.8",
+ "options": [
+ {
+ "value": "19",
+ "title": "19"
+ },
+ {
+ "value": "17",
+ "title": "17"
+ },
+ {
+ "value": "11",
+ "title": "11"
+ },
+ {
+ "value": "1.8",
+ "title": "1.8"
+ }
+ ]
+ },
+ "dependencies": {
+ "defaultValue": "solon-api",
+ "options": [
+ {
+ "value": "solon-lib",
+ "title": "Solon Lib",
+ "description": "Solon base shortcut package"
+ },
+ {
+ "value": "solon-job",
+ "title": "Solon Job",
+ "description": "Solon Lib + Scheduling Simple"
+ },
+ {
+ "value": "solon-api",
+ "title": "Solon Api",
+ "description": "Solon Lib + Jlhttp + StaticFiles + Cors"
+ },
+ {
+ "value": "solon-web",
+ "title": "Solon Web",
+ "description": "Solon Api + Freemarker + SessionState"
+ },
+ {
+ "value": "solon-rpc",
+ "title": "Solon Rpc",
+ "description": "Solon Api + Nami + Json + Hessian"
+ },
+ {
+ "value": "solon-cloud",
+ "title": "Solon Cloud",
+ "description": "Solon Rpc + Consul"
+ },
+ {
+ "value": "solon-cloud-alibaba",
+ "title": "Solon Cloud Alibaba",
+ "description": "Solon Rpc + Nacos + Rocketmq + Sentinel"
+ },
+ {
+ "value": "solon-cloud-water",
+ "title": "Solon Cloud Water",
+ "description": "Solon Rpc + Water"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/noear/solon/idea/plugin/suggestion/service/SuggestionServiceImpl.java b/src/main/java/org/noear/solon/idea/plugin/suggestion/service/SuggestionServiceImpl.java
index 7288192419414546bf1cf42e4d55f3f3c1e43661..7cb679b917363d8abf4de0fae840bc4faacb65fd 100644
--- a/src/main/java/org/noear/solon/idea/plugin/suggestion/service/SuggestionServiceImpl.java
+++ b/src/main/java/org/noear/solon/idea/plugin/suggestion/service/SuggestionServiceImpl.java
@@ -2,7 +2,6 @@ package org.noear.solon.idea.plugin.suggestion.service;
import com.alibaba.fastjson2.JSON;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
-import com.intellij.icons.AllIcons;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
@@ -13,7 +12,6 @@ import org.apache.commons.collections4.Trie;
import org.apache.commons.collections4.trie.PatriciaTrie;
import org.apache.commons.lang.time.StopWatch;
import org.jetbrains.annotations.Nullable;
-import org.noear.solon.idea.plugin.SolonIcons;
import org.noear.solon.idea.plugin.common.util.LoggerUtil;
import org.noear.solon.idea.plugin.suggestion.metadata.MetadataContainer;
import org.noear.solon.idea.plugin.suggestion.metadata.json.SolonConfigurationMetadata;
@@ -118,10 +116,10 @@ public class SuggestionServiceImpl implements SuggestionService{
private void processContainers(Module module, List containersToProcess) {
for (MetadataContainer metadataContainer : containersToProcess) {
String metadataFilePath = metadataContainer.getFileUrl();
- try (InputStream inputStream = metadataContainer.getMetadataFile().getInputStream()){
+ try (InputStream inputStream = metadataContainer.getMetadataFile().getInputStream()) {
SolonConfigurationMetadata solonConfigurationMetadata = JSON.parseObject(new BufferedReader(new InputStreamReader(inputStream)), SolonConfigurationMetadata.class);
buildMetadataHierarchy(module, solonConfigurationMetadata);
- }catch (IOException e){
+ } catch (IOException e) {
LoggerUtil.getLogger(this.getClass()).error("Exception encountered while processing metadata file: " + metadataFilePath, e);
}
}
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index c97f70d403413f292f5bf693a56592b5f871de0b..2e320ebc523e3a8c4af05be7594e0f1652982ff8 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -7,6 +7,7 @@
com.intellij.modules.platform
com.intellij.modules.java
com.intellij.properties
+ com.intellij.uiDesigner
@@ -26,7 +27,7 @@
+ order="first"/>