Я пытаюсь создать панель управления сигналами, чтобы изменить свойства ее компонентов. Я попытался применить пример из документации 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) была нулевой, поэтому я проверяю, чтобы значения не были нулевыми, прежде чем привязывать их. Однако это не решило проблему, и я все еще получаю ту же ошибку.