Implemented info factory as extension point for zk and swing client.

This commit is contained in:
Heng Sin Low 2010-11-23 18:01:11 +08:00
parent c321e8feb6
commit b9e40c4bf4
31 changed files with 1684 additions and 886 deletions

View File

@ -21,6 +21,8 @@
</factory> </factory>
</extension> </extension>
<extension <extension
id="org.adempiere.base.DefaultDocFactory"
name="Default Document Factory"
point="org.adempiere.base.IDocFactory"> point="org.adempiere.base.IDocFactory">
<factory <factory
class="org.adempiere.base.DefaultDocumentFactory" class="org.adempiere.base.DefaultDocumentFactory"

View File

@ -3,6 +3,7 @@
<plugin> <plugin>
<extension-point id="org.adempiere.osgi.IMenuAction" name="MenuAction" schema="schema/org.adempiere.osgi.IMenuAction.exsd"/> <extension-point id="org.adempiere.osgi.IMenuAction" name="MenuAction" schema="schema/org.adempiere.osgi.IMenuAction.exsd"/>
<extension-point id="org.adempiere.apps.Form" name="Form" schema="schema/org.adempiere.apps.Form.exsd"/> <extension-point id="org.adempiere.apps.Form" name="Form" schema="schema/org.adempiere.apps.Form.exsd"/>
<extension-point id="org.adempiere.osgi.IInfoFactory" name="Info Factory extension" schema="schema/org.adempiere.osgi.IInfoFactory.exsd"/>
<extension <extension
id="RF" id="RF"
name="RF" name="RF"
@ -49,5 +50,14 @@
</property> </property>
</product> </product>
</extension> </extension>
<extension
id="org.adempiere.osgi.DefaultInfoFactory"
name="Default Info Factory"
point="org.adempiere.osgi.IInfoFactory">
<factory
class="org.adempiere.osgi.DefaultInfoFactory"
priority="0">
</factory>
</extension>
</plugin> </plugin>

View File

@ -0,0 +1,109 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.ui.swing" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.ui.swing" id="org.adempiere.osgi.IInfoFactory" name="Info Factory extension"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="factory"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="factory">
<complexType>
<attribute name="priority" type="string" use="required">
<annotation>
<documentation>
numeric priority value. bigger number have higher priority.
</documentation>
</annotation>
</attribute>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.osgi.IInfoFactory"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>

View File

@ -0,0 +1,145 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.osgi;
import java.awt.Frame;
import java.util.logging.Level;
import org.compiere.apps.search.Info;
import org.compiere.apps.search.InfoAsset;
import org.compiere.apps.search.InfoAssignment;
import org.compiere.apps.search.InfoBPartner;
import org.compiere.apps.search.InfoCashLine;
import org.compiere.apps.search.InfoFactory;
import org.compiere.apps.search.InfoGeneral;
import org.compiere.apps.search.InfoInOut;
import org.compiere.apps.search.InfoInvoice;
import org.compiere.apps.search.InfoOrder;
import org.compiere.apps.search.InfoPayment;
import org.compiere.apps.search.InfoProduct;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
import org.compiere.model.MColumn;
import org.compiere.model.MInvoiceLine;
import org.compiere.model.MOrderLine;
import org.compiere.model.MProductPrice;
import org.compiere.util.CLogger;
import org.compiere.util.Env;
import org.eevolution.model.I_PP_Product_BOMLine;
/**
*
* @author hengsin
*
*/
public class DefaultInfoFactory implements IInfoFactory {
private final static CLogger log = CLogger.getCLogger(DefaultInfoFactory.class);
@Override
public Info create(Frame frame, boolean modal, Lookup lookup,
GridField field, String tableName, String keyColumn, String queryValue,
boolean multiSelection, String whereClause) {
Info info = null;
String col = lookup.getColumnName(); // fully qualified name
if (col.indexOf('.') != -1)
col = col.substring(col.indexOf('.')+1);
boolean multipleSelection = false;
String infoFactoryClass = lookup.getInfoFactoryClass();
if (infoFactoryClass != null && infoFactoryClass.trim().length() > 0)
{
try {
@SuppressWarnings("unchecked")
Class<InfoFactory> clazz = (Class<InfoFactory>)this.getClass().getClassLoader().loadClass(infoFactoryClass);
InfoFactory factory = clazz.newInstance();
info = factory.create (frame, true, lookup.getWindowNo(),
tableName, keyColumn, queryValue, false, whereClause);
} catch (Exception e) {
log.log(Level.SEVERE, "Failed to load custom InfoFactory - " + e.getLocalizedMessage(), e);
}
}
else if (col.equals("M_Product_ID"))
{
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_Warehouse_ID");
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_PriceList_ID");
if(field != null)
{
int AD_Table_ID = MColumn.getTable_ID(Env.getCtx(), field.getAD_Column_ID(), null);
multipleSelection = (MOrderLine.Table_ID == AD_Table_ID) || (MInvoiceLine.Table_ID == AD_Table_ID) || (I_PP_Product_BOMLine.Table_ID == AD_Table_ID) || (MProductPrice.Table_ID == AD_Table_ID);
}
// Show Info
info = new InfoProduct (frame, true, lookup.getWindowNo(),
M_Warehouse_ID, M_PriceList_ID, queryValue, multipleSelection, whereClause);
}
else if (col.equals("C_BPartner_ID"))
{
boolean isSOTrx = true; // default
if (Env.getContext(Env.getCtx(), lookup.getWindowNo(), "IsSOTrx").equals("N"))
isSOTrx = false;
info = new InfoBPartner (frame, true, lookup.getWindowNo(),
queryValue, isSOTrx, multipleSelection, whereClause);
}
else // General Info
{
info = create (frame, true, lookup.getWindowNo(),
tableName, keyColumn, queryValue, multipleSelection, whereClause, true);
}
return info;
}
@Override
public Info create(Frame frame, boolean modal, int WindowNo,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause, boolean lookup) {
Info info = null;
if (tableName.equals("C_BPartner"))
info = new InfoBPartner (frame, modal, WindowNo, value, !Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"),
multiSelection, whereClause, lookup);
else if (tableName.equals("M_Product"))
info = new InfoProduct (frame, modal, WindowNo,
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_Warehouse_ID"),
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_PriceList_ID"),
value, multiSelection, whereClause, lookup);
else if (tableName.equals("C_Invoice"))
info = new InfoInvoice (frame, modal, WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("A_Asset"))
info = new InfoAsset (frame, modal, WindowNo, 0, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("C_Order"))
info = new InfoOrder (frame, modal, WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("M_InOut"))
info = new InfoInOut (frame, modal, WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("C_Payment"))
info = new InfoPayment (frame, modal, WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("C_CashLine"))
info = new InfoCashLine (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("S_ResourceAssigment"))
info = new InfoAssignment (frame, modal, WindowNo, value,
multiSelection, whereClause, lookup);
else
info = new InfoGeneral (frame, modal, WindowNo, value,
tableName, keyColumn,
multiSelection, whereClause, lookup);
//
return info;
}
}

View File

