diff --git a/plugins/terminal/lib/jediterm-pty-2.1.jar b/plugins/terminal/lib/jediterm-pty-2.1.jar index ed7656f50d29..bef8585e0e76 100644 Binary files a/plugins/terminal/lib/jediterm-pty-2.1.jar and b/plugins/terminal/lib/jediterm-pty-2.1.jar differ diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java index d39d2ec09b71..9f0fadd68752 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTabbedTerminalWidget.java @@ -31,7 +31,7 @@ import com.intellij.ui.tabs.impl.JBTabsImpl; import com.intellij.ui.tabs.impl.TabLabel; import com.intellij.util.ui.UIUtil; import com.jediterm.terminal.ui.*; -import com.jediterm.terminal.ui.settings.SettingsProvider; +import com.jediterm.terminal.ui.settings.TabbedSettingsProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.terminal.vfs.TerminalSessionVirtualFileImpl; @@ -116,7 +116,7 @@ public class JBTabbedTerminalWidget extends TabbedTerminalWidget implements Disp } @Override - protected JediTermWidget createInnerTerminalWidget(SettingsProvider settingsProvider) { + protected JediTermWidget createInnerTerminalWidget(TabbedSettingsProvider settingsProvider) { return new JBTerminalWidget(mySettingsProvider, myParent); } diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalWidget.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalWidget.java index 72f78aeb96e2..c6ab620cfac2 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalWidget.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalWidget.java @@ -4,7 +4,10 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer; import com.intellij.ui.SearchTextField; import com.intellij.ui.components.JBScrollBar; +import com.intellij.ui.components.JBScrollPane; import com.intellij.util.ui.JBSwingUtilities; +import com.intellij.util.ui.RegionPainter; +import com.jediterm.terminal.SubstringFinder; import com.jediterm.terminal.TerminalStarter; import com.jediterm.terminal.TtyConnector; import com.jediterm.terminal.model.JediTerminal; @@ -50,9 +53,29 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable{ @Override protected JScrollBar createScrollBar() { - return new JBScrollBar(); - } + JBScrollBar bar = new JBScrollBar(); + bar.putClientProperty(JBScrollPane.Alignment.class, JBScrollPane.Alignment.RIGHT); + bar.putClientProperty(JBScrollBar.TRACK, new RegionPainter() { + @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 public void dispose() { } @@ -81,6 +104,18 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable{ public void addKeyListener(KeyListener listener) { myTextField.addKeyboardListener(listener); } + + @Override + public void onResultUpdated(SubstringFinder.FindResult result) { + } + + @Override + public void nextFindResultItem(SubstringFinder.FindResult.FindItem item) { + } + + @Override + public void prevFindResultItem(SubstringFinder.FindResult.FindItem item) { + } }; } }