JFace-lisäosa on kehys, jonka avulla voit toteuttaa ohjattuja toimintoja, oletusasetussivuja ja valintaikkunoita. Näiden valintaikkunoiden toteutus noudattaa yleistä mallia. Sivun tai valintaikkunan sisältö määritetään toteuttamalla createContents-metodi, joka luo sivun sisältöä esittävät SWT-ohjausobjektit. Tämän metodin tulee myös lisätä kiinnostavien tapahtumien kuuntelutoiminnot. Sivu vastaa sen yhdistelmän luonnista ja palautuksesta, joka toimii sivun kaikkien ohjausobjektien pääobjektina. Seuraavassa katkelmassa näytetään tärkeimmät kohdat:
protected Control createContents(Composite parent) { ... //composite_textField << parent Composite composite_textField = createComposite(parent, 2); Label label_textField = createLabel(composite_textField, MessageUtil.getString("Text_Field")); textField = createTextField(composite_textField); pushButton_textField = createPushButton(composite_textField, MessageUtil.getString("Change")); //composite_tab << parent Composite composite_tab = createComposite(parent, 2); Label label1 = createLabel(composite_tab, MessageUtil.getString("Radio_Button_Options")); // tabForward(composite_tab); //radio button composite << tab composite Composite composite_radioButton = createComposite(composite_tab, 1); radioButton1 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_1")); radioButton2 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_2")); radioButton3 = createRadioButton(composite_radioButton, MessageUtil.getString("Radio_button_3")); //composite_tab2 << parent Composite composite_tab2 = createComposite(parent, 2); Label label2 = createLabel(composite_tab2, MessageUtil.getString("Check_Box_Options")); //$NON-NLS-1$ // tabForward(composite_tab2); //composite_checkBox << composite_tab2 Composite composite_checkBox = createComposite(composite_tab2, 1); checkBox1 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_1")); checkBox2 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_2")); checkBox3 = createCheckBox(composite_checkBox, MessageUtil.getString("Check_box_3")); initializeValues(); return new Composite(parent, SWT.NULL); }
Suurin osa tämän metodin koodista koskee ohjausobjektien luontia ja asettelua, joten sitä ei käsitellä tässä. Seuraavassa esitetään, miltä vastaava sivu näyttää:
Oletusasetussivun toinen päätarkoitus on reagoida performOk-sanomaan. Yleensä tämä metodi päivittää ja tallentaa käyttäjän oletusasetukset ja tarpeen vaatiessa päivittää muut lisäosaobjektit vastaamaan oletusasetusten muutoksia. Oletusasetukset palautetaan oletusarvojensa mukaisiksi performDefaults-metodin avulla, kun käyttäjä napsauttaa Palauta oletusarvot -painiketta.
Voit ohittaa performApply-metodin, jos sinulla on lisää käsiteltävää, kun käyttäjä valitsee Käytä-vaihtoehdon. Oletustoteutus kutsuu kohdetta performOk.
Oletusasetussivujen tulee ohittaa doGetPreferenceStore()-metodi, jotta ne voivat palauttaa arvojensa tallennukseen käytettävän oletusasetusvaraston.
Oletusasetusvarastot ovat kätevä tapa käyttää ja tallentaa oletusarvoja lisäosaluokkaan. Ne mahdollistavat sen, että lisäosat voivat käyttää oletusarvoja, jotka on tosiasiassa tallennettu ajonaikaisen oletusasetuspalvelun avulla. AbstractUIPlugin määrittää lisäosan laajuisen oletusasetusvaraston, jota ylläpidetään lisäosan koko käyttöaikana. Lisäosa voi lisätä merkintöjä tähän oletusasetusvarastoon ja päivittää arvoja, kun käyttäjä muuttaa oletusasetussivun asetuksia. Koska oletusasetusvarastot käyttävät ympäristön oletusasetuspalvelua, ne pitävät huolen oletusasetusarvojen tallennuksesta oikealla vaikutusalueella ja oikeassa sijainnissa sekä oletusasetusvaraston alustuksesta asianmukaisten mekanismien avulla.
Seuraava kohteen ReadmePreferencePage koodi noutaa kohteen ReadmePlugin oletusasetusvaraston.
protected IPreferenceStore doGetPreferenceStore() { return ReadmePlugin.getDefault().getPreferenceStore(); }
Koska ReadmePlugin laajentaa AbstractUIPlugin-luokkaa, se perii oletusasetusvaraston automaattisesti. Tämä oletusasetusvarasto alustetaan ympäristön oletusasetuspalvelun avulla. Ainoa asia, joka ReadmePlugin-kohteen on toteutettava, on metodi, joka alustaa oletusasetusten ohjausobjektit oletusarvoihinsa. Näitä arvoja käytetään, kun oletusasetussivu ensimmäisen kerran tulee näkyviin tai kun käyttäjä napsauttaa oletusasetussivun Oletusarvot-painiketta.
protected void initializeDefaultPreferences(IPreferenceStore store) { // Nämä asetukset tulevat näkyviin, kun oletusasetusten valintaikkuna // avataan ensimmäisen kerran. store.setDefault(IReadmeConstants.PRE_CHECK1, true); store.setDefault(IReadmeConstants.PRE_CHECK2, true); store.setDefault(IReadmeConstants.PRE_CHECK3, false); store.setDefault(IReadmeConstants.PRE_RADIO_CHOICE, 2); store.setDefault(IReadmeConstants.PRE_TEXT, MessageUtil.getString("Default_text")); //$NON-NLS-1$ }
Huomautus: Jos lisäosalle ei ole tallennettuja oletusarvoja, lisäosa noutaa tyhjän oletusaasetusvaraston.
Kun olet liittänyt lisäosan oletusasetusvaraston oletusasetussivuun, voit toteuttaa oletusasetusten noudon ja tallennuksen logiikan.
Oletusasetussivut vastaavat ohjausobjektiensa arvojen alustuksesta käyttämällä oletusasetusvaraston oletusasetuksia. Tämä menettely on samanlainen kuin valintaikkunan ohjausobjektien arvojen alustus valintaikkunan asetuksista. ReadmePreferencePage alustaa kaikki ohjausobjektinsa yhdessä metodissa, initializeValues, joka kutsutaan sen createContents-metodista.
private void initializeValues() { IPreferenceStore store = getPreferenceStore(); checkBox1.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK1)); checkBox2.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK2)); checkBox3.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK3)); ... }
Kun käyttäjä napsauttaa OK-painiketta (tai Käytä-painiketta), oletusasetussivujen ohjausobjektien nykyiset arvot tallennetaan takaisin oletusasetusvarastoon. ReadmePreferencePage toteuttaa tämän logiikan erillisessä metodissa storeValues.
private void storeValues() { IPreferenceStore store = getPreferenceStore(); store.setValue(IReadmeConstants.PRE_CHECK1, checkBox1.getSelection()); store.setValue(IReadmeConstants.PRE_CHECK2, checkBox2.getSelection()); store.setValue(IReadmeConstants.PRE_CHECK3, checkBox3.getSelection()); ... }
Kun käyttäjä napsauttaa Oletusasetukset-painiketta, ympäristö palauttaa kaikki oletusasetusvaraston arvot lisäosan luokassa määritetyiksi oletusarvoiksi. Oletusasetussivu kuitenkin vastaa näiden oletusarvojen muutoksesta oletusasetussivun ohjausobjekteissa. ReadmePreferencePage toteuttaa tämän kohteessa initializeDefaults.
private void initializeDefaults() { IPreferenceStore store = getPreferenceStore(); checkBox1.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK1)); checkBox2.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK2)); checkBox3.setSelection(store.getDefaultBoolean(IReadmeConstants.PRE_CHECK3)); ... }