From e006a6380aa6e1bd590e99a0e568070fc6def24a Mon Sep 17 00:00:00 2001 From: Olesya Smirnova Date: Thu, 20 Jan 2005 17:37:40 +0300 Subject: [PATCH] zx --- .../vcs => util}/ui/OptionsDialog.java | 2 +- .../actions/AddFileOrDirectoryAction.java | 2 +- .../actions/CheckoutFileAction.java | 3 +- .../cvsSupport2/actions/EditAction.java | 2 +- .../RemoveLocallyFileOrDirectoryAction.java | 3 +- .../cvsAdd/ui/AbstractAddOptionsDialog.java | 3 +- .../cvsCheckOut/ui/CheckoutFileDialog.java | 3 +- .../cvsEdit/ui/EditOptionsDialog.java | 2 +- .../RestoreDirectoriesConfirmationDialog.java | 2 +- .../debugger/ui/RunHotswapDialog.java | 3 +- .../actions/AbstractCommonCheckinAction.java | 2 +- .../ReadonlyStatusHandlerImpl.java | 43 ++++++++++++++++--- .../update/AbstractCommonUpdateAction.java | 3 +- .../update/UpdateOrStatusOptionsDialog.java | 3 +- 14 files changed, 56 insertions(+), 20 deletions(-) rename openapi/src/com/intellij/{openapi/vcs => util}/ui/OptionsDialog.java (98%) diff --git a/openapi/src/com/intellij/openapi/vcs/ui/OptionsDialog.java b/openapi/src/com/intellij/util/ui/OptionsDialog.java similarity index 98% rename from openapi/src/com/intellij/openapi/vcs/ui/OptionsDialog.java rename to openapi/src/com/intellij/util/ui/OptionsDialog.java index 3d4aab3e56eb..338e4997ef31 100644 --- a/openapi/src/com/intellij/openapi/vcs/ui/OptionsDialog.java +++ b/openapi/src/com/intellij/util/ui/OptionsDialog.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AddFileOrDirectoryAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AddFileOrDirectoryAction.java index cfdcf0827b43..27c3f3e9026f 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AddFileOrDirectoryAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AddFileOrDirectoryAction.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CheckoutFileAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CheckoutFileAction.java index 051194828093..d305cf243b95 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CheckoutFileAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CheckoutFileAction.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/EditAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/EditAction.java index 44e50b4efe4b..2e2ff9ad0338 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/EditAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/EditAction.java @@ -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; /** diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/RemoveLocallyFileOrDirectoryAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/RemoveLocallyFileOrDirectoryAction.java index 0fe5e0e1de3e..9259e37d1175 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/RemoveLocallyFileOrDirectoryAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/RemoveLocallyFileOrDirectoryAction.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsAdd/ui/AbstractAddOptionsDialog.java b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsAdd/ui/AbstractAddOptionsDialog.java index 06dbb7a0a55e..743c459f7311 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsAdd/ui/AbstractAddOptionsDialog.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsAdd/ui/AbstractAddOptionsDialog.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsCheckOut/ui/CheckoutFileDialog.java b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsCheckOut/ui/CheckoutFileDialog.java index dad1e407980f..f56c63450d0b 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsCheckOut/ui/CheckoutFileDialog.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsCheckOut/ui/CheckoutFileDialog.java @@ -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; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditOptionsDialog.java b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditOptionsDialog.java index 8a5a399c0c4b..1150448263a0 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditOptionsDialog.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditOptionsDialog.java @@ -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.*; diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/ui/RestoreDirectoriesConfirmationDialog.java b/plugins/cvs2/source/com/intellij/cvsSupport2/ui/RestoreDirectoriesConfirmationDialog.java index 6c1b1f0402c9..9413a7cbb9f8 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/ui/RestoreDirectoriesConfirmationDialog.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/ui/RestoreDirectoriesConfirmationDialog.java @@ -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.*; diff --git a/source/com/intellij/debugger/ui/RunHotswapDialog.java b/source/com/intellij/debugger/ui/RunHotswapDialog.java index 84f06cbcae5b..97ede59edb97 100644 --- a/source/com/intellij/debugger/ui/RunHotswapDialog.java +++ b/source/com/intellij/debugger/ui/RunHotswapDialog.java @@ -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; diff --git a/source/com/intellij/openapi/vcs/actions/AbstractCommonCheckinAction.java b/source/com/intellij/openapi/vcs/actions/AbstractCommonCheckinAction.java index f1fd1c9ffc93..e543eabf506f 100644 --- a/source/com/intellij/openapi/vcs/actions/AbstractCommonCheckinAction.java +++ b/source/com/intellij/openapi/vcs/actions/AbstractCommonCheckinAction.java @@ -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; diff --git a/source/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java b/source/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java index de560997681b..59b986a0f9a8 100644 --- a/source/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java +++ b/source/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java @@ -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 readOnlyFiles = new ArrayList(); @@ -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); + } } diff --git a/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java b/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java index 814fb688a7dd..2eea45eb3683 100644 --- a/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java +++ b/source/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java @@ -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.*; diff --git a/source/com/intellij/openapi/vcs/update/UpdateOrStatusOptionsDialog.java b/source/com/intellij/openapi/vcs/update/UpdateOrStatusOptionsDialog.java index 6a1d5073d84a..03c7182031e8 100644 --- a/source/com/intellij/openapi/vcs/update/UpdateOrStatusOptionsDialog.java +++ b/source/com/intellij/openapi/vcs/update/UpdateOrStatusOptionsDialog.java @@ -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.*;