* Implemented value preference dialog.
This commit is contained in:
parent
9551cae4fc
commit
003627ee53
|
@ -0,0 +1,523 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||||
|
* 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. *
|
||||||
|
* For the text or an alternative of this public license, you may reach us *
|
||||||
|
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||||
|
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.adempiere.webui;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.logging.*;
|
||||||
|
|
||||||
|
import org.adempiere.webui.apps.AEnv;
|
||||||
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.component.Checkbox;
|
||||||
|
import org.adempiere.webui.component.ConfirmPanel;
|
||||||
|
import org.adempiere.webui.component.Grid;
|
||||||
|
import org.adempiere.webui.component.Label;
|
||||||
|
import org.adempiere.webui.component.Panel;
|
||||||
|
import org.adempiere.webui.component.Row;
|
||||||
|
import org.adempiere.webui.component.Rows;
|
||||||
|
import org.adempiere.webui.component.Textbox;
|
||||||
|
import org.adempiere.webui.component.Window;
|
||||||
|
import org.adempiere.webui.window.FDialog;
|
||||||
|
import org.compiere.model.*;
|
||||||
|
import org.compiere.util.*;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
import org.zkoss.zul.Div;
|
||||||
|
import org.zkoss.zul.Separator;
|
||||||
|
import org.zkoss.zul.Vbox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maintain Value Preferences.
|
||||||
|
* To delete a preference, select a null value and save.
|
||||||
|
*
|
||||||
|
* @author Jorg Janke
|
||||||
|
* @version $Id: ValuePreference.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
|
||||||
|
*/
|
||||||
|
public class ValuePreference extends Window implements EventListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Factory
|
||||||
|
* @param mField field
|
||||||
|
* @param aValue value
|
||||||
|
* @return ValuePreference or null
|
||||||
|
*/
|
||||||
|
public static ValuePreference start (GridField mField, Object aValue)
|
||||||
|
{
|
||||||
|
return start (mField, aValue, null);
|
||||||
|
} // start
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory
|
||||||
|
* @param mField field
|
||||||
|
* @param aValue value
|
||||||
|
* @param aDisplayValue display value
|
||||||
|
* @return ValuePreference or null
|
||||||
|
*/
|
||||||
|
public static ValuePreference start (GridField mField, Object aValue, String aDisplayValue)
|
||||||
|
{
|
||||||
|
if (!mField.isEditable(false))
|
||||||
|
{
|
||||||
|
log.info("Field not editable (R/O)");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set Value/DisplayValue
|
||||||
|
String Value = null;
|
||||||
|
String DisplayValue = null;
|
||||||
|
if (aValue != null)
|
||||||
|
{
|
||||||
|
Value = aValue.toString();
|
||||||
|
DisplayValue = (aDisplayValue == null) ? Value : aDisplayValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get from mField
|
||||||
|
// AD_Window_ID, DisplayAttribute, Attribute, DisplayType, AD_Referenece_ID
|
||||||
|
int AD_Window_ID = mField.getAD_Window_ID();
|
||||||
|
String Attribute = mField.getColumnName();
|
||||||
|
String DisplayAttribute = mField.getHeader();
|
||||||
|
int displayType = mField.getDisplayType();
|
||||||
|
int AD_Reference_ID = 0;
|
||||||
|
int WindowNo = mField.getWindowNo();
|
||||||
|
|
||||||
|
// Get from Environment (WindowNo)
|
||||||
|
// AD_Client_ID, AD_Org_ID, AD_User_ID, Frame
|
||||||
|
int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
|
||||||
|
int AD_Org_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "AD_Org_ID");
|
||||||
|
int AD_User_ID = Env.getAD_User_ID(Env.getCtx());
|
||||||
|
|
||||||
|
// Create Editor
|
||||||
|
ValuePreference vp = new ValuePreference (WindowNo,
|
||||||
|
AD_Client_ID, AD_Org_ID, AD_User_ID, AD_Window_ID,
|
||||||
|
Attribute, DisplayAttribute, Value, DisplayValue,
|
||||||
|
displayType, AD_Reference_ID);
|
||||||
|
return vp;
|
||||||
|
} // create
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the popup menu item to start the ValuePreference editor.
|
||||||
|
* <code>
|
||||||
|
* .. add method
|
||||||
|
* public void setField (MField mField)
|
||||||
|
* {
|
||||||
|
* m_mField = mField;
|
||||||
|
* if (m_mField != null)
|
||||||
|
* ValuePreference.addMenu (this, m_popupMenu);
|
||||||
|
* } // setField
|
||||||
|
*
|
||||||
|
* .. in actionPerformed add ..
|
||||||
|
* if (e.getActionCommand().equals(ValuePreference.NAME))
|
||||||
|
* {
|
||||||
|
* ValuePreference.start (m_mField, getValue(), DisplayValue);
|
||||||
|
* return;
|
||||||
|
* }
|
||||||
|
* </code>
|
||||||
|
* @param l listener
|
||||||
|
* @param popupMenu menu
|
||||||
|
* @return JMenuItem
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
public static CMenuItem addMenu (ActionListener l, JPopupMenu popupMenu)
|
||||||
|
{
|
||||||
|
CMenuItem mi = new CMenuItem (Msg.getMsg(Env.getCtx(), NAME), s_icon);
|
||||||
|
mi.setActionCommand(NAME);
|
||||||
|
mi.addActionListener(l);
|
||||||
|
popupMenu.add(mi);
|
||||||
|
return mi;
|
||||||
|
}*/ // addMenu
|
||||||
|
|
||||||
|
/** The Name of the Editor */
|
||||||
|
public static final String NAME = "ValuePreference";
|
||||||
|
/** The Menu Icon */
|
||||||
|
private static String ICON_URL = "images/VPreference16.gif";
|
||||||
|
/** Logger */
|
||||||
|
private static CLogger log = CLogger.getCLogger(ValuePreference.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param WindowNo window no
|
||||||
|
* @param AD_Client_ID client
|
||||||
|
* @param AD_Org_ID org
|
||||||
|
* @param AD_User_ID user
|
||||||
|
* @param AD_Window_ID window id
|
||||||
|
* @param Attribute attribute
|
||||||
|
* @param DisplayAttribute attribute display
|
||||||
|
* @param Value value
|
||||||
|
* @param DisplayValue calue display
|
||||||
|
* @param displayType display type
|
||||||
|
* @param AD_Reference_ID reference
|
||||||
|
*/
|
||||||
|
public ValuePreference (int WindowNo,
|
||||||
|
int AD_Client_ID, int AD_Org_ID, int AD_User_ID, int AD_Window_ID,
|
||||||
|
String Attribute, String DisplayAttribute, String Value, String DisplayValue,
|
||||||
|
int displayType, int AD_Reference_ID)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.setTitle(Msg.getMsg(Env.getCtx(), NAME) + " " + DisplayAttribute);
|
||||||
|
|
||||||
|
log.config("WindowNo=" + WindowNo
|
||||||
|
+ ", Client_ID=" + AD_Client_ID + ", Org_ID=" + AD_Org_ID + ", User_ID=" + AD_User_ID + ", Window_ID=" + AD_Window_ID
|
||||||
|
+ ", Attribute=" + Attribute + "/" + DisplayAttribute + ", Value=" + Value + "/" + DisplayValue
|
||||||
|
+ ", DisplayType=" + displayType + ", Reference_ID=" + AD_Reference_ID);
|
||||||
|
|
||||||
|
m_ctx = Env.getCtx();
|
||||||
|
m_WindowNo = WindowNo;
|
||||||
|
m_AD_Client_ID = AD_Client_ID;
|
||||||
|
m_AD_Org_ID = AD_Org_ID;
|
||||||
|
m_AD_User_ID = AD_User_ID;
|
||||||
|
m_AD_Window_ID = AD_Window_ID;
|
||||||
|
m_Attribute = Attribute;
|
||||||
|
m_DisplayAttribute = DisplayAttribute;
|
||||||
|
m_Value = Value;
|
||||||
|
m_DisplayValue = DisplayValue;
|
||||||
|
m_DisplayType = displayType;
|
||||||
|
//
|
||||||
|
m_role = MRole.getDefault();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
dynInit();
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setClosable(true);
|
||||||
|
AEnv.showCenterScreen(this);
|
||||||
|
} // ValuePreference
|
||||||
|
|
||||||
|
private Properties m_ctx;
|
||||||
|
private int m_WindowNo;
|
||||||
|
private int m_AD_Client_ID;
|
||||||
|
private int m_AD_Org_ID;
|
||||||
|
private int m_AD_User_ID;
|
||||||
|
private int m_AD_Window_ID;
|
||||||
|
private String m_Attribute;
|
||||||
|
private String m_DisplayAttribute;
|
||||||
|
private String m_Value;
|
||||||
|
private String m_DisplayValue;
|
||||||
|
private int m_DisplayType;
|
||||||
|
private MRole m_role;
|
||||||
|
|
||||||
|
// Display
|
||||||
|
private Panel setPanel = new Panel();
|
||||||
|
private Grid setLayout = new Grid();
|
||||||
|
private Label lAttribute = new Label();
|
||||||
|
private Textbox fAttribute = new Textbox();
|
||||||
|
private Label lAttributeValue = new Label();
|
||||||
|
private Label lValue = new Label();
|
||||||
|
private Label lValueValue = new Label();
|
||||||
|
private Textbox fValue = new Textbox();
|
||||||
|
private Label lSetFor = new Label();
|
||||||
|
private Checkbox cbClient = new Checkbox();
|
||||||
|
private Checkbox cbOrg = new Checkbox();
|
||||||
|
private Checkbox cbUser = new Checkbox();
|
||||||
|
private Checkbox cbWindow = new Checkbox();
|
||||||
|
private Label lExplanation = new Label();
|
||||||
|
|
||||||
|
private ConfirmPanel confirmPanel = new ConfirmPanel(true);
|
||||||
|
private Button bDelete;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Static Layout
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
private void init() throws Exception
|
||||||
|
{
|
||||||
|
//
|
||||||
|
lAttribute.setValue(Msg.translate(m_ctx, "Attribute").replace("&", ""));
|
||||||
|
lValue.setValue(Msg.translate(m_ctx, "Value").replace("&", ""));
|
||||||
|
lSetFor.setValue(Msg.getMsg(m_ctx, "ValuePreferenceSetFor"));
|
||||||
|
cbClient.setLabel(Msg.translate(m_ctx, "AD_Client_ID"));
|
||||||
|
cbOrg.setLabel(Msg.translate(m_ctx, "AD_Org_ID"));
|
||||||
|
cbUser.setLabel(Msg.translate(m_ctx, "AD_User_ID"));
|
||||||
|
cbUser.setChecked(true);
|
||||||
|
cbWindow.setLabel(Msg.translate(m_ctx, "AD_Window_ID"));
|
||||||
|
cbWindow.setChecked(true);
|
||||||
|
//
|
||||||
|
setPanel.appendChild(setLayout);
|
||||||
|
fAttribute.setReadonly(true);
|
||||||
|
fValue.setReadonly(true);
|
||||||
|
|
||||||
|
Vbox box = new Vbox();
|
||||||
|
box.setWidth("100%");
|
||||||
|
box.setHeight("100%");
|
||||||
|
box.setParent(this);
|
||||||
|
box.appendChild(setPanel);
|
||||||
|
|
||||||
|
Rows rows = new Rows();
|
||||||
|
rows.setParent(setLayout);
|
||||||
|
|
||||||
|
Row row = new Row();
|
||||||
|
row.setSpans("1, 4, 1");
|
||||||
|
Div div = new Div();
|
||||||
|
div.setStyle("text-align: right");
|
||||||
|
div.appendChild(lAttribute);
|
||||||
|
row.appendChild(div);
|
||||||
|
row.appendChild(fAttribute);
|
||||||
|
fAttribute.setWidth("100%");
|
||||||
|
row.appendChild(lAttributeValue);
|
||||||
|
rows.appendChild(row);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
row.setSpans("1, 4, 1");
|
||||||
|
div = new Div();
|
||||||
|
div.setStyle("text-align: right");
|
||||||
|
div.appendChild(lValue);
|
||||||
|
row.appendChild(div);
|
||||||
|
row.appendChild(fValue);
|
||||||
|
fValue.setWidth("100%");
|
||||||
|
row.appendChild(lValueValue);
|
||||||
|
rows.appendChild(row);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
div = new Div();
|
||||||
|
div.setStyle("text-align: right");
|
||||||
|
div.appendChild(lSetFor);
|
||||||
|
row.appendChild(div);
|
||||||
|
row.appendChild(cbClient);
|
||||||
|
row.appendChild(cbOrg);
|
||||||
|
row.appendChild(cbUser);
|
||||||
|
row.appendChild(cbWindow);
|
||||||
|
rows.appendChild(row);
|
||||||
|
|
||||||
|
//
|
||||||
|
Separator separator = new Separator();
|
||||||
|
separator.setBar(true);
|
||||||
|
separator.setHeight("20px");
|
||||||
|
box.appendChild(separator);
|
||||||
|
box.appendChild(confirmPanel);
|
||||||
|
|
||||||
|
this.setBorder("normal");
|
||||||
|
setLayout.setSclass("grid-no-striped");
|
||||||
|
setLayout.setOddRowSclass("even");
|
||||||
|
|
||||||
|
} // jbInit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamic Init
|
||||||
|
*/
|
||||||
|
private void dynInit()
|
||||||
|
{
|
||||||
|
// Set Attribute/Value
|
||||||
|
fAttribute.setText(m_DisplayAttribute);
|
||||||
|
lAttributeValue.setValue(m_Attribute);
|
||||||
|
fValue.setText(m_DisplayValue);
|
||||||
|
lValueValue.setValue(m_Value);
|
||||||
|
if (CLogMgt.isLevelFine())
|
||||||
|
{
|
||||||
|
lAttributeValue.setVisible(false);
|
||||||
|
lValueValue.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActionListener
|
||||||
|
cbClient.setEnabled(false);
|
||||||
|
cbClient.setChecked(true);
|
||||||
|
// cbClient.addActionListener(this);
|
||||||
|
|
||||||
|
// Can Change Org
|
||||||
|
if (MRole.PREFERENCETYPE_Client.equals(m_role.getPreferenceType()))
|
||||||
|
cbOrg.addEventListener(Events.ON_CHECK, this);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cbOrg.setEnabled(false);
|
||||||
|
cbOrg.setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Can Change User
|
||||||
|
if (MRole.PREFERENCETYPE_Client.equals(m_role.getPreferenceType())
|
||||||
|
|| MRole.PREFERENCETYPE_Organization.equals(m_role.getPreferenceType()))
|
||||||
|
cbUser.addEventListener(Events.ON_CHECK, this);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cbUser.setEnabled(false);
|
||||||
|
cbUser.setChecked(true);
|
||||||
|
}
|
||||||
|
// Can change all/specific
|
||||||
|
cbWindow.addEventListener(Events.ON_CHECK, this);
|
||||||
|
|
||||||
|
// Other
|
||||||
|
confirmPanel.addComponentsLeft(confirmPanel.createButton("Delete"));
|
||||||
|
confirmPanel.addActionListener(Events.ON_CLICK, this);
|
||||||
|
bDelete = confirmPanel.getButton("Delete");
|
||||||
|
setExplanation();
|
||||||
|
} // dynInit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action Listener
|
||||||
|
* @param e event
|
||||||
|
*/
|
||||||
|
public void onEvent(Event e) throws Exception
|
||||||
|
{
|
||||||
|
if (e.getTarget().getId().equals("Cancel"))
|
||||||
|
{
|
||||||
|
this.detach();
|
||||||
|
}
|
||||||
|
else if (e.getTarget().getId().equals("Ok"))
|
||||||
|
{
|
||||||
|
insert();
|
||||||
|
detach();
|
||||||
|
}
|
||||||
|
else if (e.getTarget() == bDelete)
|
||||||
|
{
|
||||||
|
int no = delete();
|
||||||
|
if (no == 0)
|
||||||
|
FDialog.warn(m_WindowNo, this.getTitle(), "ValuePreferenceNotFound");
|
||||||
|
else
|
||||||
|
FDialog.info(m_WindowNo, this, "ValuePreferenceDeleted", String.valueOf(no));
|
||||||
|
detach();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
setExplanation();
|
||||||
|
} // actionPerformed
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Explanation
|
||||||
|
*/
|
||||||
|
private void setExplanation()
|
||||||
|
{
|
||||||
|
/** @todo translation */
|
||||||
|
StringBuffer expl = new StringBuffer("For ");
|
||||||
|
if (cbClient.isChecked() && cbOrg.isChecked() )
|
||||||
|
expl.append("this Client and Organization");
|
||||||
|
else if (cbClient.isChecked() && !cbOrg.isChecked())
|
||||||
|
expl.append("all Organizations of this Client");
|
||||||
|
else if (!cbClient.isChecked() && cbOrg.isChecked())
|
||||||
|
{
|
||||||
|
cbOrg.setChecked(false);
|
||||||
|
expl.append("entire System");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
expl.append("entire System");
|
||||||
|
//
|
||||||
|
if (cbUser.isChecked())
|
||||||
|
expl.append(", this User");
|
||||||
|
else
|
||||||
|
expl.append(", all Users");
|
||||||
|
//
|
||||||
|
if (cbWindow.isChecked())
|
||||||
|
expl.append(" and this Window");
|
||||||
|
else
|
||||||
|
expl.append(" and all Windows");
|
||||||
|
//
|
||||||
|
if (Env.getLanguage(Env.getCtx()).isBaseLanguage())
|
||||||
|
{
|
||||||
|
lExplanation.setValue(expl.toString ());
|
||||||
|
this.invalidate();
|
||||||
|
}
|
||||||
|
} // setExplanation
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete Preference
|
||||||
|
* @return number of rows deleted
|
||||||
|
*/
|
||||||
|
public int delete()
|
||||||
|
{
|
||||||
|
log.info("");
|
||||||
|
|
||||||
|
StringBuffer sql = new StringBuffer ("DELETE FROM AD_Preference WHERE ");
|
||||||
|
sql.append("AD_Client_ID=").append(cbClient.isChecked() ? m_AD_Client_ID : 0);
|
||||||
|
sql.append(" AND AD_Org_ID=").append(cbOrg.isChecked() ? m_AD_Org_ID : 0);
|
||||||
|
if (cbUser.isChecked())
|
||||||
|
sql.append(" AND AD_User_ID=").append(m_AD_User_ID);
|
||||||
|
else
|
||||||
|
sql.append(" AND AD_User_ID IS NULL");
|
||||||
|
if (cbWindow.isChecked())
|
||||||
|
sql.append(" AND AD_Window_ID=").append(m_AD_Window_ID);
|
||||||
|
else
|
||||||
|
sql.append(" AND AD_Window_ID IS NULL");
|
||||||
|
sql.append(" AND Attribute='").append(m_Attribute).append("'");
|
||||||
|
//
|
||||||
|
log.fine( sql.toString());
|
||||||
|
int no = DB.executeUpdate(sql.toString(), null);
|
||||||
|
if (no > 0)
|
||||||
|
Env.setContext(m_ctx, getContextKey(), (String)null);
|
||||||
|
return no;
|
||||||
|
} // delete
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Context Key
|
||||||
|
* @return Context Key
|
||||||
|
*/
|
||||||
|
private String getContextKey()
|
||||||
|
{
|
||||||
|
if (cbWindow.isChecked())
|
||||||
|
return "P" + m_AD_Window_ID + "|" + m_Attribute;
|
||||||
|
else
|
||||||
|
return "P|" + m_Attribute;
|
||||||
|
} // getContextKey
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save to Disk
|
||||||
|
*/
|
||||||
|
public void insert()
|
||||||
|
{
|
||||||
|
log.info("");
|
||||||
|
|
||||||
|
// --- Delete first
|
||||||
|
int no = delete();
|
||||||
|
|
||||||
|
// Handle NULL
|
||||||
|
if (m_Value == null || m_Value.length() == 0)
|
||||||
|
{
|
||||||
|
if (DisplayType.isLookup(m_DisplayType))
|
||||||
|
m_Value = "-1"; // -1 may cause problems (BPartner - M_DiscountSchema
|
||||||
|
else if (DisplayType.isDate(m_DisplayType))
|
||||||
|
m_Value = " ";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FDialog.warn(m_WindowNo, this.getTitle(), "ValuePreferenceNotInserted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Inserting
|
||||||
|
int Client_ID = cbClient.isChecked() ? m_AD_Client_ID : 0;
|
||||||
|
int Org_ID = cbOrg.isChecked() ? m_AD_Org_ID : 0;
|
||||||
|
int AD_Preference_ID = DB.getNextID(m_ctx, "AD_Preference", null);
|
||||||
|
//
|
||||||
|
StringBuffer sql = new StringBuffer ("INSERT INTO AD_Preference ("
|
||||||
|
+ "AD_Preference_ID, AD_Client_ID, AD_Org_ID, IsActive, Created,CreatedBy,Updated,UpdatedBy,"
|
||||||
|
+ "AD_Window_ID, AD_User_ID, Attribute, Value) VALUES (");
|
||||||
|
sql.append(AD_Preference_ID).append(",").append(Client_ID).append(",").append(Org_ID)
|
||||||
|
.append(", 'Y',SysDate,").append(m_AD_User_ID).append(",SysDate,").append(m_AD_User_ID).append(", ");
|
||||||
|
if (cbWindow.isChecked())
|
||||||
|
sql.append(m_AD_Window_ID).append(",");
|
||||||
|
else
|
||||||
|
sql.append("NULL,") ;
|
||||||
|
if (cbUser.isChecked())
|
||||||
|
sql.append(m_AD_User_ID).append(",");
|
||||||
|
else
|
||||||
|
sql.append("NULL,");
|
||||||
|
//
|
||||||
|
sql.append(DB.TO_STRING(m_Attribute)).append(",").append(DB.TO_STRING(m_Value)).append(")");
|
||||||
|
//
|
||||||
|
log.fine( sql.toString());
|
||||||
|
no = DB.executeUpdate(sql.toString(), null);
|
||||||
|
if (no == 1)
|
||||||
|
{
|
||||||
|
Env.setContext(m_ctx, getContextKey(), m_Value);
|
||||||
|
FDialog.info(m_WindowNo, this, "ValuePreferenceInserted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
FDialog.warn(m_WindowNo, this.getTitle(), "ValuePreferenceNotInserted");
|
||||||
|
|
||||||
|
} // insert
|
||||||
|
|
||||||
|
|
||||||
|
} // ValuePreference
|
|
@ -17,10 +17,12 @@
|
||||||
|
|
||||||
package org.adempiere.webui.editor;
|
package org.adempiere.webui.editor;
|
||||||
|
|
||||||
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.component.NumberBox;
|
import org.adempiere.webui.component.NumberBox;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
import org.adempiere.webui.event.ValueChangeEvent;
|
import org.adempiere.webui.event.ValueChangeEvent;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.Events;
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
@ -117,13 +119,11 @@ public class WNumberEditor extends WEditor
|
||||||
|
|
||||||
public void onMenu(ContextMenuEvent evt)
|
public void onMenu(ContextMenuEvent evt)
|
||||||
{
|
{
|
||||||
/* Wrong implementation for Value Preference - Swing is being called
|
|
||||||
if (WEditorPopupMenu.PREFERENCE_EVENT.equals(evt.getContextEvent()))
|
if (WEditorPopupMenu.PREFERENCE_EVENT.equals(evt.getContextEvent()))
|
||||||
{
|
{
|
||||||
if (MRole.getDefault().isShowPreference())
|
if (MRole.getDefault().isShowPreference())
|
||||||
ValuePreference.start (this.getGridField(), getValue());
|
ValuePreference.start (this.getGridField(), getValue());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.apps.AEnv;
|
import org.adempiere.webui.apps.AEnv;
|
||||||
import org.adempiere.webui.component.Searchbox;
|
import org.adempiere.webui.component.Searchbox;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
|
@ -34,7 +35,6 @@ import org.adempiere.webui.grid.WBPartner;
|
||||||
import org.adempiere.webui.panel.InfoBPartnerPanel;
|
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.panel.InfoProductPanel;
|
||||||
import org.compiere.grid.ed.ValuePreference;
|
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
import org.compiere.model.Lookup;
|
import org.compiere.model.Lookup;
|
||||||
import org.compiere.model.MLookup;
|
import org.compiere.model.MLookup;
|
||||||
|
|
|
@ -17,10 +17,11 @@
|
||||||
|
|
||||||
package org.adempiere.webui.editor;
|
package org.adempiere.webui.editor;
|
||||||
|
|
||||||
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
|
import org.adempiere.webui.event.ContextMenuListener;
|
||||||
import org.adempiere.webui.event.ValueChangeEvent;
|
import org.adempiere.webui.event.ValueChangeEvent;
|
||||||
import org.compiere.grid.ed.ValuePreference;
|
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.util.DisplayType;
|
import org.compiere.util.DisplayType;
|
||||||
|
@ -33,7 +34,7 @@ import org.zkoss.zk.ui.event.Events;
|
||||||
* @date Mar 11, 2007
|
* @date Mar 11, 2007
|
||||||
* @version $Revision: 0.10 $
|
* @version $Revision: 0.10 $
|
||||||
*/
|
*/
|
||||||
public class WStringEditor extends WEditor
|
public class WStringEditor extends WEditor implements ContextMenuListener
|
||||||
{
|
{
|
||||||
private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE};
|
private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE};
|
||||||
|
|
||||||
|
@ -41,6 +42,8 @@ public class WStringEditor extends WEditor
|
||||||
|
|
||||||
private String oldText;
|
private String oldText;
|
||||||
|
|
||||||
|
private WEditorPopupMenu popupMenu;
|
||||||
|
|
||||||
|
|
||||||
public WStringEditor(GridField gridField)
|
public WStringEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
|
@ -75,6 +78,8 @@ public class WStringEditor extends WEditor
|
||||||
textbox.setMultiline(true);
|
textbox.setMultiline(true);
|
||||||
textbox.setRows(8);
|
textbox.setRows(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
popupMenu = new WEditorPopupMenu(false, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEvent(Event event)
|
public void onEvent(Event event)
|
||||||
|
@ -129,6 +134,11 @@ public class WStringEditor extends WEditor
|
||||||
return LISTENER_EVENTS;
|
return LISTENER_EVENTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WEditorPopupMenu getPopupMenu()
|
||||||
|
{
|
||||||
|
return popupMenu;
|
||||||
|
}
|
||||||
|
|
||||||
public void onMenu(ContextMenuEvent evt)
|
public void onMenu(ContextMenuEvent evt)
|
||||||
{
|
{
|
||||||
if (WEditorPopupMenu.PREFERENCE_EVENT.equals(evt.getContextEvent()))
|
if (WEditorPopupMenu.PREFERENCE_EVENT.equals(evt.getContextEvent()))
|
||||||
|
|
|
@ -22,13 +22,13 @@ import java.beans.PropertyChangeEvent;
|
||||||
import javax.swing.event.ListDataEvent;
|
import javax.swing.event.ListDataEvent;
|
||||||
import javax.swing.event.ListDataListener;
|
import javax.swing.event.ListDataListener;
|
||||||
|
|
||||||
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.apps.AEnv;
|
import org.adempiere.webui.apps.AEnv;
|
||||||
import org.adempiere.webui.component.ListItem;
|
import org.adempiere.webui.component.ListItem;
|
||||||
import org.adempiere.webui.component.Listbox;
|
import org.adempiere.webui.component.Listbox;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
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.compiere.grid.ed.ValuePreference;
|
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
import org.compiere.model.Lookup;
|
import org.compiere.model.Lookup;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
|
|
|
@ -308,6 +308,8 @@ DataStatusListener, ValueChangeListener
|
||||||
label.setStyle("cursor: pointer; text-decoration: underline;");
|
label.setStyle("cursor: pointer; text-decoration: underline;");
|
||||||
label.addEventListener(Events.ON_CLICK, new ZoomListener((IZoomableEditor) comp));
|
label.addEventListener(Events.ON_CLICK, new ZoomListener((IZoomableEditor) comp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label.setContext(popupMenu.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue