From bceb45613d935ff0999217f5bb37ef8ab70cd5e7 Mon Sep 17 00:00:00 2001 From: Olesya Smirnova Date: Fri, 4 Mar 2005 16:21:44 +0300 Subject: [PATCH] CVS update actions performance should be fixed --- .../openapi/vcs/ProjectLevelVcsManager.java | 2 +- .../openapi/vcs/actions/VcsContextFactory.java | 12 ++++++++---- .../cvsSupport2/actions/AbstractAction.java | 6 +++--- .../actions/BrowseCvsRepositoryAction.java | 10 ++++------ .../actions/ConfigureCvsRootsAction.java | 2 +- .../cvsSupport2/actions/CvsGlobalAction.java | 2 +- .../cvsSupport2/actions/IgnoreFileAction.java | 2 +- .../cvsSupport2/actions/UnmarkAddedAction.java | 2 +- .../actionVisibility/CvsActionVisibility.java | 2 +- ...CashedCvsContext.java => CachedCvsContext.java} | 4 ++-- .../actions/cvsContext/CvsContextWrapper.java | 14 ++++++++------ .../openapi/vcs/actions/AnnotateToggleAction.java | 6 +++--- ...CashedVcsContext.java => CachedVcsContext.java} | 4 ++-- .../openapi/vcs/actions/VcsContextWrapper.java | 3 +-- .../vcs/impl/ProjectLevelVcsManagerImpl.java | 2 +- source/com/intellij/peer/impl/PeerFactoryImpl.java | 12 ++++++++---- 16 files changed, 46 insertions(+), 39 deletions(-) rename plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/{CashedCvsContext.java => CachedCvsContext.java} (96%) rename source/com/intellij/openapi/vcs/actions/{CashedVcsContext.java => CachedVcsContext.java} (97%) diff --git a/openapi/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java b/openapi/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java index dd560711115a..778d911fc1c7 100644 --- a/openapi/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java +++ b/openapi/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java @@ -49,7 +49,7 @@ public abstract class ProjectLevelVcsManager { public abstract AbstractVcs findVcsByName(String name); - public abstract boolean checkAllFielsAreUnder(AbstractVcs abstractVcs, VirtualFile[] files); + public abstract boolean checkAllFilesAreUnder(AbstractVcs abstractVcs, VirtualFile[] files); public abstract AbstractVcs getVcsFor(VirtualFile file); diff --git a/openapi/src/com/intellij/openapi/vcs/actions/VcsContextFactory.java b/openapi/src/com/intellij/openapi/vcs/actions/VcsContextFactory.java index acf7be21f663..abcfdd178fa6 100644 --- a/openapi/src/com/intellij/openapi/vcs/actions/VcsContextFactory.java +++ b/openapi/src/com/intellij/openapi/vcs/actions/VcsContextFactory.java @@ -38,11 +38,15 @@ import com.intellij.openapi.vfs.VirtualFile; import java.io.File; public interface VcsContextFactory { - VcsContext createOn(AnActionEvent event); + VcsContext createCachedContextOn(AnActionEvent event); - FilePath createOn(VirtualFile virtualFile); + VcsContext createContextOn(final AnActionEvent event); + + FilePath createFilePathOn(VirtualFile virtualFile); + + FilePath createFilePathOn(File file); + + FilePath createFilePathOn(VirtualFile parent, String name); - FilePath createOn(File file); - FilePath createOn(VirtualFile parent, String name); } diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AbstractAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AbstractAction.java index 54a216a411be..2793bef037ea 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AbstractAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/AbstractAction.java @@ -50,7 +50,7 @@ public abstract class AbstractAction extends AnAction { } public void actionPerformed(AnActionEvent e) { - actionPerformed(CvsContextWrapper.on(e)); + actionPerformed(CvsContextWrapper.createCachedInstance(e)); } private LocalVcs getLvcs(Project project) { @@ -201,13 +201,13 @@ public abstract class AbstractAction extends AnAction { } protected CvsConfiguration getConfig(AnActionEvent e) { - Project project = CvsContextWrapper.on(e).getProject(); + Project project = CvsContextWrapper.createCachedInstance(e).getProject(); if (project == null) return null; return CvsConfiguration.getInstance(project); } protected VcsConfiguration getCommonConfig(AnActionEvent e) { - Project project = CvsContextWrapper.on(e).getProject(); + Project project = CvsContextWrapper.createCachedInstance(e).getProject(); if (project == null) return null; return VcsConfiguration.getInstance(project); } diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/BrowseCvsRepositoryAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/BrowseCvsRepositoryAction.java index 409b6dbc6163..d5c623bed476 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/BrowseCvsRepositoryAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/BrowseCvsRepositoryAction.java @@ -2,16 +2,14 @@ package com.intellij.cvsSupport2.actions; import com.intellij.cvsSupport2.actions.cvsContext.CvsContext; import com.intellij.cvsSupport2.actions.cvsContext.CvsContextWrapper; -import com.intellij.openapi.vcs.actions.VcsContext; import com.intellij.cvsSupport2.config.CvsRootConfiguration; +import com.intellij.cvsSupport2.config.ui.SelectCvsConfigurationDialog; +import com.intellij.cvsSupport2.cvsBrowser.ui.BrowserPanel; +import com.intellij.cvsSupport2.cvsExecution.ModalityContext; import com.intellij.cvsSupport2.cvshandlers.AbstractCvsHandler; import com.intellij.cvsSupport2.cvshandlers.CvsHandler; import com.intellij.cvsSupport2.cvshandlers.FileSetToBeUpdated; -import com.intellij.cvsSupport2.cvsExecution.ModalityContext; -import com.intellij.cvsSupport2.cvsBrowser.ui.BrowserPanel; import com.intellij.cvsSupport2.ui.CvsTabbedWindow; -import com.intellij.cvsSupport2.config.ui.SelectCvsConfigurationDialog; -import com.intellij.cvsSupport2.cvsExecution.ModalityContext; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.project.Project; @@ -30,7 +28,7 @@ public class BrowseCvsRepositoryAction extends AbstractAction{ public void update(AnActionEvent e) { Presentation presentation = e.getPresentation(); - VcsContext context = CvsContextWrapper.on(e); + VcsContext context = CvsContextWrapper.createInstance(e); boolean projectExists = context.getProject() != null; presentation.setVisible(true); presentation.setEnabled(projectExists); diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/ConfigureCvsRootsAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/ConfigureCvsRootsAction.java index 331138b1f529..45aece23ba1b 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/ConfigureCvsRootsAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/ConfigureCvsRootsAction.java @@ -17,7 +17,7 @@ import java.util.List; public class ConfigureCvsRootsAction extends CvsGlobalAction { public void actionPerformed(AnActionEvent e) { - VcsContext cvsContext = CvsContextWrapper.on(e); + VcsContext cvsContext = CvsContextWrapper.createCachedInstance(e); CvsApplicationLevelConfiguration configuration = CvsApplicationLevelConfiguration.getInstance(); List configurations = configuration.CONFIGURATIONS; CvsConfigurationsListEditor cvsConfigurationsListEditor = diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CvsGlobalAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CvsGlobalAction.java index 0399040371cb..ae0f0a735c14 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CvsGlobalAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/CvsGlobalAction.java @@ -8,7 +8,7 @@ import com.intellij.openapi.actionSystem.Presentation; public abstract class CvsGlobalAction extends AnAction { public void update(AnActionEvent e) { - CvsContext cvsContext = CvsContextWrapper.on(e); + CvsContext cvsContext = CvsContextWrapper.createInstance(e); Presentation presentation = e.getPresentation(); if (cvsContext.cvsIsActive()) { presentation.setVisible(true); diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/IgnoreFileAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/IgnoreFileAction.java index cffa6958833d..5066cc99fef7 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/IgnoreFileAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/IgnoreFileAction.java @@ -47,7 +47,7 @@ public class IgnoreFileAction extends AnAction { } public void actionPerformed(AnActionEvent e) { - CvsContext context = CvsContextWrapper.on(e); + CvsContext context = CvsContextWrapper.createCachedInstance(e); VirtualFile[] selectedFiles = context.getSelectedFiles(); for (int i = 0; i < selectedFiles.length; i++) { diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/UnmarkAddedAction.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/UnmarkAddedAction.java index 9983d73e06c0..69d54b37b13b 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/UnmarkAddedAction.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/UnmarkAddedAction.java @@ -34,7 +34,7 @@ public class UnmarkAddedAction extends AnAction{ } public void actionPerformed(AnActionEvent e) { - VcsContext context = CvsContextWrapper.on(e); + VcsContext context = CvsContextWrapper.createCachedInstance(e); final VirtualFile[] selectedFiles = context.getSelectedFiles(); ApplicationManager.getApplication().runProcessWithProgressSynchronously(new Runnable() { public void run() { diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/actionVisibility/CvsActionVisibility.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/actionVisibility/CvsActionVisibility.java index 02a2a2c56a05..057d5989827e 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/actionVisibility/CvsActionVisibility.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/actionVisibility/CvsActionVisibility.java @@ -135,7 +135,7 @@ public class CvsActionVisibility { } public void applyToEvent(AnActionEvent e) { - CvsContext cvsContext = CvsContextWrapper.on(e); + CvsContext cvsContext = CvsContextWrapper.createInstance(e); Presentation presentation = e.getPresentation(); presentation.setEnabled(isEnabled(cvsContext)); presentation.setVisible(isVisible(cvsContext)); diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CashedCvsContext.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CachedCvsContext.java similarity index 96% rename from plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CashedCvsContext.java rename to plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CachedCvsContext.java index 540710ec5efa..c3524e2c6bd6 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CashedCvsContext.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CachedCvsContext.java @@ -16,7 +16,7 @@ import java.util.Collection; /** * author: lesya */ -public class CashedCvsContext implements CvsContext{ +public class CachedCvsContext implements CvsContext{ private final boolean myIsActive; private final Collection myDeletedFileNames; private final String myFileToRestore; @@ -28,7 +28,7 @@ public class CashedCvsContext implements CvsContext{ private final VcsContext myVcsContext; - public CashedCvsContext(CvsContext baseContext){ + public CachedCvsContext(CvsContext baseContext){ myIsActive = baseContext.cvsIsActive(); myDeletedFileNames = baseContext.getDeletedFileNames(); myFileToRestore = baseContext.getFileToRestore(); diff --git a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CvsContextWrapper.java b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CvsContextWrapper.java index 8ec424679630..6cfaed51ade8 100644 --- a/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CvsContextWrapper.java +++ b/plugins/cvs2/source/com/intellij/cvsSupport2/actions/cvsContext/CvsContextWrapper.java @@ -27,21 +27,23 @@ public class CvsContextWrapper implements CvsContext { private final VcsContext myVcsContext; private final DataContext myContext; - private CvsContextWrapper(AnActionEvent actionEvent) { + private CvsContextWrapper(AnActionEvent actionEvent, final VcsContext vcsContext) { myContext = actionEvent.getDataContext(); - myVcsContext = PeerFactory.getInstance().getVcsContextFactory().createOn(actionEvent); + myVcsContext = vcsContext; } - public static CvsContext on(AnActionEvent event) { - CvsContextWrapper wrapper = new CvsContextWrapper(event); - return new CashedCvsContext(wrapper); + public static CvsContext createCachedInstance(AnActionEvent event) { + return new CachedCvsContext(new CvsContextWrapper(event, PeerFactory.getInstance().getVcsContextFactory().createCachedContextOn(event))); } + public static CvsContext createInstance(AnActionEvent event) { + return new CvsContextWrapper(event, PeerFactory.getInstance().getVcsContextFactory().createContextOn(event)); + } public boolean cvsIsActive() { Project project = getProject(); if (project == null) return false; - return ProjectLevelVcsManager.getInstance(project).checkAllFielsAreUnder(CvsVcs2.getInstance(project), getSelectedFiles()); + return ProjectLevelVcsManager.getInstance(project).checkAllFilesAreUnder(CvsVcs2.getInstance(project), getSelectedFiles()); } diff --git a/source/com/intellij/openapi/vcs/actions/AnnotateToggleAction.java b/source/com/intellij/openapi/vcs/actions/AnnotateToggleAction.java index 93055d7a115a..385d02666ba8 100644 --- a/source/com/intellij/openapi/vcs/actions/AnnotateToggleAction.java +++ b/source/com/intellij/openapi/vcs/actions/AnnotateToggleAction.java @@ -29,7 +29,7 @@ public class AnnotateToggleAction extends ToggleAction { } public void update(AnActionEvent e) { - e.getPresentation().setEnabled(isEnabled(PeerFactory.getInstance().getVcsContextFactory().createOn(e))); + e.getPresentation().setEnabled(isEnabled(PeerFactory.getInstance().getVcsContextFactory().createCachedContextOn(e))); } private boolean isEnabled(final VcsContext context) { @@ -55,7 +55,7 @@ public class AnnotateToggleAction extends ToggleAction { public boolean isSelected(AnActionEvent e) { - VcsContext context = PeerFactory.getInstance().getVcsContextFactory().createOn(e); + VcsContext context = PeerFactory.getInstance().getVcsContextFactory().createCachedContextOn(e); Editor editor = context.getEditor(); if (editor == null) return false; Object annotations = editor.getUserData(AnnotateAction.KEY_IN_EDITOR); @@ -64,7 +64,7 @@ public class AnnotateToggleAction extends ToggleAction { } public void setSelected(AnActionEvent e, boolean state) { - VcsContext context = PeerFactory.getInstance().getVcsContextFactory().createOn(e); + VcsContext context = PeerFactory.getInstance().getVcsContextFactory().createCachedContextOn(e); Editor editor = context.getEditor(); if (!state) { if (editor == null) { diff --git a/source/com/intellij/openapi/vcs/actions/CashedVcsContext.java b/source/com/intellij/openapi/vcs/actions/CachedVcsContext.java similarity index 97% rename from source/com/intellij/openapi/vcs/actions/CashedVcsContext.java rename to source/com/intellij/openapi/vcs/actions/CachedVcsContext.java index 5a43b670eedb..6d4ce1cdb9ac 100644 --- a/source/com/intellij/openapi/vcs/actions/CashedVcsContext.java +++ b/source/com/intellij/openapi/vcs/actions/CachedVcsContext.java @@ -41,7 +41,7 @@ import com.intellij.psi.PsiElement; import java.util.Collection; import java.io.File; -public class CashedVcsContext implements VcsContext { +public class CachedVcsContext implements VcsContext { private final Project myProject; private final VirtualFile mySelectedFile; private final VirtualFile[] mySelectedFiles; @@ -56,7 +56,7 @@ public class CashedVcsContext implements VcsContext { private final FilePath[] mySelectedFilePaths; private final FilePath mySelectedFilePath; - public CashedVcsContext(VcsContext baseContext) { + public CachedVcsContext(VcsContext baseContext) { myProject = baseContext.getProject(); mySelectedFile = baseContext.getSelectedFile(); mySelectedFiles = baseContext.getSelectedFiles(); diff --git a/source/com/intellij/openapi/vcs/actions/VcsContextWrapper.java b/source/com/intellij/openapi/vcs/actions/VcsContextWrapper.java index 472219d9f3b0..7408cc5f2042 100644 --- a/source/com/intellij/openapi/vcs/actions/VcsContextWrapper.java +++ b/source/com/intellij/openapi/vcs/actions/VcsContextWrapper.java @@ -74,8 +74,7 @@ public class VcsContextWrapper implements VcsContext { } public static VcsContext on(AnActionEvent event) { - VcsContextWrapper wrapper = new VcsContextWrapper(event.getDataContext(), event.getModifiers(), event.getPlace()); - return new CashedVcsContext(wrapper); + return new CachedVcsContext(new VcsContextWrapper(event.getDataContext(), event.getModifiers(), event.getPlace())); } public Project getProject() { diff --git a/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java b/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java index 04fc18a0150b..be0705415f6f 100644 --- a/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java +++ b/source/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java @@ -186,7 +186,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme return "ProjectLevelVcsManager"; } - public boolean checkAllFielsAreUnder(AbstractVcs abstractVcs, VirtualFile[] files) { + public boolean checkAllFilesAreUnder(AbstractVcs abstractVcs, VirtualFile[] files) { if (files == null) return false; for (int i = 0; i < files.length; i++) { if (ProjectLevelVcsManager.getInstance(myProject).getVcsFor(files[i]) != abstractVcs) { diff --git a/source/com/intellij/peer/impl/PeerFactoryImpl.java b/source/com/intellij/peer/impl/PeerFactoryImpl.java index 0a811788dc1f..e4d60d00fa25 100644 --- a/source/com/intellij/peer/impl/PeerFactoryImpl.java +++ b/source/com/intellij/peer/impl/PeerFactoryImpl.java @@ -201,19 +201,23 @@ public class PeerFactoryImpl extends PeerFactory implements ApplicationComponent public VcsContextFactory getVcsContextFactory() { return new VcsContextFactory() { - public VcsContext createOn(AnActionEvent event) { + public VcsContext createCachedContextOn(AnActionEvent event) { return VcsContextWrapper.on(event); } - public FilePath createOn(VirtualFile virtualFile) { + public VcsContext createContextOn(final AnActionEvent event) { + return new VcsContextWrapper(event.getDataContext(), event.getModifiers(), event.getPlace()); + } + + public FilePath createFilePathOn(VirtualFile virtualFile) { return new FilePathImpl(virtualFile); } - public FilePath createOn(File file) { + public FilePath createFilePathOn(File file) { return FilePathImpl.create(file); } - public FilePath createOn(VirtualFile parent, String name) { + public FilePath createFilePathOn(VirtualFile parent, String name) { return new FilePathImpl(parent, name); } };