下面列出了怎么用org.eclipse.jface.text.source.CompositeRuler的API类实例代码及写法,或者点击链接到github查看源代码。
private void refreshLineNumberColumn(){
Display.getDefault().asyncExec(() ->{
IVerticalRuler ruler= getVerticalRuler();
// The following sequence mimics what happens during the setInput method.
// For now, this is the only known way to get the LineNumberColumn to update its visible status.
// called at the end of org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(Composite)
if (ruler instanceof CompositeRuler) {
updateContributedRulerColumns((CompositeRuler) ruler);
}
// called at the end of AbstractDecoratedTextEditor.doSetInput(IEditorInput)
RulerColumnDescriptor lineNumberColumnDescriptor= RulerColumnRegistry.getDefault().getColumnDescriptor(LineNumberColumn.ID);
if (lineNumberColumnDescriptor != null) {
IColumnSupport columnSupport= (IColumnSupport)getAdapter(IColumnSupport.class);
columnSupport.setColumnVisible(lineNumberColumnDescriptor, isLineNumberRulerVisible() || isPrefQuickDiffAlwaysOn());
}
// force redraw of the ruler`s content.
IVerticalRuler verticalRuler = getVerticalRuler();
if (verticalRuler != null) {
verticalRuler.update();
}
});
}
@Override
protected void handlePreferenceStoreChanged(final PropertyChangeEvent event) {
final LineNumberColumn c;
super.handlePreferenceStoreChanged(event);
if (event.getProperty().equals(PREFERENCE_COLOR_BACKGROUND)) {
// this.fSourceViewerDecorationSupport.updateOverviewDecorations();
this.getVerticalRuler().getControl()
.setBackground(GamaColors.get(GamaPreferences.Modeling.EDITOR_BACKGROUND_COLOR.getValue()).color());
final Iterator e = ((CompositeRuler) getVerticalRuler()).getDecoratorIterator();
while (e.hasNext()) {
final IVerticalRulerColumn column = (IVerticalRulerColumn) e.next();
column.getControl().setBackground(
GamaColors.get(GamaPreferences.Modeling.EDITOR_BACKGROUND_COLOR.getValue()).color());
column.redraw();
}
}
}
public void dispose() {
final ProvidedGroovyRepositoryStore store = RepositoryManager.getInstance()
.getRepositoryStore(ProvidedGroovyRepositoryStore.class);
GroovyFileStore fStore = store.getChild(GroovyFileStore.EXPRESSION_SCRIPT_NAME, true);
if (fStore != null) {
fStore.delete();
}
final IColumnSupport columSupport = (IColumnSupport) editor.getAdapter(IColumnSupport.class);
if (columSupport != null) {
columSupport.dispose();
}
final CompositeRuler verticalRuler = (CompositeRuler) editor.getAdapter(IVerticalRulerInfo.class);
if (verticalRuler != null && verticalRuler.getControl() != null) {
verticalRuler.getControl().dispose();
}
editor.dispose();
}
@Override
public void createPartControl(Composite composite) {
SourceViewer sourceViewer = (SourceViewer) createTypeScriptSourceViewer(composite, new CompositeRuler(),
null, false, fTextOrientation | SWT.H_SCROLL | SWT.V_SCROLL, createChainedPreferenceStore(null));
setSourceViewer(this, sourceViewer);
createNavigationActions();
getSelectionProvider().addSelectionChangedListener(getSelectionChangedListener());
}
@SuppressWarnings("unchecked")
private void overrideRulerColors()
{
IThemeableEditor editor = this.fEditor.get();
// default to bg color of surrounding composite
Color bg = null;
// Use editor background color if we can
if (editor != null)
{
ISourceViewer sv = editor.getISourceViewer();
if (sv != null)
{
StyledText text = sv.getTextWidget();
if (text != null)
{
bg = text.getBackground();
// copy the color because for some reason it gets disposed
bg = ThemePlugin.getDefault().getColorManager().getColor(bg.getRGB());
}
}
// force the colors for all the ruler columns (specifically so we force the folding bg to match).
CompositeRuler ruler = (CompositeRuler) editor.getIVerticalRuler();
Iterator<IVerticalRulerColumn> iter = ruler.getDecoratorIterator();
while (iter.hasNext())
{
IVerticalRulerColumn column = iter.next();
column.getControl().setBackground(bg);
}
}
if (fLineColumn != null)
{
fLineColumn.setBackground(bg);
}
}
@Override
protected IVerticalRulerColumn createAnnotationRulerColumn(CompositeRuler ruler) {
if (!getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER))
return super.createAnnotationRulerColumn(ruler);
AnnotationRulerColumn column= new AnnotationRulerColumn(VERTICAL_RULER_WIDTH, getAnnotationAccess());
column.setHover(new JavaExpandHover(ruler, getAnnotationAccess(), new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
// for now: just invoke ruler double click action
triggerAction(ITextEditorActionConstants.RULER_DOUBLE_CLICK);
}
private void triggerAction(String actionID) {
IAction action= getAction(actionID);
if (action != null) {
if (action instanceof IUpdate)
((IUpdate) action).update();
// hack to propagate line change
if (action instanceof ISelectionListener) {
((ISelectionListener)action).selectionChanged(null, null);
}
if (action.isEnabled())
action.run();
}
}
}));
return column;
}
@Override
public void createPartControl(Composite composite) {
SourceViewer sourceViewer= (SourceViewer)createJavaSourceViewer(composite, new CompositeRuler(), null, false, fTextOrientation | SWT.H_SCROLL | SWT.V_SCROLL, createChainedPreferenceStore(null));
setSourceViewer(this, sourceViewer);
createNavigationActions();
getSelectionProvider().addSelectionChangedListener(getSelectionChangedListener());
}
/**
* Creates a new line number ruler column that is appropriately initialized.
*
* @return the created line number column
*/
private CompositeRuler createCompositeRuler( )
{
CompositeRuler ruler = new CompositeRuler( );
ruler.setModel( new AnnotationModel( ) );
return ruler;
}
/**
* Creates the vertical ruler to be used by this editor.
*
* @return the vertical ruler
*/
protected IVerticalRuler createVerticalRuler( )
{
CompositeRuler ruler = createCompositeRuler( );
ruler.addDecorator( 0, createLineNumberRulerColumn( ) );
return ruler;
}
/**
* Creates a new line number ruler column that is appropriately initialized.
*
* @return the created line number column
*/
private CompositeRuler createCompositeRuler( )
{
CompositeRuler ruler = new CompositeRuler( );
ruler.setModel( new AnnotationModel( ) );
return ruler;
}
/**
* Creates the vertical ruler to be used by this editor.
*
* @return the vertical ruler
*/
private IVerticalRuler createVerticalRuler( )
{
IVerticalRuler ruler = createCompositeRuler( );
if ( ruler instanceof CompositeRuler )
{
CompositeRuler compositeRuler = (CompositeRuler) ruler;
compositeRuler.addDecorator( 0, createLineNumberRulerColumn( ) );
}
return ruler;
}
@Override
public Control createControl(CompositeRuler parentRuler, Composite parentControl) {
Assert.isTrue(fDelegate != null);
return fDelegate.createControl(parentRuler, parentControl);
}
public Control createControl(CompositeRuler parentRuler, Composite parentControl) {
Control control= super.createControl(parentRuler, parentControl);
fRevisionPainter.setParentRuler(parentRuler);
fDiffPainter.setParentRuler(parentRuler);
return control;
}
public JavaExpandHover(CompositeRuler ruler, IAnnotationAccess access, IDoubleClickListener doubleClickListener) {
super(ruler, access, doubleClickListener);
}
@Override
protected SourceViewer createSourceViewer(Composite parent, int textOrientation) {
int styles = textOrientation | SWT.H_SCROLL | SWT.V_SCROLL;
return new LangSourceViewer(parent, new CompositeRuler(), styles);
}
/**
* Creates a new hover instance.
*
* @param ruler
* @param access
* @param doubleClickListener
*/
public AnnotationExpandHover(CompositeRuler ruler, IAnnotationAccess access, IDoubleClickListener doubleClickListener) {
fCompositeRuler= ruler;
fAnnotationAccess= access;
fDblClickListener= doubleClickListener;
}