在 Nattable 中显示多重编辑的示例
Example showing Multi Edit in Nattable
我有一个要求,其中单击单元格时,必须可以进行正常编辑,双击单元格时应打开一个对话框以编辑单元格。这两者是单独可能的。我看到了一种方法 "boolean supportMultiEdit(IConfigRegistry configRegistry, List configLabels)",但没有示例可以说明其工作原理。有没有人用过或者可以展示一下它的配置。
多编辑意味着可以一次编辑多个单元格。这当然是在编辑器中完成的,因为执行多重编辑内联是没有意义的。你应该看看 openInline(IConfigRegistry, List<String>)
或者更好的 EditConfigAttributes#OPEN_IN_DIALOG
来解决你正在寻找的问题。
但您实际上是在寻找一种方法来处理在不同的 UI 交互中以不同方式打开编辑器。所以需要注册对应的UI绑定。这已在 NatTable Forum.
中讨论过
并且 EditorExample 显示了相当多的可用于编辑的可能配置选项。几乎每个可编辑示例都显示了多重编辑功能。您只需 select 多个要编辑的单元格,然后开始键入或按 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));
}
});
}
}
我有一个要求,其中单击单元格时,必须可以进行正常编辑,双击单元格时应打开一个对话框以编辑单元格。这两者是单独可能的。我看到了一种方法 "boolean supportMultiEdit(IConfigRegistry configRegistry, List configLabels)",但没有示例可以说明其工作原理。有没有人用过或者可以展示一下它的配置。
多编辑意味着可以一次编辑多个单元格。这当然是在编辑器中完成的,因为执行多重编辑内联是没有意义的。你应该看看 openInline(IConfigRegistry, List<String>)
或者更好的 EditConfigAttributes#OPEN_IN_DIALOG
来解决你正在寻找的问题。
但您实际上是在寻找一种方法来处理在不同的 UI 交互中以不同方式打开编辑器。所以需要注册对应的UI绑定。这已在 NatTable Forum.
中讨论过并且 EditorExample 显示了相当多的可用于编辑的可能配置选项。几乎每个可编辑示例都显示了多重编辑功能。您只需 select 多个要编辑的单元格,然后开始键入或按 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));
}
});
}
}