package net.jangaroo.ide.idea;
import com.intellij.compiler.server.CustomBuilderMessageHandler;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.messages.MessageBusConnection;
import net.jangaroo.ide.idea.jps.JangarooBuilder;
import java.io.File;
/**
* Listen for source-generating-compiler's file invalidation messages.
*/
public class JangarooProjectComponent extends AbstractProjectComponent {
private MessageBusConnection messageBusConnection;
public JangarooProjectComponent(Project project) {
super(project);
}
@Override
public void initComponent() {
super.initComponent();
messageBusConnection = myProject.getMessageBus().connect();
messageBusConnection.subscribe(CustomBuilderMessageHandler.TOPIC, new FileInvalidationListener());
}
@Override
public void disposeComponent() {
messageBusConnection.disconnect();
super.disposeComponent();
}
private class FileInvalidationListener implements CustomBuilderMessageHandler {
@Override
public void messageReceived(String builderId, String messageType, String messageText) {
if (JangarooBuilder.BUILDER_NAME.equals(builderId) &&
JangarooBuilder.FILE_INVALIDATION_BUILDER_MESSAGE.equals(messageType)) {
VirtualFile virtualFile = VfsUtil.findFileByIoFile(new File(messageText), true);
if (virtualFile != null) {
virtualFile.refresh(true, false);
}
}
}
}
}