mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
added option 'for generated source' for java source roots, generated roots won't be suggested as target for refactorings (IDEA-112680)
This commit is contained in:
+2
-3
@@ -27,6 +27,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -37,7 +38,6 @@ import com.intellij.psi.util.CreateClassUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -252,8 +252,7 @@ public class CreateClassOrPackageFix extends LocalQuickFixAndIntentionActionOnPs
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (VirtualFile root : ProjectRootManager.getInstance(psiManager.getProject()).getModuleSourceRoots(
|
||||
JavaModuleSourceRootTypes.SOURCES)) {
|
||||
for (VirtualFile root : JavaProjectRootsUtil.getSuitableDestinationSourceRoots(psiManager.getProject())) {
|
||||
PsiDirectory directory = psiManager.findDirectory(root);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Root: " + root + ", directory: " + directory);
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
@@ -49,7 +49,6 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
@@ -208,7 +207,7 @@ public class CreateClassDialog extends DialogWrapper {
|
||||
gbConstraints.insets.top = 4;
|
||||
panel.add(myDestinationCB, gbConstraints);
|
||||
|
||||
final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1;
|
||||
final boolean isMultipleSourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject).size() > 1;
|
||||
myDestinationCB.setVisible(isMultipleSourceRoots);
|
||||
label.setVisible(isMultipleSourceRoots);
|
||||
label.setLabelFor(myDestinationCB);
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
package com.intellij.openapi.roots;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.impl.SourceFolderImpl;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiCodeFragment;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
@@ -19,4 +29,23 @@ public class JavaProjectRootsUtil {
|
||||
return !projectFileIndex.isUnderSourceRootOfType(file, JavaModuleSourceRootTypes.SOURCES) && !projectFileIndex.isInLibrarySource(file)
|
||||
&& !projectFileIndex.isInLibraryClasses(file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of all java source roots in the project which can be suggested as a target directory for a class created by user
|
||||
*/
|
||||
@NotNull
|
||||
public static List<VirtualFile> getSuitableDestinationSourceRoots(@NotNull Project project) {
|
||||
List<VirtualFile> roots = new ArrayList<VirtualFile>();
|
||||
for (Module module : ModuleManager.getInstance(project).getModules()) {
|
||||
for (ContentEntry entry : ModuleRootManager.getInstance(module).getContentEntries()) {
|
||||
for (SourceFolder sourceFolder : entry.getSourceFolders(JavaModuleSourceRootTypes.SOURCES)) {
|
||||
JavaSourceRootProperties properties = (JavaSourceRootProperties)((SourceFolderImpl)sourceFolder).getJpsElement().getProperties();
|
||||
if (!properties.isForGeneratedSources()) {
|
||||
ContainerUtil.addIfNotNull(roots, sourceFolder.getFile());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return roots;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ package com.intellij.refactoring.copy;
|
||||
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Pass;
|
||||
@@ -38,7 +38,6 @@ import com.intellij.util.ui.FormBuilder;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -115,7 +114,7 @@ class CopyClassDialog extends DialogWrapper{
|
||||
}
|
||||
|
||||
final JLabel label = new JLabel(RefactoringBundle.message("target.destination.folder"));
|
||||
final boolean isMultipleSourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1;
|
||||
final boolean isMultipleSourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject).size() > 1;
|
||||
myDestinationCB.setVisible(!myDoClone && isMultipleSourceRoots);
|
||||
label.setVisible(!myDoClone && isMultipleSourceRoots);
|
||||
label.setLabelFor(myDestinationCB);
|
||||
|
||||
+2
-2
@@ -17,6 +17,7 @@ package com.intellij.refactoring.extractSuperclass;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.ui.ComponentWithBrowseButton;
|
||||
@@ -36,7 +37,6 @@ import com.intellij.refactoring.util.classMembers.MemberInfo;
|
||||
import com.intellij.ui.EditorComboBox;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -72,7 +72,7 @@ public abstract class JavaExtractSuperBaseDialog extends ExtractSuperBaseDialog<
|
||||
|
||||
@Override
|
||||
protected JPanel createDestinationRootPanel() {
|
||||
final List<VirtualFile> sourceRoots = ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES);
|
||||
final List<VirtualFile> sourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject);
|
||||
if (sourceRoots.size() <= 1) return super.createDestinationRootPanel();
|
||||
final JPanel panel = new JPanel(new BorderLayout());
|
||||
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
|
||||
|
||||
@@ -18,7 +18,7 @@ package com.intellij.refactoring.extractclass;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
|
||||
@@ -42,7 +42,6 @@ import com.intellij.util.ui.FormBuilder;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
@@ -252,7 +251,7 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi
|
||||
.addLabeledComponent(new JLabel(), extractAsEnum)
|
||||
.addLabeledComponent(RefactorJBundle.message("package.for.new.class.label"), packageTextField);
|
||||
|
||||
if (ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() > 1) {
|
||||
if (JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject).size() > 1) {
|
||||
builder.addLabeledComponent(RefactoringBundle.message("target.destination.folder"), myDestinationFolderComboBox);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -21,6 +21,7 @@ import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.ui.ComboBoxWithWidePopup;
|
||||
@@ -34,7 +35,6 @@ import com.intellij.refactoring.MoveDestination;
|
||||
import com.intellij.refactoring.PackageWrapper;
|
||||
import com.intellij.ui.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -81,7 +81,7 @@ public abstract class DestinationFolderComboBox extends ComboboxWithBrowseButton
|
||||
final PsiDirectory initialTargetDirectory,
|
||||
final Pass<String> errorMessageUpdater, final EditorComboBox editorComboBox) {
|
||||
myInitialTargetDirectory = initialTargetDirectory;
|
||||
mySourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES);
|
||||
mySourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(project);
|
||||
new ComboboxSpeedSearch(getComboBox()) {
|
||||
@Override
|
||||
protected String getElementText(Object element) {
|
||||
|
||||
+1
-2
@@ -44,7 +44,6 @@ import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -301,7 +300,7 @@ public class JavaMoveClassesOrPackagesHandler extends MoveHandlerDelegate {
|
||||
private static boolean canMoveOrRearrangePackages(PsiElement[] elements) {
|
||||
if (elements.length == 0) return false;
|
||||
final Project project = elements[0].getProject();
|
||||
if (ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES).size() == 1) {
|
||||
if (JavaProjectRootsUtil.getSuitableDestinationSourceRoots(project).size() == 1) {
|
||||
return false;
|
||||
}
|
||||
for (PsiElement element : elements) {
|
||||
|
||||
+2
-2
@@ -25,6 +25,7 @@ import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
@@ -54,7 +55,6 @@ import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -506,6 +506,6 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog {
|
||||
}
|
||||
|
||||
private List<VirtualFile> getSourceRoots() {
|
||||
return ProjectRootManager.getInstance(myProject).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES);
|
||||
return JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -28,7 +28,7 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
@@ -44,7 +44,6 @@ import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -368,7 +367,7 @@ public class MoveClassesOrPackagesImpl {
|
||||
}
|
||||
|
||||
private static List<PsiDirectory> buildRearrangeTargetsList(final Project project, final PsiDirectory[] directories) {
|
||||
final List<VirtualFile> sourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES);
|
||||
final List<VirtualFile> sourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(project);
|
||||
List<PsiDirectory> sourceRootDirectories = new ArrayList<PsiDirectory>();
|
||||
sourceRoots:
|
||||
for (final VirtualFile sourceRoot : sourceRoots) {
|
||||
|
||||
+2
-3
@@ -20,6 +20,7 @@ import com.intellij.lang.java.JavaFindUsagesProvider;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
@@ -40,7 +41,6 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.psi.util.FileTypeUtils;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
@@ -284,8 +284,7 @@ public class MoveClassesOrPackagesUtil {
|
||||
directory = directories[0];
|
||||
}
|
||||
else {
|
||||
final List<VirtualFile> contentSourceRoots = ProjectRootManager.getInstance(project).getModuleSourceRoots(
|
||||
JavaModuleSourceRootTypes.SOURCES);
|
||||
final List<VirtualFile> contentSourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(project);
|
||||
if (contentSourceRoots.size() == 1 && (baseDirVirtualFile == null || fileIndex.isInTestSourceContent(contentSourceRoots.get(0)) == isBaseDirInTestSources)) {
|
||||
directory = ApplicationManager.getApplication().runWriteAction(new Computable<PsiDirectory>() {
|
||||
@Override
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.intellij.refactoring.move.moveInner;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.JavaProjectRootsUtil;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.NullableComputable;
|
||||
@@ -49,7 +50,6 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ItemEvent;
|
||||
@@ -198,7 +198,7 @@ public class MoveInnerDialog extends RefactoringDialog {
|
||||
final String targetName = myPackageNameField.getText();
|
||||
if (!Comparing.equal(name, targetName)) {
|
||||
final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(myProject);
|
||||
final List<VirtualFile> contentSourceRoots = projectRootManager.getModuleSourceRoots(JavaModuleSourceRootTypes.SOURCES);
|
||||
final List<VirtualFile> contentSourceRoots = JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject);
|
||||
final PackageWrapper newPackage = new PackageWrapper(PsiManager.getInstance(myProject), targetName);
|
||||
final VirtualFile targetSourceRoot;
|
||||
if (contentSourceRoots.size() > 1) {
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.intellij.util.Consumer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsDummyElement;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.java.compiler.ProcessorConfigProfile;
|
||||
import org.jetbrains.jps.model.library.JpsOrderRootType;
|
||||
@@ -113,8 +112,7 @@ public class ProjectPaths {
|
||||
for (JpsModuleSourceRoot root : module.getSourceRoots()) {
|
||||
if (root.getRootType().equals(JavaSourceRootType.SOURCE) ||
|
||||
includeTests && root.getRootType().equals(JavaSourceRootType.TEST_SOURCE)) {
|
||||
JavaSourceRootProperties properties = (JavaSourceRootProperties)((JpsSimpleElement<?>)root.getProperties()).getData();
|
||||
String prefix = properties.getPackagePrefix();
|
||||
String prefix = ((JavaSourceRootProperties)root.getProperties()).getPackagePrefix();
|
||||
if (!prefix.isEmpty()) {
|
||||
prefix = prefix.replace('.', '/');
|
||||
if (!prefix.endsWith("/")) {
|
||||
|
||||
@@ -35,7 +35,6 @@ import org.jetbrains.jps.cmdline.ProjectDescriptor;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerConfiguration;
|
||||
import org.jetbrains.jps.model.java.compiler.ProcessorConfigProfile;
|
||||
@@ -138,7 +137,7 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
|
||||
moduleExcludes.addAll(index.getModuleExcludes(myModule));
|
||||
|
||||
roots_loop:
|
||||
for (JpsTypedModuleSourceRoot<JpsSimpleElement<JavaSourceRootProperties>> sourceRoot : myModule.getSourceRoots(type)) {
|
||||
for (JpsTypedModuleSourceRoot<JavaSourceRootProperties> sourceRoot : myModule.getSourceRoots(type)) {
|
||||
if (JpsPathUtil.isUnder(moduleExcludes, sourceRoot.getFile())) {
|
||||
continue;
|
||||
}
|
||||
@@ -147,7 +146,7 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
|
||||
continue roots_loop;
|
||||
}
|
||||
}
|
||||
final String packagePrefix = sourceRoot.getProperties().getData().getPackagePrefix();
|
||||
final String packagePrefix = sourceRoot.getProperties().getPackagePrefix();
|
||||
roots.add(new JavaSourceRootDescriptor(sourceRoot.getFile(), this, false, false, packagePrefix,
|
||||
computeRootExcludes(sourceRoot.getFile(), index)));
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ public final class ResourcesTarget extends JVMModuleBuildTarget<ResourceRootDesc
|
||||
JavaSourceRootType type = isTests() ? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE;
|
||||
Iterable<ExcludedJavaSourceRootProvider> excludedRootProviders = JpsServiceManager.getInstance().getExtensions(ExcludedJavaSourceRootProvider.class);
|
||||
|
||||
for (JpsTypedModuleSourceRoot<JpsSimpleElement<JavaSourceRootProperties>> sourceRoot : myModule.getSourceRoots(type)) {
|
||||
for (JpsTypedModuleSourceRoot<? extends JpsSimpleElement<JavaSourceRootProperties>> sourceRoot : myModule.getSourceRoots(type)) {
|
||||
if (!isExcludedFromCompilation(excludedRootProviders, sourceRoot)) {
|
||||
final String packagePrefix = sourceRoot.getProperties().getData().getPackagePrefix();
|
||||
final File rootFile = sourceRoot.getFile();
|
||||
|
||||
+2
-3
@@ -17,7 +17,6 @@ package org.jetbrains.jps.builders.resources;
|
||||
|
||||
import com.intellij.util.PathUtil;
|
||||
import org.jetbrains.jps.builders.JpsBuildTestCase;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.java.JavaResourceRootType;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
@@ -60,9 +59,9 @@ public class ResourceCopyingTest extends JpsBuildTestCase {
|
||||
String file = createFile("src/a.xml");
|
||||
JpsModule m = addModule("m", PathUtil.getParentPath(file));
|
||||
JpsModuleSourceRoot sourceRoot = assertOneElement(m.getSourceRoots());
|
||||
JpsTypedModuleSourceRoot<JpsSimpleElement<JavaSourceRootProperties>> typed = sourceRoot.asTyped(JavaSourceRootType.SOURCE);
|
||||
JpsTypedModuleSourceRoot<JavaSourceRootProperties> typed = sourceRoot.asTyped(JavaSourceRootType.SOURCE);
|
||||
assertNotNull(typed);
|
||||
typed.getProperties().setData(new JavaSourceRootProperties("xxx"));
|
||||
typed.getProperties().setPackagePrefix("xxx");
|
||||
rebuildAll();
|
||||
assertOutput(m, fs().dir("xxx").file("a.xml"));
|
||||
}
|
||||
|
||||
@@ -15,24 +15,88 @@
|
||||
*/
|
||||
package org.jetbrains.jps.model.java;
|
||||
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.ex.JpsElementBase;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JavaSourceRootProperties {
|
||||
private final String myPackagePrefix;
|
||||
public class JavaSourceRootProperties extends JpsElementBase<JavaSourceRootProperties> implements JpsSimpleElement<JavaSourceRootProperties> {
|
||||
private String myPackagePrefix = "";
|
||||
private boolean myForGeneratedSources;
|
||||
|
||||
/**
|
||||
* @deprecated do not call this method directly, use {@link org.jetbrains.jps.model.java.JpsJavaExtensionService#createSourceRootProperties(String)} instead
|
||||
*/
|
||||
public JavaSourceRootProperties() {
|
||||
myPackagePrefix = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not call this method directly, use {@link org.jetbrains.jps.model.java.JpsJavaExtensionService#createSourceRootProperties(String)} instead
|
||||
*/
|
||||
public JavaSourceRootProperties(@NotNull String packagePrefix) {
|
||||
myPackagePrefix = packagePrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not call this method directly, use {@link org.jetbrains.jps.model.java.JpsJavaExtensionService#createSourceRootProperties(String, boolean)} instead
|
||||
*/
|
||||
public JavaSourceRootProperties(@NotNull String packagePrefix, boolean forGeneratedSources) {
|
||||
myPackagePrefix = packagePrefix;
|
||||
myForGeneratedSources = forGeneratedSources;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getPackagePrefix() {
|
||||
return myPackagePrefix;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaSourceRootProperties createCopy() {
|
||||
return new JavaSourceRootProperties(myPackagePrefix, myForGeneratedSources);
|
||||
}
|
||||
|
||||
public boolean isForGeneratedSources() {
|
||||
return myForGeneratedSources;
|
||||
}
|
||||
|
||||
public void setPackagePrefix(@NotNull String packagePrefix) {
|
||||
if (!Comparing.equal(myPackagePrefix, packagePrefix)) {
|
||||
myPackagePrefix = packagePrefix;
|
||||
fireElementChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public void setForGeneratedSources(boolean forGeneratedSources) {
|
||||
if (myForGeneratedSources != forGeneratedSources) {
|
||||
myForGeneratedSources = forGeneratedSources;
|
||||
fireElementChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyChanges(@NotNull JavaSourceRootProperties modified) {
|
||||
setPackagePrefix(modified.myPackagePrefix);
|
||||
setForGeneratedSources(modified.myForGeneratedSources);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #setPackagePrefix(String)} instead
|
||||
*/
|
||||
@Override
|
||||
public void setData(@NotNull JavaSourceRootProperties data) {
|
||||
applyChanges(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #getPackagePrefix()} instead
|
||||
*/
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaSourceRootProperties getData() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,15 +16,13 @@
|
||||
package org.jetbrains.jps.model.java;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.ex.JpsElementTypeBase;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JavaSourceRootType extends JpsElementTypeBase<JpsSimpleElement<JavaSourceRootProperties>> implements JpsModuleSourceRootType<JpsSimpleElement<JavaSourceRootProperties>> {
|
||||
public class JavaSourceRootType extends JpsElementTypeBase<JavaSourceRootProperties> implements JpsModuleSourceRootType<JavaSourceRootProperties> {
|
||||
public static final JavaSourceRootType SOURCE = new JavaSourceRootType();
|
||||
public static final JavaSourceRootType TEST_SOURCE = new JavaSourceRootType();
|
||||
|
||||
@@ -33,7 +31,7 @@ public class JavaSourceRootType extends JpsElementTypeBase<JpsSimpleElement<Java
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsSimpleElement<JavaSourceRootProperties> createDefaultProperties() {
|
||||
return JpsElementFactory.getInstance().createSimpleElement(new JavaSourceRootProperties());
|
||||
public JavaSourceRootProperties createDefaultProperties() {
|
||||
return JpsJavaExtensionService.getInstance().createSourceRootProperties("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,4 +115,10 @@ public abstract class JpsJavaExtensionService {
|
||||
|
||||
@NotNull
|
||||
public abstract JpsApplicationRunConfigurationProperties createRunConfigurationProperties(JpsApplicationRunConfigurationState state);
|
||||
|
||||
@NotNull
|
||||
public abstract JavaSourceRootProperties createSourceRootProperties(@NotNull String packagePrefix, boolean isGenerated);
|
||||
|
||||
@NotNull
|
||||
public abstract JavaSourceRootProperties createSourceRootProperties(@NotNull String packagePrefix);
|
||||
}
|
||||
|
||||
@@ -176,6 +176,18 @@ public class JpsJavaExtensionServiceImpl extends JpsJavaExtensionService {
|
||||
return new JpsApplicationRunConfigurationPropertiesImpl(state);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaSourceRootProperties createSourceRootProperties(@NotNull String packagePrefix, boolean isGenerated) {
|
||||
return new JavaSourceRootProperties(packagePrefix, isGenerated);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaSourceRootProperties createSourceRootProperties(@NotNull String packagePrefix) {
|
||||
return createSourceRootProperties(packagePrefix, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JpsProductionModuleOutputPackagingElement createProductionModuleOutput(@NotNull JpsModuleReference moduleReference) {
|
||||
|
||||
@@ -30,8 +30,7 @@ import java.util.List;
|
||||
public class JpsModuleTest extends JpsModelTestCase {
|
||||
public void testAddSourceRoot() {
|
||||
final JpsModule module = myProject.addModule("m", JpsJavaModuleType.INSTANCE);
|
||||
JpsSimpleElement<JavaSourceRootProperties> properties = JpsElementFactory.getInstance().createSimpleElement(
|
||||
new JavaSourceRootProperties("com.xxx"));
|
||||
JavaSourceRootProperties properties = JpsJavaExtensionService.getInstance().createSourceRootProperties("com.xxx");
|
||||
final JpsModuleSourceRoot sourceRoot = module.addSourceRoot("file://url", JavaSourceRootType.SOURCE, properties);
|
||||
|
||||
assertSameElements(myDispatcher.retrieveAdded(JpsModule.class), module);
|
||||
@@ -41,9 +40,9 @@ public class JpsModuleTest extends JpsModelTestCase {
|
||||
assertEquals("file://url", root.getUrl());
|
||||
assertSameElements(ContainerUtilRt.newArrayList(module.getSourceRoots(JavaSourceRootType.SOURCE)), root);
|
||||
assertEmpty(ContainerUtil.newArrayList(module.getSourceRoots(JavaSourceRootType.TEST_SOURCE)));
|
||||
JpsTypedModuleSourceRoot<JpsSimpleElement<JavaSourceRootProperties>> typedRoot = root.asTyped(JavaSourceRootType.SOURCE);
|
||||
JpsTypedModuleSourceRoot<JavaSourceRootProperties> typedRoot = root.asTyped(JavaSourceRootType.SOURCE);
|
||||
assertNotNull(typedRoot);
|
||||
assertEquals("com.xxx", typedRoot.getProperties().getData().getPackagePrefix());
|
||||
assertEquals("com.xxx", typedRoot.getProperties().getPackagePrefix());
|
||||
}
|
||||
|
||||
public void testGetModulesOfType() {
|
||||
|
||||
+11
-6
@@ -56,6 +56,7 @@ public class JpsJavaModelSerializerExtension extends JpsModelSerializerExtension
|
||||
private static final String JAVADOC_PATHS_TAG = "javadoc-paths";
|
||||
private static final String MODULE_LANGUAGE_LEVEL_ATTRIBUTE = "LANGUAGE_LEVEL";
|
||||
public static final String ROOT_TAG = "root";
|
||||
private static final String IS_GENERATED_ATTRIBUTE = "generated";
|
||||
public static final JavaSourceRootPropertiesSerializer JAVA_SOURCE_ROOT_PROPERTIES_SERIALIZER =
|
||||
new JavaSourceRootPropertiesSerializer(JavaSourceRootType.SOURCE, JpsModuleRootModelSerializer.JAVA_SOURCE_ROOT_TYPE_ID);
|
||||
|
||||
@@ -301,25 +302,29 @@ public class JpsJavaModelSerializerExtension extends JpsModelSerializerExtension
|
||||
}
|
||||
}
|
||||
|
||||
private static class JavaSourceRootPropertiesSerializer extends JpsModuleSourceRootPropertiesSerializer<JpsSimpleElement<JavaSourceRootProperties>> {
|
||||
private JavaSourceRootPropertiesSerializer(JpsModuleSourceRootType<JpsSimpleElement<JavaSourceRootProperties>> type, String typeId) {
|
||||
private static class JavaSourceRootPropertiesSerializer extends JpsModuleSourceRootPropertiesSerializer<JavaSourceRootProperties> {
|
||||
private JavaSourceRootPropertiesSerializer(JpsModuleSourceRootType<JavaSourceRootProperties> type, String typeId) {
|
||||
super(type, typeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JpsSimpleElement<JavaSourceRootProperties> loadProperties(@NotNull Element sourceRootTag) {
|
||||
public JavaSourceRootProperties loadProperties(@NotNull Element sourceRootTag) {
|
||||
String packagePrefix = StringUtil.notNullize(sourceRootTag.getAttributeValue(JpsModuleRootModelSerializer.PACKAGE_PREFIX_ATTRIBUTE));
|
||||
return JpsElementFactory.getInstance().createSimpleElement(new JavaSourceRootProperties(packagePrefix));
|
||||
boolean isGenerated = Boolean.parseBoolean(sourceRootTag.getAttributeValue(IS_GENERATED_ATTRIBUTE));
|
||||
return getService().createSourceRootProperties(packagePrefix, isGenerated);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveProperties(@NotNull JpsSimpleElement<JavaSourceRootProperties> properties, @NotNull Element sourceRootTag) {
|
||||
public void saveProperties(@NotNull JavaSourceRootProperties properties, @NotNull Element sourceRootTag) {
|
||||
String isTestSource = Boolean.toString(getType().equals(JavaSourceRootType.TEST_SOURCE));
|
||||
sourceRootTag.setAttribute(JpsModuleRootModelSerializer.IS_TEST_SOURCE_ATTRIBUTE, isTestSource);
|
||||
String packagePrefix = properties.getData().getPackagePrefix();
|
||||
String packagePrefix = properties.getPackagePrefix();
|
||||
if (!packagePrefix.isEmpty()) {
|
||||
sourceRootTag.setAttribute(JpsModuleRootModelSerializer.PACKAGE_PREFIX_ATTRIBUTE, packagePrefix);
|
||||
}
|
||||
if (properties.isForGeneratedSources()) {
|
||||
sourceRootTag.setAttribute(IS_GENERATED_ATTRIBUTE, Boolean.TRUE.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -26,16 +26,15 @@ import com.intellij.util.EventDispatcher;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.*;
|
||||
import java.util.EventListener;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -207,7 +206,7 @@ public abstract class ContentEntryEditor implements ContentRootPanel.ActionCallb
|
||||
@Nullable
|
||||
public SourceFolder addSourceFolder(@NotNull final VirtualFile file, boolean isTestSource, String packagePrefix) {
|
||||
return addSourceFolder(file, isTestSource ? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE,
|
||||
JpsElementFactory.getInstance().createSimpleElement(new JavaSourceRootProperties(packagePrefix)));
|
||||
JpsJavaExtensionService.getInstance().createSourceRootProperties(packagePrefix));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+64
-15
@@ -18,11 +18,14 @@ package com.intellij.openapi.roots.ui.configuration;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.roots.SourceFolder;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.roots.impl.SourceFolderImpl;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.ui.roots.IconActionComponent;
|
||||
import com.intellij.util.ui.FormBuilder;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
|
||||
@@ -32,16 +35,23 @@ import java.awt.*;
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class JavaSourceRootEditHandlerBase extends ModuleSourceRootEditHandler<JpsSimpleElement<JavaSourceRootProperties>> {
|
||||
public JavaSourceRootEditHandlerBase(JpsModuleSourceRootType<JpsSimpleElement<JavaSourceRootProperties>> rootType) {
|
||||
public abstract class JavaSourceRootEditHandlerBase extends ModuleSourceRootEditHandler<JavaSourceRootProperties> {
|
||||
public JavaSourceRootEditHandlerBase(JpsModuleSourceRootType<JavaSourceRootProperties> rootType) {
|
||||
super(rootType);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getPropertiesString(@NotNull JpsSimpleElement<JavaSourceRootProperties> properties) {
|
||||
String packagePrefix = properties.getData().getPackagePrefix();
|
||||
return packagePrefix.isEmpty() ? null : " (" + packagePrefix + ")";
|
||||
public String getPropertiesString(@NotNull JavaSourceRootProperties properties) {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
if (properties.isForGeneratedSources()) {
|
||||
buffer.append(" [generated]");
|
||||
}
|
||||
String packagePrefix = properties.getPackagePrefix();
|
||||
if (!packagePrefix.isEmpty()) {
|
||||
buffer.append(" (").append(packagePrefix).append(")");
|
||||
}
|
||||
return buffer.length() > 0 ? buffer.toString() : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -51,16 +61,13 @@ public abstract class JavaSourceRootEditHandlerBase extends ModuleSourceRootEdit
|
||||
@NotNull final ContentRootPanel.ActionCallback callback) {
|
||||
final IconActionComponent iconComponent = new IconActionComponent(AllIcons.Modules.SetPackagePrefix,
|
||||
AllIcons.Modules.SetPackagePrefixRollover,
|
||||
ProjectBundle.message("module.paths.package.prefix.tooltip"), new Runnable() {
|
||||
ProjectBundle.message("module.paths.edit.properties.tooltip"), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String message = ProjectBundle.message("module.paths.package.prefix.prompt",
|
||||
ContentRootPanel.toRelativeDisplayPath(folder.getUrl(), folder.getContentEntry().getUrl() + ":"));
|
||||
final String prefix = Messages.showInputDialog(parentComponent, message,
|
||||
ProjectBundle.message("module.paths.package.prefix.title"),
|
||||
Messages.getQuestionIcon(), folder.getPackagePrefix(), null);
|
||||
if (prefix != null) {
|
||||
folder.setPackagePrefix(prefix);
|
||||
JpsElement properties = ((SourceFolderImpl)folder).getJpsElement().getProperties();
|
||||
SourceRootPropertiesDialog dialog = new SourceRootPropertiesDialog(parentComponent, (JavaSourceRootProperties)properties);
|
||||
dialog.show();
|
||||
if (dialog.isOK()) {
|
||||
callback.onSourceRootPropertiesChanged(folder);
|
||||
}
|
||||
}
|
||||
@@ -71,4 +78,46 @@ public abstract class JavaSourceRootEditHandlerBase extends ModuleSourceRootEdit
|
||||
panel.add(Box.createHorizontalStrut(3), BorderLayout.EAST);
|
||||
return panel;
|
||||
}
|
||||
|
||||
private static class SourceRootPropertiesDialog extends DialogWrapper {
|
||||
private final JTextField myPackagePrefixField;
|
||||
private final JCheckBox myIsGeneratedCheckBox;
|
||||
private final JPanel myMainPanel;
|
||||
@NotNull private final JavaSourceRootProperties myProperties;
|
||||
|
||||
private SourceRootPropertiesDialog(@NotNull JComponent parentComponent, @NotNull JavaSourceRootProperties properties) {
|
||||
super(parentComponent, true);
|
||||
myProperties = properties;
|
||||
setTitle(ProjectBundle.message("module.paths.edit.properties.title"));
|
||||
myPackagePrefixField = new JTextField();
|
||||
myIsGeneratedCheckBox = new JCheckBox(UIUtil.replaceMnemonicAmpersand("For &generated sources"));
|
||||
myMainPanel = FormBuilder.createFormBuilder()
|
||||
.addLabeledComponent("Package &prefix:", myPackagePrefixField)
|
||||
.addComponent(myIsGeneratedCheckBox)
|
||||
.getPanel();
|
||||
myPackagePrefixField.setText(myProperties.getPackagePrefix());
|
||||
myPackagePrefixField.setColumns(25);
|
||||
myIsGeneratedCheckBox.setSelected(myProperties.isForGeneratedSources());
|
||||
init();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myPackagePrefixField;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doOKAction() {
|
||||
myProperties.setPackagePrefix(myPackagePrefixField.getText().trim());
|
||||
myProperties.setForGeneratedSources(myIsGeneratedCheckBox.isSelected());
|
||||
super.doOKAction();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected JComponent createCenterPanel() {
|
||||
return myMainPanel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-6
@@ -27,7 +27,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.java.JavaResourceRootType;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
@@ -77,12 +76,12 @@ public class SourceFolderImpl extends ContentFolderBaseImpl implements SourceFol
|
||||
@NotNull
|
||||
@Override
|
||||
public String getPackagePrefix() {
|
||||
JpsSimpleElement<JavaSourceRootProperties> properties = getJavaProperties();
|
||||
return properties != null ? properties.getData().getPackagePrefix() : DEFAULT_PACKAGE_PREFIX;
|
||||
JavaSourceRootProperties properties = getJavaProperties();
|
||||
return properties != null ? properties.getPackagePrefix() : DEFAULT_PACKAGE_PREFIX;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JpsSimpleElement<JavaSourceRootProperties> getJavaProperties() {
|
||||
private JavaSourceRootProperties getJavaProperties() {
|
||||
if (myJpsElement.getRootType() == JavaSourceRootType.SOURCE) {
|
||||
return myJpsElement.getProperties(JavaSourceRootType.SOURCE);
|
||||
}
|
||||
@@ -94,9 +93,9 @@ public class SourceFolderImpl extends ContentFolderBaseImpl implements SourceFol
|
||||
|
||||
@Override
|
||||
public void setPackagePrefix(@NotNull String packagePrefix) {
|
||||
JpsSimpleElement<JavaSourceRootProperties> properties = getJavaProperties();
|
||||
JavaSourceRootProperties properties = getJavaProperties();
|
||||
if (properties != null) {
|
||||
properties.setData(new JavaSourceRootProperties(packagePrefix));
|
||||
properties.setPackagePrefix(packagePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +128,12 @@ public class SourceFolderImpl extends ContentFolderBaseImpl implements SourceFol
|
||||
if (i!= 0) return i;
|
||||
i = Boolean.valueOf(isTestSource()).compareTo(sourceFolder.isTestSource());
|
||||
if (i != 0) return i;
|
||||
JavaSourceRootProperties properties1 = getJavaProperties();
|
||||
JavaSourceRootProperties properties2 = sourceFolder.getJavaProperties();
|
||||
if (properties1 != null && properties2 != null) {
|
||||
i = Boolean.valueOf(properties1.isForGeneratedSources()).compareTo(properties2.isForGeneratedSources());
|
||||
if (i != 0) return i;
|
||||
}
|
||||
//todo[nik] perhaps we should use LinkedSet instead of SortedSet and get rid of this method
|
||||
return myJpsElement.getRootType().getClass().getName().compareTo(sourceFolder.getRootType().getClass().getName());
|
||||
}
|
||||
|
||||
+2
-3
@@ -33,10 +33,9 @@ import com.intellij.util.SmartList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
@@ -190,7 +189,7 @@ public class JpsContentEntry implements ContentEntry, Disposable {
|
||||
|
||||
private SourceFolder addSourceFolder(final String url, boolean isTestSource, String packagePrefix) {
|
||||
final JavaSourceRootType rootType = isTestSource ? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE;
|
||||
JpsSimpleElement<JavaSourceRootProperties> properties = JpsElementFactory.getInstance().createSimpleElement(new JavaSourceRootProperties(packagePrefix));
|
||||
JavaSourceRootProperties properties = JpsJavaExtensionService.getInstance().createSourceRootProperties(packagePrefix);
|
||||
return addSourceFolder(url, rootType, properties);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -52,7 +52,7 @@ public class JpsSourceFolder extends JpsContentFolderBase implements SourceFolde
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JpsSimpleElement<JavaSourceRootProperties> getJavaProperties() {
|
||||
private JavaSourceRootProperties getJavaProperties() {
|
||||
if (mySourceRoot.getRootType() == JavaSourceRootType.SOURCE) {
|
||||
return mySourceRoot.getProperties(JavaSourceRootType.SOURCE);
|
||||
}
|
||||
@@ -64,9 +64,9 @@ public class JpsSourceFolder extends JpsContentFolderBase implements SourceFolde
|
||||
|
||||
@Override
|
||||
public void setPackagePrefix(@NotNull String packagePrefix) {
|
||||
JpsSimpleElement<JavaSourceRootProperties> properties = getJavaProperties();
|
||||
JavaSourceRootProperties properties = getJavaProperties();
|
||||
if (properties != null) {
|
||||
properties.setData(new JavaSourceRootProperties(packagePrefix));
|
||||
properties.setPackagePrefix(packagePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,15 +107,10 @@ module.paths.unmark.tests.tooltip=Unmark Tests
|
||||
module.paths.unmark.source.tooltip=Unmark Source
|
||||
module.paths.include.excluded.tooltip=Include
|
||||
module.paths.remove.tooltip=Remove
|
||||
module.paths.package.prefix.tooltip=Set package prefix
|
||||
module.paths.package.prefix.prompt=Enter package prefix for {0}
|
||||
module.paths.package.prefix.title=Set Package Prefix
|
||||
module.dependencies.title=Dependencies
|
||||
module.dependencies.caption=Check modules this module depends on
|
||||
module.paths.edit.properties.tooltip=Edit properties
|
||||
module.paths.edit.properties.title=Edit Root Properties
|
||||
module.javadoc.title=JavaDoc
|
||||
module.javadoc.add.path.button=&Add Path...
|
||||
module.javadoc.add.url.button=Add JavaDoc URL...
|
||||
module.javadoc.remove.button=&Remove
|
||||
module.javadoc.add.path.title=Add Path To JavaDoc
|
||||
module.javadoc.add.path.prompt=Select jar/zip files or directories in which module javadoc documentation is located
|
||||
jdk.combo.box.project.item=<No Project SDK>
|
||||
@@ -128,9 +123,6 @@ module.libraries.target.jdk.select.title=Select Project SDK
|
||||
module.libraries.javadoc.url.button=Specify Documentation &URL...
|
||||
module.libraries.attach.sources.button=Attach &Sources...
|
||||
module.libraries.attach.sources.immediately.button=Attach &Sources
|
||||
module.libraries.attach.more.button=Attach &More...
|
||||
attach.annotations.button=Attach Anno&tations...
|
||||
module.libraries.add.button=&Add Library...
|
||||
|
||||
button.text.attach.files=Attach &Files or Directories...
|
||||
library.attach.files.action=Attach Files or Directories
|
||||
|
||||
+5
-2
@@ -24,7 +24,7 @@ import org.jdom.Element;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.eclipse.IdeaXml;
|
||||
import org.jetbrains.idea.eclipse.conversion.AbstractIdeaSpecificSettings;
|
||||
import org.jetbrains.jps.model.JpsSimpleElement;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
||||
import org.jetbrains.jps.model.module.JpsDependenciesList;
|
||||
@@ -167,7 +167,10 @@ class JpsIdeaSpecificSettings extends AbstractIdeaSpecificSettings<JpsModule, St
|
||||
final String url = ppElement.getAttributeValue(IdeaXml.URL_ATTR);
|
||||
for (JpsModuleSourceRoot sourceRoot : model.getSourceRoots()) {
|
||||
if (Comparing.strEqual(sourceRoot.getUrl(), url)) {
|
||||
((JpsSimpleElement)sourceRoot.getProperties()).setData(new JavaSourceRootProperties(prefix));
|
||||
JpsElement properties = sourceRoot.getProperties();
|
||||
if (properties instanceof JavaSourceRootProperties) {
|
||||
((JavaSourceRootProperties)properties).setPackagePrefix(prefix);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user