Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Маркеры для подсветки текста в Eclipse


Автор: Hiboplut 20.4.2012, 21:18
Здравствуйте.

Пишу плагин для эклипса, стоит задача динамически подсвечивать текст в TextEditor"е. После довольно длительной про"google"ки нашел, что можно подсвечивать текст с помощью маркеров, но так и не смог понять каким образом подсвечивать и как, собственно, создавать эти маркеры. Если кто-то сталкивался и сможет рассказать, буду очень благодарен.

Автор: Hiboplut 25.4.2012, 13:03
Часть проблемы решена. Нужно создать три экстеншен поинта, для маркера, для аннотации и еще один для их связки.

Для маркера:
Код

<extension point="org.eclipse.core.resources.markers"  
             id="айди маркера"  
            name="Shine the Light">  
            <super type="org.eclipse.core.resources.textmarker" /> 
             
   </extension>


Для аннотации:
Код

<extension point="org.eclipse.ui.editors.markerAnnotationSpecification"
        id="highAnnotation" name="highAnnotation">
    <specification annotationType="highAnnotation"
            label="Function Highlighting"
            icon="icons/sample.gif"
            overviewRulerPreferenceKey="overview"
            overviewRulerPreferenceValue="true"
            contributesToHeader="false"
            highlightPreferenceKey="highlight"
                  highlightPreferenceValue="true"
                  includeOnPreferencePage="true"
            colorPreferenceKey="color"
            colorPreferenceValue="255,255,0"
            textPreferenceKey="text"
            textPreferenceValue="true"
            presentationLayer="0"
            verticalRulerPreferenceKey="ruler"
            verticalRulerPreferenceValue="true"
            textStylePreferenceKey="clstyle"
            textStylePreferenceValue="BOX">
            </specification>
    </extension>


Для связки:
Код

<extension point="org.eclipse.ui.editors.annotationTypes">
                <type super="org.eclipse.ui.workbench.texteditor.info"
                      name="highAnnotation" 
                      markerType="айди маркера"/> 
    </extension>


Автор: Hiboplut 26.4.2012, 20:20
Проблема решена. Создавать маркер следует в классе текст эдитора. Для отображения маркера нужно, чтобы все атрибуты были заполнены, то есть, если у вас текстовый маркер, то должны быть заполнены атрибуты стартовой и конечной позиции.


Код

public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {
         super.init(site, input);
         IResource resource = (IResource) getEditorInput().getAdapter(IResource.class);

        try {
                IMarker marker = resource.createMarker("айди маркера");
                marker.setAttribute(IMarker.CHAR_START, 0);
                marker.setAttribute(IMarker.CHAR_END, 44);
            
        } catch (CoreException x) {
            x.printStackTrace();
        }
    }
        
    public ISourceViewer getViewer(){
        return super.getSourceViewer();
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)