hg merge release-2.1 (merge release2.1 into development)

This commit is contained in:
Carlos Ruiz 2014-12-02 10:04:17 -05:00
commit e0a05471f9
22 changed files with 270 additions and 89 deletions

View File

@ -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));
}

View File

@ -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();
}

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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
(new ByteArrayDataSource (m_messageHTML, charSetName, "text/html")));
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

View File

@ -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);
}
}
}

View File

@ -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)

View File

@ -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"))

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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);
}
}
/**

View File

@ -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>();

View File

@ -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>();

View File

@ -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);

View File

@ -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(";");

View File

@ -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();

View File

@ -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;
/**
*
@ -128,7 +134,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);
@ -199,6 +205,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;
}

View File

@ -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);
@ -292,6 +298,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);

View File

@ -948,12 +948,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();