如何更改ComboFieldEditor的内容?

时间:2010-04-19 07:50:26

标签: java eclipse eclipse-plugin

我希望根据eclipse插件中的另一个ComboFieldEditor更改一个ComboFieldEditor上的值。例如。如果用户更改了package,则需要在第二个ComboFieldEditor中填充不同的类。 ComboFieldEditor类似乎无法动态更改项目。

1 个答案:

答案 0 :(得分: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");
    }
  }
}