IDEMPIERE-583 Delete Selection Panel improvement. Drop the delete selection button and just leave the delete button which will work on actual record on form mode and on selected records on grid mode (or actual if none selected).

This commit is contained in:
Heng Sin Low 2013-11-07 05:31:15 +08:00
parent 0c936fe980
commit 3bb87436f3
8 changed files with 96 additions and 45 deletions

View File

@ -0,0 +1,11 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- Nov 6, 2013 11:59:02 PM MYT
-- IDEMPIERE-583 Delete Selection Panel improvement.
UPDATE AD_ToolBarButton SET IsActive='N',Updated=TO_DATE('2013-11-06 23:59:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200034
;
SELECT register_migration_script('201311061603_IDEMPIERE-583.sql') FROM dual
;

View File

@ -0,0 +1,9 @@
-- Nov 6, 2013 11:59:02 PM MYT
-- IDEMPIERE-583 Delete Selection Panel improvement.
UPDATE AD_ToolBarButton SET IsActive='N',Updated=TO_TIMESTAMP('2013-11-06 23:59:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200034
;
SELECT register_migration_script('201311061603_IDEMPIERE-583.sql') FROM dual
;

View File

@ -3239,6 +3239,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
} }
public void addToSelection(int rowIndex) { public void addToSelection(int rowIndex) {
if (!selection.contains(rowIndex))
selection.add(rowIndex); selection.add(rowIndex);
} }

View File

