-Fix JBScrollbar usage in Terminal component

-Show terminal find results on scrollbar
-Several fixes for find in Jediterm jars
This commit is contained in:
Dmitry Trofimov
2016-05-24 19:23:49 +03:00
parent af023f5df4
commit a79e824560
3 changed files with 39 additions and 4 deletions
Binary file not shown.
@@ -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);
}
@@ -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<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
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) {
}
};
}
}