我正面临设计问题。如果我(例如)在左侧可停靠视图中包含一些包含一些pojo的列表视图,如何通知中心可停靠哪个被选中?我正在尝试实现某种Master-Detail-View,其中用户选择一个项目,然后可以在中心区域和右侧区域配置它。 在此先感谢:)
答案 0 :(得分:0)
这取决于您希望如何设计应用程序。
如果您想为每个pojo创建一个单独的编辑器,那么您可以查看drombler fx archetype为样本提供的LeftTestPane。
curl -XDELETE /logstash-2016.03.11/logevent/_query -d '
{
"query": { "match_all": {}}
}'
目前没有用于选择已打开的编辑器的API,但请注意,编辑器目前正在针对问题#111所做的工作进行改进。
如果您想要一个详细视图,那么您可以使用Context Framework,它允许Dockables和Actions等组件以松散耦合的方式进行通信。
ListView应该实现LocalContextProvider并将选定的pojo保留在其本地Context中。
@FXML
private void onNewSampleAction(ActionEvent event) {
sampleCounter++;
Sample sample = new Sample("Sample " + sampleCounter);
SampleEditorPane sampleEditorPane = new SampleEditorPane(sample);
Dockables.inject(sampleEditorPane);
Dockables.open(sampleEditorPane);
}
在这种情况下,DetailsView也应该注册为视图(单例),并实现LocalContextProvider以及ActiveContextSensitive:
@ViewDocking(...)
public class ListView extends SomeNode implements LocalContextProvider {
private final SimpleContextContent contextContent = new SimpleContextContent();
private final SimpleContext context = new SimpleContext(contextContent);
private MyPojo currentSelection;
...
@Override
public Context getLocalContext() {
return context;
}
...
if (currentSelection != null){
contextContent.remove(currentSelection);
}
currentSelection = <current selection>
if (currentSelection != null){
contextContent.add(currentSelection);
}
...
}
查看drombler fx archetype为样本提供的RightTestPane。