This commit is contained in:
Olesya Smirnova
2005-01-20 17:37:40 +03:00
parent 2422322bb2
commit e006a6380a
14 changed files with 56 additions and 20 deletions
@@ -2,7 +2,7 @@
* Copyright (c) 2000-2004 by JetBrains s.r.o. All Rights Reserved.
* Use is subject to license terms.
*/
package com.intellij.openapi.vcs.ui;
package com.intellij.util.ui;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
@@ -13,7 +13,7 @@ import com.intellij.cvsSupport2.cvsoperations.cvsAdd.ui.AbstractAddOptionsDialog
import com.intellij.cvsSupport2.ui.Options;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.containers.HashMap;
@@ -10,8 +10,9 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.openapi.vcs.actions.VcsContext;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vcs.ui.ReplaceFileConfirmationDialog;
import com.intellij.util.ui.OptionsDialog;
import java.util.Arrays;
import java.util.Collection;
@@ -8,7 +8,7 @@ import com.intellij.cvsSupport2.cvshandlers.CvsHandler;
import com.intellij.cvsSupport2.cvsoperations.cvsEdit.ui.EditOptionsDialog;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vcs.actions.VcsContext;
/**
@@ -9,7 +9,8 @@ import com.intellij.cvsSupport2.ui.Options;
import com.intellij.cvsSupport2.CvsUtil;
import com.intellij.cvsSupport2.cvsoperations.cvsRemove.ui.AbstractDeleteConfirmationDialog;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import java.io.File;
import java.util.ArrayList;
@@ -6,7 +6,8 @@ import com.intellij.cvsSupport2.cvsoperations.cvsAdd.AddedFileInfo;
import com.intellij.cvsSupport2.ui.Options;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
import java.util.Collection;
@@ -5,8 +5,9 @@ import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.TagsProviderOnVirtu
import com.intellij.cvsSupport2.cvsoperations.dateOrRevision.ui.DateOrRevisionOrTagSettings;
import com.intellij.cvsSupport2.cvsoperations.dateOrRevision.ui.DateOrRevisionOrTagSettings;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
import java.util.Collection;
@@ -2,7 +2,7 @@ package com.intellij.cvsSupport2.cvsoperations.cvsEdit.ui;
import com.intellij.cvsSupport2.config.CvsConfiguration;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
import java.awt.*;
@@ -2,7 +2,7 @@ package com.intellij.cvsSupport2.ui;
import com.intellij.cvsSupport2.config.CvsApplicationLevelConfiguration;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
@@ -3,7 +3,8 @@ package com.intellij.debugger.ui;
import com.intellij.debugger.impl.DebuggerSession;
import com.intellij.debugger.settings.DebuggerSettings;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
@@ -43,7 +43,7 @@ import com.intellij.openapi.vcs.checkin.VcsOperation;
import com.intellij.openapi.vcs.fileView.impl.FileViewPanel;
import com.intellij.openapi.vcs.ui.CheckinDialog;
import com.intellij.openapi.vcs.ui.CheckinFileDialog;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vcs.ui.Refreshable;
import com.intellij.openapi.vcs.ui.impl.CheckinProjectPanelImpl;
import com.intellij.openapi.vfs.VirtualFileManager;
@@ -31,38 +31,59 @@
*/
package com.intellij.openapi.vcs.readOnlyHandler;
import com.intellij.ide.IdeEventQueue;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ide.IdeEventQueue;
import org.jdom.Element;
import java.util.ArrayList;
import java.util.List;
public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements ProjectComponent{
public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements ProjectComponent, JDOMExternalizable{
private final Project myProject;
public boolean SHOW_DIALOG;
public ReadonlyStatusHandlerImpl(Project project) {
myProject = project;
}
public OperationStatus ensureFilesWritable(VirtualFile[] files) {
ApplicationManager.getApplication().assertIsDispatchThread();
if (files.length == 0) return new OperationStatus(VirtualFile.EMPTY_ARRAY, VirtualFile.EMPTY_ARRAY);
long[] modificationStamps = new long[files.length];
for (int i = 0; i < files.length; i++) {
modificationStamps[i] = files[i].getModificationStamp();
}
final FileInfo[] fileInfos = createFileInfos(files);
if (files.length == 0) return new OperationStatus(VirtualFile.EMPTY_ARRAY, VirtualFile.EMPTY_ARRAY);
Runnable handleAction = new Runnable() {
public void run() {
if (SHOW_DIALOG) {
HandleReadOnlyStatusDialog dialog = new HandleReadOnlyStatusDialog(myProject, fileInfos);
dialog.show();
} else {
for (int i = 0; i < fileInfos.length; i++) {
fileInfos[i].handle();
}
}
}
};
ApplicationManager.getApplication().assertIsDispatchThread();
// This event count hack is necessary to allow actions that called this stuff could still get data from their data contexts.
// Otherwise data manager stuff will fire up an assertion saying that event count has been changed (due to modal dialog show-up)
// The hack itself is safe since we guarantee that focus will return to the same component had it before modal dialog have been shown.
int savedEventCount = IdeEventQueue.getInstance().getEventCount();
HandleReadOnlyStatusDialog dialog = new HandleReadOnlyStatusDialog(myProject, createFileInfos(files));
dialog.show();
handleAction.run();
IdeEventQueue.getInstance().setEventCount(savedEventCount);
List<VirtualFile> readOnlyFiles = new ArrayList<VirtualFile>();
@@ -106,4 +127,12 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements
public void disposeComponent() {
}
public void readExternal(Element element) throws InvalidDataException {
DefaultJDOMExternalizer.readExternal(this, element);
}
public void writeExternal(Element element) throws WriteExternalException {
DefaultJDOMExternalizer.writeExternal(this, element);
}
}
@@ -46,7 +46,7 @@ import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.actions.AbstractVcsAction;
import com.intellij.openapi.vcs.actions.VcsContext;
import com.intellij.openapi.vcs.ex.ProjectLevelVcsManagerEx;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.wm.ToolWindowId;
@@ -55,6 +55,7 @@ import com.intellij.peer.PeerFactory;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManager;
import com.intellij.util.concurrency.Semaphore;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.vcsUtil.VcsUtil;
import java.util.*;
@@ -35,7 +35,8 @@ import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vcs.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import com.intellij.util.ui.OptionsDialog;
import javax.swing.*;
import java.awt.*;