dram.me

iDempiere Swing客户端的文本编辑器

iDempiere表格页中的编辑器,在VCellEditor.createEditor()实例化,最终实现是VString类。

同时,也是在VCellEditor中绑定了编辑器vetoableChange事件的监听。

CTable.tableChanged()在切换单元格时会被触发,其由GridTable.fireTableCellUpdated()触发,再之前事件触发路径是VCellEditor.stopCellEditing() - VCellEditor.fireEditingStopped() - VTable.editingStopped() - VTable.setValueAt() - GridTable.setValueAt()

另外,在Swing UI中,如果字段长度大于显示长度,输入框的右键菜单中包含有“Editor”菜单项,点击可打开富文本编辑器。在iDempiere中,菜单项的添加在org.compiere.grid.ed.VString.VString构造函数中处理,富文本编辑器的启动在actionPerformed()中实现。在metasfresh中,相关代码主要在org.compiere.grid.ed.menu.TextEditorContextMenuAction.run()中实现。

另外,VText用于实现多行文本编辑框。