ȯ°æ ¼³Á¤ ÆäÀÌÁö ±¸Çö

ÆäÀÌÁö Á¤ÀÇ

JFace Ç÷¯±×ÀÎÀº ¸¶¹ý»ç, ȯ°æ ¼³Á¤ ÆäÀÌÁö ¹× ´ëÈ­ »óÀÚ ±¸ÇöÀ» À§ÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌµé ´ëÈ­ »óÀÚ¿¡ ´ëÇÑ ±¸ÇöÀº °øÅë ÆÐÅÏÀ» µû¸¨´Ï´Ù. ÆäÀÌÁö ¶Ç´Â ´ëÈ­ »óÀÚÀÇ ÄÁÅÙÃ÷´Â ÆäÀÌÁö ÄÁÅÙÃ÷¸¦ Ç¥½ÃÇÏ´Â 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);
}

ÀÌ ¸Þ¼Òµå¿¡¼­ ´ëºÎºÐÀÇ ÄÚµå´Â Á¦¾î¸¦ ÀÛ¼ºÇÏ¿© ·¹À̾ƿôÇÏ´Â ¿ªÇÒÀ» ÇϹǷΠ¿©±â¼­´Â ÀÌ¿¡ ´ëÇØ¼­´Â ¼³¸íÇÏÁö ¾Ê½À´Ï´Ù.  ÇØ´ç ÆäÀÌÁö´Â ´ÙÀ½°ú °°½À´Ï´Ù.

Readme µµ±¸ ȯ°æ ¼³Á¤ ÆäÀÌÁö

ȯ°æ ¼³Á¤ ÆäÀÌÁöÀÇ ´Ù¸¥ ÁÖ¿ä ¿ªÇÒÀº 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));
      ...
   }