@ -0,0 +1,62 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.osgi;
import java.awt.Frame;
import org.compiere.apps.search.Info;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
/**
*
* @author hengsin
*
*/
public interface IInfoFactory {
/**
* Factory Constructor
* @param frame parent frame
* @param modal new window is modal
* @param lookup Lookup
* @param field Grid field
* @param tableName table name of the search
* @param keyColumn key column of the search
* @param value query value
* @param multiSelection allow to select more than one row
* @param whereClause fully qualified where clause for the search
* @return special or general Info Window
*/
public Info create (Frame frame, boolean modal, Lookup lookup, GridField field,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause);
/**
* Factory Constructor
* @param frame parent frame
* @param modal new window is modal
* @param WindowNo window no
* @param tableName table name of the search
* @param keyColumn key column of the search
* @param value query value
* @param multiSelection allow to select more than one row
* @param whereClause fully qualified where clause for the search
* @param lookup
* @return special or general Info Window
*/
public Info create (Frame frame, boolean modal, int WindowNo,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause, boolean lookup);
}

View File

@ -0,0 +1,90 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.osgi;
import java.awt.Frame;
import java.util.List;
import org.adempiere.base.Service;
import org.compiere.apps.search.Info;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
/**
*
* @author hengsin
*
*/
public class InfoManager
{
/**
* Factory Constructor
* @param frame parent frame
* @param modal new window is modal
* @param lookup Lookup
* @param field Grid field
* @param tableName table name of the search
* @param keyColumn key column of the search
* @param value query value
* @param multiSelection allow to select more than one row
* @param whereClause fully qualified where clause for the search
* @return special or general Info Window
*/
public static Info create(Frame frame, boolean modal, Lookup lookup,
GridField field, String tableName, String keyColumn, String queryValue,
boolean multiSelection, String whereClause)
{
Info info = null;
List<IInfoFactory> factoryList = Service.list(IInfoFactory.class);
for(IInfoFactory factory : factoryList)
{
info = factory.create(frame, true, lookup, field, tableName, keyColumn,
queryValue, multiSelection, whereClause);
if (info != null)
break;
}
return info;
}
/**
* Factory Constructor
* @param frame parent frame
* @param modal new window is modal
* @param WindowNo window no
* @param tableName table name of the search
* @param keyColumn key column of the search
* @param value query value
* @param multiSelection allow to select more than one row
* @param whereClause fully qualified where clause for the search
* @param lookup
* @return special or general Info Window
*/
public static Info create(Frame frame, boolean modal, int WindowNo,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
Info info = null;
List<IInfoFactory> factoryList = Service.list(IInfoFactory.class);
for(IInfoFactory factory : factoryList)
{
info = factory.create(frame, modal, WindowNo, tableName, keyColumn, value,
multiSelection, whereClause, lookup);
if (info != null)
break;
}
//
return info;
}
}

View File

