Java programmering av AUTOflyer grensesnitt

Modifisering av AUTOflyer grafikk vha. Java programmering.

Denne seksjonen omhandler bruk av Java programmering for å endre det grafiske grensesnittet ut over hva som er mulig med endring av USER_CONFIG og bildeeditering.

Det forutsettes at brukeren har nødvendig kunnskap om Java programmering fra før. Det blir derfor ikke gitt noen mer detaljer beskrivelse av programmeringsspråket Java eller hvordan dette brukes.

For de som ønsker å lære seg mer om Java på egenhånd anbefales det å bruke Google. Søk på begrep som "java tutorial", "java graphics tutorial" eller lignende begrep. Da får man opp mange linker til gode opplæringssider, både fra Java-leverandøren Sun Microsystems, private aktører og annen Java-litteratur. Vi ønsker nye Java programmerere lykke til videre i en spennende verden.

Merk: Ikke skriv anførselstegnene når du søker på Google. Da begrenser du søket til den ordrette sammenhengen. Uten anførselstegn søker den etter sider som inneholder begrepene, uansett rekkefølge. Anførselstegnene som er brukt i forbindelse med søkebegrep på disse sidene er kun for å avgrense søkebegrepene fra resten av teksten. Ikke bruk dem i selve søket.


Laste ned JDK (Java Development Kit)

Last ned Sun Microsystem's Java Development Kit hvis du ikke har det fra før, eventuelt oppgrader den eksisterende versjonen hvis den ikke er helt ny. Det skjer stadig oppgraderinger så det anbefales å ta en sjekk en gang i mellom.

Java JDK finner du på http://java.sun.com/javase/downloads/index.jsp


Last ned en god teksteditor

For å jobbe med Java programmering trenger man en god teksteditor beregnet på programutvikling, dvs. en editor som kan vise koden på en ryddig og oversiktlig måte, gjerne med fargekoding av kommentarer, variabler, tekst osv. Editoren bør også ha innebygd kobling mot Java kompilator slik at man får automatisk koblingen mellom kode, kompilering og fra feilmelding tilbake til koden igjen.

Vi har god erfaring med TextPad og baserer videre eksempler og forklaringer på denne editoren.

TextPad finner du på http://www.textpad.com/

Du trenger i utgangspunktet ikke å gjøre noen spesielle innstillinger i TextPad for å få dette til å fungere.


Custom fil-struktur

Alt som har med Java programmering å gjøre er samlet i mappene som begynner med "Custom..". Dette gjelder følgende mapper:

CustomSoftware

Dette er mappen for alle de ferdigkompilerte klassefilene. Her finner man også en bat-fil med navn "MakeJar.bat". Når man har endret en klasse og kompilert denne uten feil så kjører man "MakeJar". Alle klassefilene pakkes da sammen til en jar-fil (arkivfil) som AUTOflyer programmet trenger for å kunne kjøre custom-utvidelsene. Mappa inneholder også en bat fil med navn "MakeDoc.bat". Denne genererer dokumentasjon over alle klassene i mappa og legger dette i "CustomManual" mappa.

Merk: Bat-filene har full path til mappen for "javac", "javadoc" osv. Denne path'en kan være forskjellig fra installasjon til installasjon avhengig av lokalisering på maskin og programversjon.

De aktuelle kommandoene ser typisk ut som vist under. Her det den understrekede delen som må justeres ut fra aktuell plassering på egen maskin. Lokaliser mappene vha. Windows utforsker og bruk teksteditor (TextPad eller lignende) til å editere innholdet til riktig path.

Eksempel: "c:\Programfiler\Java\jdk1.6.0_18\bin\javac"

CustomTemplate

Her finnes kildekoden til de aktuelle Java-filene "*.java". Når man skal lage sin egen versjon av en custom-klasse så kopierer man bare den aktuelle java-filen ned i "CustomSoftware" mappa og gjør all editering og kompilering der. Det bør ikke gjøres endringer på filene i "CustomTemplate" mappa da de er maler og ingenting annet. Ved programmoppdateringer vil dessuten filene i "CustomTemplate" bli overskrevet av nye Java kildefiler. Modifiserte filer vil da bli overskrevet og man risikerer å miste data, med mindre man har endret filnavnet.

Uansett er det fornuftig å beholde denne mappa uendret.

CustomManuals

Når man kjører "MakeDoc" fra "CustomSoftware" mappa så vil all dokumentasjon bli lagt i denne mappa. Kun dokumentasjon bør ligge her. Ved oppgradering av AUTOflyer vil innholdet i denne mappa kunne bli overskrevet av nye filer hvis man opererer med samme filnavn som de eksisterende. I så fall bør man kjøre "MakeDoc" på nytt etter oppgradering for å sikre at det er dokumentasjon på egne filer man har her.

