2017-06-13 87 views
0

这里后集是我的代码代码段(在XTEXT工作) (保存在文件中的模型)的Eclipse:入门资源节约

generatedModel.save(null) //here generatedModel is an object of resource 

然后,当我试图撷取有关此模型的信息使用

...getResource(...) 

我得到了以下资源未找到 错误但是,当我在两者之间加入了Thread.sleep(3000),它的工作。因此,这是在资源被保存到文件之前被访问时发生的。 我试图添加一个侦听器来检查文件何时被保存。这里是代码:

var listener = new IResourceChangeListener() { 

      override resourceChanged(IResourceChangeEvent event) { 

       if (event.type === IResourceChangeEvent.POST_CHANGE) { 
        delta = event.delta 
       } 
       if (delta.kind === IResourceDelta.CHANGED) { 
        delta.accept(
         new IResourceDeltaVisitor() { 

          override visit(IResourceDelta innerdelta) throws CoreException { 
           if (innerdelta.resource.type === IResource.FILE) 
            println("YESYESYEYESYEYESYSY") 
            else if(innerdelta.resource.type === IResource.FOLDER) 
            println("PPPPPPPPPPPPPPPPPP") 
            else if (innerdelta.resource.type === IResource.PROJECT) 
            println("WWWWWWWWWWWWWWWWWWWW") 
           else 
            println("NONONONONO") 
            return false 
          } 

         } 
        ) 
       } 
      } 

     } 
     var workspace = ResourcesPlugin.workspace 
     workspace.addResourceChangeListener(listener) 

但这没有帮助。这是打印NONONO ..总是在变化。我将文件保存在同一工作空间的其他文件夹中。 b(项目) - > scr-gen(文件夹) - >代码(文件夹) - >文件...

+0

greg-449从你的帮助我知道如何获取文件相关的事件。但是,有没有什么方法可以在文件保存后获取监听器? –

回答

0

您的访问方法应返回true,以便访问delta中的所有资源。

资源更改事件可以包含多个嵌套三角洲,您需要全部查看它们。增量通常将工作空间放在顶层delta处,工程处于下一层,然后是任何文件夹,最后是文件。

+0

感谢您的帮助。我会编辑它,让你知道它是否工作。 –

+0

非常感谢您的明确描述。有效 :) –