@ -40,6 +40,7 @@ import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionListener;
import org.adempiere.osgi.InfoManager;
import org.compiere.apps.ADialog; import org.compiere.apps.ADialog;
import org.compiere.apps.AEnv; import org.compiere.apps.AEnv;
import org.compiere.apps.AWindow; import org.compiere.apps.AWindow;
@ -49,6 +50,15 @@ import org.compiere.apps.StatusBar;
import org.compiere.grid.ed.Calculator; import org.compiere.grid.ed.Calculator;
import org.compiere.minigrid.IDColumn; import org.compiere.minigrid.IDColumn;
import org.compiere.minigrid.MiniTable; import org.compiere.minigrid.MiniTable;
import org.compiere.model.I_A_Asset;
import org.compiere.model.I_C_BPartner;
import org.compiere.model.I_C_CashLine;
import org.compiere.model.I_C_Invoice;
import org.compiere.model.I_C_Order;
import org.compiere.model.I_C_Payment;
import org.compiere.model.I_M_InOut;
import org.compiere.model.I_M_Product;
import org.compiere.model.I_S_ResourceAssignment;
import org.compiere.model.MQuery; import org.compiere.model.MQuery;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.model.MSysConfig; import org.compiere.model.MSysConfig;
@ -112,39 +122,8 @@ public abstract class Info extends CDialog
String tableName, String keyColumn, String value, String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
Info info = null; Info info = InfoManager.create(frame, modal, WindowNo, tableName, keyColumn, value,
multiSelection, whereClause, true);
if (tableName.equals("C_BPartner"))
info = new InfoBPartner (frame, modal, WindowNo, value, !Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"),
multiSelection, whereClause);
else if (tableName.equals("M_Product"))
info = new InfoProduct (frame, modal, WindowNo, 0,0, value,
multiSelection, whereClause);
else if (tableName.equals("C_Invoice"))
info = new InfoInvoice (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("A_Asset"))
info = new InfoAsset (frame, modal, WindowNo, 0, value,
multiSelection, whereClause);
else if (tableName.equals("C_Order"))
info = new InfoOrder (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("M_InOut"))
info = new InfoInOut (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("C_Payment"))
info = new InfoPayment (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("C_CashLine"))
info = new InfoCashLine (frame, modal, WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("S_ResourceAssigment"))
info = new InfoAssignment (frame, modal, WindowNo, value,
multiSelection, whereClause);
else
info = new InfoGeneral (frame, modal, WindowNo, value,
tableName, keyColumn,
multiSelection, whereClause);
// //
AEnv.positionCenterWindow(frame, info); AEnv.positionCenterWindow(frame, info);
return info; return info;
@ -157,8 +136,9 @@ public abstract class Info extends CDialog
*/ */
public static void showBPartner (Frame frame, int WindowNo) public static void showBPartner (Frame frame, int WindowNo)
{ {
Info info = new InfoBPartner (frame, false, WindowNo, "", Info info = InfoManager.create(frame, false, WindowNo,
!Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"), false, ""); I_C_BPartner.Table_Name, I_C_BPartner.COLUMNNAME_C_BPartner_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showBPartner } // showBPartner
@ -169,8 +149,9 @@ public abstract class Info extends CDialog
*/ */
public static void showAsset (Frame frame, int WindowNo) public static void showAsset (Frame frame, int WindowNo)
{ {
Info info = new InfoAsset (frame, false, WindowNo, Info info = InfoManager.create(frame, false, WindowNo,
0, "", false, ""); I_A_Asset.Table_Name, I_A_Asset.COLUMNNAME_A_Asset_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showBPartner } // showBPartner
@ -181,11 +162,9 @@ public abstract class Info extends CDialog
*/ */
public static void showProduct (Frame frame, int WindowNo) public static void showProduct (Frame frame, int WindowNo)
{ {
Info info = new InfoProduct (frame, false, WindowNo, Info info = InfoManager.create(frame, false, WindowNo,
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_Warehouse_ID"), I_M_Product.Table_Name, I_M_Product.COLUMNNAME_M_Product_ID,
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_PriceList_ID"), "", false, "", false);
"", // value
false, "");
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showProduct } // showProduct
@ -197,8 +176,9 @@ public abstract class Info extends CDialog
*/ */
public static void showOrder (Frame frame, int WindowNo, String value) public static void showOrder (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoOrder (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_C_Order.Table_Name, I_C_Order.COLUMNNAME_C_Order_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showOrder } // showOrder
@ -210,8 +190,9 @@ public abstract class Info extends CDialog
*/ */
public static void showInvoice (Frame frame, int WindowNo, String value) public static void showInvoice (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoInvoice (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_C_Invoice.Table_Name, I_C_Invoice.COLUMNNAME_C_Invoice_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showInvoice } // showInvoice
@ -223,8 +204,9 @@ public abstract class Info extends CDialog
*/ */
public static void showInOut (Frame frame, int WindowNo, String value) public static void showInOut (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoInOut (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_M_InOut.Table_Name, I_M_InOut.COLUMNNAME_M_InOut_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showInOut } // showInOut
@ -236,8 +218,9 @@ public abstract class Info extends CDialog
*/ */
public static void showPayment (Frame frame, int WindowNo, String value) public static void showPayment (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoPayment (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_C_Payment.Table_Name, I_C_Payment.COLUMNNAME_C_Payment_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showPayment } // showPayment
@ -249,8 +232,9 @@ public abstract class Info extends CDialog
*/ */
public static void showCashLine (Frame frame, int WindowNo, String value) public static void showCashLine (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoCashLine (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_C_CashLine.Table_Name, I_C_CashLine.COLUMNNAME_C_CashLine_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showCashLine } // showCashLine
@ -262,8 +246,9 @@ public abstract class Info extends CDialog
*/ */
public static void showAssignment (Frame frame, int WindowNo, String value) public static void showAssignment (Frame frame, int WindowNo, String value)
{ {
Info info = new InfoAssignment (frame, false, WindowNo, value, Info info = InfoManager.create(frame, false, WindowNo,
false, ""); I_S_ResourceAssignment.Table_Name, I_S_ResourceAssignment.COLUMNNAME_S_ResourceAssignment_ID,
"", false, "", false);
AEnv.showCenterWindow(frame, info); AEnv.showCenterWindow(frame, info);
} // showAssignment } // showAssignment
@ -274,6 +259,8 @@ public abstract class Info extends CDialog
protected final int INFO_WIDTH = screensize.width > 1500 ? 1500 : screensize.width - 100; protected final int INFO_WIDTH = screensize.width > 1500 ? 1500 : screensize.width - 100;
protected final int SCREEN_HEIGHT = screensize.height; protected final int SCREEN_HEIGHT = screensize.height;
private boolean p_lookup;
/************************************************************************** /**************************************************************************
* Detail Constructor * Detail Constructor
* @param frame parent frame * @param frame parent frame
@ -287,6 +274,24 @@ public abstract class Info extends CDialog
protected Info (Frame frame, boolean modal, int WindowNo, protected Info (Frame frame, boolean modal, int WindowNo,
String tableName, String keyColumn, String tableName, String keyColumn,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{
this(frame,modal,WindowNo,tableName,keyColumn,multiSelection,whereClause,true);
}
/**************************************************************************
* Detail Constructor
* @param frame parent frame
* @param modal modal
* @param WindowNo window no
* @param tableName table name
* @param keyColumn key column name
* @param multiSelection multiple selection
* @param whereClause where clause
* @param lookup
*/
protected Info (Frame frame, boolean modal, int WindowNo,
String tableName, String keyColumn,
boolean multiSelection, String whereClause, boolean lookup)
{ {
super (frame, modal); super (frame, modal);
log.info("WinNo=" + p_WindowNo + " " + whereClause); log.info("WinNo=" + p_WindowNo + " " + whereClause);
@ -294,6 +299,7 @@ public abstract class Info extends CDialog
p_tableName = tableName; p_tableName = tableName;
p_keyColumn = keyColumn; p_keyColumn = keyColumn;
p_multiSelection = multiSelection; p_multiSelection = multiSelection;
p_lookup = lookup;
if (whereClause == null || whereClause.indexOf('@') == -1) if (whereClause == null || whereClause.indexOf('@') == -1)
p_whereClause = whereClause; p_whereClause = whereClause;
else else
@ -1093,6 +1099,16 @@ public abstract class Info extends CDialog
return p_doubleClickTogglesSelection; return p_doubleClickTogglesSelection;
} }
// reset value so that is always treated as new entry
public boolean isResetValue()
{
return false;
}
public boolean isLookup()
{
return p_lookup;
}
/************************************************************************** /**************************************************************************
* Mouse Clicked * Mouse Clicked
@ -1107,7 +1123,7 @@ public abstract class Info extends CDialog
// Double click with selected row => exit/zoom // Double click with selected row => exit/zoom
if (e.getClickCount() > 1 && p_table.getSelectedRow() != -1) if (e.getClickCount() > 1 && p_table.getSelectedRow() != -1)
{ {
if (p_multiSelection && isDoubleClickTogglesSelection()) if (isLookup() && p_multiSelection && isDoubleClickTogglesSelection())
{ {
if (m_keyColumnIndex >= 0) if (m_keyColumnIndex >= 0)
{ {
@ -1121,7 +1137,17 @@ public abstract class Info extends CDialog
} }
} }
else else
dispose(true); {
if (isLookup())
{
dispose(true);
}
else
{
zoom();
}
}
} }
// Right Click => start Calculator // Right Click => start Calculator
else if (SwingUtilities.isRightMouseButton(e)) else if (SwingUtilities.isRightMouseButton(e))

View File

@ -50,7 +50,6 @@ public class InfoAsset extends Info
/** /**
* Standard Constructor * Standard Constructor
* @param frame frame * @param frame frame
* @param modal modal * @param modal modal
* @param WindowNo window no * @param WindowNo window no
@ -62,6 +61,24 @@ public class InfoAsset extends Info
public InfoAsset (Frame frame, boolean modal, int WindowNo, public InfoAsset (Frame frame, boolean modal, int WindowNo,
int A_Asset_ID, String value, int A_Asset_ID, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{
this(frame, modal, WindowNo, A_Asset_ID, value, multiSelection, whereClause, true);
}
/**
* Standard Constructor
* @param frame frame
* @param modal modal
* @param WindowNo window no
* @param A_Asset_ID asset
* @param value Query Value or Name if enclosed in @
* @param multiSelection multiple selections
* @param whereClause where clause
* @param lookup
*/
public InfoAsset (Frame frame, boolean modal, int WindowNo,
int A_Asset_ID, String value,
boolean multiSelection, String whereClause, boolean lookup)
{ {
super (frame, modal, WindowNo, "a", "A_Asset_ID", multiSelection, whereClause); super (frame, modal, WindowNo, "a", "A_Asset_ID", multiSelection, whereClause);
log.info(value + ", ID=" + A_Asset_ID + ", WHERE=" + whereClause); log.info(value + ", ID=" + A_Asset_ID + ", WHERE=" + whereClause);

View File

@ -63,9 +63,25 @@ public class InfoAssignment extends Info
*/ */
public InfoAssignment (Frame frame, boolean modal, int WindowNo, public InfoAssignment (Frame frame, boolean modal, int WindowNo,
String value, boolean multiSelection, String whereClause) String value, boolean multiSelection, String whereClause)
{
this(frame, modal, WindowNo, value, multiSelection, whereClause, true);
}
/**
* Constructor
* @param frame frame
* @param modal modal
* @param WindowNo WindowNo
* @param value Query value Name or Value if contains numbers
* @param multiSelection multiple selection
* @param whereClause where clause
* @param lookup
*/
public InfoAssignment (Frame frame, boolean modal, int WindowNo,
String value, boolean multiSelection, String whereClause, boolean lookup)
{ {
super (frame, modal, WindowNo, "ra", "S_ResourceAssigment_ID", super (frame, modal, WindowNo, "ra", "S_ResourceAssigment_ID",
multiSelection, whereClause); multiSelection, whereClause, lookup);
log.info(value); log.info(value);
setTitle(Msg.getMsg(Env.getCtx(), "InfoAssignment")); setTitle(Msg.getMsg(Env.getCtx(), "InfoAssignment"));
// //

View File

@ -62,7 +62,25 @@ public class InfoBPartner extends Info
String value, boolean isSOTrx, String value, boolean isSOTrx,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "C_BPartner", "C_BPartner_ID", multiSelection, whereClause); this(frame, modal, WindowNo, value, isSOTrx, multiSelection, whereClause, true);
}
/**
* Standard Constructor
* @param frame frame
* @param modal modal
* @param WindowNo WindowNo
* @param value Query value Name or Value if contains numbers
* @param isSOTrx if false, query vendors only
* @param multiSelection multiple selection
* @param whereClause where clause
* @param lookup
*/
public InfoBPartner(Frame frame, boolean modal, int WindowNo,
String value, boolean isSOTrx,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "C_BPartner", "C_BPartner_ID", multiSelection, whereClause, lookup);
log.info(value); log.info(value);
setTitle(Msg.getMsg(Env.getCtx(), "InfoBPartner")); setTitle(Msg.getMsg(Env.getCtx(), "InfoBPartner"));
m_isSOTrx = isSOTrx; m_isSOTrx = isSOTrx;

View File

@ -66,7 +66,7 @@ public class InfoCashLine extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause whwre clause * @param whereClause whwre clause
*/ */
protected InfoCashLine(Frame frame, boolean modal, int WindowNo, String value, public InfoCashLine(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "cl", "C_CashLine_ID", multiSelection, whereClause); super (frame, modal, WindowNo, "cl", "C_CashLine_ID", multiSelection, whereClause);

View File

@ -69,11 +69,31 @@ public class InfoGeneral extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoGeneral (Frame frame, boolean modal, int WindowNo, String value, public InfoGeneral (Frame frame, boolean modal, int WindowNo, String value,
String tableName, String keyColumn, String tableName, String keyColumn,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, tableName, keyColumn, multiSelection, whereClause); this(frame, modal, WindowNo, value, tableName, keyColumn, multiSelection, whereClause, true);
}
/**
* Detail Protected Constructor.
*
* @param frame parent
* @param modal modal
* @param WindowNo window no
* @param value QueryValue
* @param tableName table name
* @param keyColumn key column (ignored)
* @param multiSelection multiple selections
* @param whereClause where clause
* @param lookup
*/
public InfoGeneral (Frame frame, boolean modal, int WindowNo, String value,
String tableName, String keyColumn,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, tableName, keyColumn, multiSelection, whereClause, lookup);
log.info(tableName + " - " + keyColumn + " - " + whereClause); log.info(tableName + " - " + keyColumn + " - " + whereClause);
setTitle(Msg.getMsg(Env.getCtx(), "Info")); setTitle(Msg.getMsg(Env.getCtx(), "Info"));
// //

View File

@ -61,10 +61,26 @@ public class InfoInOut extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoInOut(Frame frame, boolean modal, int WindowNo, String value, public InfoInOut(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "i", "M_InOut_ID", multiSelection, whereClause); this(frame, modal, WindowNo, value, multiSelection, whereClause, true);
}
/**
* Detail Protected Contructor
* @param frame parent frame
* @param modal modal
* @param WindowNo window no
* @param value query value
* @param multiSelection multiple selections
* @param whereClause where clause
* @param lookup
*/
public InfoInOut(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "i", "M_InOut_ID", multiSelection, whereClause, lookup);
log.info( "InfoInOut"); log.info( "InfoInOut");
setTitle(Msg.getMsg(Env.getCtx(), "InfoInOut")); setTitle(Msg.getMsg(Env.getCtx(), "InfoInOut"));
// //

View File

@ -67,10 +67,27 @@ public class InfoInvoice extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoInvoice(Frame frame, boolean modal, int WindowNo, String value, public InfoInvoice(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "i", "C_Invoice_ID", multiSelection, whereClause); this(frame, modal, WindowNo, value, multiSelection, whereClause, true);
}
/**
* Detail Protected Contructor
*
* @param frame parent frame
* @param modal modal
* @param WindowNo window no
* @param value query value
* @param multiSelection multiple selections
* @param whereClause where clause
* @param lookup
*/
public InfoInvoice(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "i", "C_Invoice_ID", multiSelection, whereClause, lookup);
setTitle(Msg.getMsg(Env.getCtx(), "InfoInvoice")); setTitle(Msg.getMsg(Env.getCtx(), "InfoInvoice"));
// //
try try

View File

@ -62,10 +62,26 @@ public class InfoOrder extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoOrder(Frame frame, boolean modal, int WindowNo, String value, public InfoOrder(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "o", "C_Order_ID", multiSelection, whereClause); this(frame, modal, WindowNo, value, multiSelection, whereClause, true);
}
/**
* Detail Protected Contructor
* @param frame parent frame
* @param modal modal
* @param WindowNo window no
* @param value query value
* @param multiSelection multiple selections
* @param whereClause where clause
* @param lookup
*/
public InfoOrder(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "o", "C_Order_ID", multiSelection, whereClause, lookup);
log.info( "InfoOrder"); log.info( "InfoOrder");
setTitle(Msg.getMsg(Env.getCtx(), "InfoOrder")); setTitle(Msg.getMsg(Env.getCtx(), "InfoOrder"));
// //

View File

@ -62,10 +62,26 @@ public class InfoPayment extends Info
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause whwre clause * @param whereClause whwre clause
*/ */
protected InfoPayment(Frame frame, boolean modal, int WindowNo, String value, public InfoPayment(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "p", "C_Payment_ID", multiSelection, whereClause); this(frame, modal, WindowNo, value, multiSelection, whereClause, true);
}
/**
* Detail Protected Contructor
* @param frame parent frame
* @param modal modal
* @param WindowNo window no
* @param value query value
* @param multiSelection multiple selections
* @param whereClause whwre clause
* @param lookup
*/
public InfoPayment(Frame frame, boolean modal, int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "p", "C_Payment_ID", multiSelection, whereClause, lookup);
log.info( "InfoPayment"); log.info( "InfoPayment");
setTitle(Msg.getMsg(Env.getCtx(), "InfoPayment")); setTitle(Msg.getMsg(Env.getCtx(), "InfoPayment"));
// //

View File

@ -99,7 +99,25 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
int M_Warehouse_ID, int M_PriceList_ID, String value, int M_Warehouse_ID, int M_PriceList_ID, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
super (frame, modal, WindowNo, "p", "M_Product_ID", multiSelection, whereClause); this(frame, modal, WindowNo, M_Warehouse_ID, M_PriceList_ID, value, multiSelection, whereClause, true);
}
/**
* Standard Constructor
* @param frame frame
* @param modal modal
* @param WindowNo window no
* @param M_Warehouse_ID warehouse
* @param M_PriceList_ID price list
* @param value Query Value or Name if enclosed in @
* @param multiSelection multiple selections
* @param whereClause where clause
*/
public InfoProduct(Frame frame, boolean modal, int WindowNo,
int M_Warehouse_ID, int M_PriceList_ID, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
super (frame, modal, WindowNo, "p", "M_Product_ID", multiSelection, whereClause, lookup);
log.info(value + ", Wh=" + M_Warehouse_ID + ", PL=" + M_PriceList_ID + ", WHERE=" + whereClause); log.info(value + ", Wh=" + M_Warehouse_ID + ", PL=" + M_PriceList_ID + ", WHERE=" + whereClause);
setTitle(Msg.getMsg(Env.getCtx(), "InfoProduct")); setTitle(Msg.getMsg(Env.getCtx(), "InfoProduct"));
// //
@ -1305,4 +1323,11 @@ public class InfoProduct extends Info implements ActionListener, ChangeListener
M_AttributeSet_ID = as.getKey(); M_AttributeSet_ID = as.getKey();
return M_AttributeSet_ID; return M_AttributeSet_ID;
} }
@Override
public boolean isResetValue() {
return true;
}
} // InfoProduct } // InfoProduct

View File

@ -46,22 +46,16 @@ import javax.swing.KeyStroke;
import javax.swing.LookAndFeel; import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.adempiere.osgi.InfoManager;
import org.compiere.apps.ADialog; import org.compiere.apps.ADialog;
import org.compiere.apps.AEnv; import org.compiere.apps.AEnv;
import org.compiere.apps.AWindow; import org.compiere.apps.AWindow;
import org.compiere.apps.FieldRecordInfo; import org.compiere.apps.FieldRecordInfo;
import org.compiere.apps.search.Info; import org.compiere.apps.search.Info;
import org.compiere.apps.search.InfoBPartner;
import org.compiere.apps.search.InfoFactory;
import org.compiere.apps.search.InfoProduct;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.Lookup; import org.compiere.model.Lookup;
import org.compiere.model.MColumn;
import org.compiere.model.MInvoiceLine;
import org.compiere.model.MLookup; import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory; import org.compiere.model.MLookupFactory;
import org.compiere.model.MOrderLine;
import org.compiere.model.MProductPrice;
import org.compiere.model.MQuery; import org.compiere.model.MQuery;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.swing.CButton; import org.compiere.swing.CButton;
@ -75,7 +69,6 @@ import org.compiere.util.Ini;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.NamePair; import org.compiere.util.NamePair;
import org.compiere.util.ValueNamePair; import org.compiere.util.ValueNamePair;
import org.eevolution.model.I_PP_Product_BOMLine;
/** /**
* Lookup Visual Field. * Lookup Visual Field.
@ -832,82 +825,30 @@ public class VLookup extends JComponent
boolean cancelled = false; boolean cancelled = false;
boolean multipleSelection = false; boolean multipleSelection = false;
// //
String col = m_lookup.getColumnName(); // fully qualified name
if (col.indexOf('.') != -1)
col = col.substring(col.indexOf('.')+1);
// Zoom / Validation // Zoom / Validation
String whereClause = getWhereClause(); String whereClause = getWhereClause();
// //
log.fine(col log.fine(m_lookup.getColumnName()
+ ", Zoom=" + m_lookup.getZoom() + ", Zoom=" + m_lookup.getZoom()
+ " (" + whereClause + ")"); + " (" + whereClause + ")");
// //
boolean resetValue = false; // reset value so that is always treated as new entry Info info = null;
String infoFactoryClass = m_lookup.getInfoFactoryClass();
if (infoFactoryClass != null && infoFactoryClass.trim().length() > 0)
{
try {
Class<InfoFactory> clazz = (Class<InfoFactory>)this.getClass().getClassLoader().loadClass(infoFactoryClass);
InfoFactory factory = clazz.newInstance();
if (m_tableName == null) // sets table name & key column
getDirectAccessSQL("*");
Info ig = factory.create (frame, true, m_lookup.getWindowNo(),
m_tableName, m_keyColumnName, queryValue, false, whereClause);
ig.setVisible(true);
cancelled = ig.isCancelled();
result = ig.getSelectedKeys();
} catch (Exception e) {
log.log(Level.SEVERE, "Failed to load custom InfoFactory - " + e.getLocalizedMessage(), e);
}
}
else if (col.equals("M_Product_ID"))
{
// Reset
resetTabInfo();
// Replace Value with name if no value exists
if (queryValue.length() == 0 && m_text.getText().length() > 0)
queryValue = "@" + m_text.getText() + "@"; // Name indicator - otherwise Value
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), m_lookup.getWindowNo(), "M_Warehouse_ID");
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), m_lookup.getWindowNo(), "M_PriceList_ID");
if(m_mField != null) // Reset
{ resetTabInfo();
int AD_Table_ID = MColumn.getTable_ID(Env.getCtx(), m_mField.getAD_Column_ID(), null); if (m_tableName == null) // sets table name & key column
getDirectAccessSQL("*");
multipleSelection = (MOrderLine.Table_ID == AD_Table_ID) || (MInvoiceLine.Table_ID == AD_Table_ID) || (I_PP_Product_BOMLine.Table_ID == AD_Table_ID) || (MProductPrice.Table_ID == AD_Table_ID); // Replace Value with name if no value exists
} if (queryValue.length() == 0 && m_text.getText().length() > 0)
// Show Info queryValue = m_text.getText();
InfoProduct ip = new InfoProduct (frame, true, m_lookup.getWindowNo(),
M_Warehouse_ID, M_PriceList_ID, queryValue, multipleSelection, whereClause); info = InfoManager.create(frame, true, m_lookup, m_mField, m_tableName, m_keyColumnName,
ip.setVisible(true); queryValue, multipleSelection, whereClause);
cancelled = ip.isCancelled();
result = ip.getSelectedKeys(); info.setVisible(true);
resetValue = true; cancelled = info.isCancelled();
} result = info.getSelectedKeys();
else if (col.equals("C_BPartner_ID"))
{
// Replace Value with name if no value exists
if (queryValue.length() == 0 && m_text.getText().length() > 0)
queryValue = m_text.getText();
boolean isSOTrx = true; // default
if (Env.getContext(Env.getCtx(), m_lookup.getWindowNo(), "IsSOTrx").equals("N"))
isSOTrx = false;
InfoBPartner ip = new InfoBPartner (frame, true, m_lookup.getWindowNo(),
queryValue, isSOTrx, multipleSelection, whereClause);
ip.setVisible(true);
cancelled = ip.isCancelled();
result = ip.getSelectedKeys();
}
else // General Info
{
if (m_tableName == null) // sets table name & key column
getDirectAccessSQL("*");
Info ig = Info.create (frame, true, m_lookup.getWindowNo(),
m_tableName, m_keyColumnName, queryValue, multipleSelection, whereClause);
ig.setVisible(true);
cancelled = ig.isCancelled();
result = ig.getSelectedKeys();
}
// Result // Result
if (result != null && result.length > 0) if (result != null && result.length > 0)
@ -915,7 +856,7 @@ public class VLookup extends JComponent
log.config(m_columnName + " - Result = " + result.toString() + " (" + result.getClass().getName() + ")"); log.config(m_columnName + " - Result = " + result.toString() + " (" + result.getClass().getName() + ")");
// make sure that value is in cache // make sure that value is in cache
m_lookup.getDirect(result[0], false, true); m_lookup.getDirect(result[0], false, true);
if (resetValue) if (info.isResetValue())
actionCombo (null); actionCombo (null);
// juddm added logic for multi-select handling // juddm added logic for multi-select handling
if (result.length > 1) if (result.length > 1)

View File

@ -30,10 +30,9 @@ import org.adempiere.webui.event.ContextMenuEvent;
import org.adempiere.webui.event.ContextMenuListener; import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.event.ValueChangeListener;
import org.adempiere.webui.factory.InfoManager;
import org.adempiere.webui.grid.WBPartner; import org.adempiere.webui.grid.WBPartner;
import org.adempiere.webui.panel.InfoBPartnerPanel;
import org.adempiere.webui.panel.InfoPanel; import org.adempiere.webui.panel.InfoPanel;
import org.adempiere.webui.panel.InfoProductPanel;
import org.adempiere.webui.window.WFieldRecordInfo; import org.adempiere.webui.window.WFieldRecordInfo;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.Lookup; import org.compiere.model.Lookup;
@ -478,94 +477,30 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value
Object result[] = null; Object result[] = null;
boolean cancelled = false; boolean cancelled = false;
String col = lookup.getColumnName(); // fully qualified name
if (col.indexOf('.') != -1)
col = col.substring(col.indexOf('.')+1);
// Zoom / Validation // Zoom / Validation
String whereClause = getWhereClause(); String whereClause = getWhereClause();
log.fine(col + ", Zoom=" + lookup.getZoom() + " (" + whereClause + ")"); log.fine(lookup.getColumnName() + ", Zoom=" + lookup.getZoom() + " (" + whereClause + ")");
// boolean resetValue = false; // Reset value so that is always treated as new entry // boolean resetValue = false; // Reset value so that is always treated as new entry
if (col.equals("M_Product_ID")) // Replace Value with name if no value exists
{ if (queryValue.length() == 0 && getComponent().getText().length() > 0)
// Reset queryValue = getComponent().getText();
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_Product_ID", "0");
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_AttributeSetInstance_ID", "0");
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_Lookup_ID", "0");
// Replace Value with name if no value exists if (m_tableName == null) // sets table name & key column
if (queryValue.length() == 0 && getComponent().getText().length() > 0) getDirectAccessSQL("*");
queryValue = "@" + getComponent().getText() + "@"; // Name indicator - otherwise Value
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_Warehouse_ID"); InfoPanel ip = InfoManager.create(lookup, gridField, m_tableName, m_keyColumnName, queryValue, false, whereClause);
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_PriceList_ID"); ip.setVisible(true);
ip.setStyle("border: 2px");
// Show Info ip.setClosable(true);
InfoProductPanel ip = new InfoProductPanel (lookup.getWindowNo(), ip.setAttribute("mode", "modal");
M_Warehouse_ID, M_PriceList_ID, true, queryValue, whereClause); ip.addValueChangeListener(this);
infoPanel = ip;
ip.setVisible(true); AEnv.showWindow(ip);
ip.setTitle("Product Info"); cancelled = ip.isCancelled();
ip.setStyle("border: 2px"); result = ip.getSelectedKeys();
ip.setClosable(true);
ip.setAttribute("mode", "modal");
ip.addValueChangeListener(this);
infoPanel = ip;
AEnv.showWindow(ip);
cancelled = ip.isCancelled();
result = ip.getSelectedKeys();
}
else if (col.equals("C_BPartner_ID"))
{
// Replace Value with name if no value exists
if (queryValue.length() == 0 && getComponent().getText().length() > 0)
queryValue = getComponent().getText();
boolean isSOTrx = true; // default
if (Env.getContext(Env.getCtx(), lookup.getWindowNo(), "IsSOTrx").equals("N"))
isSOTrx = false;
InfoBPartnerPanel ip = new InfoBPartnerPanel(queryValue, lookup.getWindowNo(), isSOTrx,false, whereClause);
ip.setVisible(true);
ip.setTitle("Business Partner Info");
ip.setStyle("border: 2px");
ip.setClosable(true);
ip.setAttribute("mode", "modal");
ip.addValueChangeListener(this);
infoPanel = ip;
AEnv.showWindow(ip);
cancelled = ip.isCancelled();
result = ip.getSelectedKeys();
}
else // General Info
{
if (m_tableName == null) // sets table name & key column
getDirectAccessSQL("*");
if (queryValue.length() == 0 && getComponent().getText().length() > 0)
queryValue = getComponent().getText();
InfoPanel ig = InfoPanel.create(lookup.getWindowNo(), m_tableName,m_keyColumnName,queryValue, false, whereClause);
ig.setVisible(true);
ig.setStyle("border: 2px");
ig.setClosable(true);
ig.setAttribute("mode", "modal");
ig.addValueChangeListener(this);
infoPanel = ig;
AEnv.showWindow(ig);
cancelled = ig.isCancelled();
result = ig.getSelectedKeys();
}
infoPanel = null; infoPanel = null;
// Result // Result

View File

@ -0,0 +1,121 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.factory;
import org.adempiere.webui.panel.InfoAssetPanel;
import org.adempiere.webui.panel.InfoAssignmentPanel;
import org.adempiere.webui.panel.InfoBPartnerPanel;
import org.adempiere.webui.panel.InfoCashLinePanel;
import org.adempiere.webui.panel.InfoGeneralPanel;
import org.adempiere.webui.panel.InfoInOutPanel;
import org.adempiere.webui.panel.InfoInvoicePanel;
import org.adempiere.webui.panel.InfoOrderPanel;
import org.adempiere.webui.panel.InfoPanel;
import org.adempiere.webui.panel.InfoPaymentPanel;
import org.adempiere.webui.panel.InfoProductPanel;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
import org.compiere.util.Env;
/**
*
* @author hengsin
*
*/
public class DefaultInfoFactory implements IInfoFactory {
@Override
public InfoPanel create(int WindowNo, String tableName, String keyColumn,
String value, boolean multiSelection, String whereClause, boolean lookup) {
InfoPanel info = null;
if (tableName.equals("C_BPartner"))
info = new InfoBPartnerPanel (value,WindowNo, !Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"),
multiSelection, whereClause, lookup);
else if (tableName.equals("M_Product"))
info = new InfoProductPanel ( WindowNo,
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_Warehouse_ID"),
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_PriceList_ID"),
multiSelection, value,whereClause, lookup);
else if (tableName.equals("C_Invoice"))
info = new InfoInvoicePanel ( WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("A_Asset"))
info = new InfoAssetPanel (WindowNo, 0, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("C_Order"))
info = new InfoOrderPanel ( WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("M_InOut"))
info = new InfoInOutPanel (WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("C_Payment"))
info = new InfoPaymentPanel (WindowNo, value, multiSelection, whereClause, lookup);
else if (tableName.equals("C_CashLine"))
info = new InfoCashLinePanel (WindowNo, value,
multiSelection, whereClause, lookup);
else if (tableName.equals("S_ResourceAssigment"))
info = new InfoAssignmentPanel (WindowNo, value,
multiSelection, whereClause, lookup);
else
info = new InfoGeneralPanel (value, WindowNo,
tableName, keyColumn,
multiSelection, whereClause, lookup);
//
return info;
}
@Override
public InfoPanel create(Lookup lookup, GridField field, String tableName,
String keyColumn, String queryValue, boolean multiSelection,
String whereClause) {
InfoPanel info = null;
String col = lookup.getColumnName(); // fully qualified name
if (col.indexOf('.') != -1)
col = col.substring(col.indexOf('.')+1);
if (col.equals("M_Product_ID"))
{
// Reset
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_Product_ID", "0");
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_AttributeSetInstance_ID", "0");
Env.setContext(Env.getCtx(), lookup.getWindowNo(), Env.TAB_INFO, "M_Lookup_ID", "0");
int M_Warehouse_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_Warehouse_ID");
int M_PriceList_ID = Env.getContextAsInt(Env.getCtx(), lookup.getWindowNo(), "M_PriceList_ID");
// Show Info
info = new InfoProductPanel (lookup.getWindowNo(),
M_Warehouse_ID, M_PriceList_ID, true, queryValue, whereClause);
info.setTitle("Product Info");
}
else if (col.equals("C_BPartner_ID"))
{
boolean isSOTrx = true; // default
if (Env.getContext(Env.getCtx(), lookup.getWindowNo(), "IsSOTrx").equals("N"))
isSOTrx = false;
info = new InfoBPartnerPanel(queryValue, lookup.getWindowNo(), isSOTrx,false, whereClause);
info.setTitle("Business Partner Info");
}
else // General Info
{
info = create(lookup.getWindowNo(), tableName, keyColumn, queryValue, false, whereClause, true);
}
return info;
}
}

View File

@ -0,0 +1,34 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.factory;
import org.adempiere.webui.panel.InfoPanel;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
/**
*
* @author hengsin
*
*/
public interface IInfoFactory {
public InfoPanel create (int WindowNo,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause, boolean lookup);
public InfoPanel create (Lookup lookup, GridField field,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause);
}

View File

@ -0,0 +1,61 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* 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.factory;
import java.util.List;
import org.adempiere.base.Service;
import org.adempiere.webui.panel.InfoPanel;
import org.compiere.model.GridField;
import org.compiere.model.Lookup;
/**
*
* @author hengsin
*
*/
public class InfoManager
{
public static InfoPanel create (int WindowNo,
String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause, boolean lookup)
{
InfoPanel info = null;
List<IInfoFactory> factoryList = Service.list(IInfoFactory.class);
for(IInfoFactory factory : factoryList)
{
info = factory.create(WindowNo, tableName, keyColumn, value, multiSelection, whereClause, lookup);
if (info != null)
break;
}
//
return info;
}
public static InfoPanel create(Lookup lookup, GridField field, String tableName,
String keyColumn, String queryValue, boolean multiSelection,
String whereClause)
{
InfoPanel ip = null;
List<IInfoFactory> factoryList = Service.list(IInfoFactory.class);
for(IInfoFactory factory : factoryList)
{
ip = factory.create(lookup, field, tableName, keyColumn, queryValue, false, whereClause);
if (ip != null)
break;
}
return ip;
}
}

View File

@ -130,7 +130,7 @@ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener,
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoCashLinePanel( int WindowNo, String value, public InfoCashLinePanel( int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
this(WindowNo, value, multiSelection, whereClause, true); this(WindowNo, value, multiSelection, whereClause, true);
@ -144,7 +144,7 @@ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener,
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoCashLinePanel( int WindowNo, String value, public InfoCashLinePanel( int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup) boolean multiSelection, String whereClause, boolean lookup)
{ {
super (WindowNo, "cl", "C_CashLine_ID", multiSelection, whereClause, lookup); super (WindowNo, "cl", "C_CashLine_ID", multiSelection, whereClause, lookup);

View File

@ -82,6 +82,11 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener
private Vbox southBody; private Vbox southBody;
public InfoGeneralPanel(String queryValue, int windowNo,String tableName,String keyColumn, boolean isSOTrx, String whereClause) public InfoGeneralPanel(String queryValue, int windowNo,String tableName,String keyColumn, boolean isSOTrx, String whereClause)
{
this(queryValue, windowNo, tableName, keyColumn, isSOTrx, whereClause, true);
}
public InfoGeneralPanel(String queryValue, int windowNo,String tableName,String keyColumn, boolean isSOTrx, String whereClause, boolean lookup)
{ {
super(windowNo, tableName, keyColumn, false,whereClause); super(windowNo, tableName, keyColumn, false,whereClause);

View File

@ -115,7 +115,7 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoInOutPanel( int WindowNo, String value, public InfoInOutPanel( int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
this(WindowNo, value, multiSelection, whereClause, true); this(WindowNo, value, multiSelection, whereClause, true);
@ -129,7 +129,7 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoInOutPanel( int WindowNo, String value, public InfoInOutPanel( int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup) boolean multiSelection, String whereClause, boolean lookup)
{ {
super (WindowNo, "i", "M_InOut_ID", multiSelection, whereClause, lookup); super (WindowNo, "i", "M_InOut_ID", multiSelection, whereClause, lookup);

View File

@ -82,7 +82,7 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener
* @param whereClause where clause * @param whereClause where clause
* *
*/ */
protected InfoInvoicePanel(int WindowNo, String value, public InfoInvoicePanel(int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
this(WindowNo, value, multiSelection, whereClause, true); this(WindowNo, value, multiSelection, whereClause, true);
@ -96,7 +96,7 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener
* @param whereClause where clause * @param whereClause where clause
* *
*/ */
protected InfoInvoicePanel(int WindowNo, String value, public InfoInvoicePanel(int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup) boolean multiSelection, String whereClause, boolean lookup)
{ {
super ( WindowNo, "i", "C_Invoice_ID", multiSelection, whereClause, lookup); super ( WindowNo, "i", "C_Invoice_ID", multiSelection, whereClause, lookup);

View File

@ -109,13 +109,13 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener
new ColumnInfo(Msg.translate(Env.getCtx(), "POReference"), "o.POReference", String.class) new ColumnInfo(Msg.translate(Env.getCtx(), "POReference"), "o.POReference", String.class)
}; };
protected InfoOrderPanel(int WindowNo, String value, public InfoOrderPanel(int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
this(WindowNo, value, multiSelection, whereClause, true); this(WindowNo, value, multiSelection, whereClause, true);
} }
protected InfoOrderPanel(int WindowNo, String value, public InfoOrderPanel(int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup) boolean multiSelection, String whereClause, boolean lookup)
{ {
super ( WindowNo, "o", "C_Order_ID", multiSelection, whereClause, lookup); super ( WindowNo, "o", "C_Order_ID", multiSelection, whereClause, lookup);

View File

@ -41,10 +41,20 @@ import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.event.ValueChangeListener;
import org.adempiere.webui.event.WTableModelEvent; import org.adempiere.webui.event.WTableModelEvent;
import org.adempiere.webui.event.WTableModelListener; import org.adempiere.webui.event.WTableModelListener;
import org.adempiere.webui.factory.InfoManager;
import org.adempiere.webui.part.ITabOnSelectHandler; import org.adempiere.webui.part.ITabOnSelectHandler;
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.minigrid.IDColumn; import org.compiere.minigrid.IDColumn;
import org.compiere.model.I_A_Asset;
import org.compiere.model.I_C_BPartner;
import org.compiere.model.I_C_CashLine;
import org.compiere.model.I_C_Invoice;
import org.compiere.model.I_C_Order;
import org.compiere.model.I_C_Payment;
import org.compiere.model.I_M_InOut;
import org.compiere.model.I_M_Product;
import org.compiere.model.I_S_ResourceAssignment;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.model.MTable; import org.compiere.model.MTable;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
@ -86,43 +96,9 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
public static InfoPanel create (int WindowNo, public static InfoPanel create (int WindowNo,
String tableName, String keyColumn, String value, String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
InfoPanel info = null; return InfoManager.create(WindowNo, tableName, keyColumn, value, multiSelection, whereClause, true);
}
if (tableName.equals("C_BPartner"))
info = new InfoBPartnerPanel (value,WindowNo, !Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"),
multiSelection, whereClause);
else if (tableName.equals("M_Product"))
info = new InfoProductPanel ( WindowNo, 0,0,
multiSelection, value,whereClause);
else if (tableName.equals("C_Invoice"))
info = new InfoInvoicePanel ( WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("A_Asset"))
info = new InfoAssetPanel (WindowNo, 0, value,
multiSelection, whereClause);
else if (tableName.equals("C_Order"))
info = new InfoOrderPanel ( WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("M_InOut"))
info = new InfoInOutPanel (WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("C_Payment"))
info = new InfoPaymentPanel (WindowNo, value, multiSelection, whereClause);
else if (tableName.equals("C_CashLine"))
info = new InfoCashLinePanel (WindowNo, value,
multiSelection, whereClause);
else if (tableName.equals("S_ResourceAssigment"))
info = new InfoAssignmentPanel (WindowNo, value,
multiSelection, whereClause);
else
info = new InfoGeneralPanel (value, WindowNo,
tableName, keyColumn,
multiSelection, whereClause);
//
return info;
}
/** /**
* Show BPartner Info (non modal) * Show BPartner Info (non modal)
@ -130,8 +106,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showBPartner (int WindowNo) public static void showBPartner (int WindowNo)
{ {
InfoBPartnerPanel info = new InfoBPartnerPanel ( "", WindowNo, InfoPanel info = InfoManager.create(WindowNo, I_C_BPartner.Table_Name,
!Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"),false, "", false); I_C_BPartner.COLUMNNAME_C_BPartner_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showBPartner } // showBPartner
@ -142,7 +118,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showAsset (int WindowNo) public static void showAsset (int WindowNo)
{ {
InfoPanel info = new InfoAssetPanel (WindowNo, 0, "", false, "", false); InfoPanel info = InfoManager.create(WindowNo,
I_A_Asset.Table_Name, I_A_Asset.COLUMNNAME_A_Asset_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showBPartner } // showBPartner
@ -153,10 +130,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showProduct (int WindowNo) public static void showProduct (int WindowNo)
{ {
InfoPanel info = new InfoProductPanel(WindowNo, InfoPanel info = InfoManager.create(WindowNo,
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_Warehouse_ID"), I_M_Product.Table_Name, I_M_Product.COLUMNNAME_M_Product_ID, "", false, "", false);
Env.getContextAsInt(Env.getCtx(), WindowNo, "M_PriceList_ID"),
false, "", "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showProduct } // showProduct
@ -168,7 +143,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showOrder (int WindowNo, String value) public static void showOrder (int WindowNo, String value)
{ {
InfoPanel info = new InfoOrderPanel(WindowNo, "", false, "", false); InfoPanel info = InfoManager.create(WindowNo,
I_C_Order.Table_Name, I_C_Order.COLUMNNAME_C_Order_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showOrder } // showOrder
@ -180,7 +156,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showInvoice (int WindowNo, String value) public static void showInvoice (int WindowNo, String value)
{ {
InfoPanel info = new InfoInvoicePanel(WindowNo, "", false, "", false); InfoPanel info = InfoManager.create(WindowNo,
I_C_Invoice.Table_Name, I_C_Invoice.COLUMNNAME_C_Invoice_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showInvoice } // showInvoice
@ -192,8 +169,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showInOut (int WindowNo, String value) public static void showInOut (int WindowNo, String value)
{ {
InfoPanel info = new InfoInOutPanel (WindowNo, value, InfoPanel info = InfoManager.create(WindowNo,
false, "", false); I_M_InOut.Table_Name, I_M_InOut.COLUMNNAME_M_InOut_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showInOut } // showInOut
@ -205,8 +182,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showPayment (int WindowNo, String value) public static void showPayment (int WindowNo, String value)
{ {
InfoPanel info = new InfoPaymentPanel (WindowNo, value, InfoPanel info = InfoManager.create(WindowNo,
false, "", false); I_C_Payment.Table_Name, I_C_Payment.COLUMNNAME_C_Payment_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showPayment } // showPayment
@ -218,8 +195,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showCashLine (int WindowNo, String value) public static void showCashLine (int WindowNo, String value)
{ {
InfoPanel info = new InfoCashLinePanel (WindowNo, value, InfoPanel info = InfoManager.create(WindowNo,
false, "", false); I_C_CashLine.Table_Name, I_C_CashLine.COLUMNNAME_C_CashLine_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showCashLine } // showCashLine
@ -231,8 +208,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
*/ */
public static void showAssignment (int WindowNo, String value) public static void showAssignment (int WindowNo, String value)
{ {
InfoPanel info = new InfoAssignmentPanel (WindowNo, value, InfoPanel info = InfoManager.create(WindowNo,
false, "", false); I_S_ResourceAssignment.Table_Name, I_S_ResourceAssignment.COLUMNNAME_S_ResourceAssignment_ID, "", false, "", false);
AEnv.showWindow(info); AEnv.showWindow(info);
} // showAssignment } // showAssignment

View File

@ -128,7 +128,7 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener,
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoPaymentPanel(int WindowNo, String value, public InfoPaymentPanel(int WindowNo, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
{ {
this(WindowNo, value, multiSelection, whereClause, true); this(WindowNo, value, multiSelection, whereClause, true);
@ -143,7 +143,7 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener,
* @param multiSelection multiple selections * @param multiSelection multiple selections
* @param whereClause where clause * @param whereClause where clause
*/ */
protected InfoPaymentPanel(int WindowNo, String value, public InfoPaymentPanel(int WindowNo, String value,
boolean multiSelection, String whereClause, boolean lookup) boolean multiSelection, String whereClause, boolean lookup)
{ {
super(WindowNo, "p", "C_Payment_ID", multiSelection, whereClause, lookup); super(WindowNo, "p", "C_Payment_ID", multiSelection, whereClause, lookup);

View File

@ -2,6 +2,7 @@
<?eclipse version="3.4"?> <?eclipse version="3.4"?>
<plugin> <plugin>
<extension-point id="org.adempiere.webui.Form" name="Web Form" schema="schema/org.adempiere.webui.Form.exsd"/> <extension-point id="org.adempiere.webui.Form" name="Web Form" schema="schema/org.adempiere.webui.Form.exsd"/>
<extension-point id="org.adempiere.webui.factory.IInfoFactory" name="Info Factory extension" schema="schema/org.adempiere.webui.factory.IInfoFactory.exsd"/>
<extension <extension
point="org.compiere.print.ReportViewerProvider"> point="org.compiere.print.ReportViewerProvider">
<provider <provider
@ -26,5 +27,14 @@
class="org.compiere.interfaces.impl.StatusBean"> class="org.compiere.interfaces.impl.StatusBean">
</interface> </interface>
</extension> </extension>
<extension
id="org.adempiere.webui.factory.DefaultInfoFactory"
name="Default Info Factory"
point="org.adempiere.webui.factory.IInfoFactory">
<factory
class="org.adempiere.webui.factory.DefaultInfoFactory"
priority="0">
</factory>
</extension>
</plugin> </plugin>

View File

@ -0,0 +1,109 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.adempiere.ui.zk" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="org.adempiere.ui.zk" id="org.adempiere.webui.factory.IInfoFactory" name="Info Factory extension"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
</annotation>
<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice>
<element ref="factory"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="factory">
<complexType>
<attribute name="priority" type="string" use="required">
<annotation>
<documentation>
numeric priority value. bigger number have higher priority.
</documentation>
</annotation>
</attribute>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":org.adempiere.webui.factory.IInfoFactory"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>
<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>
</schema>