I want to execute certain events when the user clicks on the accept action. Is there a similar example?
private fun openDiffWindowInEditor(
file1: String,//new file
file2: String,//old
toolCallId: String,
isNewFile: Boolean
) {
val editorManager = FileEditorManager.getInstance(project)
val openFiles = editorManager.openFiles.filterIsInstance<ChainDiffVirtualFile>()
if(openFiles.isNotEmpty()){
ApplicationManager.getApplication().invokeLater {
openFiles.forEach {
editorManager.closeFile(it)
}
}
}
val newFile = File(URI(file1))
val nf = runBlocking(Dispatchers.IO) {
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(newFile)
}
if(nf!=null){
VfsUtil.markDirtyAndRefresh(true, false, false, newFile)
val of = LightVirtualFile("Diff",file2)
val content1: DiffContent = DiffContentFactory.getInstance().create(project,nf)
val content2: DiffContent = DiffContentFactory.getInstance().create(project,of)
val diffRequest = SimpleDiffRequest(newFile.name, content2, content1, newFile.name, newFile.absolutePath)
diffRequest.putUserData(DIFF_TOOL_KEY, toolCallId)
diffRequest.putUserData(DIFF_PROJECT, project)
diffRequest.putUserData(DIFF_NEW_FILE, newFile)
diffRequest.putUserData(DIFF_OLD_FILE, of)
diffRequest.putUserData(DIFF_IS_NEW_FILE, isNewFile)
ApplicationManager.getApplication().invokeLater {
DiffManager.getInstance().showDiff(project, diffRequest)
}
}
}