在自然表中显示多重编辑的示例



我有一个要求,即在单元格中单击一次,必须可以进行正常编辑,在单元格中双击时,应该打开一个对话框来编辑单元格。这两者都是可能的。我看到了一个方法"boolean supportMultiEdit(IConfigRegistry configRegistry,List-configLabels(",但没有显示工作的示例。有人使用过它吗?或者可以显示它的配置。

多重编辑意味着可以同时编辑多个单元格。这当然是在编辑器中完成的,因为内联执行多重编辑毫无意义。你应该看看openInline(IConfigRegistry, List<String>),或者更好的是EditConfigAttributes#OPEN_IN_DIALOG来解决你想要的问题。

但实际上,您正在寻找一种方法来处理在不同UI交互中以不同方式打开编辑器的问题。因此,您需要注册相应的UI绑定。NatTable论坛已经对此进行了讨论。

EditorExample显示了许多可供编辑的可能配置选项。几乎每个可编辑的示例都显示了多重编辑功能。您只需选择多个要编辑的单元格,然后开始键入或按F2键。

以下代码将使用基于UI绑定操作中添加的标签的配置来完成此操作:

public class OpenEditorConfiguration extends AbstractRegistryConfiguration {
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
configRegistry.registerConfigAttribute(
EditConfigAttributes.OPEN_IN_DIALOG,
Boolean.TRUE,
DisplayMode.EDIT,
"open_in_dialog");
}
@Override
public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
uiBindingRegistry.registerDoubleClickBinding(
new CellEditorMouseEventMatcher(GridRegion.BODY),
new IMouseAction() {
@Override
public void run(NatTable natTable, MouseEvent event) {
int columnPosition = natTable.getColumnPositionByX(event.x);
int rowPosition = natTable.getRowPositionByY(event.y);
ILayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition);
cell.getConfigLabels().add("open_in_dialog");
natTable.doCommand(new EditCellCommand(
natTable, 
natTable.getConfigRegistry(), 
cell));
}
});
}
}

最新更新