package com.demandware.studio.facet;
import com.demandware.studio.settings.DWSettingsProvider;
import com.intellij.facet.Facet;
import com.intellij.facet.FacetManager;
import com.intellij.facet.ModifiableFacetModel;
import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurable;
import com.intellij.ide.util.frameworkSupport.FrameworkSupportModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleServiceManager;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.libraries.Library;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.UUID;
public class DWFrameworkSupportConfigurable extends FrameworkSupportConfigurable {
DWFrameworkSupportConfigurablePanel dwFrameworkSupportConfigurablePanel;
public DWFrameworkSupportConfigurable(FrameworkSupportModel model) {
model.setFrameworkComponentEnabled("Demandware", true);
dwFrameworkSupportConfigurablePanel = new DWFrameworkSupportConfigurablePanel();
}
@Nullable
@Override
public JComponent getComponent() {
return dwFrameworkSupportConfigurablePanel.createPanel();
}
@Override
public void addSupport(@NotNull Module module, @NotNull ModifiableRootModel modifiableRootModel, @Nullable Library library) {
final FacetManager facetManager = FacetManager.getInstance(module);
ModifiableFacetModel facetModel = facetManager.createModifiableModel();
DWSettingsProvider dwSettingsProvider = ModuleServiceManager.getService(module, DWSettingsProvider.class);
dwSettingsProvider.setPasswordKey(UUID.randomUUID().toString());
dwSettingsProvider.setHostname(dwFrameworkSupportConfigurablePanel.getHostname());
dwSettingsProvider.setUsername(dwFrameworkSupportConfigurablePanel.getUsername());
dwSettingsProvider.setPassword(dwFrameworkSupportConfigurablePanel.getPassword());
dwSettingsProvider.setVersion(dwFrameworkSupportConfigurablePanel.getVersion());
dwSettingsProvider.setAutoUploadEnabled(dwFrameworkSupportConfigurablePanel.getAutoUploadEnabled());
Facet facet = FacetManager.getInstance(modifiableRootModel.getModule()).addFacet(DWFacetType.INSTANCE, "Demandware", null);
facetModel.addFacet(facet);
facetModel.commit();
}
}