ȯ°æ ¼³Á¤ ÆäÀÌÁöÀÇ ±¸ÇöÀº ¸¶¹ý»ç ÆäÀÌÁö ÀÛ¼º°ú À¯»çÇÕ´Ï´Ù. ȯ°æ ¼³Á¤ ÆäÀÌÁö´Â ÆäÀÌÁö ÄÁÅÙÃ÷¸¦ Ç¥½ÃÇÏ´Â SWT Á¦¾î¸¦ ÀÛ¼ºÇÏ°í °ü½É ÀÖ´Â À̺¥Æ®¿¡ ¸®½º³Ê¸¦ Ãß°¡ÇÏ´Â createContents ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. ¶ÇÇÑ È¯°æ ¼³Á¤ ÆäÀÌÁö´Â ÆäÀÌÁöÀÇ ¸ðµç Á¦¾î¸¦ »óÀ§·Î ÇÒ º¹ÇÕÀ» ÀÛ¼ºÇÏ¿© ¸®ÅÏÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ´ÙÀ½ ½º´ÏÆêÀº °Á¶¸¦ Ç¥½ÃÇÕ´Ï´Ù.
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);
}
ÀÌ ¸Þ¼Òµå¿¡¼ ´ëºÎºÐÀÇ ÄÚµå´Â Á¦¾î¸¦ ÀÛ¼ºÇÏ¿© ·¹À̾ƿôÇÏ´Â ¿ªÇÒÀ» ÇϹǷΠ¿©±â¼´Â ÀÌ¿¡ ´ëÇØ¼´Â ¼³¸íÇÏÁö ¾Ê½À´Ï´Ù. ÇØ´ç ÆäÀÌÁö´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ȯ°æ ¼³Á¤ ÆäÀÌÁöÀÇ ´Ù¸¥ ÁÖ¿ä ¿ªÇÒÀº performOk ¸Þ½ÃÁö¿¡ ¹ÝÀÀÇÏ´Â °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ¸Þ¼Òµå´Â »ç¿ëÀÚ È¯°æ ¼³Á¤À» °»½ÅÇÏ¿© ÀúÀåÇϸç, ÇÊ¿äÇÏ¸é ´Ù¸¥ Ç÷¯±×ÀÎ ¿ÀºêÁ§Æ®¸¦ °»½ÅÇÏ¿© ȯ°æ ¼³Á¤ º¯°æ»çÇ×À» ¹Ý¿µÇÕ´Ï´Ù. performDefaults ¸Þ¼Òµå´Â »ç¿ëÀÚ°¡ ±âº»°ª º¹¿ø ´ÜÃ߸¦ ´©¸¦ ¶§ ȯ°æ ¼³Á¤À» ±âº»°ª »óÅ·Πº¹¿øÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
Àû¿ë ¼±Åà ½Ã Ãß°¡Àû 󸮰¡ ÀÖÀ¸¸é performApply¸¦ ´ëüÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» ±¸ÇöÀº performOk¸¦ È£ÃâÇÕ´Ï´Ù.
ȯ°æ ¼³Á¤ ÆäÀÌÁö´Â doGetPreferenceStore() ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© °ªÀ» ÀúÀåÇϱâ À§ÇØ È¯°æ ¼³Á¤ ÀúÀåÀ» ¸®ÅÏÇØ¾ß ÇÕ´Ï´Ù.
ȯ°æ ¼³Á¤ ÀúÀåÀº º»ÁúÀûÀ¸·Î ´ëÈ »óÀÚ ¼³Á¤°ú À¯»çÇÕ´Ï´Ù. ´ëÈ »óÀÚ ¼³Á¤¿¡¼ AbstractUIPlugin Ŭ·¡½º°¡ Ç÷¯±×ÀÎ Áö¼Ó½Ã°£ µ¿¾È ´ëÈ »óÀÚ ¼³Á¤À» À¯Áöº¸¼öÇÏ´Â ¹æ¹ýÀ» »ìÆì º¸¾Ò½À´Ï´Ù. À¯»çÇÑ Àü·«ÀÌ »ç¿ëÀÚ È¯°æ ¼³Á¤¿¡ »ç¿ëµË´Ï´Ù. ȯ°æ ¼³Á¤ ÀúÀåÀº ´Ü¼øÈ÷ ÆíÀÇ ¸ÞÄ¿´ÏÁòÀ¸·Î, ·±Å¸ÀÓ È¯°æ ¼³Á¤ ¼ºñ½º¸¦ »ç¿ëÇÏ¿© ½ÇÁ¦·Î ÀúÀåµÇ¾î Àִ ȯ°æ ¼³Á¤¿¡ ´ëÇÑ Ç÷¯±×ÀÎ ·¹º§ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀº ȯ°æ ¼³Á¤ ÀúÀå¿¡ Ç׸ñÀ» Ãß°¡ÇÏ°í »ç¿ëÀÚ°¡ ȯ°æ ¼³Á¤ ÆäÀÌÁö¿¡¼ ¼³Á¤À» º¯°æÇÒ ¶§ °ªÀ» °»½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ȯ°æ ¼³Á¤ ÀúÀåÀº Ç÷§Æû ȯ°æ ¼³Á¤ ¼ºñ½º¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ÀûÀýÇÑ ¹üÀ§¿Í À§Ä¡¿¡ ÇØ´ç °ªÀ» ÀúÀåÇϰí ÀûÀýÇÑ ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÏ¿© ȯ°æ ¼³Á¤ ÀúÀåÀ» ÃʱâÈÇÕ´Ï´Ù.
ReadmePreferencePageÀÇ ´ÙÀ½ ÄÚµå´Â ReadmePlugin¿¡ ´ëÇÑ È¯°æ ¼³Á¤ ÀúÀåÀ» ¾ò½À´Ï´Ù.
protected IPreferenceStore doGetPreferenceStore() {
return ReadmePlugin.getDefault().getPreferenceStore();
}
ReadmePluginÀÌ AbstractUIPlugin Ŭ·¡½º¸¦ È®ÀåÇϱ⠶§¹®¿¡ ȯ°æ ¼³Á¤ ÀúÀåÀ» ÀÚµ¿À¸·Î »ó¼ÓÇÕ´Ï´Ù. ÀÌ È¯°æ ¼³Á¤ ÀúÀåÀº Ç÷§Æû ȯ°æ ¼³Á¤ ¼ºñ½º¸¦ »ç¿ëÇÏ¿© Ãʱâȵ˴ϴÙ. ReadmePluginÀÌ ¼öÇàÇØ¾ß ÇÒ À¯ÀÏÇÑ ÀÛ¾÷Àº ȯ°æ ¼³Á¤ Á¦¾î¸¦ ±âº»°ªÀ¸·Î ÃʱâÈÇÏ´Â ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ °ªÀº ȯ°æ ¼³Á¤ÀÌ Ã³À½ Ç¥½ÃµÉ ¶§ ¶Ç´Â »ç¿ëÀÚ°¡ ȯ°æ ¼³Á¤ ÆäÀÌÁö¿¡¼ ±âº»°ª ´ÜÃ߸¦ ´©¸£¸é »ç¿ëµË´Ï´Ù.
protected void initializeDefaultPreferences(IPreferenceStore store) {
// These settings will show up when Preference dialog
// opens up for the first time.
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$
}
Âü°í: Ç÷¯±×Àο¡ ´ëÇØ ÀúÀåµÈ ȯ°æ ¼³Á¤ÀÌ ¾øÀ» °æ¿ì Ç÷¯±×ÀÎÀº ºó ȯ°æ ¼³Á¤ ÀúÀåÀ» °¡Á®¿É´Ï´Ù.
Ç÷¯±×ÀÎÀÇ È¯°æ ¼³Á¤À» ȯ°æ ¼³Á¤ ÆäÀÌÁö¿Í ¿¬°ü½ÃÄ×À¸¸é ȯ°æ ¼³Á¤À» °Ë»öÇϰí ÀúÀåÇϱâ À§ÇÑ ³í¸®¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
ȯ°æ ¼³Á¤ ÆäÀÌÁö´Â ȯ°æ ¼³Á¤ ÀúÀåÀÇ È¯°æ ¼³Á¤À» »ç¿ëÇÏ¿© Á¦¾î °ªÀ» ÃʱâÈÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ´ëÈ »óÀÚ ¼³Á¤¿¡¼ ´ëÈ »óÀÚ Á¦¾î°ªÀ» ÃʱâÈÇÏ´Â °Í°ú À¯»çÇÕ´Ï´Ù. ReadmePreferencePage´Â ¸ðµç Á¦¾î¸¦ ÇϳªÀÇ ¸Þ¼Òµå(initializeValues)·Î ÃʱâÈÇϴµ¥, ÀÌ ¸Þ¼Òµå´Â createContents ¸Þ¼Òµå¿¡¼ È£ÃâµË´Ï´Ù.
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));
...
}
È®ÀÎ(¶Ç´Â Àû¿ë) ´ÜÃ߸¦ ´©¸£¸é ȯ°æ ¼³Á¤ ÆäÀÌÁöÀÇ ÇöÀç Á¦¾î°¡ ´Ù½Ã ȯ°æ ¼³Á¤ ÀúÀå¿¡ ÀúÀåµË´Ï´Ù. ReadmePreferencePage´Â ÀÌ ³í¸®¸¦ µ¶¸³ ¸Þ¼ÒµåÀÎ 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());
...
}
»ç¿ëÀÚ°¡ ±âº»°ª ´ÜÃ߸¦ ´©¸£¸é Ç÷§ÆûÀÌ ¸ðµç ȯ°æ ¼³Á¤ ÀúÀå °ªÀ» Ç÷¯±×ÀΠŬ·¡½º¿¡ ÁöÁ¤µÈ ±âº»°ªÀ¸·Î º¹¿øÇÕ´Ï´Ù. ±×·¯³ª ȯ°æ ¼³Á¤ ÆäÀÌÁö´Â ȯ°æ ¼³Á¤ ÆäÀÌÁöÀÇ Á¦¾î¿¡ ÀÌ ±âº»°ªÀ» ¹Ý¿µÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ReadmePreferencePage´Â À̰ÍÀ» 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));
...
}