From 281d909b320ff5d93d69b37d53ec399fd1902014 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Fri, 4 Nov 2016 16:02:10 +0300 Subject: [PATCH] vcs: Inlined "GenericDetailsLoader" logic to "AbstractRefreshablePanel" --- .../openapi/vcs/GenericDetailsLoader.java | 63 ------------------- .../vcs/changes/AbstractRefreshablePanel.java | 34 ++++++---- .../TreeConflictRefreshablePanel.java | 5 +- 3 files changed, 26 insertions(+), 76 deletions(-) delete mode 100644 platform/vcs-api/src/com/intellij/openapi/vcs/GenericDetailsLoader.java diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/GenericDetailsLoader.java b/platform/vcs-api/src/com/intellij/openapi/vcs/GenericDetailsLoader.java deleted file mode 100644 index 21d72cf7c115..000000000000 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/GenericDetailsLoader.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2000-2011 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.openapi.vcs; - -import com.intellij.openapi.util.Comparing; -import com.intellij.util.Consumer; -import com.intellij.util.PairConsumer; -import org.jetbrains.annotations.CalledInAwt; -import org.jetbrains.annotations.Nullable; - -public class GenericDetailsLoader implements Details { - private final Consumer myLoader; - private final PairConsumer myValueConsumer; - private Id myCurrentlySelected; - private Id mySetId; - - /** - * @param loader - is called in AWT. Should call {@link #take} with data when ready. Also in AWT - * @param valueConsumer - is called in AWT. passive, just benefits from details loading - */ - public GenericDetailsLoader(Consumer loader, PairConsumer valueConsumer) { - myLoader = loader; - myValueConsumer = valueConsumer; - } - - @CalledInAwt - public void updateSelection(@Nullable Id id, boolean force) { - Id previousId = myCurrentlySelected; - myCurrentlySelected = id; - mySetId = null; - if (force || !Comparing.equal(id, previousId)) { - myLoader.consume(id); - } - } - - @CalledInAwt - @Override - public void take(Id id, Data data) { - if (!id.equals(mySetId) && id.equals(myCurrentlySelected)) { - mySetId = id; - myValueConsumer.consume(id, data); - } - } - - @CalledInAwt - @Override - public Id getCurrentlySelected() { - return myCurrentlySelected; - } -} diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java index a5661d6182c9..f497599fe1d4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java @@ -22,7 +22,6 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.vcs.GenericDetailsLoader; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier; import com.intellij.util.continuation.ModalityIgnorantBackgroundableTask; @@ -44,22 +43,23 @@ import javax.swing.*; public abstract class AbstractRefreshablePanel implements RefreshablePanel { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.AbstractRefreshablePanel"); + @NotNull private final Project myProject; + @NotNull private final String myLoadingTitle; + private Ticket myCurrentlySelected; + private Ticket mySetId; private final Ticket myTicket; private final DetailsPanel myDetailsPanel; - private final GenericDetailsLoader myDetailsLoader; private final BackgroundTaskQueue myQueue; private volatile boolean myDisposed; - protected AbstractRefreshablePanel(final Project project, final String loadingTitle, final BackgroundTaskQueue queue) { + protected AbstractRefreshablePanel(@NotNull Project project, @NotNull String loadingTitle, @NotNull BackgroundTaskQueue queue) { + myProject = project; + myLoadingTitle = loadingTitle; myQueue = queue; myTicket = new Ticket(); myDetailsPanel = new DetailsPanel(); myDetailsPanel.loading(); myDetailsPanel.layout(); - - myDetailsLoader = new GenericDetailsLoader<>( - ticket -> myQueue.run(new Loader(project, loadingTitle, myTicket.copy())), - (ticket, t) -> acceptData(t)); } @Override @@ -78,10 +78,16 @@ public abstract class AbstractRefreshablePanel implements RefreshablePanel implements RefreshablePanel