diff --git a/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java b/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java deleted file mode 100644 index fabee57027f7..000000000000 --- a/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2000-2009 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; - -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.psi.JavaDirectoryService; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiPackage; - -public class JavaDataAccessors { - public static final DataAccessor FILE_PACKAGE = new DataAccessor() { - public PsiPackage getImpl(DataContext dataContext) throws NoDataException { - PsiFile psiFile = DataAccessors.PSI_FILE.getNotNull(dataContext); - PsiDirectory containingDirectory = psiFile.getContainingDirectory(); - if (containingDirectory == null || !containingDirectory.isValid()) return null; - return JavaDirectoryService.getInstance().getPackage(containingDirectory); - } - }; - - private JavaDataAccessors() { - } -} diff --git a/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java b/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java index ab0182ab39d7..a4e04b2f9d0b 100644 --- a/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java +++ b/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java @@ -15,14 +15,13 @@ */ package com.intellij.ide.macro; +import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.psi.PsiPackage; -import com.intellij.ide.IdeBundle; -import com.intellij.ide.JavaDataAccessors; public class FileFQPackage extends Macro { - public String expand(DataContext dataContext) throws Macro.ExecutionCancelledException { - PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext); + public String expand(DataContext dataContext) { + PsiPackage aPackage = FilePackageMacro.getFilePackage(dataContext); if (aPackage == null) return null; return aPackage.getQualifiedName(); } diff --git a/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java b/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java index 361302030d38..96343c638664 100644 --- a/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java +++ b/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java @@ -15,10 +15,14 @@ */ package com.intellij.ide.macro; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.psi.PsiPackage; import com.intellij.ide.IdeBundle; -import com.intellij.ide.JavaDataAccessors; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.DataKeys; +import com.intellij.psi.JavaDirectoryService; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiPackage; +import org.jetbrains.annotations.Nullable; public final class FilePackageMacro extends Macro { public String getName() { @@ -30,8 +34,17 @@ public final class FilePackageMacro extends Macro { } public String expand(DataContext dataContext) { - PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext); + PsiPackage aPackage = getFilePackage(dataContext); if (aPackage == null) return null; return aPackage.getName(); } + + @Nullable + static PsiPackage getFilePackage(DataContext dataContext) { + PsiFile psiFile = DataKeys.PSI_FILE.getData(dataContext); + if (psiFile == null) return null; + PsiDirectory containingDirectory = psiFile.getContainingDirectory(); + if (containingDirectory == null || !containingDirectory.isValid()) return null; + return JavaDirectoryService.getInstance().getPackage(containingDirectory); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/DataAccessors.java b/platform/lang-impl/src/com/intellij/ide/DataAccessors.java deleted file mode 100644 index ecd2b61169e0..000000000000 --- a/platform/lang-impl/src/com/intellij/ide/DataAccessors.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2000-2009 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; - -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiManager; - -/** - * @author yole - */ -public class DataAccessors { - @Deprecated - public static final DataAccessor PROJECT = new DataAccessor.SimpleDataAccessor(PlatformDataKeys.PROJECT.getName()); - @Deprecated - public static final DataAccessor MODULE = new DataAccessor.SimpleDataAccessor(LangDataKeys.MODULE.getName()); - public static final DataAccessor PSI_MANAGER = new DataAccessor() { - public PsiManager getImpl(DataContext dataContext) throws NoDataException { - return PsiManager.getInstance(PROJECT.getNotNull(dataContext)); - } - }; - public static final DataAccessor PSI_FILE = new DataAccessor() { - public PsiFile getImpl(DataContext dataContext) throws NoDataException { - return PSI_MANAGER.getNotNull(dataContext).findFile(VIRTUAL_FILE.getNotNull(dataContext)); - } - }; - public static final DataAccessor VIRTUAL_FILE = new DataAccessor.SimpleDataAccessor(PlatformDataKeys.VIRTUAL_FILE.getName()); - public static final DataAccessor VIRTUAL_DIR_OR_PARENT = new DataAccessor() { - public VirtualFile getImpl(DataContext dataContext) throws NoDataException { - VirtualFile virtualFile = VIRTUAL_FILE.getNotNull(dataContext); - return virtualFile.isDirectory() ? virtualFile : virtualFile.getParent(); - } - }; - public static final DataAccessor PROJECT_BASE_DIR = new DataAccessor() { - public VirtualFile getImpl(DataContext dataContext) throws NoDataException { - Project project = PROJECT.getNotNull(dataContext); - return project.getBaseDir(); - } - }; - public static final DataAccessor MODULE_FILE_PATH = new DataAccessor() { - public String getImpl(DataContext dataContext) throws NoDataException { - Module module = MODULE.getNotNull(dataContext); - return module.getModuleFilePath(); - } - }; - - private DataAccessors() { - } -} \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java index dbfffeb11024..a1f8bc0812e3 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java @@ -16,7 +16,6 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.vfs.VirtualFile; @@ -31,16 +30,7 @@ public final class FileDirMacro extends Macro { } public String expand(DataContext dataContext) { - //Project project = (Project)dataContext.getData(DataConstants.PROJECT); - //if (project == null) return null; - //VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE); - //if (file == null) return null; - //if (!file.isDirectory()) { - // file = file.getParent(); - // if (file == null) return null; - //} - VirtualFile dir = DataAccessors.VIRTUAL_DIR_OR_PARENT.from(dataContext); - if (dir == null) return null; - return getPath(dir); + VirtualFile vFile = getVirtualDirOrParent(dataContext); + return vFile != null ? getPath(vFile) : null; } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java index b73d1283d3f6..3eb55b0bf4ea 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java @@ -16,9 +16,9 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -33,20 +33,12 @@ public class FileRelativeDirMacro extends Macro { } public String expand(DataContext dataContext) { - //Project project = (Project)dataContext.getData(DataConstants.PROJECT); - //if (project == null) return null; - //VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE); - //if (file == null) return null; - //if (!file.isDirectory()){ - // file = file.getParent(); - // if (file == null) return null; - //} - final VirtualFile baseDir = DataAccessors.PROJECT_BASE_DIR.from(dataContext); + final VirtualFile baseDir = PlatformDataKeys.PROJECT_FILE_DIRECTORY.getData(dataContext); if (baseDir == null) { return null; } - VirtualFile dir = DataAccessors.VIRTUAL_DIR_OR_PARENT.from(dataContext); + VirtualFile dir = getVirtualDirOrParent(dataContext); if (dir == null) return null; return FileUtil.getRelativePath(VfsUtil.virtualToIoFile(baseDir), VfsUtil.virtualToIoFile(dir)); } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/Macro.java b/platform/lang-impl/src/com/intellij/ide/macro/Macro.java index eb7ad0c247d5..0f29739e5f71 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/Macro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/Macro.java @@ -17,6 +17,7 @@ package com.intellij.ide.macro; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NonNls; @@ -61,6 +62,15 @@ public abstract class Macro { return new File(getPath(file)); } + @Nullable + protected static VirtualFile getVirtualDirOrParent(DataContext dataContext) { + VirtualFile vFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (vFile != null && !vFile.isDirectory()) { + vFile = vFile.getParent(); + } + return vFile; + } + public static class Silent extends Macro { private final Macro myDelegate; private final String myValue; diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java index 8362a2a4101f..7edfa1a3c619 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java @@ -16,9 +16,10 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.module.Module; import java.io.File; @@ -32,7 +33,8 @@ public final class ModuleFileDirMacro extends Macro { } public String expand(DataContext dataContext) { - final String path = DataAccessors.MODULE_FILE_PATH.from(dataContext); + final Module module = LangDataKeys.MODULE.getData(dataContext); + final String path = module != null ? module.getModuleFilePath() : null; if (path == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java index 128550e7f79f..dc9612b295c6 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java @@ -16,9 +16,10 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.module.Module; public final class ModuleFilePathMacro extends Macro { public String getName() { @@ -30,6 +31,7 @@ public final class ModuleFilePathMacro extends Macro { } public String expand(DataContext dataContext) { - return DataAccessors.MODULE_FILE_PATH.from(dataContext); + final Module module = LangDataKeys.MODULE.getData(dataContext); + return module != null ? module.getModuleFilePath() : null; } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java index 179a4ab18497..cf86f6eb9386 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java @@ -16,9 +16,9 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; @@ -34,7 +34,7 @@ public final class ProjectFileDirMacro extends Macro { @Nullable public String expand(DataContext dataContext) { - final VirtualFile baseDir = DataAccessors.PROJECT_BASE_DIR.from(dataContext); + final VirtualFile baseDir = PlatformDataKeys.PROJECT_FILE_DIRECTORY.getData(dataContext); if (baseDir == null) { return null; } diff --git a/platform/platform-impl/src/com/intellij/ide/DataAccessor.java b/platform/platform-impl/src/com/intellij/ide/DataAccessor.java deleted file mode 100644 index a586e2d748db..000000000000 --- a/platform/platform-impl/src/com/intellij/ide/DataAccessor.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2000-2009 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; - -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.util.Condition; -import com.intellij.util.Function; -import static com.intellij.util.containers.ContainerUtil.map; -import static com.intellij.util.containers.ContainerUtil.skipNulls; - -import java.lang.reflect.Array; -import java.util.List; - -public abstract class DataAccessor { - - public final T from(DataContext dataContext) { - try { - return getNotNull(dataContext); - } catch(NoDataException e) { - return null; - } - } - - protected abstract T getImpl(DataContext dataContext) throws NoDataException; - - public final T getNotNull(DataContext dataContext) throws NoDataException { - T data = getImpl(dataContext); - if (data == null) throw new NoDataException(toString()); - return data; - } - - public static DataAccessor createConvertor(final DataAccessor original, - final Function convertor) { - return new DataAccessor(){ - public T getImpl(DataContext dataContext) throws NoDataException { - return convertor.fun(original.getNotNull(dataContext)); - } - }; - } - - public static DataAccessor createArrayConvertor(final DataAccessor original, final Function convertor, final Class aClass) { - return new DataAccessor() { - public T[] getImpl(DataContext dataContext) throws NoDataException { - List converted = skipNulls(map(original.getNotNull(dataContext), convertor)); - return converted.toArray((T[])Array.newInstance(aClass, converted.size())); - } - }; - } - - public static DataAccessor createConditionalAccessor(DataAccessor accessor, Condition condition) { - return new ConditionalDataAccessor(accessor, condition); - } - - public static class SimpleDataAccessor extends DataAccessor { - private final String myDataConstant; - - public SimpleDataAccessor(String dataConstant) { - myDataConstant = dataConstant; - } - - public T getImpl(DataContext dataContext) throws NoDataException { - T data = (T)dataContext.getData(myDataConstant); - if (data == null) throw new NoDataException(myDataConstant); - return data; - } - } - - public static class SubClassDataAccessor extends DataAccessor { - private final DataAccessor myOriginal; - private final Class mySubClass; - - SubClassDataAccessor(DataAccessor original, Class subClass) { - myOriginal = original; - mySubClass = subClass; - } - - public Sub getImpl(DataContext dataContext) throws NoDataException { - Object data = myOriginal.getNotNull(dataContext); - if (!mySubClass.isInstance(data)) return null; - return (Sub)data; - } - - public static DataAccessor create(DataAccessor accessor, Class subClass) { - return new SubClassDataAccessor(accessor, subClass); - } - } - - private static class ConditionalDataAccessor extends DataAccessor { - private final DataAccessor myOriginal; - private final Condition myCondition; - - public ConditionalDataAccessor(DataAccessor original, Condition condition) { - myOriginal = original; - myCondition = condition; - } - - public T getImpl(DataContext dataContext) throws NoDataException { - T value = myOriginal.getNotNull(dataContext); - return myCondition.value(value) ? value : null; - } - } - - public static class NoDataException extends Exception { - public NoDataException(String missingData) { - super(IdeBundle.message("exception.missing.data", missingData)); - } - } -}