merge development into zk7
This commit is contained in:
commit
a3f8a80a97
|
@ -765,7 +765,7 @@ public class GridTabCSVImporter implements IGridTabImporter
|
|||
return new StringBuilder(Msg.getMsg(Env.getCtx(), "FieldNotDisplayed",new Object[] {header.get(i)}));
|
||||
|
||||
MColumn column = MColumn.get(Env.getCtx(), field.getAD_Column_ID());
|
||||
if((field.isMandatory(true) || column.isMandatory()) && value == null && field.getDefault()==null){
|
||||
if((field.isMandatory(false) || column.isMandatory()) && value == null && field.getDefault()==null){
|
||||
mandatoryColumns.append(" / ");
|
||||
mandatoryColumns.append(header.get(i));
|
||||
}
|
||||
|
|
|
@ -180,13 +180,6 @@ public class GridField
|
|||
log.log(Level.SEVERE, "(" + m_vo.ColumnName + ") - No LookupInfo");
|
||||
return;
|
||||
}
|
||||
// Prevent loading of CreatedBy/UpdatedBy
|
||||
if (m_vo.displayType == DisplayType.Table
|
||||
&& (m_vo.ColumnName.equals("CreatedBy") || m_vo.ColumnName.equals("UpdatedBy")) )
|
||||
{
|
||||
m_vo.lookupInfo.IsCreadedUpdatedBy = true;
|
||||
m_vo.lookupInfo.DisplayType = DisplayType.Search;
|
||||
}
|
||||
//
|
||||
loadLookupNoValidate();
|
||||
}
|
||||
|
@ -220,6 +213,14 @@ public class GridField
|
|||
if (m_vo.lookupInfo == null) {
|
||||
return;
|
||||
}
|
||||
// Prevent loading of CreatedBy/UpdatedBy
|
||||
if (m_vo.displayType == DisplayType.Table
|
||||
&& (m_vo.ColumnName.equals("CreatedBy") || m_vo.ColumnName.equals("UpdatedBy")) )
|
||||
{
|
||||
m_vo.lookupInfo.IsCreadedUpdatedBy = true;
|
||||
m_vo.lookupInfo.DisplayType = DisplayType.Search;
|
||||
m_vo.displayType = DisplayType.Search;
|
||||
}
|
||||
m_vo.lookupInfo.IsKey = isKey();
|
||||
loadLookupFromFactory();
|
||||
}
|
||||
|
|
|
@ -113,7 +113,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1377113168185797983L;
|
||||
private static final long serialVersionUID = 1151723870943569774L;
|
||||
|
||||
public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate";
|
||||
|
||||
|
@ -157,6 +157,10 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
|||
// The window of this tab
|
||||
private GridWindow m_window;
|
||||
|
||||
public GridWindow getGridWindow() {
|
||||
return m_window;
|
||||
}
|
||||
|
||||
/** The Table Model for Query */
|
||||
private GridTable m_mTable = null;
|
||||
|
||||
|
|
|
@ -211,11 +211,11 @@ public class MMovementLine extends X_M_MovementLine
|
|||
// Mandatory Instance
|
||||
MProduct product = getProduct();
|
||||
if (getM_AttributeSetInstance_ID() == 0) {
|
||||
if (product != null && product.getAttributeSet()==null) {
|
||||
log.saveError("NoAttributeSet", product.getValue());
|
||||
return false;
|
||||
}
|
||||
if (product != null && product.isASIMandatory(true)) {
|
||||
if (product.getAttributeSet()==null) {
|
||||
log.saveError("NoAttributeSet", product.getValue());
|
||||
return false;
|
||||
}
|
||||
if (! product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, true /*outgoing*/)) {
|
||||
log.saveError("FillMandatory", Msg.getElement(getCtx(), COLUMNNAME_M_AttributeSetInstance_ID));
|
||||
return false;
|
||||
|
@ -231,12 +231,12 @@ public class MMovementLine extends X_M_MovementLine
|
|||
setM_AttributeSetInstanceTo_ID(getM_AttributeSetInstance_ID());
|
||||
}
|
||||
|
||||
if (product != null && product.getAttributeSet()==null) {
|
||||
log.saveError("NoAttributeSet", product.getValue());
|
||||
return false;
|
||||
}
|
||||
if (product != null && product.isASIMandatory(false) && getM_AttributeSetInstanceTo_ID() == 0)
|
||||
{
|
||||
if (product.getAttributeSet()==null) {
|
||||
log.saveError("NoAttributeSet", product.getValue());
|
||||
return false;
|
||||
}
|
||||
if (! product.getAttributeSet().excludeTableEntry(MMovementLine.Table_ID, false /*incoming*/)) {
|
||||
log.saveError("FillMandatory", Msg.getElement(getCtx(), COLUMNNAME_M_AttributeSetInstanceTo_ID));
|
||||
return false;
|
||||
|
|
|
@ -660,8 +660,6 @@ public class MPayment extends X_C_Payment
|
|||
|| is_ValueChanged(COLUMNNAME_C_Charge_ID)
|
||||
|| is_ValueChanged(COLUMNNAME_C_Currency_ID)
|
||||
|| is_ValueChanged(COLUMNNAME_C_DocType_ID)
|
||||
|| is_ValueChanged(COLUMNNAME_C_Invoice_ID)
|
||||
|| is_ValueChanged(COLUMNNAME_C_Order_ID)
|
||||
|| is_ValueChanged(COLUMNNAME_DateAcct)
|
||||
|| is_ValueChanged(COLUMNNAME_DateTrx)
|
||||
|| is_ValueChanged(COLUMNNAME_DiscountAmt)
|
||||
|
|
|
@ -476,7 +476,7 @@ public final class DisplayType
|
|||
//
|
||||
if ( pattern != null && pattern.length() > 0)
|
||||
{
|
||||
SimpleDateFormat format = (SimpleDateFormat)DateFormat.getInstance();
|
||||
SimpleDateFormat format = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, language.getLocale());
|
||||
try {
|
||||
format.applyPattern(pattern);
|
||||
return format;
|
||||
|
|
|
@ -48,7 +48,6 @@ import javax.mail.internet.MimeMultipart;
|
|||
|
||||
import org.compiere.model.MClient;
|
||||
import org.compiere.model.MSysConfig;
|
||||
|
||||
import com.sun.mail.smtp.SMTPMessage;
|
||||
|
||||
/**
|
||||
|
@ -338,7 +337,7 @@ public final class EMail implements Serializable
|
|||
m_msg.setHeader("Comments", "iDempiereMail");
|
||||
// m_msg.setDescription("Description");
|
||||
// SMTP specifics
|
||||
m_msg.setAllow8bitMIME(true);
|
||||
//m_msg.setAllow8bitMIME(true);
|
||||
// Send notification on Failure & Success - no way to set envid in Java yet
|
||||
// m_msg.setNotifyOptions (SMTPMessage.NOTIFY_FAILURE | SMTPMessage.NOTIFY_SUCCESS);
|
||||
// Bounce only header
|
||||
|
@ -974,18 +973,34 @@ public final class EMail implements Serializable
|
|||
else // Multi part message ***************************************
|
||||
{
|
||||
// First Part - Message
|
||||
MimeBodyPart mbp_1 = new MimeBodyPart();
|
||||
mbp_1.setText("");
|
||||
if (m_messageHTML == null || m_messageHTML.length () == 0)
|
||||
mbp_1.setText (getMessageCRLF(), charSetName);
|
||||
else
|
||||
mbp_1.setDataHandler (new DataHandler
|
||||
MimeBodyPart htmlPart= null;
|
||||
MimeBodyPart planPart = new MimeBodyPart();
|
||||
//TODO: get plan text form html, i see getMessageCRLF just return empty string
|
||||
planPart.setText (getMessageCRLF(), charSetName);
|
||||
htmlPart = new MimeBodyPart();
|
||||
if (m_messageHTML == null){
|
||||
m_messageHTML = "<html><body>" + getMessageCRLF() + "</body></html>";
|
||||
}
|
||||
|
||||
htmlPart.setDataHandler (new DataHandler
|
||||
(new ByteArrayDataSource (m_messageHTML, charSetName, "text/html")));
|
||||
|
||||
// Create Multipart and its parts to it
|
||||
Multipart mp = new MimeMultipart("related");
|
||||
mp.addBodyPart(mbp_1);
|
||||
if (log.isLoggable(Level.FINE)) log.fine("(multi) " + getSubject() + " - " + mbp_1);
|
||||
Multipart mainPart = new MimeMultipart("mixed");
|
||||
|
||||
Multipart viewContentPart = new MimeMultipart("related");
|
||||
MimeBodyPart viewBodyPart = new MimeBodyPart();
|
||||
viewBodyPart.setContent(viewContentPart);
|
||||
mainPart.addBodyPart(viewBodyPart);
|
||||
|
||||
Multipart textAlternativePart = new MimeMultipart("alternative");
|
||||
//textAlternativePart.addBodyPart(planPart);
|
||||
textAlternativePart.addBodyPart(htmlPart);
|
||||
MimeBodyPart alternativeBodyPart = new MimeBodyPart();
|
||||
alternativeBodyPart.setContent(textAlternativePart);
|
||||
viewContentPart.addBodyPart(alternativeBodyPart);
|
||||
|
||||
if (log.isLoggable(Level.FINE)) log.fine("(multi) " + getSubject() + " - " + htmlPart);
|
||||
|
||||
// for all attachments
|
||||
for (int i = 0; i < m_attachments.size(); i++)
|
||||
|
@ -1024,12 +1039,14 @@ public final class EMail implements Serializable
|
|||
if (m_messageHTML != null && m_messageHTML.contains("cid:"+ds.getName())) {
|
||||
mbp_2.setContentID("<" + ds.getName() + ">");
|
||||
mbp_2.setDisposition(MimeBodyPart.INLINE);
|
||||
viewContentPart.addBodyPart(mbp_2);
|
||||
}else{
|
||||
mainPart.addBodyPart(mbp_2);
|
||||
}
|
||||
mp.addBodyPart(mbp_2);
|
||||
}
|
||||
|
||||
// Add to Message
|
||||
m_msg.setContent(mp);
|
||||
m_msg.setContent(mainPart);
|
||||
} // multi=part
|
||||
} // setContent
|
||||
|
||||
|
|
|
@ -1509,8 +1509,9 @@ public final class Env
|
|||
if (column.isSecure()) {
|
||||
outStr.append("********");
|
||||
} else {
|
||||
outStr.append(DB.getSQLValueString(trxName,
|
||||
"SELECT " + columnName + " FROM " + tableName + " WHERE " + tableName + "_ID = ?", (Integer)v));
|
||||
String value = DB.getSQLValueString(trxName,"SELECT " + columnName + " FROM " + tableName + " WHERE " + tableName + "_ID = ?", (Integer)v);
|
||||
if (value != null)
|
||||
outStr.append(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1011,6 +1011,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable
|
|||
if (!m_po.save())
|
||||
{
|
||||
success = false;
|
||||
m_docStatus = null;
|
||||
processMsg = "SaveError";
|
||||
}
|
||||
if (!success)
|
||||
|
|
|
@ -60,6 +60,7 @@ import net.sf.jasperreports.engine.JasperReport;
|
|||
import net.sf.jasperreports.engine.design.JRDesignQuery;
|
||||
import net.sf.jasperreports.engine.design.JasperDesign;
|
||||
import net.sf.jasperreports.engine.export.JRCsvExporter;
|
||||
import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
|
||||
import net.sf.jasperreports.engine.export.JRHtmlExporter;
|
||||
import net.sf.jasperreports.engine.export.JRPdfExporter;
|
||||
import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
|
||||
|
@ -714,8 +715,12 @@ public class ReportStarter implements ProcessCall, ClientProcess
|
|||
exporter = new JRPrintServiceExporter(ljrContext);
|
||||
else if (ext.equals("xml"))
|
||||
exporter = new JRXmlExporter(ljrContext);
|
||||
else if (ext.equals("csv") || ext.equals("ssv"))
|
||||
else if (ext.equals("csv"))
|
||||
exporter = new JRCsvExporter(ljrContext);
|
||||
else if (ext.equals("ssv")) {
|
||||
exporter = new JRCsvExporter(ljrContext);
|
||||
exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ";");
|
||||
}
|
||||
else if (ext.equals("txt"))
|
||||
exporter = new JRTextExporter(ljrContext);
|
||||
else if (ext.equals("html") || ext.equals("htm"))
|
||||
|
|
|
@ -22,6 +22,8 @@ import java.util.HashMap;
|
|||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -43,11 +45,13 @@ import org.compiere.model.MRole;
|
|||
import org.compiere.model.MSession;
|
||||
import org.compiere.model.MSysConfig;
|
||||
import org.compiere.model.MSystem;
|
||||
import org.compiere.model.MTable;
|
||||
import org.compiere.model.MUser;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Language;
|
||||
import org.compiere.util.Msg;
|
||||
import org.compiere.util.Util;
|
||||
import org.zkforge.keylistener.Keylistener;
|
||||
import org.zkoss.web.Attributes;
|
||||
import org.zkoss.web.servlet.Servlets;
|
||||
|
@ -77,7 +81,7 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 5875869799688466929L;
|
||||
private static final long serialVersionUID = 2030098494203345181L;
|
||||
|
||||
private static final String SAVED_CONTEXT = "saved.context";
|
||||
|
||||
|
@ -107,12 +111,16 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
|
|||
|
||||
private static boolean eventThreadEnabled = false;
|
||||
|
||||
private ConcurrentMap<String, String[]> m_URLParameters;
|
||||
|
||||
public AdempiereWebUI()
|
||||
{
|
||||
this.addEventListener(Events.ON_CLIENT_INFO, this);
|
||||
this.setVisible(false);
|
||||
|
||||
userPreference = new UserPreference();
|
||||
// preserve the original URL parameters as is destroyed later on loging
|
||||
m_URLParameters = new ConcurrentHashMap<String, String[]>(Executions.getCurrent().getParameterMap());
|
||||
}
|
||||
|
||||
public void onCreate()
|
||||
|
@ -275,9 +283,54 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
|
|||
}
|
||||
Env.setContext(ctx, "#LocalHttpAddr", localHttpAddr.toString());
|
||||
Clients.response(new AuScript("zAu.cmd0.clearBusy()"));
|
||||
|
||||
processParameters();
|
||||
}
|
||||
|
||||
/**
|
||||
private void processParameters() {
|
||||
String action = getPrmString("Action");
|
||||
if ("Zoom".equalsIgnoreCase(action)) {
|
||||
int tableID = getPrmInt("AD_Table_ID");
|
||||
if (tableID == 0) {
|
||||
String tableName = getPrmString("TableName");
|
||||
if (!Util.isEmpty(tableName)) {
|
||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||
if (table != null) {
|
||||
tableID = table.getAD_Table_ID();
|
||||
}
|
||||
}
|
||||
}
|
||||
int recordID = getPrmInt("Record_ID");
|
||||
if (tableID > 0) {
|
||||
AEnv.zoom(tableID, recordID);
|
||||
}
|
||||
}
|
||||
m_URLParameters = null;
|
||||
}
|
||||
|
||||
private String getPrmString(String prm) {
|
||||
String retValue = "";
|
||||
if (m_URLParameters != null) {
|
||||
String[] strs = m_URLParameters.get(prm);
|
||||
if (strs != null && strs.length == 1 && strs[0] != null)
|
||||
retValue = strs[0];
|
||||
}
|
||||
return retValue;
|
||||
}
|
||||
|
||||
private int getPrmInt(String prm) {
|
||||
int retValue = 0;
|
||||
String str = getPrmString(prm);
|
||||
try {
|
||||
if (!Util.isEmpty(str))
|
||||
retValue = Integer.parseInt(str);
|
||||
} catch (NumberFormatException e) {
|
||||
// ignore
|
||||
}
|
||||
return retValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return key listener
|
||||
*/
|
||||
@Override
|
||||
|
|
|
@ -1622,8 +1622,8 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
|||
|
||||
toolbar.enablePrint(adTabbox.getSelectedGridTab().isPrinted() && !isNewRow);
|
||||
toolbar.enableReport(!isNewRow);
|
||||
toolbar.enableExport(!adTabbox.getSelectedGridTab().isSortTab());
|
||||
toolbar.enableFileImport(!changed && !adTabbox.getSelectedGridTab().isSortTab() && adTabbox.getSelectedGridTab().isInsertRecord());
|
||||
toolbar.enableExport(!isNewRow && !adTabbox.getSelectedGridTab().isSortTab());
|
||||
toolbar.enableFileImport(!isNewRow && !changed && !adTabbox.getSelectedGridTab().isSortTab() && adTabbox.getSelectedGridTab().isInsertRecord());
|
||||
|
||||
toolbar.enableTabNavigation(breadCrumb.hasParentLink(), adTabbox.getSelectedDetailADTabpanel() != null);
|
||||
|
||||
|
|
|
@ -468,12 +468,18 @@ public class WReportCustomization implements IFormController,EventListener<Even
|
|||
m_reportEngine.createXML(sw);
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("csv") || ext.equals("ssv"))
|
||||
else if (ext.equals("csv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
m_reportEngine.createCSV(sw, ',', m_reportEngine.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("ssv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
m_reportEngine.createCSV(sw, ';', m_reportEngine.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("txt"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
package org.adempiere.webui.component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
||||
|
@ -60,11 +59,6 @@ public class AutoComplete extends Combobox
|
|||
public void setDict(String[] vals)
|
||||
{
|
||||
comboItems = vals;
|
||||
|
||||
if (comboItems != null)
|
||||
{
|
||||
Arrays.sort(comboItems);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -51,34 +51,34 @@ public class InfoProductWindow extends InfoWindow {
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -1343685368452976048L;
|
||||
private static final long serialVersionUID = -7892916038089331016L;
|
||||
|
||||
private Tabbox tabbedPane;
|
||||
private WListbox warehouseTbl;
|
||||
private String m_sqlWarehouse;
|
||||
private WListbox substituteTbl;
|
||||
private String m_sqlSubstitute;
|
||||
private WListbox relatedTbl;
|
||||
private String m_sqlRelated;
|
||||
protected Tabbox tabbedPane;
|
||||
protected WListbox warehouseTbl;
|
||||
protected String m_sqlWarehouse;
|
||||
protected WListbox substituteTbl;
|
||||
protected String m_sqlSubstitute;
|
||||
protected WListbox relatedTbl;
|
||||
protected String m_sqlRelated;
|
||||
//Available to Promise Tab
|
||||
private WListbox m_tableAtp;
|
||||
protected WListbox m_tableAtp;
|
||||
|
||||
// Group atp by warehouse or non
|
||||
private Checkbox chbShowDetailAtp;
|
||||
protected Checkbox chbShowDetailAtp;
|
||||
|
||||
//IDEMPIERE-337
|
||||
private WListbox productpriceTbl;
|
||||
private String m_sqlProductprice;
|
||||
protected WListbox productpriceTbl;
|
||||
protected String m_sqlProductprice;
|
||||
|
||||
private Textbox fieldDescription;
|
||||
protected Textbox fieldDescription;
|
||||
|
||||
/** ASI */
|
||||
protected int m_M_AttributeSetInstance_ID;
|
||||
protected int m_M_AttributeSetInstance_ID;
|
||||
|
||||
private Borderlayout contentBorderLayout;
|
||||
protected Borderlayout contentBorderLayout;
|
||||
|
||||
/** Instance Button */
|
||||
private Button m_PAttributeButton;
|
||||
protected Button m_PAttributeButton;
|
||||
|
||||
protected int m_M_Locator_ID;
|
||||
|
||||
|
@ -369,7 +369,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
});
|
||||
}
|
||||
|
||||
private void onPAttributeClick() {
|
||||
protected void onPAttributeClick() {
|
||||
Integer productInteger = getSelectedRowKey();
|
||||
if (productInteger == null) {
|
||||
m_PAttributeButton.setEnabled(false);
|
||||
|
@ -397,7 +397,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
});
|
||||
}
|
||||
|
||||
private String getSelectedWarehouseLabel() {
|
||||
protected String getSelectedWarehouseLabel() {
|
||||
for(WEditor editor : editors) {
|
||||
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_Warehouse_ID")) {
|
||||
Number value = (Number) editor.getValue();
|
||||
|
@ -461,7 +461,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
* @param M_PriceList_ID price list
|
||||
* @return M_PriceList_Version_ID price list version
|
||||
*/
|
||||
private int findPLV (int M_PriceList_ID)
|
||||
protected int findPLV (int M_PriceList_ID)
|
||||
{
|
||||
Timestamp priceDate = null;
|
||||
// Sales Order Date
|
||||
|
@ -518,7 +518,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
*
|
||||
* @param M_Warehouse_ID warehouse
|
||||
*/
|
||||
private void setWarehouse(int M_Warehouse_ID)
|
||||
protected void setWarehouse(int M_Warehouse_ID)
|
||||
{
|
||||
for(WEditor editor : editors) {
|
||||
if (editor.getGridField() != null && editor.getGridField().getColumnName().equals("M_Warehouse_ID")) {
|
||||
|
@ -535,7 +535,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
*
|
||||
* @param M_PriceList_Version_ID price list
|
||||
*/
|
||||
private void setPriceListVersion(int M_PriceList_Version_ID)
|
||||
protected void setPriceListVersion(int M_PriceList_Version_ID)
|
||||
{
|
||||
if (log.isLoggable(Level.CONFIG)) log.config("M_PriceList_Version_ID=" + M_PriceList_Version_ID);
|
||||
|
||||
|
@ -555,7 +555,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
/**
|
||||
* Refresh Query
|
||||
*/
|
||||
private void refresh(int M_Warehouse_ID, int M_PriceList_Version_ID)
|
||||
protected void refresh(int M_Warehouse_ID, int M_PriceList_Version_ID)
|
||||
{
|
||||
int m_M_Product_ID = getSelectedRowKey();
|
||||
String sql = m_sqlWarehouse;
|
||||
|
@ -641,7 +641,7 @@ public class InfoProductWindow extends InfoWindow {
|
|||
* @param m_M_Warehouse_ID
|
||||
* @param m_M_Product_ID
|
||||
*/
|
||||
private void initAtpTab (int m_M_Warehouse_ID, int m_M_Product_ID)
|
||||
protected void initAtpTab (int m_M_Warehouse_ID, int m_M_Product_ID)
|
||||
{
|
||||
// Header
|
||||
Vector<String> columnNames = new Vector<String>();
|
||||
|
|
|
@ -96,7 +96,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 6606023722122538154L;
|
||||
private static final long serialVersionUID = -2192106603768665006L;
|
||||
|
||||
protected Grid parameterGrid;
|
||||
private Borderlayout layout;
|
||||
|
@ -399,7 +399,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
btMenuProcess.setVisible(ipMenu.getChildren().size() > 0);
|
||||
}
|
||||
|
||||
private void processQueryValue() {
|
||||
protected void processQueryValue() {
|
||||
isQueryByUser = true;
|
||||
for (int i = 0; i < identifiers.size(); i++) {
|
||||
WEditor editor = identifiers.get(i);
|
||||
|
@ -434,7 +434,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
isQueryByUser = false;
|
||||
}
|
||||
|
||||
private boolean loadInfoDefinition() {
|
||||
protected boolean loadInfoDefinition() {
|
||||
String tableName = null;
|
||||
if (AD_InfoWindow_ID > 0) {
|
||||
infoWindow = new MInfoWindow(Env.getCtx(), AD_InfoWindow_ID, null);
|
||||
|
@ -514,7 +514,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
}
|
||||
|
||||
//private MInfoColumn[] topinfoColumns;//infoWindow.getInfoColumns(tableInfos);
|
||||
private boolean loadInfoRelatedTabs() {
|
||||
protected boolean loadInfoRelatedTabs() {
|
||||
if (infoWindow == null)
|
||||
return false;
|
||||
|
||||
|
@ -654,7 +654,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
prepareTable(columnInfos, infoWindow.getFromClause(), p_whereClause, infoWindow.getOrderByClause());
|
||||
}
|
||||
|
||||
private ColumnInfo createLookupColumnInfo(TableInfo[] tableInfos,
|
||||
protected ColumnInfo createLookupColumnInfo(TableInfo[] tableInfos,
|
||||
GridField gridField, MInfoColumn infoColumn) {
|
||||
String columnName = gridField.getColumnName();
|
||||
String validationCode = "";
|
||||
|
@ -801,7 +801,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
return sql;
|
||||
}
|
||||
|
||||
private MInfoColumn findInfoColumn(GridField gridField) {
|
||||
protected MInfoColumn findInfoColumn(GridField gridField) {
|
||||
for(int i = 0; i < gridFields.size(); i++) {
|
||||
if (gridFields.get(i) == gridField) {
|
||||
return infoColumns[i];
|
||||
|
@ -1138,7 +1138,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
dynamicDisplay(null);
|
||||
}
|
||||
|
||||
private void evalDisplayLogic() {
|
||||
protected void evalDisplayLogic() {
|
||||
for(WEditor editor : editors) {
|
||||
if (editor.getGridField() != null && !editor.getGridField().isDisplayed(true)) {
|
||||
editor.getComponent().setVisible(false);
|
||||
|
@ -1256,7 +1256,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
panel.appendChild(fieldEditor);
|
||||
}
|
||||
|
||||
private void createAndCheckbox() {
|
||||
protected void createAndCheckbox() {
|
||||
checkAND = new Checkbox();
|
||||
checkAND.setLabel(Msg.getMsg(Env.getCtx(), "SearchAND", true));
|
||||
String tips = Msg.getMsg(Env.getCtx(), "SearchAND", false);
|
||||
|
@ -1502,7 +1502,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
* Test Row Count
|
||||
* @return true if display
|
||||
*/
|
||||
private boolean testCount(boolean promptError)
|
||||
protected boolean testCount(boolean promptError)
|
||||
{
|
||||
long start = System.currentTimeMillis();
|
||||
String dynWhere = getSQLWhere();
|
||||
|
@ -1640,7 +1640,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
* @author xolali IDEMPIERE-1045
|
||||
* refresh(Object obj, EmbedWinInfo relatedInfo)
|
||||
*/
|
||||
private void refresh(Object obj, EmbedWinInfo relatedInfo)
|
||||
protected void refresh(Object obj, EmbedWinInfo relatedInfo)
|
||||
{
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append(relatedInfo.getInfoSql()); // delete get sql method from MInfoWindow
|
||||
|
@ -1703,7 +1703,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
* @author xolali IDEMPIERE-1045
|
||||
* GridField getGridField(MInfoColumn infoColumn)
|
||||
*/
|
||||
private GridField getGridField(MInfoColumn infoColumn){
|
||||
protected GridField getGridField(MInfoColumn infoColumn){
|
||||
String columnName = infoColumn.getColumnName();
|
||||
GridFieldVO vo = GridFieldVO.createParameter(infoContext, p_WindowNo, 0,
|
||||
columnName, infoColumn.get_Translation("Name"), infoColumn.getAD_Reference_ID(),
|
||||
|
@ -1725,7 +1725,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL
|
|||
return gridField;
|
||||
}
|
||||
|
||||
private ArrayList<Object> readData(ResultSet rs, ColumnInfo[] p_layout) throws SQLException {
|
||||
protected ArrayList<Object> readData(ResultSet rs, ColumnInfo[] p_layout) throws SQLException {
|
||||
|
||||
int colOffset = 1; // columns start with 1
|
||||
ArrayList<Object> data = new ArrayList<Object>();
|
||||
|
|
|
@ -123,7 +123,7 @@ public class WInfoPAttributeEditor extends WEditor implements IWhereClauseEditor
|
|||
* M_AttributeSet pa
|
||||
* </code>
|
||||
*/
|
||||
private void cmd_InfoPAttribute()
|
||||
protected void cmd_InfoPAttribute()
|
||||
{
|
||||
int attributeSetId = Env.getContextAsInt(ctx, windowNo, Env.TAB_INFO, "M_AttributeSet_ID");
|
||||
final InfoPAttributePanel ia = new InfoPAttributePanel(attributeSetId);
|
||||
|
|
|
@ -664,6 +664,9 @@ public class LoginPanel extends Window implements EventListener<Event>
|
|||
/** get default languages from the browser */
|
||||
private List<String> browserLanguages(String header) {
|
||||
List<String> arrstr = new ArrayList<String>();
|
||||
if (header == null)
|
||||
return arrstr;
|
||||
|
||||
for (String str : header.split(",")){
|
||||
String[] arr = str.trim().replace("-", "_").split(";");
|
||||
|
||||
|
|
|
@ -400,12 +400,18 @@ public class ReportAction implements EventListener<Event>
|
|||
re.createXML(sw);
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("csv") || ext.equals("ssv"))
|
||||
else if (ext.equals("csv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
re.createCSV(sw, ',', re.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("ssv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
re.createCSV(sw, ';', re.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("txt"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
|
||||
package org.adempiere.webui.part;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.adempiere.webui.component.Menupopup;
|
||||
import org.adempiere.webui.component.Tab;
|
||||
import org.adempiere.webui.component.Tabbox;
|
||||
import org.adempiere.webui.component.Tabpanel;
|
||||
|
@ -21,11 +24,14 @@ import org.adempiere.webui.component.Tabs;
|
|||
import org.adempiere.webui.panel.IHelpContext;
|
||||
import org.adempiere.webui.session.SessionManager;
|
||||
import org.compiere.model.X_AD_CtxHelp;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.event.SwipeEvent;
|
||||
import org.zkoss.zul.Menuitem;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -127,7 +133,7 @@ public class WindowContainer extends AbstractUIPart
|
|||
*/
|
||||
public Tab insertBefore(Tab refTab, Component comp, String title, boolean closeable, boolean enable)
|
||||
{
|
||||
Tab tab = new Tab();
|
||||
final Tab tab = new Tab();
|
||||
if (title != null)
|
||||
{
|
||||
setTabTitle(title, tab);
|
||||
|
@ -198,6 +204,63 @@ public class WindowContainer extends AbstractUIPart
|
|||
setSelectedTab(tab);
|
||||
}
|
||||
|
||||
Menupopup popupClose = new Menupopup();
|
||||
Menuitem mi;
|
||||
if(tab.getIndex()!=0){
|
||||
mi = new Menuitem(Msg.getMsg(Env.getCtx(), "Close"));
|
||||
popupClose.appendChild(mi);
|
||||
mi.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
|
||||
public void onEvent(Event event) throws Exception {
|
||||
int currentTabIndex = tab.getIndex();
|
||||
int tabsSizeBeforeClose = tabbox.getTabs().getChildren().size();
|
||||
|
||||
if ( tabsSizeBeforeClose == currentTabIndex + 1 ) {
|
||||
currentTabIndex--;
|
||||
}
|
||||
if ( tab.getPreviousSibling() != null ) {
|
||||
tab.onClose();
|
||||
// Update the current tab index.
|
||||
if ( tabsSizeBeforeClose != tabbox.getTabs().getChildren().size() )
|
||||
tabbox.setSelectedIndex( currentTabIndex );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mi = new Menuitem(Msg.getMsg(Env.getCtx(), "CloseOtherWindows"));
|
||||
popupClose.appendChild(mi);
|
||||
mi.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
|
||||
public void onEvent(Event event) throws Exception {
|
||||
int focusTabIndex = 1;
|
||||
List<Component> tabs = tabbox.getTabs().getChildren();
|
||||
for ( int i = tabs.size() - 1; i > 0; i-- ) {
|
||||
if(!((Tab)tabs.get( i )).equals(tab)){
|
||||
((Tab)tabs.get( i )).setSelected(false);
|
||||
|
||||
((Tab)tabs.get( i )).onClose();
|
||||
}
|
||||
}
|
||||
tabbox.setSelectedIndex(focusTabIndex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
mi = new Menuitem(Msg.getMsg(Env.getCtx(), "CloseAllWindows"));
|
||||
mi.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
|
||||
public void onEvent(Event event) throws Exception {
|
||||
int focusTabIndex = 0;
|
||||
List<Component> tabs = tabbox.getTabs().getChildren();
|
||||
for ( int i = tabs.size() - 1; i > 0; i-- ) {
|
||||
((Tab)tabs.get( i )).setSelected(false);
|
||||
((Tab)tabs.get( i )).onClose();
|
||||
}
|
||||
tabbox.setSelectedIndex( focusTabIndex );
|
||||
}
|
||||
});
|
||||
popupClose.appendChild(mi);
|
||||
popupClose.setWidth("auto");
|
||||
popupClose.setPage(tab.getPage());
|
||||
tab.setContext(popupClose);
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.sf.jasperreports.engine.JRExporterParameter;
|
|||
import net.sf.jasperreports.engine.JasperPrint;
|
||||
import net.sf.jasperreports.engine.JasperReport;
|
||||
import net.sf.jasperreports.engine.export.JRCsvExporter;
|
||||
import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
|
||||
import net.sf.jasperreports.engine.export.JRHtmlExporter;
|
||||
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
|
||||
import net.sf.jasperreports.engine.export.JRPdfExporter;
|
||||
|
@ -57,7 +58,7 @@ public class ZkJRViewer extends Window implements EventListener<Event>, ITabOnCl
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -8378226782387071338L;
|
||||
private static final long serialVersionUID = -1250003381099609830L;
|
||||
|
||||
private JasperPrint jasperPrint;
|
||||
private Listbox previewType = new Listbox();
|
||||
|
@ -103,6 +104,7 @@ public class ZkJRViewer extends Window implements EventListener<Event>, ITabOnCl
|
|||
previewType.appendItem("HTML", "HTML");
|
||||
previewType.appendItem("Excel", "XLS");
|
||||
previewType.appendItem("CSV", "CSV");
|
||||
previewType.appendItem("SSV", "SSV");
|
||||
if ("PDF".equals(defaultType)) {
|
||||
previewType.setSelectedIndex(0);
|
||||
} else if ("HTML".equals(defaultType)) {
|
||||
|
@ -111,6 +113,8 @@ public class ZkJRViewer extends Window implements EventListener<Event>, ITabOnCl
|
|||
previewType.setSelectedIndex(2);
|
||||
} else if ("CSV".equals(defaultType)) {
|
||||
previewType.setSelectedIndex(3);
|
||||
} else if ("SSV".equals(defaultType)) {
|
||||
previewType.setSelectedIndex(4);
|
||||
} else {
|
||||
previewType.setSelectedIndex(0);
|
||||
log.info("Format not Valid: "+defaultType);
|
||||
|
@ -126,6 +130,8 @@ public class ZkJRViewer extends Window implements EventListener<Event>, ITabOnCl
|
|||
previewType.setSelectedIndex(0); // default to PDF if cannot export
|
||||
} else if ("CSV".equals(defaultType)) {
|
||||
previewType.setSelectedIndex(0); // default to PDF if cannot export
|
||||
} else if ("SSV".equals(defaultType)) {
|
||||
previewType.setSelectedIndex(0); // default to PDF if cannot export
|
||||
} else {
|
||||
previewType.setSelectedIndex(0);
|
||||
log.info("Format not Valid: "+defaultType);
|
||||
|
@ -293,6 +299,23 @@ public class ZkJRViewer extends Window implements EventListener<Event>, ITabOnCl
|
|||
exporter.exportReport();
|
||||
|
||||
media = new AMedia(m_title, "csv", "application/csv", file, true);
|
||||
|
||||
}else if ("SSV".equals(reportType)) {
|
||||
String path = System.getProperty("java.io.tmpdir");
|
||||
String prefix = makePrefix(jasperPrint.getName());
|
||||
if (log.isLoggable(Level.FINE))
|
||||
{
|
||||
log.log(Level.FINE, "Path="+path + " Prefix="+prefix);
|
||||
}
|
||||
File file = File.createTempFile(prefix, ".ssv", new File(path));
|
||||
FileOutputStream fos = new FileOutputStream(file);
|
||||
JRCsvExporter exporter= new JRCsvExporter();
|
||||
exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ";");
|
||||
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
|
||||
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fos);
|
||||
exporter.exportReport();
|
||||
|
||||
media = new AMedia(m_title, "ssv", "application/ssv", file, true);
|
||||
}
|
||||
} finally {
|
||||
Thread.currentThread().setContextClassLoader(cl);
|
||||
|
|
|
@ -949,12 +949,18 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
|||
m_reportEngine.createXML(sw);
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("csv") || ext.equals("ssv"))
|
||||
else if (ext.equals("csv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
m_reportEngine.createCSV(sw, ',', m_reportEngine.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("ssv"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
m_reportEngine.createCSV(sw, ';', m_reportEngine.getPrintFormat().getLanguage());
|
||||
data = sw.getBuffer().toString().getBytes();
|
||||
}
|
||||
else if (ext.equals("txt"))
|
||||
{
|
||||
StringWriter sw = new StringWriter();
|
||||
|
|
Loading…
Reference in New Issue