mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] extract common progress and scrolling setup code from main log and file history
This commit is contained in:
@@ -24,7 +24,6 @@ import com.intellij.vcs.log.VcsLog;
|
||||
import com.intellij.vcs.log.VcsLogDataKeys;
|
||||
import com.intellij.vcs.log.VcsLogFilterUi;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.data.VcsLogProgress;
|
||||
import com.intellij.vcs.log.impl.MainVcsLogUiProperties;
|
||||
import com.intellij.vcs.log.impl.VcsLogUtil;
|
||||
import com.intellij.vcs.log.ui.VcsLogActionPlaces;
|
||||
@@ -32,9 +31,9 @@ import com.intellij.vcs.log.ui.VcsLogInternalDataKeys;
|
||||
import com.intellij.vcs.log.ui.VcsLogUiImpl;
|
||||
import com.intellij.vcs.log.ui.actions.IntelliSortChooserPopupAction;
|
||||
import com.intellij.vcs.log.ui.filter.VcsLogClassicFilterUi;
|
||||
import com.intellij.vcs.log.ui.table.CommitSelectionListener;
|
||||
import com.intellij.vcs.log.ui.table.VcsLogGraphTable;
|
||||
import com.intellij.vcs.log.util.BekUtil;
|
||||
import com.intellij.vcs.log.util.VcsLogUiUtil;
|
||||
import com.intellij.vcs.log.util.VcsUserUtil;
|
||||
import com.intellij.vcs.log.visible.VisiblePack;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
@@ -115,32 +114,12 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
|
||||
myTextFilter = myFilterUi.createTextFilter();
|
||||
myToolbar = createActionsToolbar();
|
||||
|
||||
ProgressStripe progressStripe =
|
||||
new ProgressStripe(setupScrolledGraph(), this, ProgressWindow.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS) {
|
||||
@Override
|
||||
public void updateUI() {
|
||||
super.updateUI();
|
||||
if (myDecorator != null && myLogData.getProgress().isRunning()) startLoadingImmediately();
|
||||
}
|
||||
};
|
||||
myLogData.getProgress().addProgressIndicatorListener(new VcsLogProgress.ProgressListener() {
|
||||
@Override
|
||||
public void progressStarted() {
|
||||
progressStripe.startLoading();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void progressStopped() {
|
||||
progressStripe.stopLoading();
|
||||
}
|
||||
}, this);
|
||||
|
||||
|
||||
JComponent toolbars = new JPanel(new BorderLayout());
|
||||
toolbars.add(myToolbar, BorderLayout.NORTH);
|
||||
JComponent toolbarsAndTable = new JPanel(new BorderLayout());
|
||||
toolbarsAndTable.add(toolbars, BorderLayout.NORTH);
|
||||
toolbarsAndTable.add(progressStripe, BorderLayout.CENTER);
|
||||
toolbarsAndTable.add(VcsLogUiUtil.installProgress(VcsLogUiUtil.setupScrolledGraph(myGraphTable, SideBorder.TOP),
|
||||
myLogData, this), BorderLayout.CENTER);
|
||||
|
||||
myChangesBrowserSplitter = new OnePixelSplitter(false, "vcs.log.changes.splitter.proportion", 0.7f);
|
||||
myChangesBrowserSplitter.setFirstComponent(toolbarsAndTable);
|
||||
@@ -184,13 +163,6 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
|
||||
myDetailsSplitter.setSecondComponent(state ? myDetailsPanel : null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JScrollPane setupScrolledGraph() {
|
||||
JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myGraphTable, SideBorder.TOP);
|
||||
myGraphTable.viewportSet(scrollPane.getViewport());
|
||||
return scrollPane;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public VcsLogGraphTable getGraphTable() {
|
||||
return myGraphTable;
|
||||
|
||||
@@ -18,7 +18,6 @@ package com.intellij.vcs.log.ui.history;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.util.ProgressWindow;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.vcs.FilePath;
|
||||
import com.intellij.openapi.vcs.VcsDataKeys;
|
||||
@@ -33,16 +32,15 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.vcs.log.VcsFullCommitDetails;
|
||||
import com.intellij.vcs.log.data.*;
|
||||
import com.intellij.vcs.log.data.LoadingDetails;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.data.VcsLogProgress;
|
||||
import com.intellij.vcs.log.impl.MainVcsLogUiProperties;
|
||||
import com.intellij.vcs.log.ui.VcsLogActionPlaces;
|
||||
import com.intellij.vcs.log.ui.VcsLogInternalDataKeys;
|
||||
import com.intellij.vcs.log.ui.frame.CommitSelectionListenerForDiff;
|
||||
import com.intellij.vcs.log.ui.frame.DetailsPanel;
|
||||
import com.intellij.vcs.log.ui.frame.ProgressStripe;
|
||||
import com.intellij.vcs.log.ui.table.VcsLogGraphTable;
|
||||
import com.intellij.vcs.log.util.VcsLogUiUtil;
|
||||
import com.intellij.vcs.log.visible.VisiblePack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -84,28 +82,9 @@ public class FileHistoryPanel extends JPanel implements DataProvider, Disposable
|
||||
myDetailsPanel = new DetailsPanel(logData, myUi.getColorManager(), this);
|
||||
myDetailsPanel.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT));
|
||||
|
||||
ProgressStripe progressStripe =
|
||||
new ProgressStripe(setupScrolledGraph(), this, ProgressWindow.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS) {
|
||||
@Override
|
||||
public void updateUI() {
|
||||
super.updateUI();
|
||||
if (myDecorator != null && myLogData.getProgress().isRunning()) startLoadingImmediately();
|
||||
}
|
||||
};
|
||||
myLogData.getProgress().addProgressIndicatorListener(new VcsLogProgress.ProgressListener() {
|
||||
@Override
|
||||
public void progressStarted() {
|
||||
progressStripe.startLoading();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void progressStopped() {
|
||||
progressStripe.stopLoading();
|
||||
}
|
||||
}, this);
|
||||
|
||||
myDetailsSplitter = new OnePixelSplitter(true, "vcs.log.history.details.splitter.proportion", 0.7f);
|
||||
myDetailsSplitter.setFirstComponent(progressStripe);
|
||||
myDetailsSplitter.setFirstComponent(VcsLogUiUtil.installProgress(VcsLogUiUtil.setupScrolledGraph(myGraphTable, SideBorder.LEFT),
|
||||
myLogData, this));
|
||||
myDetailsSplitter.setSecondComponent(myUi.getProperties().get(MainVcsLogUiProperties.SHOW_DETAILS) ? myDetailsPanel : null);
|
||||
|
||||
myGraphTable.getSelectionModel().addListSelectionListener(new MyCommitSelectionListenerForDiff());
|
||||
@@ -121,13 +100,6 @@ public class FileHistoryPanel extends JPanel implements DataProvider, Disposable
|
||||
Disposer.register(myUi, this);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JScrollPane setupScrolledGraph() {
|
||||
JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myGraphTable, SideBorder.LEFT);
|
||||
myGraphTable.viewportSet(scrollPane.getViewport());
|
||||
return scrollPane;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JComponent createActionsToolbar() {
|
||||
DefaultActionGroup toolbarGroup = new DefaultActionGroup();
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright 2000-2017 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.vcs.log.util;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.progress.util.ProgressWindow;
|
||||
import com.intellij.ui.ScrollPaneFactory;
|
||||
import com.intellij.vcs.log.data.VcsLogData;
|
||||
import com.intellij.vcs.log.data.VcsLogProgress;
|
||||
import com.intellij.vcs.log.ui.frame.ProgressStripe;
|
||||
import com.intellij.vcs.log.ui.table.VcsLogGraphTable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class VcsLogUiUtil {
|
||||
@NotNull
|
||||
public static JComponent installProgress(@NotNull JComponent component,
|
||||
@NotNull VcsLogData logData,
|
||||
@NotNull Disposable disposableParent) {
|
||||
ProgressStripe progressStripe =
|
||||
new ProgressStripe(component, disposableParent, ProgressWindow.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS) {
|
||||
@Override
|
||||
public void updateUI() {
|
||||
super.updateUI();
|
||||
if (myDecorator != null && logData.getProgress().isRunning()) startLoadingImmediately();
|
||||
}
|
||||
};
|
||||
logData.getProgress().addProgressIndicatorListener(new VcsLogProgress.ProgressListener() {
|
||||
@Override
|
||||
public void progressStarted() {
|
||||
progressStripe.startLoading();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void progressStopped() {
|
||||
progressStripe.stopLoading();
|
||||
}
|
||||
}, disposableParent);
|
||||
|
||||
return progressStripe;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JScrollPane setupScrolledGraph(@NotNull VcsLogGraphTable graphTable, int border) {
|
||||
JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(graphTable, border);
|
||||
graphTable.viewportSet(scrollPane.getViewport());
|
||||
return scrollPane;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user