基本的な質問があります。単純なプロパティの値をコンソール画面に出力するだけの Python コンポーネントと、コンポーネントを実行するだけの波形を開発しました。
現在のプロパティ値 (文字列) を表示し、プロパティの値を変更できるコンポーネント コントロール パネルを作成しようとしています。プロパティの値を変更すると、コンソール ウィンドウに出力される値も変更されます。私の理解では、プロパティをコントロール パネルのテキスト ボックスにバインドする必要があります。
ドキュメント ( http://redhawksdr.github.io/Documentation/mainch24.html )のセクション 24.4.1 のバインディングの例に従ってみました。 SCA コンポーネント コントロール パネル ウィザード。ただし、コントロール パネルを表示すると、次のエラーが表示されます。
「コンポーネントのリフレッシュ」中に内部エラーが発生しました。
null 引数: 検証レルムを null にすることはできません
私は Java にかなり慣れていませんが、SCA コンポーネント (以下のコードで「component」という名前の変数) のローカル コピーを作成するときに問題が発生したため、エラーが発生したと推測されます。
ここに私のコントロールパネルコードがあります:
public void createPartControl(final Composite main) {
main.setLayout(new GridLayout(2, false));
propValue = new Text(main, SWT.BORDER);
propValue.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
}
public void refresh() {
Job refreshJob = new Job("Refresh Component") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// bind text box to component property value
final ScaComponent component = getInput();
EMFDataBindingContext context = new EMFDataBindingContext();
IObservableValue observable = SCAObservables.observeSimpleProperty(component,"someText");
context.bindValue(WidgetProperties.text().observeDelayed(5000, propValue),observable);
return Status.OK_STATUS;
}
};
refreshJob.setSystem(true);
refreshJob.schedule();
}
参考までに、RHEL 5.8 で REDHAWK バージョン 1.8.2 を実行しています。