| /* |
| * Copyright 2000-2011 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.ide.util.newProjectWizard; |
| |
| import com.intellij.framework.FrameworkTypeEx; |
| import com.intellij.framework.addSupport.FrameworkSupportInModuleConfigurable; |
| import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider; |
| import com.intellij.framework.library.FrameworkLibraryVersion; |
| import com.intellij.framework.library.FrameworkLibraryVersionFilter; |
| import com.intellij.framework.library.FrameworkSupportWithLibrary; |
| import com.intellij.ide.util.frameworkSupport.*; |
| import com.intellij.ide.util.projectWizard.ModuleBuilder; |
| 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 com.intellij.openapi.roots.ui.configuration.FacetsProvider; |
| import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription; |
| import com.intellij.openapi.util.Disposer; |
| import com.intellij.ui.GuiUtils; |
| import com.intellij.util.ui.EmptyIcon; |
| import org.jetbrains.annotations.NotNull; |
| |
| import javax.swing.*; |
| import java.util.List; |
| |
| /** |
| * @author nik |
| */ |
| public class OldFrameworkSupportProviderWrapper extends FrameworkSupportInModuleProvider { |
| private final FrameworkSupportProvider myProvider; |
| private final OldFrameworkSupportProviderWrapper.FrameworkSupportProviderBasedType myType; |
| |
| public OldFrameworkSupportProviderWrapper(FrameworkSupportProvider provider) { |
| myProvider = provider; |
| myType = new FrameworkSupportProviderBasedType(myProvider, this); |
| } |
| |
| public FrameworkSupportProvider getProvider() { |
| return myProvider; |
| } |
| |
| @NotNull |
| @Override |
| public FrameworkTypeEx getFrameworkType() { |
| return myType; |
| } |
| |
| @NotNull |
| @Override |
| public FrameworkSupportInModuleConfigurable createConfigurable(@NotNull FrameworkSupportModel model) { |
| final FrameworkSupportConfigurable configurable = myProvider.createConfigurable(model); |
| return new FrameworkSupportConfigurableWrapper(configurable); |
| } |
| |
| @Override |
| public boolean isEnabledForModuleType(@NotNull ModuleType moduleType) { |
| return myProvider.isEnabledForModuleType(moduleType); |
| } |
| |
| @Override |
| public boolean isEnabledForModuleBuilder(@NotNull ModuleBuilder builder) { |
| return myProvider.isEnabledForModuleBuilder(builder); |
| } |
| |
| @Override |
| public boolean isSupportAlreadyAdded(@NotNull Module module, @NotNull FacetsProvider facetsProvider) { |
| return myProvider.isSupportAlreadyAdded(module, facetsProvider); |
| } |
| |
| @Override |
| public FrameworkRole[] getRoles() { |
| return myProvider.getRoles(); |
| } |
| |
| public static class FrameworkSupportProviderBasedType extends FrameworkTypeEx { |
| private final FrameworkSupportProvider myOldProvider; |
| private final OldFrameworkSupportProviderWrapper myNewProvider; |
| |
| private FrameworkSupportProviderBasedType(FrameworkSupportProvider oldProvider, |
| OldFrameworkSupportProviderWrapper newProvider) { |
| super(oldProvider.getId()); |
| myOldProvider = oldProvider; |
| myNewProvider = newProvider; |
| } |
| |
| @NotNull |
| @Override |
| public FrameworkSupportInModuleProvider createProvider() { |
| return myNewProvider; |
| } |
| |
| @NotNull |
| @Override |
| public String getPresentableName() { |
| return GuiUtils.getTextWithoutMnemonicEscaping(myOldProvider.getTitle()); |
| } |
| |
| @Override |
| public String getUnderlyingFrameworkTypeId() { |
| return myOldProvider.getUnderlyingFrameworkId(); |
| } |
| |
| @NotNull |
| @Override |
| public Icon getIcon() { |
| final Icon icon = myOldProvider.getIcon(); |
| return icon != null ? icon : EmptyIcon.ICON_16; |
| } |
| |
| public FrameworkSupportProvider getProvider() { |
| return myOldProvider; |
| } |
| } |
| |
| public static class FrameworkSupportConfigurableWrapper extends FrameworkSupportInModuleConfigurable { |
| private final FrameworkSupportConfigurable myConfigurable; |
| private final FrameworkLibraryVersionFilter myVersionFilter; |
| |
| public FrameworkSupportConfigurableWrapper(FrameworkSupportConfigurable configurable) { |
| Disposer.register(this, configurable); |
| myConfigurable = configurable; |
| myVersionFilter = getVersionFilter(configurable); |
| } |
| |
| private FrameworkLibraryVersionFilter getVersionFilter(FrameworkSupportConfigurable configurable) { |
| if (configurable instanceof FrameworkSupportWithLibrary) { |
| final FrameworkLibraryVersionFilter filter = configurable.getVersionFilter(); |
| if (filter != null) { |
| return filter; |
| } |
| } |
| return new FrameworkLibraryVersionFilter() { |
| @Override |
| public boolean isAccepted(@NotNull FrameworkLibraryVersion version) { |
| final FrameworkVersion selectedVersion = myConfigurable.getSelectedVersion(); |
| return selectedVersion == null || version.getVersionString().equals(selectedVersion.getVersionName()); |
| } |
| }; |
| } |
| |
| public FrameworkSupportConfigurable getConfigurable() { |
| return myConfigurable; |
| } |
| |
| @Override |
| public void onFrameworkSelectionChanged(boolean selected) { |
| myConfigurable.onFrameworkSelectionChanged(selected); |
| } |
| |
| @Override |
| public boolean isVisible() { |
| return myConfigurable.isVisible(); |
| } |
| |
| @Override |
| public JComponent createComponent() { |
| return myConfigurable.getComponent(); |
| } |
| |
| @Override |
| public boolean isOnlyLibraryAdded() { |
| return myConfigurable instanceof FrameworkSupportWithLibrary && ((FrameworkSupportWithLibrary)myConfigurable).isLibraryOnly(); |
| } |
| |
| @Override |
| public CustomLibraryDescription createLibraryDescription() { |
| if (myConfigurable instanceof FrameworkSupportWithLibrary) { |
| return ((FrameworkSupportWithLibrary)myConfigurable).createLibraryDescription(); |
| } |
| |
| List<? extends FrameworkVersion> versions = myConfigurable.getVersions(); |
| if (versions.isEmpty()) return null; |
| return OldCustomLibraryDescription.createByVersions(versions); |
| } |
| |
| @NotNull |
| @Override |
| public FrameworkLibraryVersionFilter getLibraryVersionFilter() { |
| return myVersionFilter; |
| } |
| |
| @Override |
| public void addSupport(@NotNull Module module, |
| @NotNull ModifiableRootModel rootModel, |
| @NotNull ModifiableModelsProvider modifiableModelsProvider) { |
| myConfigurable.addSupport(module, rootModel, null); |
| } |
| } |
| } |