Eksempel - Field Assist
Innledning
Field Assist-eksempelet viser hvordan du bruker støtten i org.eclipse.jface.fieldassist
til å gi oppgaveassistanse i tekstfelt.
En eksempeldialogboks viser hvordan du konfigurerer feltdekorasjoner til å vise obligatoriske felt, felt med feil og advarsler og felt
som gir innholdshjelp. Eksempelet inneholder også en preferanseside som gjør det mulig for deg å konfigurere dekorasjonene og innholdshjelpstøtten.
Kjøre eksempelet
Når plugin-modulen installeres, skal du kunne se en
Field Assist-handling på handlingslinjen.
Velg menypunktet "Open Field Assist Dialog..."
Dermed åpnes dialogboksen Field Assist.
Dialogboksen kan konfigureres med eksempelpreferanser.
Definere Field Assist-preferanser
Det er to preferansesider der du kan definere virkemåten til dialogboksen.
På siden Field Assist Example Preferences kan du konfigurere hvordan dialogboksen annoterer felt med feil og advarsler,
obligatoriske felt og innholdshjelp.
En kombinasjon av farger og dekorasjoner kan brukes til å annotere feltene.
Denne preferansesiden er ment å vise hva som er mulig når du konfigurerer dekorasjoner.
Det er beregnet på programmerere som prøver ut felthjelp (Field Assist), snarere enn
å fungere som eksempel på en god preferanseside for å la sluttbrukere kontrollere annotasjonene.
På siden Content Assist Preferences kan du konfigurere hvordan innholdshjelpen skal installeres, i dialogboksens tekstfelt.
De fleste alternativene i APIet Field Assist (ContentProposalAdapter) kan konfigureres på denne siden.
Merk at det er mulig å konfigurere innholdshjelpen på uønskede måter.
For eksempel er det ikke ønskelig å definere innholdshjelpen til å selvaktiveres på alle tegn med en lang forsinkelse.
Det kan være forvirrende å bruke kumulativ forslagsfiltrering når filternøklene ikke spres tilbake til kontrollen.
Formålet med å eksponere APIet på preferansesiden er å gjøre det mulig for felthjelpprogrammereren å prøve alle
mulige kombinasjoner.
Det er ikke meningen av noen av disse preferansene skal eksponeres for sluttbrukeren, men at utvikleren skal velge
den beste kombinasjonen av disse verdiene og sørge for en viss stil på innholdshjelpen.
Bruke dialogboksen
Eksempeldialogboksen viser flere forskjellige typer felt:
- Feltet User name konfigureres som et obligatorisk felt med innholdshjelp. Dette feltet anses å ha feil
dersom et ikke-alfabetisk tegn skrives i feltet.
Det anses å være i advarselsmodus når navnet "bob" skrives i feltet.
- Felt Combo user name konfigureres på en liknende måte, men bruker en kombinasjonsboks
i stedet for et tekstfelt.
- Feltet Age viser bruken av en spinner-widget med dekorasjoner.
Det konfigureres som et obligatorisk felt, men har ingen feiltilstand.
Det anses å være i advarselsmodus når en alder over 65 er definert.
- Feltet Password bruker ikke dekorasjoner eller innholdshjelp.
Det er bare med for å vise hvordan udekorerte felt kan justeres til dekorerte felt.
Eksempel på kildekode
Eksempeldialogboksen er ikke spesielt kompleks, men den er ment å vise hvordan felthjelp programmeres.
Her er noen merknader om kildekoden:
- Udekorerte felt kan ordnes justert i forhold til dekorerte felt ved hjelp av protokollen
FieldDecorationRegistry.getMaximumDecorationWidth()
.
- Plugin-eksempelet registrerer standard feltdekoratører for å vise tilgjengeligheten av innholdshjelp,
og merker et felt etter behov, eller merker et felt som har feil eller advarsel.
I tilfeller der en standard dekoratørbeskrivelse brukes i alle felt, brukes de faktiske dekorasjonene fra registeret.
I tilfeller der feltet har en unik beskrivelse av en feil eller advarsel, administreres en unik dekorasjon som inneholder
teksten, av feltet.
- SmartField og dets subklasser brukes for å besørge feltspesifikk validering, feil- og advarselsmeldinger og innholdshenting for
de forskjellige feltene i dialogboksen.
Vi forventer at applikasjonene sørger for liknende rammer (f.eks. databinding) for å oppnå dette målet.
SmartField er ment å vise en enkel teknikk for å validere forskjellige felt i en dialogboks.
Det anses ikke som et eksempel på en semantisk feltdefinisjonsramme.