package Ġcom . github . sz y mon 2 6 0 3 . fixed length record sed itor . record sed itor . ui Ċ Ċ import Ġjavax . swing . table . Abstract TableModel Ċ import Ġjavax . swing . table . TableCell Editor Ċ Ċ class ĠList TableModel < R >( private Ġvar Ġdata : ĠMutable List < R >, Ġprivate Ġval Ġcolumns : ĠList < Column < R >>) Ġ: ĠAbstract TableModel () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget RowCount (): ĠInt Ġ= Ġdata . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Column Count (): ĠInt Ġ= Ġcolumns . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue At ( rowIndex : ĠInt , ĠcolumnIndex : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġdata [ rowIndex ] ĊĠĠĠĠĠĠĠ Ġreturn Ġcolumns [ column Index ]. get CellValue ( row ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue At ( newValue : ĠAny , ĠrowIndex : ĠInt , ĠcolumnIndex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġdata [ rowIndex ] ĊĠĠĠĠĠĠĠ Ġcolumns [ column Index ]. setCellValue ( row , ĠnewValue ) ĊĠĠĠĠĠĠĠ Ġfire TableCell Updated ( rowIndex , ĠcolumnIndex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Column Class ( column Index : ĠInt ): ĠClass < *> Ġ= Ġcolumns [ column Index ]. getColumn Class () ĊĊĠĠĠ Ġoverride Ġfun Ġis Cell Editable ( rowIndex : ĠInt , ĠcolumnIndex : ĠInt ): ĠBoolean Ġ= Ġcolumns [ column Index ]. is Editable () ĊĊĠĠĠ Ġoverride Ġfun Ġget ColumnName ( column : ĠInt ): ĠString Ġ= Ġcolumns [ column ]. getName () ĊĊĠĠĠ Ġfun Ġget Custom Cell Editors () Ġ= Ġcolumns ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . getCell Editor () Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getColumn Class () Ġto Ġit . getCell Editor () !! Ġ} ĊĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġfun Ġadd Row ( row : ĠR , Ġindex : ĠInt Ġ= Ġdata . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . add ( index , Ġrow ) ĊĠĠĠĠĠĠĠ Ġfire Table Rows Inserted ( index , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Row ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . remove At ( index ) ĊĠĠĠĠĠĠĠ Ġfire Table Rows Deleted ( index , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( data : ĠMutable List < R >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġfire TableData Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠEMPTY _ MODEL Ġ= ĠList TableModel ( emptyList < Any >(). to Mutable List (), Ġempty List ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠColumn < R > Ġ{ ĊĠĠĠ Ġfun Ġget CellValue ( row : ĠR ): ĠAny ĊĠĠĠ Ġfun Ġset CellValue ( row : ĠR , ĠnewValue : ĠAny ) ĊĠĠĠ Ġfun Ġis Editable (): ĠBoolean ĊĠĠĠ Ġfun Ġget Column Class (): ĠClass < *> ĊĠĠĠ Ġfun ĠgetName (): ĠString ĊĠĠĠ Ġfun Ġget Cell Editor (): ĠTable Cell Editor ? Ġ{ Ġreturn Ġnull Ġ} Ċ } Ċ