如何更改ComboFieldEditor的内容? [英] How do I change content of ComboFieldEditor?

查看:162
本文介绍了如何更改ComboFieldEditor的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据eclipse插件中的另一个 ComboFieldEditor ,我想更改一个 ComboFieldEditor 上的值。例如。如果用户更改,则需要在第二个 ComboFieldEditor 中填充不同的类。 ComboFieldEditor 类似乎没有办法快速更改项目。

解决方案

我创建了一个SmartComboFieldEditor类,以便让我优雅地获取并设置ComboFieldEditor的值,后台数据存储在后台。

  package wat.core.plugin; 

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

public class SmartComboFieldEditor扩展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并执行OK方法:

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


I want to change the values on one ComboFieldEditor depending on another ComboFieldEditor in an eclipse plugin. E.g. if the user changes the package, different classes need to be populated in the second ComboFieldEditor. The ComboFieldEditor class does not seem to to have a way to change the items on the fly.

解决方案

I created a SmartComboFieldEditor class to allow me to elegantly get and set the value of a ComboFieldEditor using the backing data store behind the scenes.

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();
    }
}

Then you can override the propertyChange and performOK methods like so:

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

这篇关于如何更改ComboFieldEditor的内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