340d4fb39d0410152b68b716927e1a088760a30b
[idea/community.git] / java / java-impl / src / com / intellij / openapi / roots / impl / IdeaProjectModelModifier.java
1 /*
2  * Copyright 2000-2015 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.roots.impl;
17
18 import com.intellij.codeInsight.daemon.impl.quickfix.LocateLibraryDialog;
19 import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix;
20 import com.intellij.codeInsight.daemon.quickFix.ExternalLibraryDescriptor;
21 import com.intellij.openapi.module.Module;
22 import com.intellij.openapi.roots.DependencyScope;
23 import com.intellij.openapi.roots.ModuleRootModificationUtil;
24 import com.intellij.openapi.roots.ProjectModelModifier;
25 import org.jetbrains.annotations.NotNull;
26
27 import java.util.Collections;
28 import java.util.List;
29
30 /**
31  * @author nik
32  */
33 public class IdeaProjectModelModifier extends ProjectModelModifier {
34   @Override
35   public boolean addModuleDependency(@NotNull Module from, @NotNull Module to, @NotNull DependencyScope scope) {
36     ModuleRootModificationUtil.addDependency(from, to, scope, false);
37     return true;
38   }
39
40   @Override
41   public boolean addExternalLibraryDependency(@NotNull Module module,
42                                               @NotNull ExternalLibraryDescriptor descriptor,
43                                               @NotNull DependencyScope scope) {
44     List<String> defaultRoots = descriptor.getLibraryClassesRoots();
45     LocateLibraryDialog dialog = new LocateLibraryDialog(module, defaultRoots, descriptor.getPresentableName());
46     List<String> classesRoots = dialog.showAndGetResult();
47     if (!classesRoots.isEmpty()) {
48       String libraryName = classesRoots.size() > 1 ? descriptor.getPresentableName() : null;
49       List<String> urls = OrderEntryFix.refreshAndConvertToUrls(classesRoots);
50       ModuleRootModificationUtil.addModuleLibrary(module, libraryName, urls, Collections.<String>emptyList(), scope);
51     }
52     return true;
53   }
54 }