summaryrefslogtreecommitdiff
path: root/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java')
-rw-r--r--java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java64
1 files changed, 62 insertions, 2 deletions
diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java
index 4aa8d60bcea4..62e256c14c8e 100644
--- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java
+++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java
@@ -16,6 +16,7 @@
package com.intellij.remoteServer.impl.module;
import com.intellij.icons.AllIcons;
+import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase;
import com.intellij.ide.util.projectWizard.JavaModuleBuilder;
import com.intellij.ide.util.projectWizard.ModuleBuilderListener;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
@@ -23,20 +24,42 @@ import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.module.JavaModuleType;
import com.intellij.openapi.module.Module;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
+import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
+import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.remoteServer.ServerType;
import com.intellij.remoteServer.configuration.RemoteServer;
+import com.intellij.util.containers.hash.HashMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
+import java.util.Map;
public class CloudModuleBuilder extends JavaModuleBuilder {
private RemoteServer<?> myAccount;
private CloudApplicationConfiguration myApplicationConfiguration;
+ private FrameworkSupportModelBase myFrameworkSupportModel;
+
+ private Map<ServerType<?>, CloudModuleBuilderContribution> myCloudType2Contribution;
+ private Project myProject;
public CloudModuleBuilder() {
+ myCloudType2Contribution = new HashMap<ServerType<?>, CloudModuleBuilderContribution>();
+
+ ModuleConfigurationUpdater configurationUpdater = new ModuleConfigurationUpdater() {
+
+ public void update(@NotNull final Module module, @NotNull final ModifiableRootModel rootModel) {
+ preConfigureModule(module, rootModel);
+ }
+ };
+ addModuleConfigurationUpdater(configurationUpdater);
+
addListener(new ModuleBuilderListener() {
@Override
@@ -93,7 +116,8 @@ public class CloudModuleBuilder extends JavaModuleBuilder {
@Nullable
@Override
public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) {
- return new CloudModuleWizardStep(this, context.getProject(), parentDisposable);
+ myProject = context.getProject();
+ return new CloudModuleWizardStep(this, myProject, parentDisposable);
}
public void setAccount(RemoteServer<?> account) {
@@ -108,7 +132,43 @@ public class CloudModuleBuilder extends JavaModuleBuilder {
myApplicationConfiguration = applicationConfiguration;
}
+ public CloudApplicationConfiguration getApplicationConfiguration() {
+ return myApplicationConfiguration;
+ }
+
+ public CloudModuleBuilderContribution getContribution(ServerType<?> cloudType) {
+ CloudModuleBuilderContribution result = myCloudType2Contribution.get(cloudType);
+ if (result == null) {
+ result = CloudModuleBuilderContributionFactory.getInstanceByType(cloudType).createContribution(this);
+ myCloudType2Contribution.put(cloudType, result);
+ }
+ return result;
+ }
+
+ private CloudModuleBuilderContribution getContribution() {
+ return getContribution(myAccount.getType());
+ }
+
+ private void preConfigureModule(Module module, ModifiableRootModel model) {
+ getContribution().preConfigureModule(module, model);
+ }
+
private void configureModule(final Module module) {
- CloudModuleBuilderContribution.getInstanceByType(myAccount.getType()).configureModule(module, myAccount, myApplicationConfiguration);
+ getContribution().configureModule(module);
+ }
+
+ public FrameworkSupportModelBase getFrameworkSupportModel() {
+ if (myFrameworkSupportModel == null) {
+ final LibrariesContainer librariesContainer = LibrariesContainerFactory.createContainer(myProject);
+ myFrameworkSupportModel = new FrameworkSupportModelBase(myProject, this, librariesContainer) {
+
+ @NotNull
+ @Override
+ public String getBaseDirectoryForLibrariesPath() {
+ return StringUtil.notNullize(getContentEntryPath());
+ }
+ };
+ }
+ return myFrameworkSupportModel;
}
}