j2me specific settings moved from ModuleRootModel to j2me plugin

This commit is contained in:
nik
2012-06-20 14:52:45 +04:00
parent b2c43fccbe
commit 7da5f502ca
7 changed files with 28 additions and 120 deletions
@@ -45,14 +45,8 @@ public abstract class JavaContentEntryEditor extends ContentEntryEditor {
@Override
protected ExcludeFolder doAddExcludeFolder(@NotNull final VirtualFile file) {
final boolean isCompilerOutput = isCompilerOutput(file);
final boolean isExplodedDirectory = isExplodedDirectory(file);
if (isCompilerOutput || isExplodedDirectory) {
if (isCompilerOutput) {
myCompilerExtension.setExcludeOutput(true);
}
if (isExplodedDirectory) {
getModel().setExcludeExplodedDirectory(true);
}
if (isCompilerOutput) {
myCompilerExtension.setExcludeOutput(true);
return null;
}
return super.doAddExcludeFolder(file);
@@ -65,9 +59,6 @@ public abstract class JavaContentEntryEditor extends ContentEntryEditor {
if (isCompilerOutput(file)) {
myCompilerExtension.setExcludeOutput(false);
}
if (isExplodedDirectory(file)) {
getModel().setExcludeExplodedDirectory(false);
}
}
super.doRemoveExcludeFolder(excludeFolder);
}
@@ -94,8 +85,4 @@ public abstract class JavaContentEntryEditor extends ContentEntryEditor {
return false;
}
private boolean isExplodedDirectory(@NotNull final VirtualFile file) {
return file.equals(getModel().getExplodedDirectory());
}
}
@@ -28,7 +28,6 @@ import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.impl.ModuleEx;
import com.intellij.openapi.module.impl.ModuleImpl;
import com.intellij.openapi.project.DumbServiceImpl;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
@@ -264,11 +263,6 @@ public class ProjectRootManagerComponent extends ProjectRootManagerImpl {
}
}
}
final String explodedDirectory = moduleRootManager.getExplodedDirectoryUrl();
if (explodedDirectory != null) {
recursive.add(extractLocalPath(explodedDirectory));
}
}
return Pair.create(recursive, flat);
@@ -151,14 +151,30 @@ public interface ModifiableRootModel extends ModuleRootModel {
*/
void inheritSdk();
/**
* @deprecated moved to J2ME plugin
*/
@Deprecated
void setExplodedDirectory(VirtualFile file);
/**
* @deprecated moved to J2ME plugin
*/
@Deprecated
void setExplodedDirectory(String url);
boolean isChanged();
/**
* @deprecated moved to J2ME plugin
*/
@Deprecated
boolean isExcludeExplodedDirectory();
/**
* @deprecated moved to J2ME plugin
*/
@Deprecated
void setExcludeExplodedDirectory(boolean excludeExplodedDir);
boolean isWritable();
@@ -146,19 +146,16 @@ public interface ModuleRootModel {
@NotNull String[] getSourceRootUrls(boolean includingTests);
/**
* Returns an exploded directory path of the module, if it is valid.
*
* @return exploded directory path of the module, or null if not applicable or not set.
* @deprecated moved to J2ME plugin
*/
@Deprecated
@Nullable
VirtualFile getExplodedDirectory();
/**
* Returns an exploded directory path url.
*
* @return exploded directory path url, or null if it has never been set
* or if not applicable for this module.
* @deprecated moved to J2ME plugin
*/
@Deprecated
@Nullable
String getExplodedDirectoryUrl();
@@ -126,9 +126,6 @@ public class ContentEntryImpl extends RootModelComponentBase implements ContentE
addExcludeForOutputPath(file, result);
}
}
if (getRootModel().isExcludeExplodedDirectory()) {
addExcludeForOutputPath(getRootModel().myExplodedDirectoryPointer, result);
}
return result.toArray(new ExcludeFolder[result.size()]);
}
@@ -107,11 +107,11 @@ public class ModuleRootManagerImpl extends ModuleRootManager implements ModuleCo
public VirtualFile getExplodedDirectory() {
return myRootModel.getExplodedDirectory();
return null;
}
public String getExplodedDirectoryUrl() {
return myRootModel.getExplodedDirectoryUrl();
return null;
}
@NotNull
@@ -30,7 +30,6 @@ import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.pointers.VirtualFilePointer;
import com.intellij.openapi.vfs.pointers.VirtualFilePointerContainer;
import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager;
import com.intellij.util.ArrayUtil;
@@ -58,19 +57,7 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
final ModuleRootManagerImpl myModuleRootManager;
private boolean myWritable;
private final VirtualFilePointerManager myFilePointerManager;
@Nullable VirtualFilePointer myExplodedDirectoryPointer;
@Nullable private String myExplodedDirectory;
private boolean myExcludeExploded;
@NonNls private static final String EXPLODED_TAG = "exploded";
@NonNls private static final String ATTRIBUTE_URL = "url";
@NonNls private static final String URL_ATTR = ATTRIBUTE_URL;
@NonNls private static final String EXCLUDE_EXPLODED_TAG = "exclude-exploded";
private boolean myDisposed = false;
private final Set<ModuleExtension> myExtensions = new TreeSet<ModuleExtension>();
private final Map<PersistentOrderRootType, VirtualFilePointerContainer> myOrderRootPointerContainers =
@@ -140,10 +127,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
myOrderEntries.add(new ModuleSourceOrderEntryImpl(this));
}
myExcludeExploded = element.getChild(EXCLUDE_EXPLODED_TAG) != null;
myExplodedDirectoryPointer = getOutputPathValue(element, EXPLODED_TAG, true);
myExplodedDirectory = getOutputPathValue(element, EXCLUDE_EXPLODED_TAG);
myWritable = true;
@@ -194,8 +177,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
myWritable = writable;
myConfigurationAccessor = rootConfigurationAccessor;
setExplodedFrom(rootModel, filePointerManager);
final Set<ContentEntry> thatContent = rootModel.myContent;
for (ContentEntry contentEntry : thatContent) {
if (contentEntry instanceof ClonableContentEntry) {
@@ -214,15 +195,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
}
}
private void setExplodedFrom(@NotNull RootModelImpl rootModel, @NotNull VirtualFilePointerManager filePointerManager) {
if (rootModel.myExplodedDirectoryPointer != null) {
myExplodedDirectoryPointer = filePointerManager.duplicate(rootModel.myExplodedDirectoryPointer, getModule(), null);
}
myExplodedDirectory = rootModel.myExplodedDirectory;
myExcludeExploded = rootModel.myExcludeExploded;
}
private void copyContainersFrom(@NotNull RootModelImpl rootModel) {
myOrderRootPointerContainers.clear();
for (PersistentOrderRootType orderRootType : OrderRootType.getAllPersistentTypes()) {
@@ -387,12 +359,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
public void docommit() {
assert isWritable();
if (!vptrEqual(myExplodedDirectoryPointer, getSourceModel().myExplodedDirectoryPointer)) {
getSourceModel().setExplodedDirectory(getExplodedDirectoryUrl());
}
getSourceModel().myExcludeExploded = myExcludeExploded;
if (areOrderEntriesChanged()) {
getSourceModel().setOrderEntriesFrom(this);
}
@@ -409,8 +375,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
getSourceModel().copyContainersFrom(this);
}
getSourceModel().setExplodedFrom(this, myFilePointerManager);
for (ModuleExtension extension : myExtensions) {
if (extension.isChanged()) {
extension.commit();
@@ -462,16 +426,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
extension.writeExternal(element);
}
if (myExplodedDirectory != null) {
final Element pathElement = new Element(EXPLODED_TAG);
pathElement.setAttribute(URL_ATTR, myExplodedDirectory);
element.addContent(pathElement);
}
if (myExcludeExploded) {
element.addContent(new Element(EXCLUDE_EXPLODED_TAG));
}
for (ContentEntry contentEntry : getContent()) {
if (contentEntry instanceof ContentEntryImpl) {
final Element subElement = new Element(ContentEntryImpl.ELEMENT_NAME);
@@ -590,18 +544,15 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
@Override
public VirtualFile getExplodedDirectory() {
return myExplodedDirectoryPointer == null ? null : myExplodedDirectoryPointer.getFile();
return null;
}
@Override
public void setExplodedDirectory(@Nullable VirtualFile file) {
setExplodedDirectory(file == null ? null : file.getUrl());
}
@Override
public void setExplodedDirectory(@Nullable String url) {
myExplodedDirectory = url;
myExplodedDirectoryPointer = url == null ? null : myFilePointerManager.create(url, myDisposable, null);
}
@Override
@@ -612,31 +563,18 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
@Override
public String getExplodedDirectoryUrl() {
return myExplodedDirectoryPointer == null ? null : myExplodedDirectoryPointer.getUrl();
return null;
}
private static boolean vptrEqual(@Nullable VirtualFilePointer p1, @Nullable VirtualFilePointer p2) {
if (p1 == null && p2 == null) return true;
if (p1 == null || p2 == null) return false;
return Comparing.equal(p1.getUrl(), p2.getUrl());
}
@Override
public boolean isChanged() {
if (!myWritable) return false;
if (!vptrEqual(myExplodedDirectoryPointer, getSourceModel().myExplodedDirectoryPointer)) {
return true;
}
for (ModuleExtension moduleExtension : myExtensions) {
if (moduleExtension.isChanged()) return true;
}
return myExcludeExploded != getSourceModel().myExcludeExploded ||
areOrderEntriesChanged() ||
areContentEntriesChanged() || areOrderRootPointerContainersChanged();
return areOrderEntriesChanged() || areContentEntriesChanged() || areOrderRootPointerContainersChanged();
}
private boolean areOrderRootPointerContainersChanged() {
@@ -746,12 +684,11 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
@Override
public boolean isExcludeExplodedDirectory() {
return myExcludeExploded;
return false;
}
@Override
public void setExcludeExplodedDirectory(boolean excludeExplodedDir) {
myExcludeExploded = excludeExplodedDir;
}
private class Order extends ArrayList<OrderEntry> {
@@ -896,26 +833,6 @@ public class RootModelImpl extends RootModelBase implements ModifiableRootModel
}
}
@Nullable
private VirtualFilePointer getOutputPathValue(@NotNull Element element, String tag, final boolean createPointer) {
final Element outputPathChild = element.getChild(tag);
VirtualFilePointer vptr = null;
if (outputPathChild != null && createPointer) {
String outputPath = outputPathChild.getAttributeValue(ATTRIBUTE_URL);
vptr = myFilePointerManager.create(outputPath, myDisposable, null);
}
return vptr;
}
@Nullable
private static String getOutputPathValue(@NotNull Element element, String tag) {
final Element outputPathChild = element.getChild(tag);
if (outputPathChild != null) {
return outputPathChild.getAttributeValue(ATTRIBUTE_URL);
}
return null;
}
@Nullable
@Override
public <T> T getModuleExtension(@NotNull final Class<T> klass) {