/** * set param is hardly ever being used, which means things like will be setting the current row * visibly current when in fact it already is visibly current. No big deal! */ public void setDisplay(OperationEnum currentOperation, int row, String reason) { StateEnum currentState = oper.getState(block); Block currentBlock = oper.getCurrentBlock(); // int idxCurrentRow = block.getCursorPosition() - 1; int idxCurrentRow = block.getIndex(); if (currentState.isNew() && currentState.isPrior()) { idxCurrentRow--; } /**/ if (false /*SdzNote.SET_DISPLAY_ON_TABLE.isVisible()*/) { times++; Err.pr(""); Err.pr("Inside setDisplay for <" + block + "> times: " + times); Err.pr("\tCurrent block: " + currentBlock); Err.pr("\tblock that has table: " + block); Err.pr("\tcurrent operation: " + currentOperation); Err.pr("\tcurrent state: " + currentState); Err.pr("\trow to change to: " + idxCurrentRow); if (times == 39) { Err.debug(); } } /**/ if (currentOperation == OperationEnum.REMOVE // && currentState.isNew() // && !block.isChildOf( currentBlock) ) { usersModel.fireTableRowsDeleted(idxCurrentRow, idxCurrentRow); // usersModel.fireRowChangedTo( idxCurrentRow-1); } /* else if(currentOperation == OperationEnum.REMOVE && currentState.isNavigating() && !block.isChildOf( currentBlock)) { // w/out this, in case where deleted first row, // would not have become selected again usersModel.fireRowChangedTo( idxCurrentRow); } */ else if (currentOperation == OperationEnum.EXECUTE_QUERY) { usersModel.fireTableDataChanged( "setDisplay because of " + currentOperation + ", because " + reason); // No evidence yet that need this // usersModel.fireRowChangedTo( idxCurrentRow); } if (currentState.isNew() && (currentOperation == OperationEnum.PREVIOUS || currentOperation == OperationEnum.NEXT)) { usersModel.fireRowChangedTo(idxCurrentRow); } /* else if((currentOperation == OperationEnum.INSERT || currentOperation == OperationEnum.INSERT_PRIOR) && block == currentBlock) { usersModel.fireRowChangedTo( idxCurrentRow); Err.pr( "blankoutDisplay, have changed row to " + idxCurrentRow); } */ else if (currentOperation == OperationEnum.REFRESH) { Err.pr(/*SdzNote.SET_DISPLAY_ON_TABLE*/ false, "@@ setDisplay for op " + currentOperation); usersModel.fireTableDataChanged( row, row, "setDisplay for op " + currentOperation + " because " + reason); } else { Err.pr(SdzNote.SET_DISPLAY_ON_TABLE, "@@ setDisplay, default as op was " + currentOperation); usersModel.fireRowChangedTo(idxCurrentRow); } }
/** * Not part of the table model (so doesn't get called when the table is painting). Has proven to * be a good place to set the table up just prior to painting. */ public void blankoutDisplay(OperationEnum currentOperation, int row, String reason) { int idxCurrentRow = block.getIndex(); // OperationEnum currentOperation = oper.getCurrentOperation(); StateEnum currentState = oper.getState(block); Block currentBlock = oper.getCurrentBlock(); if (false /*SdzNote.SET_DISPLAY_ON_TABLE.isVisible()*/) { times++; Err.pr(""); Err.pr("Inside blankoutDisplay for <" + block + "> times: " + times); Err.pr("\tcurrentBlock: " + currentBlock); Err.pr("\tblock that has table: " + block); Err.pr("\tcurrent operation: " + currentOperation); Err.pr("\tcurrent state: " + currentState); Err.pr("\tidxCurrentRow: " + idxCurrentRow); if (times == 39) { Err.debug(); } } if (currentOperation == OperationEnum.INSERT_AFTER_PLACE || currentOperation == OperationEnum.INSERT_AT_PLACE) { if (block == currentBlock) { int index = -99; /* We don't do this for field, so lets not do it for table either if(currentOperation == OperationEnum.INSERT || currentOperation == OperationEnum.INSERT_IGNORE) { index = block.getIndex() + 1; } else */ { index = block.getIndex(); } usersModel.acceptEdit(); usersModel.fireTableRowsInserted(index, index); // Was trying to select the row on the table. Doing at the post operation performed // trigger (see SdzDsgnr for this) actually works, so as there's a workaround // we've left this as a slight note Err.pr( SdzNote.AUTO_SELECT_TABLE_ROW_AFTER_INSERT, "Do we actually need access to the JTable if wanted to do this here?"); // usersModel.fireRowChangedTo(index); Err.pr("Inserting a row s/know to move to it as well..."); Err.pr(SdzNote.SET_DISPLAY_ON_TABLE, "blankoutDisplay, have changed row to " + index); } else { // For example when insert master usersModel.fireTableDataChanged( "blankoutDisplay because of an " + "INSERT on different block to current, because " + reason); } } else if (currentOperation == OperationEnum.REMOVE /* && block == currentBlock*/) { /* * Do not want to fireTableDataChanged(), as this would lead to the * edited data being written ie. setValueAt() being called. */ usersModel.rejectEdit(); if ( /* (currentState.isNavigating() || currentState.isNew()) ||*/ currentState == StateEnum.FROZEN) { // When do this then model will no longer have the extra artificial // inserted row, and fireTableRowsDeleted will work usersModel.fireTableRowsDeleted(idxCurrentRow, idxCurrentRow); } } else if (currentOperation == OperationEnum.EXECUTE_QUERY) { /* * As above */ usersModel.rejectEdit(); usersModel.fireTableDataChanged("blankoutDisplay because of EXECUTE_QUERY because " + reason); } else if ((currentOperation == OperationEnum.NEXT || currentOperation == OperationEnum.PREVIOUS) && currentState.isNavigating()) { usersModel.fireTableDataChanged("blankoutDisplay because of NEXT/PREVIOUS because " + reason); } else if (currentOperation == OperationEnum.REFRESH) { Err.pr( /*SdzNote.SET_DISPLAY_ON_TABLE*/ false, "@@ blankoutDisplay for op " + currentOperation); usersModel.fireTableDataChanged( row, row, "blankoutDisplay for op " + currentOperation + " because " + reason); } else { Err.pr( /*SdzNote.SET_DISPLAY_ON_TABLE*/ false, "@@ blankoutDisplay, default as op was " + currentOperation); usersModel.fireTableDataChanged( "blankoutDisplay because of Un-programmed for op " + currentOperation + " because " + reason); } }