@ -79,7 +79,7 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
private ToolBarButton btnIgnore; private ToolBarButton btnIgnore;
private ToolBarButton btnHelp, btnNew, btnCopy, btnDelete, btnDeleteSelection, btnSave; private ToolBarButton btnHelp, btnNew, btnCopy, btnDelete, btnSave;
private ToolBarButton btnSaveAndCreate; // Elaine 2009/03/02 - Save & Create private ToolBarButton btnSaveAndCreate; // Elaine 2009/03/02 - Save & Create
@ -155,7 +155,6 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
btnCopy.setTooltiptext(btnCopy.getTooltiptext()+ " Alt+C"); btnCopy.setTooltiptext(btnCopy.getTooltiptext()+ " Alt+C");
btnDelete = createButton("Delete", "Delete", "Delete"); btnDelete = createButton("Delete", "Delete", "Delete");
btnDelete.setTooltiptext(btnDelete.getTooltiptext()+ " Alt+D"); btnDelete.setTooltiptext(btnDelete.getTooltiptext()+ " Alt+D");
btnDeleteSelection = createButton("DeleteSelection", "DeleteSelection", "DeleteSelection");
btnSave = createButton("Save", "Save", "Save"); btnSave = createButton("Save", "Save", "Save");
btnSave.setTooltiptext(btnSave.getTooltiptext()+ " Alt+S"); btnSave.setTooltiptext(btnSave.getTooltiptext()+ " Alt+S");
btnSaveAndCreate = createButton("SaveCreate", "SaveCreate", "SaveCreate"); btnSaveAndCreate = createButton("SaveCreate", "SaveCreate", "SaveCreate");
@ -429,11 +428,6 @@ public class ADWindowToolbar extends FToolbar implements EventListener<Event>
return !btnDelete.isDisabled(); return !btnDelete.isDisabled();
} }
public void enableDeleteSelection(boolean enabled)
{
this.btnDeleteSelection.setDisabled(!enabled);
}
public void enableIgnore(boolean enabled) public void enableIgnore(boolean enabled)
{ {
this.btnIgnore.setDisabled(!enabled); this.btnIgnore.setDisabled(!enabled);

View File

@ -959,14 +959,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
//Deepak-Enabling customize button IDEMPIERE-364 //Deepak-Enabling customize button IDEMPIERE-364
if(!(adTabbox.getSelectedTabpanel() instanceof ADSortTab)) if(!(adTabbox.getSelectedTabpanel() instanceof ADSortTab))
toolbar.enableCustomize(((ADTabpanel)adTabbox.getSelectedTabpanel()).isGridView()); toolbar.enableCustomize(((ADTabpanel)adTabbox.getSelectedTabpanel()).isGridView());
if (adTabbox.getSelectedTabpanel().isGridView())
{
toolbar.enableDeleteSelection(toolbar.isDeleteEnable());
}
else
{
toolbar.enableDeleteSelection(false);
}
focusToActivePanel(); focusToActivePanel();
} }
@ -1445,7 +1437,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableCopy(!changed && insertRecord && !tabPanel.getGridTab().isSortTab() && adTabbox.getSelectedGridTab().getRowCount()>0); toolbar.enableCopy(!changed && insertRecord && !tabPanel.getGridTab().isSortTab() && adTabbox.getSelectedGridTab().getRowCount()>0);
toolbar.enableRefresh(!changed); toolbar.enableRefresh(!changed);
toolbar.enableDelete(!changed && !readOnly && !tabPanel.getGridTab().isSortTab() && !processed); toolbar.enableDelete(!changed && !readOnly && !tabPanel.getGridTab().isSortTab() && !processed);
toolbar.enableDeleteSelection(!changed && !readOnly && !tabPanel.getGridTab().isSortTab() && !processed && tabPanel.isGridView());
// //
if (readOnly && adTabbox.getSelectedGridTab().isAlwaysUpdateField()) if (readOnly && adTabbox.getSelectedGridTab().isAlwaysUpdateField())
{ {
@ -1491,7 +1482,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableNew(true); toolbar.enableNew(true);
toolbar.enableCopy(false); toolbar.enableCopy(false);
toolbar.enableDelete(false); toolbar.enableDelete(false);
toolbar.enableDeleteSelection(false);
} }
// Transaction info // Transaction info
@ -1669,7 +1659,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableNew(false); toolbar.enableNew(false);
toolbar.enableCopy(false); toolbar.enableCopy(false);
toolbar.enableDelete(false); toolbar.enableDelete(false);
toolbar.enableDeleteSelection(false);
breadCrumb.enableFirstNavigation(adTabbox.getSelectedGridTab().getCurrentRow() > 0); breadCrumb.enableFirstNavigation(adTabbox.getSelectedGridTab().getCurrentRow() > 0);
breadCrumb.enableLastNavigation(adTabbox.getSelectedGridTab().getCurrentRow() + 1 < adTabbox.getSelectedGridTab().getRowCount()); breadCrumb.enableLastNavigation(adTabbox.getSelectedGridTab().getCurrentRow() + 1 < adTabbox.getSelectedGridTab().getRowCount());
toolbar.enableTabNavigation(breadCrumb.hasParentLink(), adTabbox.getSelectedDetailADTabpanel() != null); toolbar.enableTabNavigation(breadCrumb.hasParentLink(), adTabbox.getSelectedDetailADTabpanel() != null);
@ -1718,7 +1707,6 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableNew(false); toolbar.enableNew(false);
toolbar.enableCopy(false); toolbar.enableCopy(false);
toolbar.enableDelete(false); toolbar.enableDelete(false);
toolbar.enableDeleteSelection(false);
breadCrumb.enableFirstNavigation(adTabbox.getSelectedGridTab().getCurrentRow() > 0); breadCrumb.enableFirstNavigation(adTabbox.getSelectedGridTab().getCurrentRow() > 0);
breadCrumb.enableLastNavigation(adTabbox.getSelectedGridTab().getCurrentRow() + 1 < adTabbox.getSelectedGridTab().getRowCount()); breadCrumb.enableLastNavigation(adTabbox.getSelectedGridTab().getCurrentRow() + 1 < adTabbox.getSelectedGridTab().getRowCount());
toolbar.enableTabNavigation(false); toolbar.enableTabNavigation(false);
@ -2048,6 +2036,14 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
return; return;
} }
//delete selected if it is grid view and row selection
final int[] indices = adTabbox.getSelectedGridTab().getSelection();
if (indices.length > 0 && adTabbox.getSelectedTabpanel().isGridView())
{
onDeleteSelected();
return;
}
FDialog.ask(curWindowNo, null, "DeleteRecord?", new Callback<Boolean>() { FDialog.ask(curWindowNo, null, "DeleteRecord?", new Callback<Boolean>() {
@Override @Override
@ -2067,10 +2063,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
} }
// Elaine 2008/12/01 // Elaine 2008/12/01
/** private void onDeleteSelected()
* @see ToolbarListener#onDelete()
*/
public void onDeleteSelection()
{ {
if (adTabbox.getSelectedGridTab().isReadOnly() || !adTabbox.getSelectedTabpanel().isGridView()) if (adTabbox.getSelectedGridTab().isReadOnly() || !adTabbox.getSelectedTabpanel().isGridView())
{ {

View File

@ -18,6 +18,7 @@
package org.adempiere.webui.adwindow; package org.adempiere.webui.adwindow;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -144,10 +145,18 @@ public class CompositeADTabbox extends AbstractADTabbox
}); });
} }
else if (DetailPane.ON_DELETE_EVENT.equals(event.getName())) { else if (DetailPane.ON_DELETE_EVENT.equals(event.getName())) {
onDelete();
}
}
private void onDelete() {
if (headerTab.getGridTab().isNew()) return; if (headerTab.getGridTab().isNew()) return;
final IADTabpanel tabPanel = getSelectedDetailADTabpanel(); final IADTabpanel tabPanel = getSelectedDetailADTabpanel();
if (tabPanel != null && tabPanel.getGridTab().getRowCount() > 0 if (tabPanel != null && tabPanel.getGridTab().getSelection().length > 0) {
onDeleteSelected(tabPanel);
}
else if (tabPanel != null && tabPanel.getGridTab().getRowCount() > 0
&& tabPanel.getGridTab().getCurrentRow() >= 0) { && tabPanel.getGridTab().getCurrentRow() >= 0) {
FDialog.ask(tabPanel.getGridTab().getWindowNo(), null, "DeleteRecord?", new Callback<Boolean>() { FDialog.ask(tabPanel.getGridTab().getWindowNo(), null, "DeleteRecord?", new Callback<Boolean>() {
@ -163,6 +172,40 @@ public class CompositeADTabbox extends AbstractADTabbox
}); });
} }
} }
private void onDeleteSelected(final IADTabpanel tabPanel) {
if (tabPanel == null || tabPanel.getGridTab() == null) return;
final int[] indices = tabPanel.getGridTab().getSelection();
if(indices.length > 0) {
StringBuilder sb = new StringBuilder();
sb.append(Env.getContext(Env.getCtx(), tabPanel.getGridTab().getWindowNo(), "_WinInfo_WindowName", false)).append(" - ")
.append(indices.length).append(" ").append(Msg.getMsg(Env.getCtx(), "Selected"));
FDialog.ask(sb.toString(), tabPanel.getGridTab().getWindowNo(), null,"DeleteSelection", new Callback<Boolean>() {
@Override
public void onCallback(Boolean result) {
if(result){
tabPanel.getGridTab().clearSelection();
Arrays.sort(indices);
int offset = 0;
int count = 0;
for (int i = 0; i < indices.length; i++)
{
tabPanel.getGridTab().navigate(indices[i]-offset);
if (tabPanel.getGridTab().dataDelete())
{
offset++;
count++;
}
}
tabPanel.refresh();
tabPanel.dynamicDisplay(0);
adWindowPanel.getStatusBar().setStatusLine(Msg.getMsg(Env.getCtx(), "Deleted")+": "+count, false);
}
}
});
}
} }
}); });

