[ 1805503 ] UI allows changing record while new record not saved
- replacing the bad m_inserting fix
This commit is contained in:
parent
503c6389fb
commit
058f7feaf3
|
@ -900,10 +900,18 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
if (isDetail() && m_parentNeedSave)
|
if (isDetail() && m_parentNeedSave)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
boolean retValue = m_mTable.dataNew (m_currentRow, copy);
|
/**
|
||||||
|
* temporary set currentrow to point to the new row to ensure even cause by m_mTable.dataNew
|
||||||
|
* is handle properly.
|
||||||
|
*/
|
||||||
|
int oldCurrentRow = m_currentRow;
|
||||||
|
m_currentRow = m_currentRow + 1;
|
||||||
|
boolean retValue = m_mTable.dataNew (oldCurrentRow, copy);
|
||||||
|
m_currentRow = oldCurrentRow;
|
||||||
if (!retValue)
|
if (!retValue)
|
||||||
return retValue;
|
return retValue;
|
||||||
setCurrentRow(m_currentRow + 1, true);
|
setCurrentRow(m_currentRow + 1, true);
|
||||||
|
|
||||||
// process all Callouts (no dependency check - assumed that settings are valid)
|
// process all Callouts (no dependency check - assumed that settings are valid)
|
||||||
for (int i = 0; i < getFieldCount(); i++)
|
for (int i = 0; i < getFieldCount(); i++)
|
||||||
processCallout(getField(i));
|
processCallout(getField(i));
|
||||||
|
|
|
@ -2115,10 +2115,27 @@ public class GridTable extends AbstractTableModel
|
||||||
|
|
||||||
|
|
||||||
m_inserting = true;
|
m_inserting = true;
|
||||||
// Create default data
|
|
||||||
|
// Setup the buffer first so that event will be handle properly
|
||||||
|
// Create default data
|
||||||
int size = m_fields.size();
|
int size = m_fields.size();
|
||||||
m_rowData = new Object[size]; // "original" data
|
m_rowData = new Object[size]; // "original" data
|
||||||
Object[] rowData = new Object[size];
|
Object[] rowData = new Object[size];
|
||||||
|
|
||||||
|
m_changed = true;
|
||||||
|
m_compareDB = true;
|
||||||
|
m_newRow = currentRow + 1;
|
||||||
|
// if there is no record, the current row could be 0 (and not -1)
|
||||||
|
if (m_buffer.size() < m_newRow)
|
||||||
|
m_newRow = m_buffer.size();
|
||||||
|
|
||||||
|
// add Data at end of buffer
|
||||||
|
MSort newSort = new MSort(m_buffer.size(), null); // index
|
||||||
|
m_buffer.add(rowData);
|
||||||
|
// add Sort pointer
|
||||||
|
m_sort.add(m_newRow, newSort);
|
||||||
|
m_rowCount++;
|
||||||
|
|
||||||
// fill data
|
// fill data
|
||||||
if (copyCurrent)
|
if (copyCurrent)
|
||||||
{
|
{
|
||||||
|
@ -2164,20 +2181,8 @@ public class GridTable extends AbstractTableModel
|
||||||
field.setValue(rowData[i], m_inserting);
|
field.setValue(rowData[i], m_inserting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_changed = true;
|
|
||||||
m_compareDB = true;
|
|
||||||
m_rowChanged = -1; // only changed in setValueAt
|
|
||||||
m_newRow = currentRow + 1;
|
|
||||||
// if there is no record, the current row could be 0 (and not -1)
|
|
||||||
if (m_buffer.size() < m_newRow)
|
|
||||||
m_newRow = m_buffer.size();
|
|
||||||
|
|
||||||
// add Data at end of buffer
|
m_rowChanged = -1; // only changed in setValueAt
|
||||||
MSort sort = new MSort(m_buffer.size(), null); // index
|
|
||||||
m_buffer.add(rowData);
|
|
||||||
// add Sort pointer
|
|
||||||
m_sort.add(m_newRow, sort);
|
|
||||||
m_rowCount++;
|
|
||||||
|
|
||||||
// inform
|
// inform
|
||||||
log.fine("Current=" + currentRow + ", New=" + m_newRow);
|
log.fine("Current=" + currentRow + ", New=" + m_newRow);
|
||||||
|
|
Loading…
Reference in New Issue