IDEMPIERE-4769 False result in validation for pending changes (#661)
* IDEMPIERE-4769 False result in validation for pending changes * * Fix also the case that changing detail is not decorating the window title with prefix *
This commit is contained in:
parent
3be5c0ac92
commit
4e73c87e8f
|
@ -184,8 +184,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
|
||||
protected String title;
|
||||
|
||||
private boolean boolChanges = false;
|
||||
|
||||
private int m_onlyCurrentDays = 0;
|
||||
|
||||
private Component parent;
|
||||
|
@ -1122,13 +1120,13 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
*/
|
||||
public void onExit(Callback<Boolean> callback)
|
||||
{
|
||||
if (!boolChanges)
|
||||
if (isPendingChanges())
|
||||
{
|
||||
callback.onCallback(Boolean.TRUE);
|
||||
FDialog.ask(curWindowNo, null, "CloseUnSave?", callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
FDialog.ask(curWindowNo, null, "CloseUnSave?", callback);
|
||||
callback.onCallback(Boolean.TRUE);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1497,14 +1495,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
if (adTabbox.getSelectedGridTab() != gridTab) detailTab = true;
|
||||
}
|
||||
|
||||
if (!detailTab)
|
||||
{
|
||||
String dbInfo = e.getMessage();
|
||||
if (logger.isLoggable(Level.INFO)) logger.info(dbInfo);
|
||||
if (adTabbox.getSelectedGridTab() != null && adTabbox.getSelectedGridTab().isQueryActive())
|
||||
dbInfo = "[ " + dbInfo + " ]";
|
||||
breadCrumb.setStatusDB(dbInfo, e, adTabbox.getSelectedGridTab());
|
||||
|
||||
String adInfo = e.getAD_Message();
|
||||
if ( adInfo == null
|
||||
|| GridTab.DEFAULT_STATUS_MESSAGE.equals(adInfo)
|
||||
|
@ -1516,8 +1506,12 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
) {
|
||||
|
||||
String prefix = null;
|
||||
if (dbInfo.contains("*") || dbInfo.contains("?")) // ? used when not-autosave
|
||||
if (adTabbox.needSave(true, false) ||
|
||||
adTabbox.getSelectedGridTab().isNew() ||
|
||||
(adTabbox.getSelectedDetailADTabpanel() != null && adTabbox.getSelectedDetailADTabpanel().getGridTab().isNew())) {
|
||||
// same condition as enableSave below
|
||||
prefix = "*";
|
||||
}
|
||||
|
||||
String titleLogic = null;
|
||||
int windowID = getADTab().getSelectedGridTab().getAD_Window_ID();
|
||||
|
@ -1560,6 +1554,14 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
|
||||
SessionManager.getAppDesktop().setTabTitle(header, curWindowNo);
|
||||
}
|
||||
|
||||
if (!detailTab)
|
||||
{
|
||||
String dbInfo = e.getMessage();
|
||||
if (logger.isLoggable(Level.INFO)) logger.info(dbInfo);
|
||||
if (adTabbox.getSelectedGridTab() != null && adTabbox.getSelectedGridTab().isQueryActive())
|
||||
dbInfo = "[ " + dbInfo + " ]";
|
||||
breadCrumb.setStatusDB(dbInfo, e, adTabbox.getSelectedGridTab());
|
||||
}
|
||||
else if (adTabbox.getSelectedDetailADTabpanel() == null)
|
||||
{
|
||||
|
@ -1711,9 +1713,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
boolean deleteRecord = !readOnly;
|
||||
if (!detailTab)
|
||||
{
|
||||
// update Change
|
||||
boolChanges = changed;
|
||||
|
||||
if (insertRecord)
|
||||
{
|
||||
insertRecord = tabPanel.getGridTab().isInsertRecord();
|
||||
|
@ -3663,7 +3662,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
}
|
||||
|
||||
public boolean isPendingChanges() {
|
||||
return boolChanges;
|
||||
return adTabbox.getDirtyADTabpanel() != null;
|
||||
}
|
||||
|
||||
public void setADWindow(ADWindow adwindow) {
|
||||
|
|
Loading…
Reference in New Issue