View File

@ -309,6 +309,8 @@ public class GridView extends Vbox implements EventListener<Event>, IdSpace, IFi
listbox.setModel(listModel); listbox.setModel(listModel);
updateListIndex(); updateListIndex();
refreshing = false; refreshing = false;
if (gridTab.getRowCount() == 0 && selectAll.isChecked())
selectAll.setChecked(false);
} }
} }
@ -867,6 +869,9 @@ public class GridView extends Vbox implements EventListener<Event>, IdSpace, IFi
boolean noData = gridTab.getRowCount() == 0; boolean noData = gridTab.getRowCount() == 0;
List<WEditor> list = renderer.getEditors(); List<WEditor> list = renderer.getEditors();
dynamicDisplayEditors(noData, list); // all components dynamicDisplayEditors(noData, list); // all components
if (gridTab.getRowCount() == 0 && selectAll.isChecked())
selectAll.setChecked(false);
} }
private void dynamicDisplayEditors(boolean noData, List<WEditor> list) { private void dynamicDisplayEditors(boolean noData, List<WEditor> list) {

View File

@ -95,11 +95,6 @@ public interface ToolbarListener
*/ */
public void onDelete(); public void onDelete();
/**
* Delete selected record(s)
*/
public void onDeleteSelection();
/** /**
* Save current record * Save current record
*/ */