/*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
-import com.intellij.openapi.application.AccessToken;
-import com.intellij.openapi.application.WriteAction;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
import org.jetbrains.annotations.Nullable;
public class SynchronizeCurrentFileAction extends AnAction implements DumbAware {
+ @Override
public void update(AnActionEvent e) {
VirtualFile[] files = getFiles(e);
: IdeBundle.message("action.synchronize.selected.files");
}
+ @Override
public void actionPerformed(AnActionEvent e) {
final Project project = getEventProject(e);
final VirtualFile[] files = getFiles(e);
if (project == null || files == null || files.length == 0) return;
- final AccessToken token = WriteAction.start(getClass());
- try {
- for (VirtualFile file : files) {
- final VirtualFileSystem fs = file.getFileSystem();
- if (fs instanceof LocalFileSystem && file instanceof NewVirtualFile) {
- ((NewVirtualFile)file).markDirtyRecursively();
+ ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ @Override
+ public void run() {
+ for (VirtualFile file : files) {
+ VirtualFileSystem fs = file.getFileSystem();
+ if (fs instanceof LocalFileSystem && file instanceof NewVirtualFile) {
+ ((NewVirtualFile)file).markDirtyRecursively();
+ }
}
}
- }
- finally {
- token.finish();
- }
+ });
- final Runnable postRefreshAction = new Runnable() {
+ RefreshQueue.getInstance().refresh(true, true, new Runnable() {
@Override
public void run() {
- final VcsDirtyScopeManager dirtyScopeManager = VcsDirtyScopeManager.getInstance(project);
- for (VirtualFile f : files) {
- if (f.isDirectory()) {
- dirtyScopeManager.dirDirtyRecursively(f);
- }
- else {
- dirtyScopeManager.fileDirty(f);
- }
- }
+ postRefresh(project, files);
+ }
+ }, files);
+ }
- final StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
- if (statusBar != null) {
- final String message = IdeBundle.message("action.sync.completed.successfully", getMessage(files));
- statusBar.setInfo(message);
- }
+ private static void postRefresh(Project project, VirtualFile[] files) {
+ VcsDirtyScopeManager dirtyScopeManager = VcsDirtyScopeManager.getInstance(project);
+ for (VirtualFile f : files) {
+ if (f.isDirectory()) {
+ dirtyScopeManager.dirDirtyRecursively(f);
}
- };
+ else {
+ dirtyScopeManager.fileDirty(f);
+ }
+ }
- RefreshQueue.getInstance().refresh(true, true, postRefreshAction, files);
+ StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
+ if (statusBar != null) {
+ statusBar.setInfo(IdeBundle.message("action.sync.completed.successfully", getMessage(files)));
+ }
}
@Nullable