From 7516e37f1f4c02d8ff649f57833bc45c35a9ef47 Mon Sep 17 00:00:00 2001 From: Juan David Arboleda Date: Mon, 17 Dec 2012 18:19:21 -0500 Subject: [PATCH] IDEMPIERE-379 Reporting wizard for end users / Refactor --- .../webui/apps/form/WReportCustomization.java | 27 +- .../webui/panel/WRC1DisplayFieldsPanel.java | 52 +-- .../webui/panel/WRC2FieldOrderPanel.java | 159 ++++---- .../webui/panel/WRC3SortCriteriaPanel.java | 347 +++++++++--------- .../panel/WRC4GroupingCriteriaPanel.java | 14 +- .../webui/panel/WRC5SummaryFieldsPanel.java | 25 +- .../adempiere/webui/panel/WRCTabPanel.java | 20 +- 7 files changed, 322 insertions(+), 322 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java index df49932e04..58fe8d7c29 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WReportCustomization.java @@ -16,6 +16,7 @@ package org.adempiere.webui.apps.form; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.StringWriter; +import java.util.ArrayList; import java.util.Properties; import java.util.logging.Level; @@ -82,7 +83,7 @@ public class WReportCustomization implements IFormController,EventListener pfi ; private Auxheader headerPanel=new Auxheader(); private Listbox comboReport = new Listbox(); @@ -140,7 +141,11 @@ public class WReportCustomization implements IFormController,EventListener() ; + for (MPrintFormatItem item : m_reportEngine.getPrintFormat().getAllItems("IsPrinted DESC, NULLIF(SeqNo,0), Name")) { + pfi.add(item); + } + try { m_ctx = m_reportEngine.getCtx(); @@ -229,6 +234,7 @@ public class WReportCustomization implements IFormController,EventListener listColumns=new ArrayList(); SimpleListModel sortModel; + private Listbox sortList; public WRC2FieldOrderPanel() { super(); @@ -59,13 +61,9 @@ public class WRC2FieldOrderPanel extends WRCTabPanel implements EventListener(); - if (m_pfi != null && m_pfi.length > 0) { - for (int i = 0; i < m_pfi.length; i++) { - if (m_pfi[i] != null && m_pfi[i].isPrinted()) { - listColumns.add(m_pfi[i]); - } - } - } + for (MPrintFormatItem item : m_pfi) + if(item!=null && item.isPrinted()) + listColumns.add(item); } public void init() @@ -100,37 +98,21 @@ public class WRC2FieldOrderPanel extends WRCTabPanel implements EventListener selObjects = new ArrayList(); int targetIndex = sortList.getIndexOfItem(targetItem); - ListElement targetElement = (ListElement) sortModel.getElementAt(targetIndex); - ListElement draggedElement = (ListElement) sortModel.getElementAt(draggedIndex); - - int firstposition=0, secondposition=0; - MPrintFormatItem targetPFI = null; - MPrintFormatItem draggedPFI = null; - for(int j=0 ;j selObjects) + { + int iniIndex =0; + Arrays.sort(selObjects.toArray()); + ListElement selObject= null; + ListElement endObject = (ListElement)sortModel.getElementAt(endIndex); + int targetPFISeq = 0; + MPrintFormatItem draggedPFI = null; + + for (ListElement selected : selObjects) { + iniIndex = sortModel.indexOf(selected); + selObject = (ListElement)sortModel.getElementAt(iniIndex); + draggedPFI =listColumns.get(iniIndex); + sortModel.removeElement(selObject); + listColumns.remove(draggedPFI); + endIndex = sortModel.indexOf(endObject); + targetPFISeq = listColumns.get(endIndex).getSeqNo(); + listColumns.add(endIndex, draggedPFI); + sortModel.add(endIndex, selObject); + draggedPFI.setSeqNo(targetPFISeq - 5); + } + } + @Override public void onEvent(Event event) throws Exception { @@ -194,26 +202,15 @@ public class WRC2FieldOrderPanel extends WRCTabPanel implements EventListener 0 && listColumns != null) { int seq = 10; sortModel.removeAllElements(); - for (int i=0; i @@ -53,15 +55,13 @@ public class WRC3SortCriteriaPanel extends WRCTabPanel implements EventListener private Button bRemove = new Button(); private Button bUp = new Button(); private Button bDown = new Button(); - - public ArrayList yesItems=new ArrayList(); - public ArrayList noItems=new ArrayList(); - // SimpleListModel noModel = new SimpleListModel(); SimpleListModel yesModel = new SimpleListModel(); Listbox noList = new Listbox(); Listbox yesList = new Listbox(); + ArrayList yesItems =new ArrayList(); + ArrayList noItems =new ArrayList(); public WRC3SortCriteriaPanel() { super(); @@ -110,59 +110,7 @@ public class WRC3SortCriteriaPanel extends WRCTabPanel implements EventListener noList.addOnDropListener(crossListMouseListener); yesList.setItemDraggable(true); noList.setItemDraggable(true); - - EventListener yesListMouseMotionListener = new EventListener() - { - public void onEvent(Event event) throws Exception { - if (event instanceof DropEvent) - { - DropEvent me = (DropEvent) event; - ListItem startItem = (ListItem) me.getDragged(); - ListItem endItem = (ListItem) me.getTarget(); - if (startItem.getListbox() == endItem.getListbox() && startItem.getListbox() == yesList) - { - int startIndex = yesList.getIndexOfItem(startItem); - int endIndex = yesList.getIndexOfItem(endItem); - ListElement endElement = (ListElement) yesModel.getElementAt(endIndex); - ListElement startElement = (ListElement) yesModel.getElementAt(startIndex); - yesModel.removeElement(startElement); - endIndex = yesModel.indexOf(endElement); - yesModel.add(endIndex, startElement); - yesList.setSelectedIndex(endIndex); - - int firstposition=0, secondposition=0; - MPrintFormatItem targetPFI = null; - MPrintFormatItem draggedPFI = null; - for(int j=0 ;j (); noItems =new ArrayList(); - if (m_pfi.length > 0 && m_pfi != null ) { - int seq = 10; - for(int i=0 ; i < m_pfi.length ; i++ ){ - if (m_pfi[i].isPrinted() && m_pfi[i] != null) { - if (m_pfi[i].isOrderBy()) { - m_pfi[i].setSortNo(seq); - seq=seq+10; - yesItems.add(m_pfi[i]); - } else{ - noItems.add(m_pfi[i]); - } - } - } + for(int i=0 ; i< m_pfi.size();i++){ + MPrintFormatItem item = m_pfi.get(i); + if(item!=null && item.isPrinted()){ + if(item.isOrderBy()){ + yesItems.add(item); + }else{ + noItems.add(item); + } + } } - Collections.sort(yesItems, new Comparator() { @Override public int compare(MPrintFormatItem o1, MPrintFormatItem o2) { return o1.getSortNo()-o2.getSortNo(); } }); - + } + + @Override + public void refresh() { + + this.setListsColumns(); yesList.removeAllItems(); noList.removeAllItems(); if (yesItems.size() > 0 && yesItems != null) { yesModel.removeAllElements(); - for (int i=0 ; i < yesItems.size() ; i++) { - MPrintFormatItem pfi = yesItems.get(i); - if (pfi != null) { - int ID= pfi.get_ID(); - String name =pfi.getPrintName(); - if(name == null) - name=pfi.getName(); - KeyNamePair pair =new KeyNamePair(ID, name); - yesList.addItem(pair); - ListElement element =new ListElement(pfi.get_ID(), pfi.getName(), pfi.getSortNo(), true, pfi.getAD_Client_ID(), pfi.getAD_Org_ID()); - yesModel.addElement(element); - } + for (int i=0 ; i < yesItems.size() ; i++) { + int ID= yesItems.get(i).get_ID(); + String name = yesItems.get(i).getPrintName()==null? yesItems.get(i).getName():yesItems.get(i).getPrintName(); + yesList.addItem(new KeyNamePair(ID, name)); + yesModel.addElement(new ListElement(ID, name, yesItems.get(i).getSortNo(), true, yesItems.get(i).getAD_Client_ID(), yesItems.get(i).getAD_Org_ID())); } } - + if (noItems.size() > 0 && noItems != null) { noModel.removeAllElements(); for (int i=0 ; i < noItems.size() ; i++) { - MPrintFormatItem pfi = noItems.get(i); - if (pfi != null) { - int ID= pfi.get_ID(); - pfi.setSortNo(0); - pfi.setIsOrderBy(false); - String name =pfi.getPrintName(); - if(name == null) - name=pfi.getName(); - KeyNamePair pair =new KeyNamePair(ID, name); - noList.addItem(pair); - ListElement element =new ListElement(pfi.get_ID(), pfi.getName(), pfi.getSortNo(), false, pfi.getAD_Client_ID(), pfi.getAD_Org_ID()); - noModel.add(i,element); - } + int ID= noItems.get(i).get_ID(); + String name = noItems.get(i).getPrintName()== null ? noItems.get(i).getName() : noItems.get(i).getPrintName(); + noItems.get(i).setSortNo(0); + noItems.get(i).setIsOrderBy(false); + noList.addItem(new KeyNamePair(ID, name)); + noModel.add(i,new ListElement(ID, name, noItems.get(i).getSortNo(), false, noItems.get(i).getAD_Client_ID(), noItems.get(i).getAD_Org_ID())); } } } @@ -302,45 +235,104 @@ public class WRC3SortCriteriaPanel extends WRCTabPanel implements EventListener } Listbox listFrom = (source == bAdd || source == noList) ? noList : yesList; Listbox listTo = (source == bAdd || source == noList) ? yesList : noList; - SimpleListModel lmFrom = (source == bAdd || source == noList) ? - noModel : yesModel; - SimpleListModel lmTo = (lmFrom == yesModel) ? noModel : yesModel; + + int endIndex = yesList.getIndexOfItem(listTo.getSelectedItem()); + //Listto is empty. + if (endIndex<0 ) + endIndex=0; + + migrateLists (listFrom,listTo,endIndex); + } // migrateValueAcrossLists + + void migrateLists (Listbox listFrom , Listbox listTo , int endIndex) + { + int index = 0; + SimpleListModel lmFrom = (listFrom == yesList) ? yesModel:noModel; + SimpleListModel lmTo = (lmFrom == yesModel) ? noModel:yesModel; Set selectedItems = listFrom.getSelectedItems(); List selObjects = new ArrayList(); for (Object obj : selectedItems) { ListItem listItem = (ListItem) obj; - int index = listFrom.getIndexOfItem(listItem); + index = listFrom.getIndexOfItem(listItem); ListElement selObject = (ListElement)lmFrom.getElementAt(index); selObjects.add(selObject); } + index = 0; + boolean reOrder = false; + Arrays.sort(selObjects.toArray()); for (ListElement selObject : selObjects) { if (selObject == null) continue; lmFrom.removeElement(selObject); - lmTo.addElement(selObject); - - for (int j=0 ; j pp = new ArrayList(); + for(int i=0 ; i() { + @Override + public int compare(ListElement o1, ListElement o2) { + return o1.getSortNo()-o2.getSortNo(); + } + }); + for(ListElement ele : pp) { + int auxIndex = m_pfi.indexOf(getPrintFormatItem(ele.m_key)); + m_pfi.get(auxIndex).setSortNo(sortNo); + sortNo = sortNo + 10; + } + wc.setIsChanged(true); + } refresh(); if ( listTo.getSelectedItem() != null) { AuFocus focus = new AuFocus(listTo.getSelectedItem()); Clients.response(focus); } - - } // migrateValueAcrossLists + } + + /** + * Move within Yes List with Drag Event and Multiple Choice + * @param event event + */ + void migrateValueWithinYesList (int endIndex, List selObjects) + { + int iniIndex =0; + Arrays.sort(selObjects.toArray()); + ListElement selObject= null; + ListElement endObject = (ListElement)yesModel.getElementAt(endIndex); + for (ListElement selected : selObjects) { + iniIndex = yesModel.indexOf(selected); + selObject = (ListElement)yesModel.getElementAt(iniIndex); + yesModel.removeElement(selObject); + endIndex = yesModel.indexOf(endObject); + yesModel.add(endIndex, selObject); + } + int sortNo = 10; + int auxIndex =0; + yesList.removeAllItems(); + for(int i=0 ; i selObjects = new ArrayList(); + endIndex = yesList.getIndexOfItem(endItem); + for (Object obj : yesList.getSelectedItems()) { + ListItem listItem = (ListItem) obj; + int index = yesList.getIndexOfItem(listItem); + ListElement selObject = (ListElement)yesModel.getElementAt(index); + selObjects.add(selObject); } + migrateValueWithinYesList (endIndex, selObjects); } - wc.setIsChanged(true); - } - - refresh(); - // - noList.clearSelection(); - yesList.clearSelection(); - - yesList.setSelectedIndex(endIndex); - - } - } + } + } + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java index 5025386c66..d9632c197b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WRC4GroupingCriteriaPanel.java @@ -48,9 +48,9 @@ public class WRC4GroupingCriteriaPanel extends WRCTabPanel implements EventListe @Override public void refresh() { orderfield = new ArrayList(); - for(int i=0 ; i < m_pfi.length ; i++){ - if(m_pfi[i] != null && m_pfi[i].isOrderBy() && m_pfi[i].isPrinted()){ - orderfield.add(m_pfi[i]); + for(int i=0 ; i < m_pfi.size(); i++){ + if(m_pfi.get(i) != null && m_pfi.get(i).isOrderBy() && m_pfi.get(i).isPrinted()){ + orderfield.add(m_pfi.get(i)); } } dynamicInit(); @@ -59,11 +59,8 @@ public class WRC4GroupingCriteriaPanel extends WRCTabPanel implements EventListe @Override public void updatePFI() { for(int i=0 ; i(); - for(int i=0 ; i m_pfi; public MPrintFormat m_pf; public WReportCustomization wc; + public Map mapPFormatItem = new HashMap(); public abstract void refresh(); @@ -35,14 +42,21 @@ public abstract class WRCTabPanel extends Tabpanel { public void setMPrintFormat(MPrintFormat pf) { m_pf=pf; + for (MPrintFormatItem item : m_pf.getAllItems() ){ + mapPFormatItem.put(item.get_ID(), item); + } } - public void setPrintFormatItems(MPrintFormatItem[] pfis) { + public void setPrintFormatItems(ArrayList pfis) { m_pfi = pfis; } public void setWReportCustomization(WReportCustomization parent){ wc=parent; } - + + public MPrintFormatItem getPrintFormatItem(int AD_PrintFormatItem_ID) { + return mapPFormatItem.get(AD_PrintFormatItem_ID); + } + }