diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java index 671ef443da..be4b0ce5df 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java @@ -316,4 +316,12 @@ public class WButtonEditor extends WEditor implements IProcessButton public IADTabpanel getADTabpanel() { return adTabpanel; } + + /* (non-Javadoc) + * @see org.adempiere.webui.editor.WEditor#isSearchable() + */ + @Override + public boolean isSearchable() { + return false; + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChartEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChartEditor.java index b472da5636..36f7445142 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChartEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WChartEditor.java @@ -169,6 +169,14 @@ public class WChartEditor extends WEditor super.dynamicDisplay(); createChart(); } + + /* (non-Javadoc) + * @see org.adempiere.webui.editor.WEditor#isSearchable() + */ + @Override + public boolean isSearchable() { + return false; + } /* (non-Javadoc) * @see org.adempiere.webui.editor.WEditor#setFieldStyle(java.lang.String) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java index 194bd41698..28118f43c1 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java @@ -637,6 +637,13 @@ public abstract class WEditor implements EventListener, PropertyChangeLis component.setStyle(style); } } + + /** + * @return true if usable in find window, false otherwise + */ + public boolean isSearchable() { + return true; + } protected String buildStyle(int AD_Style_ID) { MStyle style = MStyle.get(Env.getCtx(), AD_Style_ID); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index 7d34163f81..8c90596612 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -317,7 +317,7 @@ public class FindWindow extends Window implements EventListener, ValueCha { for(int i = 0; i < findFields.length; i++) { - if (findFields[i].getAD_Field_ID() != m_findFields[i].getAD_Field_ID()) return false; + if (m_findFields[i] != null && findFields[i].getAD_Field_ID() != m_findFields[i].getAD_Field_ID()) return false; } } @@ -714,6 +714,7 @@ public class FindWindow extends Window implements EventListener, ValueCha m_findFields[i] = findField; mField = findField; } + if (mField.isSelectionColumn()) { gridFieldList.add(mField); // isSelectionColumn } else { @@ -756,9 +757,11 @@ public class FindWindow extends Window implements EventListener, ValueCha } }); + List excludes = new ArrayList(); // adding sorted columns for(GridField field:gridFieldList){ - addSelectionColumn (field); + if (!addSelectionColumn (field)) + excludes.add(field); } //add ... link to show the rest of the columns @@ -770,11 +773,23 @@ public class FindWindow extends Window implements EventListener, ValueCha cell.setColspan(3); cell.setAlign("left"); for(GridField field:moreFieldList){ - addSelectionColumn (field, rowg); + if (!addSelectionColumn (field, rowg)) + excludes.add(field); } rowg.setOpen(false); } + if (!excludes.isEmpty()) { + for(GridField field : excludes) { + for(int i = 0; i < m_findFields.length; i++) { + if (m_findFields[i] == field) { + m_findFields[i] = null; + break; + } + } + } + } + if (m_sEditors.isEmpty()) { Tabpanel tabPanel = winMain.getComponent().getTabpanel(0); tabPanel.getLinkedTab().setVisible(false); @@ -1004,6 +1019,7 @@ public class FindWindow extends Window implements EventListener, ValueCha for (int c = 0; c < m_findFields.length; c++) { GridField field = m_findFields[c]; + if (field == null) continue; String columnName = field.getColumnName(); String header = field.getHeader(); @@ -1073,16 +1089,16 @@ public class FindWindow extends Window implements EventListener, ValueCha * Add Selection Column to first Tab * @param mField field **/ - public void addSelectionColumn(GridField mField) + public boolean addSelectionColumn(GridField mField) { - addSelectionColumn(mField, null); + return addSelectionColumn(mField, null); } /** * Add Selection Column to first Tab * @param mField field **/ - public void addSelectionColumn(GridField mField, Group group) + public boolean addSelectionColumn(GridField mField, Group group) { if (log.isLoggable(Level.CONFIG)) log.config(mField.getHeader()); int displayLength = mField.getDisplayLength(); @@ -1095,6 +1111,9 @@ public class FindWindow extends Window implements EventListener, ValueCha WEditor editor = null; //false will use hflex which is render 1 pixel too width on firefox editor = WebEditorFactory.getEditor(mField, true); + if (!editor.isSearchable()) { + return false; + } editor.setMandatory(false); editor.setReadWrite(true); editor.dynamicDisplay(); @@ -1163,6 +1182,7 @@ public class FindWindow extends Window implements EventListener, ValueCha m_sEditors.add(editor); fieldEditor.addEventListener(Events.ON_OK,this); + return true; } // addSelectionColumn public void onEvent(Event event) throws Exception @@ -2043,7 +2063,7 @@ public class FindWindow extends Window implements EventListener, ValueCha for (int c = 0; c < m_findFields.length; c++) { GridField field = m_findFields[c]; - if (columnName.equals(field.getColumnName())) + if (field != null && columnName.equals(field.getColumnName())) return field; } return null;