CustomImages

Denne mappen er beregnet på lagring av bilder brukt i "custom" delen. I praksis er dette en mappe lik "UserImages", dvs. egendefinerte bilder, men det er ryddigere å ha alle bilder som er spesiallaget for "custom" delen i denne mappen. Instrumentene i "custom" delen er i utgangspunktet satt opp slik at den først sjekker i "CustomImages" etter filen, deretter i "InstrumentImages". Man trenger derfor kun å legge bildefiler i "CustomImages" hvis disse er forskjellige fra originalene som ligger i "InstrumentImages".


Aktivering av "custom" program

All grafikk i "custom" delen må aktiveres fra AUTOflyer. Gå inn på CONFIG -> USER_PREF og aktiver knappen "Activate Custom Handler" hvis denne er avslått. Man vil da se at layout skifter fra den originale og til en customisert variant.

Hvis det er skjult feil i koden på "custom" programmet så kan dette slå ut som en "runtime" feil under kjøring. Det vil da komme opp et feilmeldingsvindu som forteller at det er oppdaget en feil som må rettes. Det vil også bli vist en enkel "stack trace" som beskriver feilen og hvor i koden den oppstår. Noter dette og bruk denne informasjonen til å finne feilen. Når man klikker OK for dette så vil AUTOflyer automatisk slå av "Activate Custom Handler" funksjonen og gå tilbake til standard oppsett. Brukeren må selv manuelt aktivere funksjonen igjen når feilen er rettet.


Programstruktur på Custom delen

All kommunikasjon fra AUTOflyer går gjennom klassen "CustomHandler". Den klassen kaller igjen klassene som styrer de enkelte gruppene slik som "CustomMainPanel", "CustomForceRatePanel" og "CustomClockBatteryPanel". Disse klassene kaller igjen de enkelte instrumentklassene.

I tillegg er det enkelte "support" klasser for feilrapportering, lasting av bilder og lignende.


Hvordan starte Java customisering

Vi anbefaler at man starter med å aktivere "custom" handler og se hvordan denne oppfører seg i utgangspunktet. Deretter stopper man AUTOflyer og lager seg en kopi av en instrumentklasse, for eksempel "CustomAltitudeIndicator". Kopier den aktuelle "CustomAltitudeIndicator.java" til "CustomSoftware" mappen. Start teksteditoren og hent opp java filen fra "CustomSoftware" mappen.

Gå inn på linje 37. Der vil du finne programlinjen :

"private final Color textBackground = new Color (0.00f,0.20f,0.00f);"

Denne linjen definerer bakgrunnsfargen på det lille tekstefeltet som viser "ALTITUDE OFFSET".

Bruk Google og søk på "java Color" (igjen uten utropstegn). Man får da opp en link til Sun sin dokumentasjon av Color klassen på skjermen :

"Color (Java 2 Platform SE v1.4.2)"

Klikk på denne linken og du kommer videre til dokumentasjonen. Her søker du nedover til du finner tabellen over "Constructor Summary". På andre plass i tabellen finner du den varianten som samstemmer med constructor'en brukt i programmet, dvs. en variant som skal ha 3 float verdier som input, (float r, float g og float b). Dette er fargen definert med mengden rød, grønn og blå. Verdien som benyttes er fra 0.0f (sort) til 1.0f (full farge). Sett for eksempel første verdi til 0.50f, dvs. halv intensitet på rød. Sammen med det grønne vil dette gi en litt "off-rød" farge.

Lagre filen og kompiler. På TextPad gjøres kompilering ved å velge "Tools->ExternalTools->CompileJava". Denne bør nå kompileres uten feil. Hvis ikke, rette feilen og førsøk igjen.

Når kompileringen går uten feil går man til mappa vha. Windows utforsker og dobbeltklikker på "MakeJar". Hvis man har satt opp path riktig (beskrevet tidligere) bør det nå genereres en ny "custom.jar" fil.

Start så AUTOflyer for å verifiser at den nå viser en custom grafikk med ny bakgrunnsfarge i tekstfeltet på "AltitudeIndicator".

Gratulerer, du har nå foretatt din første customisering av AUTOflyer layout vha. Java programmering!

Fortsett med nye små endringer og se hva resultat dette gir. Når du møter Java klasser som du ikke skjønner betydningen av, søk på "Java + klassenavn" på Google og les dokumentasjonen som da fremkommer.


Denne siden vil bli utvidet med mer informasjon etter hvert. Les også spørsmål og svar som vil bli lagt ut under SPØRSMÅL OG SVAR (FAQ) etter hvert.

HKK/11.03.2010