Lähdekoodin katseluohjelman kokoonpanon määritys

Tähän mennessä SourceViewer-luokkaa on tutkittu lähinnä lähdekoodin huomautusten hallinnan yhteydessä.

SourceViewer toimii myös tärkeänä keskittimenä määritettäessä muokkausohjelman kokoonpanoon lisättävissä olevaa toimintaa, kuten tekstin osoitusta ja syntaksin korostusta.   Näitä ominaisuuksia varten muokkausohjelmassa on SourceViewerConfiguration -luokka, jota käytetään määrittämään SourceViewer-luokan kokoonpano silloin, kun kyseistä luokkaa luodaan. Java-esimerkkimuokkausohjelman tarvitsee ainoastaan ottaa käyttöön sen tarpeisiin sopiva SourceViewerConfiguration . Seuraavassa koodikatkelmassa näytetään, kuinka JavaTextEditor luo kokoonpanonsa.

protected void initializeEditor() {
	super.initializeEditor();
	setSourceViewerConfiguration(new JavaSourceViewerConfiguration());
	...

Mitä JavaSourceViewerConfiguration sitten tekee? Suurimman osan toiminnastaan se perii SourceViewerConfiguration-luokalta, joka määrittää oletusstrategiat lisättävissä oleville muokkausohjelman toiminnoille, kuten automaattiselle sisennykselle, kumoamiselle, kaksoisnapsautukselle, tekstin koho-ohjeelle, syntaksin korostukselle ja muotoilulle. SourceViewerConfiguration -luokan julkisten metodien apuobjektit toteuttavat näitä toimintoja.

Jos luokan SourceViewerConfiguration määrittelemät oletustoiminnot eivät sovi käytettyyn muokkausohjelmaan, initializeEditor() täytyy ohittaa yllä esitetyn mukaisesti ja muokkausohjelmaan täytyy määrittää lähdekoodin katseluohjelman kokoonpano.  Kokoonpano voi ohittaa SourceViewerConfiguration-luokan metodit, jotta voidaan ottaa käyttöön mukautetut apuobjektit. Ne toteuttavat näitä toimintoja muokkausohjelmassa. Seuraavassa koodikatkelmassa kuvataan kaksi tapaa, joilla JavaSourceViewerConfiguration-luokka tuo Java-esimerkkimuokkausohjelman käyttöön mukautettuja apuobjekteja:

public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
	return new JavaAnnotationHover();
}
	
public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) {
	return (IDocument.DEFAULT_CONTENT_TYPE.equals(contentType) ? new JavaAutoIndentStrategy() : new DefaultAutoIndentStrategy());
}

Ensimmäisessä metodissa mukautettu apuluokka toteuttaa huomautusten osoitustoiminnon. Toisessa metodissa asiakirjan oletussisältölajille tehdään kysely, jonka avulla määritetään, käytetäänkö mukautettua automaattisen sisennyksen strategiaa vai oletusstrategiaa.

SourceViewerConfiguration-luokan API-tiedoissa on kuvattu, miten korvaavilla metodeilla voi määrittää lähdekoodin katseluohjelman kokoonpanon.