在波形控制面板中绑定SCA组件属性

时间:2013-11-27 02:49:15

标签: redhawksdr

我正在尝试创建一个波形控制面板来更改其组件的属性。我试图在Redhawk文档中为组件控制面板应用该示例,但由于某种原因,我在运行插件时遇到了java.lang.NullPointerException。当我尝试将文本字段绑定到组件属性时发生错误,发生错误的确切行位于代码的注释中(位于最底部)。

public class TestControlPanel extends AbstractScaContentEditor<ScaWaveform> {
    private ScaWaveform waveform;
    private ScaComponent myComponent;
    private Text propertyValueField;
    private EMFDataBindingContext context;

    /**
    * {@inheritDoc}
    */
    @Override
    public void createPartControl(final Composite main) {
            main.setLayout(new GridLayout(2, false));
            Group controlGroup = new Group(main, SWT.SHADOW_ETCHED_OUT);
            controlGroup.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
            controlGroup.setText("Controls");
            createControlGroup(controlGroup);
    }

    private void createControlGroup(Composite parent) {
        parent.setLayout(new GridLayout(2, false));

        EObject input = getInput();

        if (input instanceof ScaWaveform) {
            // make local copy of waveform
            waveform = (ScaWaveform) input;
            try {
                waveform.refresh(null, RefreshDepth.FULL);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       

            label = new Label(parent,SWT.None);
            label.setText("Property Value:");
            propertyValueField = new Text(parent, SWT.BORDER | SWT.FILL);
            myComponent = waveform.getScaComponent("myComponent_1");
            if(myComponent != null)
            {                   
                IObservableValue observable = SCAObservables.observeSimpleProperty(myComponent, "propertyId");
                IObservableValue targetObservable = WidgetProperties.text(SWT.Modify).observeDelayed(5000,propertyValueField);
                if(observable != null && targetObservable != null)
                {
                    // ***** THE BELOW LINE CAUSES A java.lang.NullPointerException ERROR *****
                    context.bindValue(targetObservable, observable);
                    // ***** THE ABOVE LINE CAUSES A java.lang.NullPointerException ERROR *****

                }
            }           
        }

    }

我对此错误原因的原始猜测是IObservableValue变量之一(例如targetObservable或observable)为null,这就是为什么我检查以确保在绑定它们之前值不为空。但是,这并没有解决问题,我仍然遇到了同样的错误。

2 个答案:

答案 0 :(得分:0)

看起来上下文变量为null。我看到你在类的顶部定义了“context”,但我没有看到它的设置位置。

答案 1 :(得分:0)

从我能看到的代码看来,你的字段变量“context”似乎从未被初始化。

只需调用无参数构造函数: context = new EMFData BindingContext();