@Override public void paint(Graphics2D g, int x, int y, int width, int height, Float value) { RegionPainter<Float> painter = myFallback; if (myPainter != null) { try { myPainter.paint(g, x, y, width, height, value); return; } catch (Throwable exception) { // do not try to use myPainter again on other systems if (!SystemInfo.isWindows) myPainter = null; } } if (painter != null) { painter.paint(g, x, y, width, height, value); } }
@Override protected JScrollBar createScrollBar() { JBScrollBar bar = new JBScrollBar(); bar.putClientProperty(JBScrollPane.Alignment.class, JBScrollPane.Alignment.RIGHT); bar.putClientProperty(JBScrollBar.TRACK, new RegionPainter<Object>() { @Override public void paint(Graphics2D g, int x, int y, int width, int height, Object object) { SubstringFinder.FindResult result = myTerminalPanel.getFindResult(); if (result != null) { int modelHeight = bar.getModel().getMaximum() - bar.getModel().getMinimum(); int anchorHeight = Math.max(2, height / modelHeight); Color color = mySettingsProvider.getTerminalColorPalette() .getColor(mySettingsProvider.getFoundPatternColor().getBackground()); g.setColor(color); for (SubstringFinder.FindResult.FindItem r : result.getItems()) { int where = height * r.getStart().y / modelHeight; g.fillRect(x, y + where, width, anchorHeight); } } } }); return bar; }
@Override protected void paintTrack(Graphics g, JComponent c, Rectangle bounds) { g.setColor(getTrackBackground()); g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height); g.setColor(getTrackBorderColor()); if (isVertical()) { g.drawLine(bounds.x, bounds.y, bounds.x, bounds.y + bounds.height); } else { g.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y); } RegionPainter<Object> painter = UIUtil.getClientProperty(c, ScrollBarUIConstants.TRACK); if (painter != null) { painter.paint((Graphics2D)g, bounds.x, bounds.y, bounds.width, bounds.height, null); } }
@Override protected void paintTrack(Graphics g, JComponent c, Rectangle bounds) { g.setColor(new JBColor(LightColors.SLIGHTLY_GRAY, UIUtil.getListBackground())); g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height); RegionPainter<Object> painter = UIUtil.getClientProperty(c, ScrollBarUIConstants.TRACK); if (painter != null) { painter.paint((Graphics2D)g, bounds.x, bounds.y, bounds.width, bounds.height, null); } }
private Protected(RegionPainter<Float> painter, RegionPainter<Float> fallback) { myPainter = painter; myFallback = fallback; }