2010-04-19 28 views
2

我想改變一個ComboFieldEditor上的值,這取決於eclipse插件中的另一個ComboFieldEditor。例如。如果用戶更改package,則需要在第二個ComboFieldEditor中填充不同的類。這個ComboFieldEditor類似乎沒有辦法改變飛行中的物品。如何更改ComboFieldEditor的內容?

回答

3

我創建了一個SmartComboFieldEditor類,允許我使用後臺數據存儲在幕後優雅地獲取和設置ComboFieldEditor的值。

package wat.core.plugin; 

import org.eclipse.jface.preference.ComboFieldEditor; 
import org.eclipse.swt.widgets.Composite; 

public class SmartComboFieldEditor extends ComboFieldEditor { 

    public SmartComboFieldEditor(String name, String labelText, String[][] entryNamesAndValues, Composite parent) { 
     super(name, labelText, entryNamesAndValues, parent); 
    } 

    public String getSelectedValue() 
    { 
     doStore(); 
     return getPreferenceStore().getString(getPreferenceName()); 
    } 

    public void setSelectedValue(String newValue) 
    { 
     getPreferenceStore().setValue(getPreferenceName(), newValue); 
     doLoad(); 
    } 
} 

然後你就可以覆蓋的propertyChange和performOK方法,像這樣:

public void propertyChange(PropertyChangeEvent event) { 
    super.propertyChange(event); 
    if (event.getSource() == combo1) 
    { 
    if (combo1.getSelectedValue().equals("Some Value")) 
    { 
     combo2.setSelectedValue("Some Other Value"); 
    } 
    } 
}