<> <> DIRECTORY Graphics, IO, Real, Rope, TableBase, TSOutput, TSTypes; TableSelection: CEDAR DEFINITIONS = { OPEN TableBase; <<>> KindOfSelection: TYPE = {box, row, column, table}; BeforeOrAfter: TYPE = {before, after}; Selection: TYPE = REF SelectionRec; SelectionRec: TYPE = RECORD [ table: RefTable _ NIL, kind: KindOfSelection _ box, list: LIST OF SelectedThing _ NIL, insertion: BeforeOrAfter _ before ]; SelectedThing: TYPE ~ REF SelectedThingRec; SelectedThingRec: TYPE ~ RECORD [ box: RefTableBox _ NIL, grid1, grid2: GridNumber _ 0 ]; NewSelection: PROCEDURE [table: TableBase.RefTable] RETURNS [sel: Selection]; AnEmptySelection: PROCEDURE [sel: Selection] RETURNS [BOOLEAN]; ASingleSelection: PROCEDURE [sel: Selection] RETURNS [BOOLEAN]; ResolveToBox: PROCEDURE [table: RefTable, x, y: TSTypes.Dimn] RETURNS [box: RefTableBox]; <> SelectBox: PROCEDURE [table: RefTable, box: RefTableBox, kind: KindOfSelection] RETURNS [sel: Selection]; GrowSelection: PROCEDURE [sel: Selection, which: RowOrColumn]; }.