mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ui: remove JComponent.getGraphics usages
GitOrigin-RevId: efb2bccfcaf7fc67611db9464b53d79099631eb2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9b69db9b2a
commit
7483bb64e7
@@ -2,8 +2,6 @@
|
||||
package com.intellij.collaboration.ui
|
||||
|
||||
import com.intellij.ide.ui.laf.darcula.DarculaUIUtil
|
||||
import com.intellij.ui.scale.JBUIScale
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import java.awt.Component
|
||||
import java.awt.Graphics
|
||||
import java.awt.Graphics2D
|
||||
@@ -18,10 +16,8 @@ internal class SimpleFocusBorder : Border {
|
||||
}
|
||||
|
||||
override fun getBorderInsets(c: Component): Insets {
|
||||
val bw = if (UIUtil.isUnderDefaultMacTheme()) JBUIScale.scale(3).toFloat() else DarculaUIUtil.BW.float
|
||||
val g = c.graphics
|
||||
val f = if (g is Graphics2D && UIUtil.isRetina(g)) 0.5f else 1.0f
|
||||
val lw = if (UIUtil.isUnderDefaultMacTheme()) JBUIScale.scale(f) else DarculaUIUtil.LW.float
|
||||
val bw = DarculaUIUtil.BW.float
|
||||
val lw = DarculaUIUtil.LW.float
|
||||
val insets = (bw + lw).toInt()
|
||||
return Insets(insets, insets, insets, insets)
|
||||
}
|
||||
|
||||
@@ -16,13 +16,33 @@ import com.intellij.ui.components.JBLayeredPane
|
||||
import com.intellij.ui.components.panels.NonOpaquePanel
|
||||
import com.intellij.ui.components.panels.VerticalLayout
|
||||
import com.intellij.util.animation.FloatConsumer
|
||||
import com.intellij.util.ui.*
|
||||
import kotlinx.coroutines.*
|
||||
import com.intellij.util.ui.AnimatedIcon
|
||||
import com.intellij.util.ui.Animator
|
||||
import com.intellij.util.ui.AsyncProcessIcon
|
||||
import com.intellij.util.ui.GraphicsUtil
|
||||
import com.intellij.util.ui.ImageUtil
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.StartupUiUtil
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.jetbrains.annotations.ApiStatus.Internal
|
||||
import org.jetbrains.annotations.Nls
|
||||
import java.awt.*
|
||||
import java.awt.AlphaComposite
|
||||
import java.awt.Color
|
||||
import java.awt.Dimension
|
||||
import java.awt.Graphics
|
||||
import java.awt.Graphics2D
|
||||
import java.awt.GridBagLayout
|
||||
import java.awt.image.BufferedImage
|
||||
import javax.swing.*
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JLabel
|
||||
import javax.swing.JLayeredPane
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.SwingConstants
|
||||
|
||||
open class LoadingDecorator @JvmOverloads constructor(
|
||||
content: JComponent?,
|
||||
@@ -193,7 +213,7 @@ open class LoadingDecorator @JvmOverloads constructor(
|
||||
isVisible = true
|
||||
currentAlpha = -1f
|
||||
if (takeSnapshot && width > 0 && height > 0) {
|
||||
snapshot = ImageUtil.createImage(graphics, width, height, BufferedImage.TYPE_INT_RGB)
|
||||
snapshot = ImageUtil.createImage(GraphicsUtil.safelyGetGraphics(this), width, height, BufferedImage.TYPE_INT_RGB)
|
||||
val g = snapshot!!.createGraphics()
|
||||
pane.paint(g)
|
||||
val opaque = UIUtil.findNearestOpaque(this)
|
||||
|
||||
@@ -2,12 +2,19 @@
|
||||
package com.intellij.ui.components;
|
||||
|
||||
import com.intellij.ui.ComponentUtil;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.ImageUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JScrollBar;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class ZoomingDelegate {
|
||||
@@ -96,7 +103,7 @@ public class ZoomingDelegate {
|
||||
if (bounds.width <= 0 || bounds.height <= 0) return;
|
||||
|
||||
BufferedImage image =
|
||||
ImageUtil.createImage(myViewportComponent.getGraphics(), bounds.width, bounds.height, BufferedImage.TYPE_INT_RGB);
|
||||
ImageUtil.createImage(GraphicsUtil.safelyGetGraphics(myViewportComponent), bounds.width, bounds.height, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
Graphics graphics = image.getGraphics();
|
||||
graphics.setClip(0, 0, bounds.width, bounds.height);
|
||||
|
||||
+4
-2
@@ -14,6 +14,7 @@ import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.wm.IdeFrame;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -131,7 +132,7 @@ final class FocusDebuggerAction extends AnAction implements DumbAware {
|
||||
|
||||
private void paintFocusBorders(boolean clean) {
|
||||
if (myCurrent != null) {
|
||||
Graphics graphics = myCurrent.getGraphics();
|
||||
Graphics graphics = GraphicsUtil.safelyGetGraphics(myCurrent);
|
||||
Graphics2D currentFocusGraphics = (Graphics2D)(graphics != null ? graphics.create() : null);
|
||||
try {
|
||||
if (currentFocusGraphics != null) {
|
||||
@@ -150,7 +151,8 @@ final class FocusDebuggerAction extends AnAction implements DumbAware {
|
||||
if (currentFocusGraphics != null) currentFocusGraphics.dispose();
|
||||
}
|
||||
if (myPrevious != null) {
|
||||
Graphics2D previousFocusGraphics = (Graphics2D)(myPrevious.getGraphics() != null ? myPrevious.getGraphics().create() : null);
|
||||
Graphics prior = GraphicsUtil.safelyGetGraphics(myPrevious);
|
||||
Graphics2D previousFocusGraphics = (Graphics2D)(prior != null ? prior.create() : null);
|
||||
try {
|
||||
if (previousFocusGraphics != null) {
|
||||
if (clean) {
|
||||
|
||||
+6
-2
@@ -15,6 +15,7 @@ import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.ui.table.JBTable;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -23,7 +24,10 @@ import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.table.TableColumnModel;
|
||||
import java.awt.*;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -173,7 +177,7 @@ public final class FocusTracesDialog extends DialogWrapper {
|
||||
}
|
||||
prev = info.component.get();
|
||||
if (prev != null && prev.isDisplayable()) {
|
||||
final Graphics g = prev.getGraphics();
|
||||
final Graphics g = GraphicsUtil.safelyGetGraphics(prev);
|
||||
g.setColor(JBColor.RED);
|
||||
final Dimension sz = prev.getSize();
|
||||
UIUtil.drawDottedRectangle(g, 1, 1, sz.width - 2, sz.height - 2);
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.internal.focus;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.RootPaneContainer;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -17,7 +22,7 @@ public final class Util {
|
||||
filter(f -> f.getGlassPane() != null).
|
||||
filter(window -> window.getRootPane() != null).
|
||||
map(window -> (window).getGlassPane()).
|
||||
map(jGlassPane -> jGlassPane.getGraphics()).
|
||||
map(jGlassPane -> GraphicsUtil.safelyGetGraphics(jGlassPane)).
|
||||
filter(g -> g != null).
|
||||
forEach(graphics -> {
|
||||
Graphics glassPaneGraphics = graphics.create();
|
||||
|
||||
@@ -20,13 +20,19 @@ import com.intellij.openapi.wm.ex.ToolWindowManagerEx
|
||||
import com.intellij.openapi.wm.impl.ToolWindowManagerImpl
|
||||
import com.intellij.problems.WolfTheProblemSolver
|
||||
import com.intellij.toolWindow.ToolWindowEventSource
|
||||
import com.intellij.ui.*
|
||||
import com.intellij.ui.BackgroundSupplier
|
||||
import com.intellij.ui.CellRendererPanel
|
||||
import com.intellij.ui.ExperimentalUI
|
||||
import com.intellij.ui.JBColor
|
||||
import com.intellij.ui.SimpleColoredComponent
|
||||
import com.intellij.ui.SimpleTextAttributes
|
||||
import com.intellij.ui.paint.PaintUtil
|
||||
import com.intellij.ui.render.RenderingUtil
|
||||
import com.intellij.ui.speedSearch.SpeedSearchUtil.applySpeedSearchHighlighting
|
||||
import com.intellij.util.IconUtil
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import org.jetbrains.annotations.ApiStatus.Internal
|
||||
import org.jetbrains.annotations.Nls
|
||||
import java.awt.BorderLayout
|
||||
@@ -165,9 +171,8 @@ class SwitcherVirtualFile(
|
||||
}
|
||||
component.append(mainText, SimpleTextAttributes(style, foreground, effectColor))
|
||||
component.font?.let {
|
||||
val fontMetrics = component.getFontMetrics(it)
|
||||
val mainTextWidth = PaintUtil.getStringWidth(mainText, component.graphics, fontMetrics)
|
||||
val shortcutTextWidth = shortcutText?.let { PaintUtil.getStringWidth(it, component.graphics, fontMetrics) } ?: 0
|
||||
val mainTextWidth = UIUtil.computeStringWidth(component, mainText)
|
||||
val shortcutTextWidth = shortcutText?.let { UIUtil.computeStringWidth(component, it) } ?: 0
|
||||
val width = component.width - mainTextWidth - shortcutTextWidth - component.iconTextGap - component.icon.iconWidth -
|
||||
component.insets.left - component.insets.right
|
||||
if (width <= 0) return@let null
|
||||
|
||||
+15
-3
@@ -20,8 +20,14 @@ import com.intellij.ui.MouseDragHelper
|
||||
import com.intellij.ui.PopupBorder
|
||||
import com.intellij.ui.WindowRoundedCornersManager
|
||||
import com.intellij.ui.components.JBCheckBox
|
||||
import com.intellij.ui.dsl.builder.*
|
||||
import com.intellij.ui.dsl.builder.AlignX
|
||||
import com.intellij.ui.dsl.builder.AlignY
|
||||
import com.intellij.ui.dsl.builder.Cell
|
||||
import com.intellij.ui.dsl.builder.bindSelected
|
||||
import com.intellij.ui.dsl.builder.panel
|
||||
import com.intellij.ui.dsl.builder.plus
|
||||
import com.intellij.ui.util.width
|
||||
import com.intellij.util.ui.GraphicsUtil
|
||||
import com.intellij.util.ui.JBFont
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
@@ -30,7 +36,13 @@ import java.awt.event.ActionEvent
|
||||
import java.awt.event.MouseAdapter
|
||||
import java.awt.event.MouseEvent
|
||||
import java.nio.file.Path
|
||||
import javax.swing.*
|
||||
import javax.swing.AbstractAction
|
||||
import javax.swing.Action
|
||||
import javax.swing.JButton
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.JRootPane
|
||||
import javax.swing.SwingUtilities
|
||||
import javax.swing.border.Border
|
||||
import javax.swing.text.View
|
||||
import kotlin.io.path.name
|
||||
@@ -191,7 +203,7 @@ internal class TrustedProjectsStartupDialog(
|
||||
|
||||
val text = htmlDocument?.getText(0, htmlDocument.length)?.replace("\n", "") ?: textWithMarkedElements
|
||||
val fontMetrics = checkBox.getFontMetrics(checkBox.font)
|
||||
val bounds = fontMetrics.getStringBounds(text, checkBox.graphics)
|
||||
val bounds = fontMetrics.getStringBounds(text, GraphicsUtil.safelyGetGraphics(checkBox))
|
||||
val x = checkBox.width - bounds.width - checkBox.insets.width
|
||||
bounds.setRect(x + bounds.x, bounds.y, bounds.width, bounds.height)
|
||||
val mousePosition = position.x - x
|
||||
|
||||
+9
-3
@@ -8,11 +8,17 @@ import com.intellij.openapi.wm.impl.AbstractToolbarCombo
|
||||
import com.intellij.openapi.wm.impl.ToolbarComboButton
|
||||
import com.intellij.ui.ClickListener
|
||||
import com.intellij.ui.hover.HoverListener
|
||||
import com.intellij.ui.paint.PaintUtil
|
||||
import com.intellij.util.ui.GraphicsUtil
|
||||
import com.intellij.util.ui.JBInsets
|
||||
import com.intellij.util.ui.JBUI
|
||||
import java.awt.*
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import java.awt.Color
|
||||
import java.awt.Component
|
||||
import java.awt.Dimension
|
||||
import java.awt.Graphics
|
||||
import java.awt.Graphics2D
|
||||
import java.awt.Rectangle
|
||||
import java.awt.RenderingHints
|
||||
import java.awt.event.ActionEvent
|
||||
import java.awt.event.ActionListener
|
||||
import java.awt.event.MouseEvent
|
||||
@@ -119,7 +125,7 @@ internal class ToolbarComboButtonUI: AbstractToolbarComboUI() {
|
||||
}
|
||||
val metrics = c.getFontMetrics(c.getFont())
|
||||
val text = getText(combo)
|
||||
result.width += PaintUtil.getStringWidth(text, c.graphics, metrics)
|
||||
result.width += UIUtil.computeStringWidth(c, metrics, text)
|
||||
result.height = max(result.height, metrics.height)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -10,7 +10,6 @@ import com.intellij.openapi.wm.impl.TextCutStrategy;
|
||||
import com.intellij.openapi.wm.impl.ToolbarComboWidget;
|
||||
import com.intellij.ui.ClickListener;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.paint.PaintUtil;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.JBEmptyBorder;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
@@ -310,7 +309,7 @@ public final class ToolbarComboWidgetUI extends ComponentUI implements PropertyC
|
||||
if (!StringUtil.isEmpty(combo.getText())) {
|
||||
FontMetrics metrics = c.getFontMetrics(c.getFont());
|
||||
String text = getText(combo);
|
||||
res.width += PaintUtil.getStringWidth(text, c.getGraphics(), metrics);
|
||||
res.width += UIUtil.computeStringWidth(c, metrics, text);
|
||||
res.height = Math.max(res.height, metrics.getHeight());
|
||||
skipNextGap = false;
|
||||
}
|
||||
|
||||
+8
-3
@@ -24,8 +24,13 @@ import org.jetbrains.annotations.ApiStatus.Obsolete;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import javax.swing.JRootPane;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.Component;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
@@ -144,7 +149,7 @@ public final class PotemkinOverlayProgress extends AbstractProgressIndicatorBase
|
||||
String text = KeymapUtil.getShortcutText(CANCEL_SHORTCUT) + " to cancel, " +
|
||||
KeymapUtil.getShortcutText(DUMP_SHORTCUT) + " to dump threads (" +
|
||||
NlsMessages.formatDurationApproximateNarrow(roundedDuration) + ")";
|
||||
Graphics graphics = rootPane.getGraphics();
|
||||
Graphics graphics = GraphicsUtil.safelyGetGraphics(rootPane);
|
||||
GraphicsUtil.setupAAPainting(graphics);
|
||||
Rectangle viewR = rootPane.getBounds(), iconR = new Rectangle(), textR = new Rectangle();
|
||||
FontMetrics fm = graphics.getFontMetrics();
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.ui.paint.LinePainter2D;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.MathUtil;
|
||||
import com.intellij.util.SingleEdtTaskScheduler;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
@@ -156,7 +157,8 @@ public final class FloatingDecorator extends JDialog implements FloatingDecorato
|
||||
}
|
||||
|
||||
// this prevents annoying flick
|
||||
paint(getGraphics());
|
||||
// todo: do we really need this?
|
||||
paint(GraphicsUtil.safelyGetGraphics(this));
|
||||
|
||||
ApplicationManager.getApplication().getMessageBus().connect(disposable).subscribe(UISettingsListener.TOPIC, uiSettingsListener);
|
||||
}
|
||||
|
||||
+7
-2
@@ -36,11 +36,16 @@ package com.intellij.ui.layout.migLayout.patched
|
||||
import com.intellij.ide.ui.laf.VisualPaddingsProvider
|
||||
import com.intellij.openapi.ui.ComponentWithBrowseButton
|
||||
import com.intellij.util.ThreeState
|
||||
import com.intellij.util.ui.GraphicsUtil
|
||||
import net.miginfocom.layout.ComponentWrapper
|
||||
import net.miginfocom.layout.ContainerWrapper
|
||||
import net.miginfocom.layout.LayoutUtil
|
||||
import net.miginfocom.layout.PlatformDefaults
|
||||
import java.awt.*
|
||||
import java.awt.BasicStroke
|
||||
import java.awt.Color
|
||||
import java.awt.Graphics2D
|
||||
import java.awt.HeadlessException
|
||||
import java.awt.Point
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JEditorPane
|
||||
import javax.swing.JTextArea
|
||||
@@ -233,7 +238,7 @@ internal open class SwingComponentWrapper(private val c: JComponent) : Component
|
||||
return
|
||||
}
|
||||
|
||||
val g = c.graphics as? Graphics2D ?: return
|
||||
val g = GraphicsUtil.safelyGetGraphics(c) as? Graphics2D ?: return
|
||||
|
||||
g.paint = DB_COMP_OUTLINE
|
||||
g.stroke = BasicStroke(1f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10f, floatArrayOf(2f, 4f), 0f)
|
||||
|
||||
+2
-1
@@ -35,6 +35,7 @@ package com.intellij.ui.layout.migLayout.patched
|
||||
* Date: 2006-sep-08
|
||||
*/
|
||||
|
||||
import com.intellij.util.ui.GraphicsUtil
|
||||
import net.miginfocom.layout.ComponentWrapper
|
||||
import net.miginfocom.layout.ContainerWrapper
|
||||
import java.awt.BasicStroke
|
||||
@@ -68,7 +69,7 @@ internal class SwingContainerWrapper(c: JComponent) : SwingComponentWrapper(c),
|
||||
return
|
||||
}
|
||||
|
||||
val g = c.graphics as? Graphics2D ?: return
|
||||
val g = GraphicsUtil.safelyGetGraphics(c) as? Graphics2D ?: return
|
||||
|
||||
g.stroke = BasicStroke(1f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10f, floatArrayOf(2f, 3f), 0f)
|
||||
g.paint = DB_CELL_OUTLINE
|
||||
|
||||
+9
-3
@@ -17,13 +17,19 @@ import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.wm.ToolWindow
|
||||
import com.intellij.platform.recentFiles.shared.SwitcherRpcDto
|
||||
import com.intellij.ui.*
|
||||
import com.intellij.ui.BackgroundSupplier
|
||||
import com.intellij.ui.CellRendererPanel
|
||||
import com.intellij.ui.ExperimentalUI
|
||||
import com.intellij.ui.JBColor
|
||||
import com.intellij.ui.SimpleColoredComponent
|
||||
import com.intellij.ui.SimpleTextAttributes
|
||||
import com.intellij.ui.paint.PaintUtil
|
||||
import com.intellij.ui.render.RenderingUtil
|
||||
import com.intellij.ui.speedSearch.SpeedSearchUtil.applySpeedSearchHighlighting
|
||||
import com.intellij.util.IconUtil
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import org.jetbrains.annotations.ApiStatus.Internal
|
||||
import java.awt.BorderLayout
|
||||
import java.awt.Color
|
||||
@@ -174,8 +180,8 @@ class SwitcherVirtualFile : SwitcherListItem, BackgroundSupplier {
|
||||
component.append(mainText, SimpleTextAttributes(style, foreground, effectColor))
|
||||
component.font?.let {
|
||||
val fontMetrics = component.getFontMetrics(it)
|
||||
val mainTextWidth = PaintUtil.getStringWidth(mainText, component.graphics, fontMetrics)
|
||||
val shortcutTextWidth = shortcutText?.let { shortcut -> PaintUtil.getStringWidth(shortcut, component.graphics, fontMetrics) } ?: 0
|
||||
val mainTextWidth = UIUtil.computeStringWidth(component, fontMetrics, mainText)
|
||||
val shortcutTextWidth = shortcutText?.let { shortcut -> UIUtil.computeStringWidth(component, fontMetrics, shortcut) } ?: 0
|
||||
val iconWidth = component.icon?.iconWidth ?: AllIcons.FileTypes.Text.iconWidth
|
||||
val width = component.width - mainTextWidth - shortcutTextWidth - component.iconTextGap - iconWidth -
|
||||
component.insets.left - component.insets.right
|
||||
|
||||
@@ -13,7 +13,8 @@ import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JRootPane;
|
||||
import java.awt.*;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Point2D;
|
||||
@@ -424,11 +425,14 @@ public final class PaintUtil {
|
||||
* @param g The Graphics context used for rendering the text.
|
||||
* @param metrics The FontMetrics object associated with the font used for rendering the text.
|
||||
* @return The width of the text string in pixels when drawn using the specified Graphics context and FontMetrics.
|
||||
|
||||
* @deprecated Prefer using {@link UIUtil#computeStringWidth(JComponent, String)} instead
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public static int getStringWidth(String text, Graphics g, FontMetrics metrics) {
|
||||
return metrics.getStringBounds(text, g).getBounds().width;
|
||||
}
|
||||
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Contract("!null, _, _ -> !null")
|
||||
public static @Nullable String cutContainerText(@Nullable String text, int maxWidth, @NotNull JComponent component) {
|
||||
|
||||
@@ -42,7 +42,10 @@ import org.jetbrains.idea.svn.info.Info;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.TableCellRenderer;
|
||||
import java.awt.*;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
@@ -750,16 +753,15 @@ public class SvnHistoryProvider implements VcsHistoryProvider, VcsCacheableHisto
|
||||
|
||||
private @Nls @NotNull String cutString(@Nls @NotNull String text, double maxWidth) {
|
||||
FontMetrics m = getFontMetrics(getFont());
|
||||
Graphics g = getGraphics();
|
||||
String suffix = ELLIPSIS;
|
||||
|
||||
if (m.getStringBounds(text, g).getWidth() < maxWidth) return text;
|
||||
if (UIUtil.computeStringWidth(this, m, text) < maxWidth) return text;
|
||||
|
||||
double suffixWidth = m.getStringBounds(suffix, g).getWidth();
|
||||
double suffixWidth = UIUtil.computeStringWidth(this, m, suffix);
|
||||
if (suffixWidth >= maxWidth) return suffix;
|
||||
|
||||
for (int i = 1; i < text.length(); i++) {
|
||||
if ((m.getStringBounds(text, 0, i, g).getWidth() + suffixWidth) >= maxWidth) {
|
||||
if ((UIUtil.computeStringWidth(this, m, text) + suffixWidth) >= maxWidth) {
|
||||
return text.substring(0, i - 1) + suffix;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user