2017-06-13 90 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

非常感謝您的明確描述。有效 :) –