IDEMPIERE-583 Delete Selection Panel improvement.
This commit is contained in:
parent
80f2dee5e9
commit
c05b7485e5
|
@ -145,10 +145,10 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
m_mTable = new GridTable (m_vo.ctx, m_vo.AD_Table_ID, m_vo.TableName, m_vo.WindowNo, m_vo.TabNo, true, virtual);
|
m_mTable = new GridTable (m_vo.ctx, m_vo.AD_Table_ID, m_vo.TableName, m_vo.WindowNo, m_vo.TabNo, true, virtual);
|
||||||
m_mTable.setReadOnly(m_vo.IsReadOnly || m_vo.IsView);
|
m_mTable.setReadOnly(m_vo.IsReadOnly || m_vo.IsView);
|
||||||
m_mTable.setDeleteable(m_vo.IsDeleteable);
|
m_mTable.setDeleteable(m_vo.IsDeleteable);
|
||||||
// Load Tab
|
|
||||||
//initTab(false);
|
selection = new ArrayList<Integer>();
|
||||||
} // GridTab
|
} // GridTab
|
||||||
|
|
||||||
/** Value Object */
|
/** Value Object */
|
||||||
private GridTabVO m_vo;
|
private GridTabVO m_vo;
|
||||||
|
|
||||||
|
@ -210,6 +210,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
|
|
||||||
private String m_parsedWhere;
|
private String m_parsedWhere;
|
||||||
|
|
||||||
|
//Contains currently selected rows
|
||||||
|
private ArrayList<Integer> selection = null;
|
||||||
|
|
||||||
// Context property names:
|
// Context property names:
|
||||||
public static final String CTX_KeyColumnName = "_TabInfo_KeyColumnName";
|
public static final String CTX_KeyColumnName = "_TabInfo_KeyColumnName";
|
||||||
public static final String CTX_LinkColumnName = "_TabInfo_LinkColumnName";
|
public static final String CTX_LinkColumnName = "_TabInfo_LinkColumnName";
|
||||||
|
@ -616,6 +619,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
|
|
||||||
Env.clearTabContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo);
|
Env.clearTabContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo);
|
||||||
|
|
||||||
|
selection.clear();
|
||||||
|
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo
|
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo
|
||||||
+ " - Only Current Rows=" + onlyCurrentRows
|
+ " - Only Current Rows=" + onlyCurrentRows
|
||||||
+ ", Days=" + onlyCurrentDays + ", Detail=" + isDetail());
|
+ ", Days=" + onlyCurrentDays + ", Detail=" + isDetail());
|
||||||
|
@ -745,6 +750,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
}
|
}
|
||||||
// Go to Record 0
|
// Go to Record 0
|
||||||
setCurrentRow(0, true);
|
setCurrentRow(0, true);
|
||||||
|
|
||||||
|
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_QUERY));
|
||||||
} // query
|
} // query
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -937,6 +944,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
public void dataRefreshAll (boolean fireEvent, boolean retainedCurrentRow)
|
public void dataRefreshAll (boolean fireEvent, boolean retainedCurrentRow)
|
||||||
{
|
{
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo);
|
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo);
|
||||||
|
selection.clear();
|
||||||
/** @todo does not work with alpha key */
|
/** @todo does not work with alpha key */
|
||||||
int keyNo = m_mTable.getKeyID(m_currentRow);
|
int keyNo = m_mTable.getKeyID(m_currentRow);
|
||||||
m_mTable.dataRefreshAll(fireEvent, retainedCurrentRow ? m_currentRow : -1);
|
m_mTable.dataRefreshAll(fireEvent, retainedCurrentRow ? m_currentRow : -1);
|
||||||
|
@ -1175,6 +1183,9 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
if (isDetail() && m_parentNeedSave)
|
if (isDetail() && m_parentNeedSave)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!selection.isEmpty())
|
||||||
|
clearSelection();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* temporary set currentrow to point to the new row to ensure even cause by m_mTable.dataNew
|
* temporary set currentrow to point to the new row to ensure even cause by m_mTable.dataNew
|
||||||
* is handle properly.
|
* is handle properly.
|
||||||
|
@ -1196,7 +1207,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
getField(i).refreshLookup();
|
getField(i).refreshLookup();
|
||||||
getField(i).validateValue();
|
getField(i).validateValue();
|
||||||
}
|
}
|
||||||
m_mTable.setChanged(false);
|
m_mTable.setChanged(false);
|
||||||
|
|
||||||
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_NEW));
|
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_NEW));
|
||||||
return retValue;
|
return retValue;
|
||||||
|
@ -1211,6 +1222,19 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo + " - row=" + m_currentRow);
|
if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo + " - row=" + m_currentRow);
|
||||||
boolean retValue = m_mTable.dataDelete(m_currentRow);
|
boolean retValue = m_mTable.dataDelete(m_currentRow);
|
||||||
setCurrentRow(m_currentRow, true);
|
setCurrentRow(m_currentRow, true);
|
||||||
|
if (!selection.isEmpty())
|
||||||
|
{
|
||||||
|
List<Integer> tmp = new ArrayList<Integer>();
|
||||||
|
for(Integer i : selection)
|
||||||
|
{
|
||||||
|
if (i.intValue() == m_currentRow)
|
||||||
|
continue;
|
||||||
|
else if (i.intValue() > m_currentRow)
|
||||||
|
tmp.add(i.intValue()-1);
|
||||||
|
else
|
||||||
|
tmp.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_DELETE));
|
fireStateChangeEvent(new StateChangeEvent(this, StateChangeEvent.DATA_DELETE));
|
||||||
return retValue;
|
return retValue;
|
||||||
} // dataDelete
|
} // dataDelete
|
||||||
|
@ -3202,4 +3226,33 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
public boolean isNew() {
|
public boolean isNew() {
|
||||||
return isOpen() && getCurrentRow() >= 0 && getCurrentRow() == m_mTable.getNewRow();
|
return isOpen() && getCurrentRow() >= 0 && getCurrentRow() == m_mTable.getNewRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addToSelection(int rowIndex) {
|
||||||
|
selection.add(rowIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removeFromSelection(int rowIndex) {
|
||||||
|
return selection.remove((Integer)rowIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getSelection()
|
||||||
|
{
|
||||||
|
int[] selected = new int[selection.size()];
|
||||||
|
int i = 0;
|
||||||
|
for(Integer row : selection)
|
||||||
|
{
|
||||||
|
selected[i++] = row.intValue();
|
||||||
|
}
|
||||||
|
return selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSelected(int rowIndex)
|
||||||
|
{
|
||||||
|
return selection.contains((Integer)rowIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearSelection()
|
||||||
|
{
|
||||||
|
selection.clear();
|
||||||
|
}
|
||||||
} // GridTab
|
} // GridTab
|
||||||
|
|
|
@ -23,10 +23,9 @@ import java.util.EventObject;
|
||||||
public class StateChangeEvent extends EventObject {
|
public class StateChangeEvent extends EventObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* generated serial id
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 8536782772491762290L;
|
private static final long serialVersionUID = 8536782772491762290L;
|
||||||
@SuppressWarnings("unused")
|
|
||||||
private int eventType;
|
private int eventType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,5 +44,10 @@ public class StateChangeEvent extends EventObject {
|
||||||
public final static int DATA_DELETE = 3;
|
public final static int DATA_DELETE = 3;
|
||||||
public final static int DATA_SAVE = 4;
|
public final static int DATA_SAVE = 4;
|
||||||
public final static int DATA_IGNORE = 5;
|
public final static int DATA_IGNORE = 5;
|
||||||
|
public final static int DATA_QUERY = 6;
|
||||||
|
|
||||||
|
public int getEventType() {
|
||||||
|
return eventType;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue