package com.yoursway.swt.scrollbar;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
public class CoolStyledTextScrollable extends Composite {
private final StyledText styledText;
private CoolScrollBar vScrollBar;
private CoolScrollBarStyledTextBinding binding;
public CoolStyledTextScrollable(Composite parent, StyledText styledText) {
super(parent, SWT.NONE);
if (styledText == null)
throw new IllegalArgumentException("styledText is null");
styledText.setParent(this);
this.styledText = styledText;
setupControls();
}
private void setupControls() {
styledText.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL)
.create());
vScrollBar = new CoolScrollBar(this, SWT.NONE, true);
vScrollBar.setLayoutData(GridDataFactory.fillDefaults().grab(false, true).create());
GridLayoutFactory.fillDefaults().numColumns(2).spacing(1, 0).generateLayout(this);
this.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
binding = new CoolScrollBarStyledTextBinding(styledText, vScrollBar, this);
}
public CoolStyledTextScrollable(Composite parent, int style) {
super(parent, SWT.NONE);
this.styledText = new StyledText(this, style);
setupControls();
}
public StyledText styledText() {
return styledText;
}
public void updateScrollbarPosition() {
binding.updateScrollbarPosition();
}
}