IDEMPIERE-2334 Allow zoom from URL

This commit is contained in:
Carlos Ruiz 2014-11-25 11:11:43 -05:00
parent dc6a84bd1f
commit ffee60df18
1 changed files with 35 additions and 22 deletions

View File

@ -22,6 +22,8 @@ import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -79,7 +81,7 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
/** /**
* *
*/ */
private static final long serialVersionUID = -225993322049019137L; private static final long serialVersionUID = 8229814619282121621L;
private static final String SAVED_CONTEXT = "saved.context"; private static final String SAVED_CONTEXT = "saved.context";
@ -109,12 +111,16 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
private static boolean eventThreadEnabled = false; private static boolean eventThreadEnabled = false;
private static ConcurrentMap<String, String[]> m_URLParameters;
public AdempiereWebUI() public AdempiereWebUI()
{ {
this.addEventListener(Events.ON_CLIENT_INFO, this); this.addEventListener(Events.ON_CLIENT_INFO, this);
this.setVisible(false); this.setVisible(false);
userPreference = new UserPreference(); 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() public void onCreate()
@ -280,20 +286,13 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
processParameters(); processParameters();
} }
private void processParameters() { private void processParameters() {
String action = Executions.getCurrent().getParameter("Action"); String action = getPrmString("Action");
if (action != null && "Zoom".equalsIgnoreCase(action)) { if ("Zoom".equalsIgnoreCase(action)) {
int tableID = 0; int tableID = getPrmInt("AD_Table_ID");
try {
String prm = Executions.getCurrent().getParameter("AD_Table_ID");
if (!Util.isEmpty(prm))
tableID = Integer.parseInt(prm);
} catch (NumberFormatException e) {
// ignore
}
if (tableID == 0) { if (tableID == 0) {
String tableName = Executions.getCurrent().getParameter("TableName"); String tableName = getPrmString("TableName");
if (!Util.isEmpty(tableName)) { if (!Util.isEmpty(tableName)) {
MTable table = MTable.get(Env.getCtx(), tableName); MTable table = MTable.get(Env.getCtx(), tableName);
if (table != null) { if (table != null) {
@ -301,19 +300,33 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
} }
} }
} }
int recordID = 0; int recordID = getPrmInt("Record_ID");
try {
String prm = Executions.getCurrent().getParameter("AD_Table_ID");
if (!Util.isEmpty(prm))
recordID = Integer.parseInt(prm);
} catch (NumberFormatException e) {
// ignore
}
if (tableID > 0) { if (tableID > 0) {
AEnv.zoom(tableID, recordID); AEnv.zoom(tableID, recordID);
} }
} }
} m_URLParameters = null;
}
private String getPrmString(String prm) {
String retValue = "";
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 * @return key listener