IDEMPIERE-325 Complete AD based info window ( AD_InfoWindow ) implementation. Ported existing info product panel to the new ad_infowindow implementation.
This commit is contained in:
parent
d8ab6df543
commit
7cc4052caf
|
@ -68,7 +68,7 @@ public class MInfoColumn extends X_AD_InfoColumn
|
||||||
public boolean isColumnAccess(TableInfo[] tableInfos)
|
public boolean isColumnAccess(TableInfo[] tableInfos)
|
||||||
{
|
{
|
||||||
int index = getSelectClause().indexOf(".");
|
int index = getSelectClause().indexOf(".");
|
||||||
if (index == getSelectClause().lastIndexOf("."))
|
if (index == getSelectClause().lastIndexOf(".") && index >= 0)
|
||||||
{
|
{
|
||||||
String synonym = getSelectClause().substring(0, index);
|
String synonym = getSelectClause().substring(0, index);
|
||||||
String column = getSelectClause().substring(index+1);
|
String column = getSelectClause().substring(index+1);
|
||||||
|
|
|
@ -379,19 +379,29 @@ public class WListItemRenderer implements ListitemRenderer<Object>, EventListene
|
||||||
return;
|
return;
|
||||||
} // updateColumn
|
} // updateColumn
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param header
|
||||||
|
*/
|
||||||
|
public void addColumn(String header)
|
||||||
|
{
|
||||||
|
addColumn(header, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add Table Column.
|
* Add Table Column.
|
||||||
* after adding a column, you need to set the column classes again
|
* after adding a column, you need to set the column classes again
|
||||||
* (DefaultTableModel fires TableStructureChanged, which calls
|
* (DefaultTableModel fires TableStructureChanged, which calls
|
||||||
* JTable.tableChanged .. createDefaultColumnsFromModel
|
* JTable.tableChanged .. createDefaultColumnsFromModel
|
||||||
* @param header The header text for the column
|
* @param header The header text for the column
|
||||||
|
* @param description
|
||||||
*/
|
*/
|
||||||
public void addColumn(String header)
|
public void addColumn(String header, String description)
|
||||||
{
|
{
|
||||||
WTableColumn tableColumn;
|
WTableColumn tableColumn;
|
||||||
|
|
||||||
tableColumn = new WTableColumn();
|
tableColumn = new WTableColumn();
|
||||||
tableColumn.setHeaderValue(Util.cleanAmp(header));
|
tableColumn.setHeaderValue(Util.cleanAmp(header));
|
||||||
|
tableColumn.setTooltipText(description);
|
||||||
m_tableColumns.add(tableColumn);
|
m_tableColumns.add(tableColumn);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -427,12 +437,13 @@ public class WListItemRenderer implements ListitemRenderer<Object>, EventListene
|
||||||
* is used to set the header text.
|
* is used to set the header text.
|
||||||
*
|
*
|
||||||
* @param headerValue The object to use for generating the header text.
|
* @param headerValue The object to use for generating the header text.
|
||||||
|
* @param tooltipText
|
||||||
* @param headerIndex The column index of the header
|
* @param headerIndex The column index of the header
|
||||||
* @param classType
|
* @param classType
|
||||||
* @return The generated ListHeader
|
* @return The generated ListHeader
|
||||||
* @see #renderListHead(ListHead)
|
* @see #renderListHead(ListHead)
|
||||||
*/
|
*/
|
||||||
private Component getListHeaderComponent(Object headerValue, int headerIndex, Class<?> classType)
|
private Component getListHeaderComponent(Object headerValue, String tooltipText, int headerIndex, Class<?> classType)
|
||||||
{
|
{
|
||||||
ListHeader header = null;
|
ListHeader header = null;
|
||||||
|
|
||||||
|
@ -450,6 +461,10 @@ public class WListItemRenderer implements ListitemRenderer<Object>, EventListene
|
||||||
Comparator<Object> dscComparator = getColumnComparator(false, headerIndex);
|
Comparator<Object> dscComparator = getColumnComparator(false, headerIndex);
|
||||||
|
|
||||||
header = new ListHeader(headerText);
|
header = new ListHeader(headerText);
|
||||||
|
if (!Util.isEmpty(tooltipText))
|
||||||
|
{
|
||||||
|
header.setTooltiptext(tooltipText);
|
||||||
|
}
|
||||||
|
|
||||||
header.setSort("auto");
|
header.setSort("auto");
|
||||||
header.setSortAscending(ascComparator);
|
header.setSortAscending(ascComparator);
|
||||||
|
@ -471,7 +486,12 @@ public class WListItemRenderer implements ListitemRenderer<Object>, EventListene
|
||||||
if (width < 30)
|
if (width < 30)
|
||||||
width = 30;
|
width = 30;
|
||||||
}
|
}
|
||||||
else if (width > 0 && width < 100 && (classType == null || !classType.isAssignableFrom(Boolean.class)))
|
else if (classType.isAssignableFrom(Boolean.class))
|
||||||
|
{
|
||||||
|
if (width > 0 && width < 30)
|
||||||
|
width = 30;
|
||||||
|
}
|
||||||
|
else if (width > 0 && width < 100)
|
||||||
width = 100;
|
width = 100;
|
||||||
}
|
}
|
||||||
else if (width > 0 && width < 100)
|
else if (width > 0 && width < 100)
|
||||||
|
@ -567,7 +587,7 @@ public class WListItemRenderer implements ListitemRenderer<Object>, EventListene
|
||||||
for (int columnIndex = 0; columnIndex < m_tableColumns.size(); columnIndex++)
|
for (int columnIndex = 0; columnIndex < m_tableColumns.size(); columnIndex++)
|
||||||
{
|
{
|
||||||
column = m_tableColumns.get(columnIndex);
|
column = m_tableColumns.get(columnIndex);
|
||||||
header = getListHeaderComponent(column.getHeaderValue(), columnIndex, column.getColumnClass());
|
header = getListHeaderComponent(column.getHeaderValue(), column.getTooltipText(), columnIndex, column.getColumnClass());
|
||||||
head.appendChild(header);
|
head.appendChild(header);
|
||||||
}
|
}
|
||||||
head.setSizable(true);
|
head.setSizable(true);
|
||||||
|
|
|
@ -371,7 +371,7 @@ public class WListbox extends Listbox implements IMiniTable, TableValueChangeLis
|
||||||
}
|
}
|
||||||
|
|
||||||
// add to model
|
// add to model
|
||||||
addColumn(layout[columnIndex].getColHeader());
|
addColumn(layout[columnIndex].getColHeader(), layout[columnIndex].getColDescription());
|
||||||
|
|
||||||
// set the colour column
|
// set the colour column
|
||||||
if (layout[columnIndex].isColorColumn())
|
if (layout[columnIndex].isColorColumn())
|
||||||
|
@ -429,16 +429,25 @@ public class WListbox extends Listbox implements IMiniTable, TableValueChangeLis
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param header
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addColumn (String header)
|
||||||
|
{
|
||||||
|
addColumn(header, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add Table Column and specify the column header.
|
* Add Table Column and specify the column header.
|
||||||
*
|
*
|
||||||
* @param header name of column header
|
* @param header name of column header
|
||||||
|
* @param description
|
||||||
*/
|
*/
|
||||||
public void addColumn (String header)
|
public void addColumn (String header, String description)
|
||||||
{
|
{
|
||||||
WListItemRenderer renderer = (WListItemRenderer)getItemRenderer();
|
WListItemRenderer renderer = (WListItemRenderer)getItemRenderer();
|
||||||
renderer.addColumn(Util.cleanAmp(header));
|
renderer.addColumn(Util.cleanAmp(header), description);
|
||||||
getModel().addColumn();
|
getModel().addColumn();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -43,6 +43,8 @@ public class WTableColumn
|
||||||
|
|
||||||
protected Class<?> columnClass;
|
protected Class<?> columnClass;
|
||||||
|
|
||||||
|
protected String tooltipText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cover method, using a default width of 75
|
* Cover method, using a default width of 75
|
||||||
* @see #WTableColumn(int)
|
* @see #WTableColumn(int)
|
||||||
|
@ -272,4 +274,18 @@ public class WTableColumn
|
||||||
{
|
{
|
||||||
this.columnClass = columnClass;
|
this.columnClass = columnClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return tooltip text
|
||||||
|
*/
|
||||||
|
public String getTooltipText() {
|
||||||
|
return tooltipText;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tooltipText
|
||||||
|
*/
|
||||||
|
public void setTooltipText(String tooltipText) {
|
||||||
|
this.tooltipText = tooltipText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2013 Heng Sin Low *
|
||||||
|
* Copyright (C) 2013 Trek Global *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.adempiere.webui.info;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IWhereClauseEditor {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return where clause
|
||||||
|
*/
|
||||||
|
public String getWhereClause();
|
||||||
|
}
|
|
@ -11,12 +11,10 @@ import java.util.ArrayList;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.webui.AdempiereWebUI;
|
|
||||||
import org.adempiere.webui.component.Borderlayout;
|
import org.adempiere.webui.component.Borderlayout;
|
||||||
import org.adempiere.webui.component.Label;
|
import org.adempiere.webui.component.Button;
|
||||||
import org.adempiere.webui.component.ListItem;
|
import org.adempiere.webui.component.ConfirmPanel;
|
||||||
import org.adempiere.webui.component.ListModelTable;
|
import org.adempiere.webui.component.ListModelTable;
|
||||||
import org.adempiere.webui.component.Listbox;
|
|
||||||
import org.adempiere.webui.component.ListboxFactory;
|
import org.adempiere.webui.component.ListboxFactory;
|
||||||
import org.adempiere.webui.component.Tab;
|
import org.adempiere.webui.component.Tab;
|
||||||
import org.adempiere.webui.component.Tabbox;
|
import org.adempiere.webui.component.Tabbox;
|
||||||
|
@ -25,6 +23,10 @@ import org.adempiere.webui.component.Tabpanels;
|
||||||
import org.adempiere.webui.component.Tabs;
|
import org.adempiere.webui.component.Tabs;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
import org.adempiere.webui.component.WListbox;
|
import org.adempiere.webui.component.WListbox;
|
||||||
|
import org.adempiere.webui.editor.WEditor;
|
||||||
|
import org.adempiere.webui.event.DialogEvents;
|
||||||
|
import org.adempiere.webui.panel.InfoPAttributeInstancePanel;
|
||||||
|
import org.adempiere.webui.panel.InvoiceHistory;
|
||||||
import org.adempiere.webui.session.SessionManager;
|
import org.adempiere.webui.session.SessionManager;
|
||||||
import org.compiere.minigrid.ColumnInfo;
|
import org.compiere.minigrid.ColumnInfo;
|
||||||
import org.compiere.model.MDocType;
|
import org.compiere.model.MDocType;
|
||||||
|
@ -51,11 +53,6 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 4939032152860189380L;
|
private static final long serialVersionUID = 4939032152860189380L;
|
||||||
|
|
||||||
private Label lblWarehouse;
|
|
||||||
private Listbox pickWarehouse;
|
|
||||||
private Label lblPriceList;
|
|
||||||
private Listbox pickPriceList;
|
|
||||||
|
|
||||||
private Tabbox tabbedPane;
|
private Tabbox tabbedPane;
|
||||||
private WListbox warehouseTbl;
|
private WListbox warehouseTbl;
|
||||||
private String m_sqlWarehouse;
|
private String m_sqlWarehouse;
|
||||||
|
@ -77,6 +74,11 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
|
|
||||||
private Borderlayout contentBorderLayout;
|
private Borderlayout contentBorderLayout;
|
||||||
|
|
||||||
|
/** Instance Button */
|
||||||
|
private Button m_PAttributeButton;
|
||||||
|
|
||||||
|
protected int m_M_Locator_ID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param WindowNo
|
* @param WindowNo
|
||||||
* @param tableName
|
* @param tableName
|
||||||
|
@ -119,9 +121,23 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
protected void createParameterPanel() {
|
protected void createParameterPanel() {
|
||||||
super.createParameterPanel();
|
super.createParameterPanel();
|
||||||
initParameters();
|
initParameters();
|
||||||
addSearchParameter(lblWarehouse, pickWarehouse);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void renderWindow() {
|
||||||
|
super.renderWindow();
|
||||||
|
// Product Attribute Instance
|
||||||
|
m_PAttributeButton = confirmPanel.createButton(ConfirmPanel.A_PATTRIBUTE);
|
||||||
|
confirmPanel.addComponentsLeft(m_PAttributeButton);
|
||||||
|
m_PAttributeButton.setEnabled(false);
|
||||||
|
m_PAttributeButton.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
|
||||||
|
@Override
|
||||||
|
public void onEvent(Event event) throws Exception {
|
||||||
|
onPAttributeClick();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
m_PAttributeButton.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void renderContentPane(Center center) {
|
protected void renderContentPane(Center center) {
|
||||||
|
@ -262,7 +278,6 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
tabPanels.appendChild(desktopTabPanel);
|
tabPanels.appendChild(desktopTabPanel);
|
||||||
//
|
//
|
||||||
int height = SessionManager.getAppDesktop().getClientInfo().desktopHeight * 90 / 100;
|
int height = SessionManager.getAppDesktop().getClientInfo().desktopHeight * 90 / 100;
|
||||||
// int width = SessionManager.getAppDesktop().getClientInfo().desktopWidth * 80 / 100;
|
|
||||||
|
|
||||||
contentBorderLayout = new Borderlayout();
|
contentBorderLayout = new Borderlayout();
|
||||||
contentBorderLayout.setWidth("100%");
|
contentBorderLayout.setWidth("100%");
|
||||||
|
@ -293,15 +308,9 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
int row = contentPanel.getSelectedRow();
|
int row = contentPanel.getSelectedRow();
|
||||||
if (row >= 0) {
|
if (row >= 0) {
|
||||||
int M_Warehouse_ID = 0;
|
int M_Warehouse_ID = getSelectedWarehouseId();
|
||||||
ListItem listitem = pickWarehouse.getSelectedItem();
|
|
||||||
if (listitem != null)
|
|
||||||
M_Warehouse_ID = (Integer)listitem.getValue();
|
|
||||||
|
|
||||||
int M_PriceList_Version_ID = 0;
|
int M_PriceList_Version_ID = getSelectedPriceListVersionId();
|
||||||
listitem = pickPriceList.getSelectedItem();
|
|
||||||
if (listitem != null)
|
|
||||||
M_PriceList_Version_ID = (Integer)listitem.getValue();
|
|
||||||
|
|
||||||
for(int i = 0; i < columnInfos.length; i++) {
|
for(int i = 0; i < columnInfos.length; i++) {
|
||||||
if (columnInfos[i].getGridField() != null && columnInfos[i].getGridField().getColumnName().equals("Value")) {
|
if (columnInfos[i].getGridField() != null && columnInfos[i].getGridField().getColumnName().equals("Value")) {
|
||||||
|
@ -310,79 +319,84 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Object value = contentPanel.getValueAt(row, findColumnIndex("IsInstanceAttribute"));
|
||||||
|
if (value != null && value.toString().equals("true")) {
|
||||||
|
m_PAttributeButton.setEnabled(true);
|
||||||
|
} else {
|
||||||
|
m_PAttributeButton.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onPAttributeClick() {
|
||||||
|
Integer productInteger = getSelectedRowKey();
|
||||||
|
String productName = (String)contentPanel.getValueAt(contentPanel.getSelectedRow(), findColumnIndex("Name"));
|
||||||
|
|
||||||
|
if (productInteger == null || productInteger.intValue() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int M_Warehouse_ID = getSelectedWarehouseId();
|
||||||
|
if (M_Warehouse_ID <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
String title = getSelectedWarehouseLabel() + " - " + productName;
|
||||||
|
int C_BPartner_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "C_BPartner_ID");;
|
||||||
|
final InfoPAttributeInstancePanel pai = new InfoPAttributeInstancePanel(this, title,
|
||||||
|
M_Warehouse_ID, 0, productInteger.intValue(), C_BPartner_ID);
|
||||||
|
pai.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
|
||||||
|
@Override
|
||||||
|
public void onEvent(Event event) throws Exception {
|
||||||
|
m_M_AttributeSetInstance_ID = pai.getM_AttributeSetInstance_ID();
|
||||||
|
m_M_Locator_ID = pai.getM_Locator_ID();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getSelectedWarehouseLabel() {
|
||||||
|
for(WEditor editor : editors) {
|
||||||
|
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_Warehouse_ID")) {
|
||||||
|
Number value = (Number) editor.getValue();
|
||||||
|
if (value != null)
|
||||||
|
return editor.getDisplay();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int getSelectedPriceListVersionId() {
|
||||||
|
for(WEditor editor : editors) {
|
||||||
|
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_PriceList_Version_ID")) {
|
||||||
|
Number value = (Number) editor.getValue();
|
||||||
|
if (value != null)
|
||||||
|
return value.intValue();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int getSelectedWarehouseId() {
|
||||||
|
for(WEditor editor : editors) {
|
||||||
|
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_Warehouse_ID")) {
|
||||||
|
Number value = (Number) editor.getValue();
|
||||||
|
if (value != null)
|
||||||
|
return value.intValue();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
private void initParameters() {
|
private void initParameters() {
|
||||||
lblWarehouse = new Label();
|
|
||||||
lblWarehouse.setValue(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Warehouse")));
|
|
||||||
|
|
||||||
pickWarehouse = new Listbox();
|
|
||||||
pickWarehouse.setMultiple(false);
|
|
||||||
pickWarehouse.setMold("select");
|
|
||||||
pickWarehouse.setHflex("1");
|
|
||||||
pickWarehouse.addEventListener(Events.ON_SELECT, new EventListener<Event>() {
|
|
||||||
@Override
|
|
||||||
public void onEvent(Event event) throws Exception {
|
|
||||||
ListItem item = InfoProductWindow.this.pickWarehouse.getSelectedItem();
|
|
||||||
if (item != null && item.getValue() != null) {
|
|
||||||
Env.setContext(infoContext, p_WindowNo, "Pick_Warehouse_ID", item.getValue().toString());
|
|
||||||
} else {
|
|
||||||
Env.setContext(infoContext, p_WindowNo, "Pick_Warehouse_ID", "0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
pickWarehouse.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, "warehouse");
|
|
||||||
|
|
||||||
// Warehouse
|
|
||||||
String sql = MRole.getDefault().addAccessSQL (
|
|
||||||
"SELECT M_Warehouse_ID, Value || ' - ' || Name AS ValueName "
|
|
||||||
+ "FROM M_Warehouse "
|
|
||||||
+ "WHERE IsActive='Y'",
|
|
||||||
"M_Warehouse", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO)
|
|
||||||
+ " ORDER BY Value";
|
|
||||||
pickWarehouse.appendItem("", new Integer(0));
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
try {
|
|
||||||
pstmt = DB.prepareStatement(sql, null);
|
|
||||||
rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
pickWarehouse.appendItem(rs.getString("ValueName"), new Integer(rs.getInt("M_Warehouse_ID")));
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
log.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
|
||||||
} finally {
|
|
||||||
DB.close(rs, pstmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
lblPriceList = new Label();
|
|
||||||
lblPriceList.setValue(Msg.getMsg(Env.getCtx(), "PriceListVersion"));
|
|
||||||
|
|
||||||
pickPriceList = new Listbox();
|
|
||||||
pickPriceList.setMultiple(false);
|
|
||||||
pickPriceList.setMold("select");
|
|
||||||
pickPriceList.setHflex("1");
|
|
||||||
pickPriceList.addEventListener(Events.ON_SELECT, new EventListener<Event>() {
|
|
||||||
@Override
|
|
||||||
public void onEvent(Event event) throws Exception {
|
|
||||||
ListItem item = InfoProductWindow.this.pickPriceList.getSelectedItem();
|
|
||||||
if (item != null && item.getValue() != null) {
|
|
||||||
Env.setContext(infoContext, p_WindowNo, "Pick_PriceList_ID", item.getValue().toString());
|
|
||||||
} else {
|
|
||||||
Env.setContext(infoContext, p_WindowNo, "Pick_PriceList_ID", "0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
pickPriceList.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, "priceList");
|
|
||||||
addSearchParameter(lblPriceList, pickPriceList);
|
|
||||||
|
|
||||||
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "M_Warehouse_ID");
|
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "M_Warehouse_ID");
|
||||||
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "M_PriceList_ID");
|
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), p_WindowNo, "M_PriceList_ID");
|
||||||
fillPickPriceList(M_PriceList_ID);
|
|
||||||
|
|
||||||
int M_PriceList_Version_ID = findPLV (M_PriceList_ID);
|
int M_PriceList_Version_ID = findPLV (M_PriceList_ID);
|
||||||
// Set Warehouse
|
// Set Warehouse
|
||||||
|
@ -451,7 +465,6 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
rs = null; pstmt = null;
|
rs = null; pstmt = null;
|
||||||
}
|
}
|
||||||
Env.setContext(Env.getCtx(), p_WindowNo, "M_PriceList_Version_ID", retValue);
|
|
||||||
return retValue;
|
return retValue;
|
||||||
} // findPLV
|
} // findPLV
|
||||||
|
|
||||||
|
@ -462,13 +475,11 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
*/
|
*/
|
||||||
private void setWarehouse(int M_Warehouse_ID)
|
private void setWarehouse(int M_Warehouse_ID)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < pickWarehouse.getItemCount(); i++)
|
for(WEditor editor : editors) {
|
||||||
{
|
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_Warehouse_ID")) {
|
||||||
Integer key = (Integer) pickWarehouse.getItemAtIndex(i).getValue();
|
editor.setValue(M_Warehouse_ID);
|
||||||
if (key == M_Warehouse_ID)
|
Env.setContext(infoContext, p_WindowNo, "M_Warehouse_ID", M_Warehouse_ID);
|
||||||
{
|
Env.setContext(infoContext, p_WindowNo, Env.TAB_INFO, "M_Warehouse_ID", Integer.toString(M_Warehouse_ID));
|
||||||
pickWarehouse.setSelectedIndex(i);
|
|
||||||
Env.setContext(infoContext, p_WindowNo, "Pick_Warehouse_ID", M_Warehouse_ID);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -483,16 +494,16 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
{
|
{
|
||||||
if (log.isLoggable(Level.CONFIG))
|
if (log.isLoggable(Level.CONFIG))
|
||||||
log.config("M_PriceList_Version_ID=" + M_PriceList_Version_ID);
|
log.config("M_PriceList_Version_ID=" + M_PriceList_Version_ID);
|
||||||
for (int i = 0; i < pickPriceList.getItemCount(); i++)
|
|
||||||
{
|
for(WEditor editor : editors) {
|
||||||
Integer key = (Integer) pickPriceList.getItemAtIndex(i).getValue();
|
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_PriceList_Version_ID")) {
|
||||||
if (key == M_PriceList_Version_ID)
|
editor.setValue(M_PriceList_Version_ID);
|
||||||
{
|
Env.setContext(infoContext, p_WindowNo, "M_PriceList_Version_ID", M_PriceList_Version_ID);
|
||||||
pickPriceList.setSelectedIndex(i);
|
Env.setContext(infoContext, p_WindowNo, Env.TAB_INFO, "M_PriceList_Version_ID", Integer.toString(M_PriceList_Version_ID));
|
||||||
Env.setContext(infoContext, "Pick_PriceList_Version_ID", M_PriceList_Version_ID);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (log.isLoggable(Level.FINE))
|
if (log.isLoggable(Level.FINE))
|
||||||
log.fine("NOT found");
|
log.fine("NOT found");
|
||||||
} // setPriceListVersion
|
} // setPriceListVersion
|
||||||
|
@ -752,48 +763,42 @@ public class InfoProductWindow extends InfoWindow {
|
||||||
m_tableAtp.autoSize();
|
m_tableAtp.autoSize();
|
||||||
} // initAtpTab
|
} // initAtpTab
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Fill Picks with values
|
protected void showHistory() {
|
||||||
*
|
log.info("");
|
||||||
* @param M_PriceList_ID price list
|
Integer M_Product_ID = getSelectedRowKey();
|
||||||
*/
|
if (M_Product_ID == null)
|
||||||
private void fillPickPriceList (int M_PriceList_ID)
|
return;
|
||||||
|
int M_Warehouse_ID = getSelectedWarehouseId();
|
||||||
|
int M_AttributeSetInstance_ID = m_M_AttributeSetInstance_ID;
|
||||||
|
if (m_M_AttributeSetInstance_ID < -1) // not selected
|
||||||
|
M_AttributeSetInstance_ID = 0;
|
||||||
|
//
|
||||||
|
InvoiceHistory ih = new InvoiceHistory (this, 0,
|
||||||
|
M_Product_ID.intValue(), M_Warehouse_ID, M_AttributeSetInstance_ID);
|
||||||
|
ih.setVisible(true);
|
||||||
|
ih = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean hasHistory() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void saveSelectionDetail() {
|
||||||
|
super.saveSelectionDetail();
|
||||||
|
if (m_M_AttributeSetInstance_ID == -1) // not selected
|
||||||
{
|
{
|
||||||
// Price List
|
Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "M_AttributeSetInstance_ID", "0");
|
||||||
String SQL = "SELECT M_PriceList_Version.M_PriceList_Version_ID,"
|
Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "M_Locator_ID", "0");
|
||||||
+ " M_PriceList_Version.Name || ' (' || c.Iso_Code || ')' AS ValueName "
|
}
|
||||||
+ "FROM M_PriceList_Version, M_PriceList pl, C_Currency c "
|
else
|
||||||
+ "WHERE M_PriceList_Version.M_PriceList_ID=pl.M_PriceList_ID"
|
|
||||||
+ " AND pl.C_Currency_ID=c.C_Currency_ID"
|
|
||||||
+ " AND M_PriceList_Version.IsActive='Y' AND pl.IsActive='Y'";
|
|
||||||
// Same PL currency as original one
|
|
||||||
if (M_PriceList_ID != 0)
|
|
||||||
SQL += " AND EXISTS (SELECT * FROM M_PriceList xp WHERE xp.M_PriceList_ID=" + M_PriceList_ID
|
|
||||||
+ " AND pl.C_Currency_ID=xp.C_Currency_ID)";
|
|
||||||
// Add Access & Order
|
|
||||||
SQL = MRole.getDefault().addAccessSQL (SQL, "M_PriceList_Version", true, false) // fully qualidfied - RO
|
|
||||||
+ " ORDER BY M_PriceList_Version.Name";
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
pickPriceList.appendItem("",new Integer(0));
|
Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "M_AttributeSetInstance_ID",
|
||||||
pstmt = DB.prepareStatement(SQL, null);
|
String.valueOf(m_M_AttributeSetInstance_ID));
|
||||||
rs = pstmt.executeQuery();
|
Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "M_Locator_ID",
|
||||||
while (rs.next())
|
String.valueOf(m_M_Locator_ID));
|
||||||
{
|
|
||||||
pickPriceList.appendItem(rs.getString(2),new Integer(rs.getInt(1)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, SQL, e);
|
|
||||||
setStatusLine(e.getLocalizedMessage(), true);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
DB.close(rs, pstmt);
|
|
||||||
rs = null; pstmt = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
private Borderlayout layout;
|
private Borderlayout layout;
|
||||||
private Vbox southBody;
|
private Vbox southBody;
|
||||||
/** List of WEditors */
|
/** List of WEditors */
|
||||||
private List<WEditor> editors;
|
protected List<WEditor> editors;
|
||||||
protected Properties infoContext;
|
protected Properties infoContext;
|
||||||
|
|
||||||
/** Max Length of Fields */
|
/** Max Length of Fields */
|
||||||
|
@ -257,6 +257,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
{
|
{
|
||||||
columnInfo = new ColumnInfo(infoColumn.getName(), infoColumn.getSelectClause(), DisplayType.getClass(infoColumn.getAD_Reference_ID(), true));
|
columnInfo = new ColumnInfo(infoColumn.getName(), infoColumn.getSelectClause(), DisplayType.getClass(infoColumn.getAD_Reference_ID(), true));
|
||||||
}
|
}
|
||||||
|
columnInfo.setColDescription(infoColumn.getDescription());
|
||||||
columnInfo.setGridField(gridFields.get(i));
|
columnInfo.setGridField(gridFields.get(i));
|
||||||
list.add(columnInfo);
|
list.add(columnInfo);
|
||||||
}
|
}
|
||||||
|
@ -319,7 +320,17 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
builder.append(tableInfos[0].getSynonym()).append(".IsActive='Y'");
|
builder.append(tableInfos[0].getSynonym()).append(".IsActive='Y'");
|
||||||
}
|
}
|
||||||
for(WEditor editor : editors) {
|
for(WEditor editor : editors) {
|
||||||
if (editor.getGridField() != null && editor.getValue() != null && editor.getValue().toString().trim().length() > 0) {
|
if (editor instanceof IWhereClauseEditor) {
|
||||||
|
String whereClause = ((IWhereClauseEditor) editor).getWhereClause();
|
||||||
|
if (whereClause != null && whereClause.trim().length() > 0) {
|
||||||
|
if (builder.length() > 0) {
|
||||||
|
builder.append(" AND ");
|
||||||
|
} else if (p_whereClause != null && p_whereClause.trim().length() > 0) {
|
||||||
|
builder.append(" AND ");
|
||||||
|
}
|
||||||
|
builder.append(whereClause);
|
||||||
|
}
|
||||||
|
} else if (editor.getGridField() != null && editor.getValue() != null && editor.getValue().toString().trim().length() > 0) {
|
||||||
MInfoColumn mInfoColumn = findInfoColumn(editor.getGridField());
|
MInfoColumn mInfoColumn = findInfoColumn(editor.getGridField());
|
||||||
if (mInfoColumn == null || mInfoColumn.getSelectClause().equals("0")) {
|
if (mInfoColumn == null || mInfoColumn.getSelectClause().equals("0")) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -488,12 +499,11 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
|
|
||||||
protected void createParameterPanel() {
|
protected void createParameterPanel() {
|
||||||
parameterGrid = GridFactory.newGridLayout();
|
parameterGrid = GridFactory.newGridLayout();
|
||||||
// parameterGrid.setInnerWidth("auto");
|
|
||||||
parameterGrid.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, "infoParameterPanel");
|
parameterGrid.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, "infoParameterPanel");
|
||||||
parameterGrid.setStyle("width: 90%; margin: auto;");
|
parameterGrid.setStyle("width: 90%; margin: auto;");
|
||||||
Columns columns = new Columns();
|
Columns columns = new Columns();
|
||||||
parameterGrid.appendChild(columns);
|
parameterGrid.appendChild(columns);
|
||||||
for(int i = 0; i < 8; i++)
|
for(int i = 0; i < 6; i++)
|
||||||
columns.appendChild(new Column());
|
columns.appendChild(new Column());
|
||||||
|
|
||||||
Rows rows = new Rows();
|
Rows rows = new Rows();
|
||||||
|
@ -521,12 +531,19 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
|
|
||||||
// Editor
|
// Editor
|
||||||
WEditor editor = null;
|
WEditor editor = null;
|
||||||
|
if (mField.getDisplayType() == DisplayType.PAttribute)
|
||||||
|
{
|
||||||
|
editor = new WInfoPAttributeEditor(infoContext, p_WindowNo, mField);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
editor = WebEditorFactory.getEditor(mField, false);
|
editor = WebEditorFactory.getEditor(mField, false);
|
||||||
editor.setMandatory(false);
|
editor.setMandatory(false);
|
||||||
editor.setReadWrite(true);
|
editor.setReadWrite(true);
|
||||||
editor.dynamicDisplay();
|
editor.dynamicDisplay();
|
||||||
editor.addValueChangeListener(this);
|
editor.addValueChangeListener(this);
|
||||||
editor.fillHorizontal();
|
editor.fillHorizontal();
|
||||||
|
}
|
||||||
Label label = editor.getLabel();
|
Label label = editor.getLabel();
|
||||||
Component fieldEditor = editor.getComponent();
|
Component fieldEditor = editor.getComponent();
|
||||||
|
|
||||||
|
@ -552,7 +569,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
panel = (Row) parameterGrid.getRows().getLastChild();
|
panel = (Row) parameterGrid.getRows().getLastChild();
|
||||||
if (panel.getChildren().size() >= 8)
|
if (panel.getChildren().size() >= 6)
|
||||||
{
|
{
|
||||||
panel = new Row();
|
panel = new Row();
|
||||||
parameterGrid.getRows().appendChild(panel);
|
parameterGrid.getRows().appendChild(panel);
|
||||||
|
@ -567,6 +584,16 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
panel.appendChild(fieldEditor);
|
panel.appendChild(fieldEditor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int findColumnIndex(String columnName) {
|
||||||
|
for(int i = 0; i < columnInfos.length; i++) {
|
||||||
|
GridField field = columnInfos[i].getGridField();
|
||||||
|
if (field != null && field.getColumnName().equalsIgnoreCase(columnName)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save Selection Details
|
* Save Selection Details
|
||||||
* Get Location/Partner Info
|
* Get Location/Partner Info
|
||||||
|
@ -681,7 +708,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener {
|
||||||
if (otherEditor == editor)
|
if (otherEditor == editor)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
editor.dynamicDisplay();
|
otherEditor.dynamicDisplay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2013 Heng Sin Low *
|
||||||
|
* Copyright (C) 2013 Trek Global *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.adempiere.webui.info;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.editor.WEditor;
|
||||||
|
import org.adempiere.webui.event.DialogEvents;
|
||||||
|
import org.adempiere.webui.panel.InfoPAttributePanel;
|
||||||
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WInfoPAttributeEditor extends WEditor implements IWhereClauseEditor {
|
||||||
|
|
||||||
|
private String m_pAttributeWhere;
|
||||||
|
private Properties ctx;
|
||||||
|
private int windowNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param comp
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WInfoPAttributeEditor(Properties ctx, int windowNo, GridField gridField) {
|
||||||
|
super(new Button(), gridField);
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.windowNo = windowNo;
|
||||||
|
getComponent().addEventListener(Events.ON_CLICK, this);
|
||||||
|
getComponent().setImage("/images/PAttribute16.png");
|
||||||
|
getComponent().setTooltiptext(Msg.getMsg(Env.getCtx(), "PAttribute"));
|
||||||
|
setReadWrite(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.zkoss.zk.ui.event.EventListener#onEvent(org.zkoss.zk.ui.event.Event)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onEvent(Event event) throws Exception {
|
||||||
|
if (event.getName().equals(Events.ON_CLICK)) {
|
||||||
|
cmd_InfoPAttribute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.adempiere.webui.editor.WEditor#setReadWrite(boolean)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setReadWrite(boolean readWrite) {
|
||||||
|
getComponent().setEnabled(readWrite);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.adempiere.webui.editor.WEditor#isReadWrite()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isReadWrite() {
|
||||||
|
return getComponent().isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.adempiere.webui.editor.WEditor#setValue(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setValue(Object value) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.adempiere.webui.editor.WEditor#getValue()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Object getValue() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.adempiere.webui.editor.WEditor#getDisplay()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getDisplay() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Button getComponent() {
|
||||||
|
return (Button) super.getComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getWhereClause() {
|
||||||
|
return m_pAttributeWhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query per Product Attribute.
|
||||||
|
* <code>
|
||||||
|
* Available synonyms:
|
||||||
|
* M_Product p
|
||||||
|
* M_ProductPrice pr
|
||||||
|
* M_AttributeSet pa
|
||||||
|
* </code>
|
||||||
|
*/
|
||||||
|
private void cmd_InfoPAttribute()
|
||||||
|
{
|
||||||
|
int attributeSetId = Env.getContextAsInt(ctx, windowNo, Env.TAB_INFO, "M_AttributeSet_ID");
|
||||||
|
final InfoPAttributePanel ia = new InfoPAttributePanel(attributeSetId);
|
||||||
|
ia.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener<Event>() {
|
||||||
|
@Override
|
||||||
|
public void onEvent(Event event) throws Exception {
|
||||||
|
m_pAttributeWhere = ia.getWhereClause();
|
||||||
|
if (m_pAttributeWhere != null) {
|
||||||
|
m_pAttributeWhere = m_pAttributeWhere.trim();
|
||||||
|
if (m_pAttributeWhere.startsWith("AND ")) {
|
||||||
|
m_pAttributeWhere = m_pAttributeWhere.substring(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} // cmdInfoAttribute
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dynamicDisplay() {
|
||||||
|
int attributeSetId = Env.getContextAsInt(ctx, windowNo, Env.TAB_INFO, "M_AttributeSet_ID");
|
||||||
|
setReadWrite(attributeSetId > 0);
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,9 +42,9 @@ import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.zkoss.zk.ui.Component;
|
import org.zkoss.zk.ui.Component;
|
||||||
|
import org.zkoss.zk.ui.HtmlBasedComponent;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.EventListener;
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
import org.zkoss.zul.Cell;
|
|
||||||
import org.zkoss.zul.Div;
|
import org.zkoss.zul.Div;
|
||||||
import org.zkoss.zul.Separator;
|
import org.zkoss.zul.Separator;
|
||||||
import org.zkoss.zul.Textbox;
|
import org.zkoss.zul.Textbox;
|
||||||
|
@ -71,11 +71,15 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
* Called from InfoProduct,cmd_InfoPAttribute
|
* Called from InfoProduct,cmd_InfoPAttribute
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
public InfoPAttributePanel(Window parent)
|
public InfoPAttributePanel(Object input)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
if (parent instanceof InfoProductPanel) {
|
if (input != null) {
|
||||||
p_M_AttributeSet_ID = ((InfoProductPanel)parent).getM_AttributeSet_ID();
|
if (input instanceof InfoProductPanel) {
|
||||||
|
p_M_AttributeSet_ID = ((InfoProductPanel)input).getM_AttributeSet_ID();
|
||||||
|
} else if (input instanceof Integer) {
|
||||||
|
p_M_AttributeSet_ID = (Integer)input;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setTitle(Msg.getMsg(Env.getCtx(), "InfoPAttribute"));
|
setTitle(Msg.getMsg(Env.getCtx(), "InfoPAttribute"));
|
||||||
this.setBorder("normal");
|
this.setBorder("normal");
|
||||||
|
@ -91,7 +95,10 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
{
|
{
|
||||||
log.log(Level.SEVERE, "InfoPAttribute", e);
|
log.log(Level.SEVERE, "InfoPAttribute", e);
|
||||||
}
|
}
|
||||||
AEnv.showCenterWindow(parent, this);
|
if (input instanceof Window)
|
||||||
|
AEnv.showCenterWindow((Window)input, this);
|
||||||
|
else
|
||||||
|
AEnv.showWindow(this);
|
||||||
} // InfoPAttribute
|
} // InfoPAttribute
|
||||||
|
|
||||||
/** Resulting Query */
|
/** Resulting Query */
|
||||||
|
@ -251,22 +258,17 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
{
|
{
|
||||||
Row row = new Row();
|
Row row = new Row();
|
||||||
rows.appendChild(row);
|
rows.appendChild(row);
|
||||||
Cell cell = new Cell();
|
Div div = new Div();
|
||||||
cell.setColspan(2);
|
div.setStyle("text-align: left;width: 100%");
|
||||||
row.appendCellChild(cell);
|
|
||||||
Label group = new Label(Msg.translate(Env.getCtx(), "IsInstanceAttribute"));
|
Label group = new Label(Msg.translate(Env.getCtx(), "IsInstanceAttribute"));
|
||||||
row.appendChild(group);
|
div.appendChild(group);
|
||||||
rows.appendChild(row);
|
row.appendCellChild(div, 2);
|
||||||
|
|
||||||
row = new Row();
|
row = new Row();
|
||||||
rows.appendChild(row);
|
rows.appendChild(row);
|
||||||
cell = new Cell();
|
|
||||||
cell.setColspan(2);
|
|
||||||
row.appendCellChild(cell);
|
|
||||||
Separator separator = new Separator();
|
Separator separator = new Separator();
|
||||||
separator.setBar(true);
|
separator.setBar(true);
|
||||||
row.appendChild(separator);
|
row.appendCellChild(separator, 2);
|
||||||
rows.appendChild(row);
|
|
||||||
|
|
||||||
instanceLine = true;
|
instanceLine = true;
|
||||||
}
|
}
|
||||||
|
@ -284,14 +286,13 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
div.appendChild(label);
|
div.appendChild(label);
|
||||||
row.appendChild(div);
|
row.appendChild(div);
|
||||||
|
|
||||||
Component field = null;
|
HtmlBasedComponent field = null;
|
||||||
if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attributeValueType))
|
if (MAttribute.ATTRIBUTEVALUETYPE_List.equals(attributeValueType))
|
||||||
{
|
{
|
||||||
field = new Listbox();
|
field = new Listbox();
|
||||||
((Listbox) field).setRows(0);
|
((Listbox) field).setRows(0);
|
||||||
((Listbox) field).setMultiple(false);
|
((Listbox) field).setMultiple(false);
|
||||||
((Listbox) field).setMold("select");
|
((Listbox) field).setMold("select");
|
||||||
((Listbox) field).setWidth("150px");
|
|
||||||
KeyNamePair[] knp = getAttributeList(attribute_ID);
|
KeyNamePair[] knp = getAttributeList(attribute_ID);
|
||||||
for(int i = 0; i < knp.length; i++)
|
for(int i = 0; i < knp.length; i++)
|
||||||
((Listbox) field).appendItem(knp[i].getName(), knp[i]);
|
((Listbox) field).appendItem(knp[i].getName(), knp[i]);
|
||||||
|
@ -299,13 +300,13 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attributeValueType))
|
else if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attributeValueType))
|
||||||
{
|
{
|
||||||
field = new WNumberEditor(name, false, false, true, DisplayType.Number, name).getComponent();
|
field = new WNumberEditor(name, false, false, true, DisplayType.Number, name).getComponent();
|
||||||
((NumberBox) field).setWidth("150px");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
field = new WStringEditor(name, false, false, true, 10, 40, null, null).getComponent();
|
field = new WStringEditor(name, false, false, true, 10, 40, null, null).getComponent();
|
||||||
((Textbox) field).setWidth("150px");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
field.setWidth("96%");
|
||||||
row.appendChild(field);
|
row.appendChild(field);
|
||||||
//
|
//
|
||||||
field.setId(String.valueOf(attribute_ID));
|
field.setId(String.valueOf(attribute_ID));
|
||||||
|
@ -357,22 +358,14 @@ public class InfoPAttributePanel extends Window implements EventListener<Event>
|
||||||
if (isGuarantee || isSerial || isLot) {
|
if (isGuarantee || isSerial || isLot) {
|
||||||
Row row = new Row();
|
Row row = new Row();
|
||||||
rows.appendChild(row);
|
rows.appendChild(row);
|
||||||
Cell cell = new Cell();
|
|
||||||
cell.setColspan(2);
|
|
||||||
row.appendCellChild(cell);
|
|
||||||
Label group = new Label(Msg.translate(Env.getCtx(), "IsInstanceAttribute"));
|
Label group = new Label(Msg.translate(Env.getCtx(), "IsInstanceAttribute"));
|
||||||
row.appendChild(group);
|
row.appendCellChild(group, 2);
|
||||||
rows.appendChild(row);
|
|
||||||
|
|
||||||
row = new Row();
|
row = new Row();
|
||||||
rows.appendChild(row);
|
rows.appendChild(row);
|
||||||
cell = new Cell();
|
|
||||||
cell.setColspan(2);
|
|
||||||
row.appendCellChild(cell);
|
|
||||||
Separator separator = new Separator();
|
Separator separator = new Separator();
|
||||||
separator.setBar(true);
|
separator.setBar(true);
|
||||||
row.appendChild(separator);
|
row.appendCellChild(separator, 2);
|
||||||
rows.appendChild(row);
|
|
||||||
|
|
||||||
instanceLine = true;
|
instanceLine = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -880,6 +880,10 @@ div.simileAjax-bubble-container {
|
||||||
z-index: 2800 !important;
|
z-index: 2800 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.info-panel .z-window-overlapped-bl, .info-panel .z-window-highlighted-bl {
|
||||||
|
background-color: #F4F4F4 !important;
|
||||||
|
}
|
||||||
|
|
||||||
.info-panel .z-grid {
|
.info-panel .z-grid {
|
||||||
border: none !important;
|
border: none !important;
|
||||||
}
|
}
|
||||||
|
@ -896,7 +900,7 @@ div.simileAjax-bubble-container {
|
||||||
.info-panel .z-south {
|
.info-panel .z-south {
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
border-top: 1px solid #C5C5C5;
|
border-top: 1px solid #C5C5C5;
|
||||||
background-color: #D2E0EB;
|
background-color: #F4F4F4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-panel .z-window-highlighted-cnt {
|
.info-panel .z-window-highlighted-cnt {
|
||||||
|
@ -1120,8 +1124,8 @@ tbody.z-grid-empty-body td {
|
||||||
|
|
||||||
.z-window-overlapped, .z-window-modal, .z-window-highlighted
|
.z-window-overlapped, .z-window-modal, .z-window-highlighted
|
||||||
{
|
{
|
||||||
border-top: 1px solid #c5c5c5;
|
border-top: 1px solid #c5c5c5 !important;
|
||||||
border-bottom: 1px solid #c5c5c5;
|
border-bottom: 1px solid #c5c5c5 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.z-window-overlapped-hl, .z-window-popup-hl, .z-window-modal-hl, .z-window-highlighted-hl, .z-window-embedded-hl,
|
.z-window-overlapped-hl, .z-window-popup-hl, .z-window-modal-hl, .z-window-highlighted-hl, .z-window-embedded-hl,
|
||||||
|
|
|
@ -81,6 +81,8 @@ public class ColumnInfo
|
||||||
private String m_keyPairColSQL = "";
|
private String m_keyPairColSQL = "";
|
||||||
private GridField m_gridField;
|
private GridField m_gridField;
|
||||||
|
|
||||||
|
private String colDescription;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Col Class
|
* Get Col Class
|
||||||
* @return class
|
* @return class
|
||||||
|
@ -204,4 +206,12 @@ public class ColumnInfo
|
||||||
{
|
{
|
||||||
return m_gridField;
|
return m_gridField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getColDescription() {
|
||||||
|
return colDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColDescription(String colDescription) {
|
||||||
|
this.colDescription = colDescription;
|
||||||
|
}
|
||||||
} // infoColumn
|
} // infoColumn
|
||||||
|
|
Loading…
Reference in New Issue