1 package com
.intellij
.ide
.macro
;
3 import com
.intellij
.ide
.DataAccessors
;
4 import com
.intellij
.ide
.IdeBundle
;
5 import com
.intellij
.openapi
.actionSystem
.DataContext
;
6 import com
.intellij
.openapi
.util
.io
.FileUtil
;
7 import com
.intellij
.openapi
.vfs
.VfsUtil
;
8 import com
.intellij
.openapi
.vfs
.VirtualFile
;
10 public class FileRelativeDirMacro
extends Macro
{
11 public String
getName() {
12 return "FileRelativeDir";
15 public String
getDescription() {
16 return IdeBundle
.message("macro.file.directory.relative");
19 public String
expand(DataContext dataContext
) {
20 //Project project = (Project)dataContext.getData(DataConstants.PROJECT);
21 //if (project == null) return null;
22 //VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE);
23 //if (file == null) return null;
24 //if (!file.isDirectory()){
25 // file = file.getParent();
26 // if (file == null) return null;
28 final VirtualFile baseDir
= DataAccessors
.PROJECT_BASE_DIR
.from(dataContext
);
29 if (baseDir
== null) {
33 VirtualFile dir
= DataAccessors
.VIRTUAL_DIR_OR_PARENT
.from(dataContext
);
34 if (dir
== null) return null;
35 return FileUtil
.getRelativePath(VfsUtil
.virtualToIoFile(baseDir
), VfsUtil
.virtualToIoFile(dir
));