import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.util.ProgressWindow;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.changes.issueLinks.IssueLinkHtmlRenderer;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.BrowserHyperlinkListener;
import com.intellij.ui.IdeBorderFactory;
-import com.intellij.ui.ScrollPaneFactory;
import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBLoadingPanel;
+import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.components.JBTextField;
import com.intellij.ui.components.panels.NonOpaquePanel;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
+import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
myRefsPanel = new RefsPanel(colorManager);
myHashAuthorPanel = new DataPanel(logDataHolder.getProject(), false);
- final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane();
+ final JScrollPane scrollPane = new JBScrollPane() {
+ @Override
+ public Border getBorder() {
+ return getVerticalScrollBar().isVisible() ? super.getBorder() : null;
+ }
+ };
myMessageDataPanel = new DataPanel(logDataHolder.getProject(), true) {
@Override
public Dimension getPreferredSize() {
}
};
scrollPane.setViewportView(myMessageDataPanel);
- scrollPane.setBorder(UIUtil.makeChameleonBorder(scrollPane.getBorder(), new Condition<JScrollBar>() {
- @Override
- public boolean value(JScrollBar bar) {
- return bar != null && bar.isVisible();
- }
- }, scrollPane.getVerticalScrollBar()));
myContainingBranchesPanel = new ContainingBranchesPanel();
myMessagePanel = new MessagePanel();
myLoadingPanel.add(header, BorderLayout.NORTH);
myLoadingPanel.add(scrollPane, BorderLayout.CENTER);
myLoadingPanel.add(myContainingBranchesPanel, BorderLayout.SOUTH);
- myLoadingPanel.setBackground(UIUtil.getTableBackground());
+ myLoadingPanel.setOpaque(false);
setLayout(new CardLayout());
add(myLoadingPanel, STANDARD_LAYER);
add(myMessagePanel, MESSAGE_LAYER);
setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
- setBackground(UIUtil.getTableBackground());
showMessage("No commits selected");
}
+ @Override
+ public Color getBackground() {
+ return UIUtil.getTableBackground();
+ }
+
void updateDataPack(@NotNull VisiblePack dataPack) {
myDataPack = dataPack;
}
myProject = project;
addHyperlinkListener(BrowserHyperlinkListener.INSTANCE);
setOpaque(false);
+ putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
}
void setData(@Nullable VcsFullCommitDetails commit) {
myLoadingComponent = new NonOpaquePanel(new BorderLayout());
myLoadingComponent.add(new AsyncProcessIcon("Loading..."), BorderLayout.WEST);
myLoadingComponent.add(Box.createHorizontalGlue(), BorderLayout.CENTER);
- myBranchesList = new JBTextField("");
- myBranchesList.setEditable(false);
- myBranchesList.setBorder(IdeBorderFactory.createEmptyBorder()); // setting border to null may mean "use default border" while setting empty border means we do not want a border
- if (UIUtil.isUnderIntelliJLaF()) {
- myBranchesList.setBackground(UIUtil.getPanelBackground());
- } else if (UIUtil.isUnderGTKLookAndFeel()) {
- // setting border to empty does not help with gtk l&f
- // so I just cover it completely with my line border
- myBranchesList.setBorder(new LineBorder(UIUtil.getTextFieldBackground(), 3));
- }
+ myBranchesList = new JBTextField("") {
+ private final Border gtkBorder = new LineBorder(UIUtil.getTextFieldBackground(), 3) {
+ @Override
+ public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
+ lineColor = UIUtil.getTextFieldBackground();
+ super.paintBorder(c, g, x, y, width, height);
+ }
+ };
+ private final Border emptyBorder = IdeBorderFactory.createEmptyBorder();
+ @Override
+ public Border getBorder() {
+ // setting border to empty does not help with gtk l&f
+ // so I just cover it completely with my line border
+ return UIUtil.isUnderGTKLookAndFeel() ? gtkBorder : emptyBorder;
+ }
+ };
+ myBranchesList.setOpaque(false);
+ myBranchesList.setEditable(false);
setOpaque(false);
setLayout(new BorderLayout());
add(label, BorderLayout.WEST);