IDEMPIERE-1684 Quick Info Widget
This commit is contained in:
parent
ce00df6052
commit
677b13dde1
|
@ -0,0 +1,19 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Jan 12, 2014 9:51:40 PM COT
|
||||||
|
-- IDEMPIERE-1150 Status Line window
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID) VALUES ('I','Quick Info',200251,'D','4aa59d81-e275-407b-9bdf-d8017d03c791','QuickInfo','Y',TO_DATE('2014-01-12 21:51:39','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2014-01-12 21:51:39','YYYY-MM-DD HH24:MI:SS'),0,0)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 13, 2014 8:31:22 AM COT
|
||||||
|
UPDATE AD_Column SET DefaultValue='U',Updated=TO_DATE('2014-01-13 08:31:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210904
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 13, 2014 8:31:24 AM COT
|
||||||
|
ALTER TABLE AD_StatusLine MODIFY EntityType VARCHAR2(40) DEFAULT 'U'
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201401122152_IDEMPIERE-1684_QuickInfoWidget.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
-- Jan 12, 2014 9:51:40 PM COT
|
||||||
|
-- IDEMPIERE-1150 Status Line window
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID) VALUES ('I','Quick Info',200251,'D','4aa59d81-e275-407b-9bdf-d8017d03c791','QuickInfo','Y',TO_TIMESTAMP('2014-01-12 21:51:39','YYYY-MM-DD HH24:MI:SS'),100,100,TO_TIMESTAMP('2014-01-12 21:51:39','YYYY-MM-DD HH24:MI:SS'),0,0)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 13, 2014 8:31:22 AM COT
|
||||||
|
UPDATE AD_Column SET DefaultValue='U',Updated=TO_TIMESTAMP('2014-01-13 08:31:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=210904
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 13, 2014 8:31:24 AM COT
|
||||||
|
INSERT INTO t_alter_column values('ad_statusline','EntityType','VARCHAR(40)',null,'U')
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201401122152_IDEMPIERE-1684_QuickInfoWidget.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -26,11 +26,7 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.text.ChoiceFormat;
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
import java.text.Format;
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
@ -116,7 +112,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -2502318175715266604L;
|
private static final long serialVersionUID = 3747471319239796736L;
|
||||||
|
|
||||||
public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate";
|
public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate";
|
||||||
|
|
||||||
|
@ -2048,72 +2044,35 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
MStatusLine sl = MStatusLine.getSL(getAD_Window_ID(), getAD_Tab_ID(), getAD_Table_ID());
|
MStatusLine sl = MStatusLine.getSL(getAD_Window_ID(), getAD_Tab_ID(), getAD_Table_ID());
|
||||||
if (sl != null)
|
if (sl != null)
|
||||||
{
|
{
|
||||||
String sql = sl.getSQLStatement();
|
String line = sl.parseLine(getWindowNo());
|
||||||
|
return line;
|
||||||
if (sql.indexOf("@") >= 0) {
|
|
||||||
sql = Env.parseContext(Env.getCtx(), getWindowNo(), sql, false, false);
|
|
||||||
if (sql.length() == 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (log.isLoggable(Level.FINE)) log.fine(m_vo.TableName);
|
|
||||||
MessageFormat mf = null;
|
|
||||||
String msgValue = sl.getAD_Message().getValue();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
mf = new MessageFormat(Msg.getMsg(Env.getAD_Language(m_vo.ctx), msgValue), Env.getLanguage(m_vo.ctx).getLocale());
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, msgValue + "=" + Msg.getMsg(Env.getAD_Language(m_vo.ctx), msgValue), e);
|
|
||||||
}
|
|
||||||
if (mf == null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
Format[] fmts = mf.getFormatsByArgumentIndex();
|
|
||||||
Object[] arguments = new Object[fmts.length];
|
|
||||||
boolean filled = false;
|
|
||||||
|
|
||||||
PreparedStatement stmt = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
stmt = DB.prepareStatement(sql, null);
|
|
||||||
rs = stmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
{
|
|
||||||
for (int idx = 0; idx < fmts.length; idx++) {
|
|
||||||
Format fmt = fmts[idx];
|
|
||||||
Object obj;
|
|
||||||
if (fmt instanceof DecimalFormat || fmt instanceof ChoiceFormat) {
|
|
||||||
obj = rs.getDouble(idx+1);
|
|
||||||
} else if (fmt instanceof SimpleDateFormat) {
|
|
||||||
obj = rs.getTimestamp(idx+1);
|
|
||||||
} else {
|
|
||||||
obj = rs.getString(idx+1);
|
|
||||||
}
|
|
||||||
arguments[idx] = obj;
|
|
||||||
}
|
|
||||||
filled = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.WARNING, sql, e);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
DB.close(rs, stmt);
|
|
||||||
rs = null; stmt = null;
|
|
||||||
}
|
|
||||||
if (filled)
|
|
||||||
return mf.format(arguments);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
} // getStatusLine
|
} // getStatusLine
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Widget support
|
||||||
|
* Depending on Window/Tab returns widget lines info
|
||||||
|
* @return info
|
||||||
|
*/
|
||||||
|
public String getStatusLinesWidget() {
|
||||||
|
MStatusLine[] wls = MStatusLine.getStatusLinesWidget(getAD_Window_ID(), getAD_Tab_ID(), getAD_Table_ID());
|
||||||
|
if (wls != null && wls.length > 0)
|
||||||
|
{
|
||||||
|
StringBuilder lines = new StringBuilder();
|
||||||
|
for (MStatusLine wl : wls) {
|
||||||
|
String line = wl.parseLine(getWindowNo());
|
||||||
|
if (line != null) {
|
||||||
|
lines.append(line).append("<br>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lines.length() > 0)
|
||||||
|
return lines.toString();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} // getWidgetLines
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load Dependent Information
|
* Load Dependent Information
|
||||||
*/
|
*/
|
||||||
|
@ -3366,4 +3325,5 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
{
|
{
|
||||||
selection.clear();
|
selection.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // GridTab
|
} // GridTab
|
||||||
|
|
|
@ -16,7 +16,15 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.model;
|
package org.compiere.model;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.text.ChoiceFormat;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.text.Format;
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
@ -24,6 +32,7 @@ import org.compiere.util.CCache;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Status Line Model
|
* Status Line Model
|
||||||
|
@ -36,12 +45,13 @@ public class MStatusLine extends X_AD_StatusLine
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 9135428468215857507L;
|
private static final long serialVersionUID = 2473407023692665378L;
|
||||||
|
|
||||||
/** Logging */
|
/** Logging */
|
||||||
private static CLogger s_log = CLogger.getCLogger(MStatusLine.class);
|
private static CLogger s_log = CLogger.getCLogger(MStatusLine.class);
|
||||||
/** Status Line Cache */
|
/** Status Line Cache */
|
||||||
private static CCache<String, MStatusLine> s_cache = new CCache<String, MStatusLine>(Table_Name, 10);
|
private static CCache<String, MStatusLine> s_cache = new CCache<String, MStatusLine>(Table_Name, 10);
|
||||||
|
private static CCache<String, MStatusLine[]> s_cachew = new CCache<String, MStatusLine[]>(Table_Name, 10);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
|
@ -66,6 +76,7 @@ public class MStatusLine extends X_AD_StatusLine
|
||||||
} // MStatusLine
|
} // MStatusLine
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Get the status line defined for the window|tab|table
|
||||||
* @param window_ID
|
* @param window_ID
|
||||||
* @param tab_ID
|
* @param tab_ID
|
||||||
* @param table_ID
|
* @param table_ID
|
||||||
|
@ -116,4 +127,111 @@ public class MStatusLine extends X_AD_StatusLine
|
||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the widget lines defined for the window&tab&table
|
||||||
|
* @param window_ID
|
||||||
|
* @param tab_ID
|
||||||
|
* @param table_ID
|
||||||
|
* @return array of widget lines discovered for table or specific tab or general window
|
||||||
|
*/
|
||||||
|
public static MStatusLine[] getStatusLinesWidget(int window_ID, int tab_ID, int table_ID) {
|
||||||
|
StringBuilder key = new StringBuilder().append(window_ID).append("|").append(tab_ID).append("|").append(table_ID);
|
||||||
|
MStatusLine[] retValue = null;
|
||||||
|
if (s_cachew.containsKey(key.toString()))
|
||||||
|
{
|
||||||
|
retValue = s_cachew.get(key.toString());
|
||||||
|
if (s_log.isLoggable(Level.FINEST)) s_log.finest("Cache: " + retValue);
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String sql = ""
|
||||||
|
+ "SELECT DISTINCT AD_StatusLine_ID, SeqNo "
|
||||||
|
+ "FROM AD_StatusLineUsedIn "
|
||||||
|
+ "WHERE IsActive = 'Y' "
|
||||||
|
+ " AND IsStatusLine = 'N' "
|
||||||
|
+ " AND (AD_Table_ID = ? OR (AD_Window_ID=? AND AD_Tab_ID=?) OR (AD_Window_ID=? AND AD_Tab_ID IS NULL)) "
|
||||||
|
+ "ORDER BY SeqNo";
|
||||||
|
int[] wlids = DB.getIDsEx(null, sql, table_ID, window_ID, tab_ID, window_ID);
|
||||||
|
if (wlids.length > 0) {
|
||||||
|
ArrayList<MStatusLine> list = new ArrayList<MStatusLine>();
|
||||||
|
for (int wlid : wlids) {
|
||||||
|
MStatusLine wl = new MStatusLine(Env.getCtx(), wlid, null);
|
||||||
|
list.add(wl);
|
||||||
|
}
|
||||||
|
// Convert to array
|
||||||
|
retValue = new MStatusLine[list.size()];
|
||||||
|
for (int i = 0; i < retValue.length; i++)
|
||||||
|
{
|
||||||
|
retValue[i] = list.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s_cachew.put(key.toString(), retValue);
|
||||||
|
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String parseLine(int windowNo) {
|
||||||
|
String sql = getSQLStatement();
|
||||||
|
|
||||||
|
if (sql.indexOf("@") >= 0) {
|
||||||
|
sql = Env.parseContext(Env.getCtx(), windowNo, sql, false, false);
|
||||||
|
if (sql.length() == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageFormat mf = null;
|
||||||
|
String msgValue = getAD_Message().getValue();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
mf = new MessageFormat(Msg.getMsg(Env.getAD_Language(getCtx()), msgValue), Env.getLanguage(getCtx()).getLocale());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, msgValue + "=" + Msg.getMsg(Env.getAD_Language(getCtx()), msgValue), e);
|
||||||
|
}
|
||||||
|
if (mf == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
Format[] fmts = mf.getFormatsByArgumentIndex();
|
||||||
|
Object[] arguments = new Object[fmts.length];
|
||||||
|
boolean filled = false;
|
||||||
|
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
stmt = DB.prepareStatement(sql, null);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
if (rs.next())
|
||||||
|
{
|
||||||
|
for (int idx = 0; idx < fmts.length; idx++) {
|
||||||
|
Format fmt = fmts[idx];
|
||||||
|
Object obj;
|
||||||
|
if (fmt instanceof DecimalFormat || fmt instanceof ChoiceFormat) {
|
||||||
|
obj = rs.getDouble(idx+1);
|
||||||
|
} else if (fmt instanceof SimpleDateFormat) {
|
||||||
|
obj = rs.getTimestamp(idx+1);
|
||||||
|
} else {
|
||||||
|
obj = rs.getString(idx+1);
|
||||||
|
}
|
||||||
|
arguments[idx] = obj;
|
||||||
|
}
|
||||||
|
filled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
log.log(Level.WARNING, sql, e);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
DB.close(rs, stmt);
|
||||||
|
rs = null; stmt = null;
|
||||||
|
}
|
||||||
|
if (filled)
|
||||||
|
return mf.format(arguments);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
} // MStatusLine
|
} // MStatusLine
|
||||||
|
|
|
@ -1532,11 +1532,13 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
||||||
// Transaction info
|
// Transaction info
|
||||||
if (!detailTab)
|
if (!detailTab)
|
||||||
{
|
{
|
||||||
String trxInfo = adTabbox.getSelectedGridTab().getStatusLine();
|
GridTab gt = adTabbox.getSelectedGridTab();
|
||||||
|
String trxInfo = gt.getStatusLine();
|
||||||
if (trxInfo != null)
|
if (trxInfo != null)
|
||||||
{
|
{
|
||||||
statusBar.setInfo(trxInfo);
|
statusBar.setInfo(trxInfo);
|
||||||
}
|
}
|
||||||
|
SessionManager.getAppDesktop().updateHelpQuickInfo(gt);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check Attachment
|
// Check Attachment
|
||||||
|
|
|
@ -54,6 +54,7 @@ import org.adempiere.webui.util.UserPreference;
|
||||||
import org.adempiere.webui.window.FDialog;
|
import org.adempiere.webui.window.FDialog;
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
|
@ -99,17 +100,17 @@ import org.zkoss.zul.West;
|
||||||
*/
|
*/
|
||||||
public class DefaultDesktop extends TabbedDesktop implements MenuListener, Serializable, EventListener<Event>, EventHandler, DesktopCleanup
|
public class DefaultDesktop extends TabbedDesktop implements MenuListener, Serializable, EventListener<Event>, EventHandler, DesktopCleanup
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -7495898481342426458L;
|
||||||
|
|
||||||
private static final String IMAGES_UPARROW_PNG = "images/collapse-header.png";
|
private static final String IMAGES_UPARROW_PNG = "images/collapse-header.png";
|
||||||
|
|
||||||
private static final String IMAGES_DOWNARROW_PNG = "images/expand-header.png";
|
private static final String IMAGES_DOWNARROW_PNG = "images/expand-header.png";
|
||||||
|
|
||||||
private static final String IMAGES_CONTEXT_HELP_PNG = "images/Help16.png";
|
private static final String IMAGES_CONTEXT_HELP_PNG = "images/Help16.png";
|
||||||
|
|
||||||
/**
|
|
||||||
* generated serial version ID
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = -8203958978173990301L;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private static final CLogger logger = CLogger.getCLogger(DefaultDesktop.class);
|
private static final CLogger logger = CLogger.getCLogger(DefaultDesktop.class);
|
||||||
|
|
||||||
|
@ -595,6 +596,11 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria
|
||||||
helpController.renderToolTip(gridField);
|
helpController.renderToolTip(gridField);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateHelpQuickInfo(GridTab gridTab) {
|
||||||
|
helpController.renderQuickInfo(gridTab);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessDialog openProcessDialog(int processId, boolean soTrx) {
|
public ProcessDialog openProcessDialog(int processId, boolean soTrx) {
|
||||||
ProcessDialog pd = super.openProcessDialog(processId, soTrx);
|
ProcessDialog pd = super.openProcessDialog(processId, soTrx);
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.adempiere.webui.component.Window;
|
||||||
import org.adempiere.webui.panel.ADForm;
|
import org.adempiere.webui.panel.ADForm;
|
||||||
import org.adempiere.webui.part.UIPart;
|
import org.adempiere.webui.part.UIPart;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
import org.zkoss.zk.ui.Component;
|
import org.zkoss.zk.ui.Component;
|
||||||
import org.zkoss.zk.ui.Page;
|
import org.zkoss.zk.ui.Page;
|
||||||
|
@ -205,6 +206,8 @@ public interface IDesktop extends UIPart {
|
||||||
|
|
||||||
public void updateHelpTooltip(GridField gridField);
|
public void updateHelpTooltip(GridField gridField);
|
||||||
|
|
||||||
|
public void updateHelpQuickInfo(GridTab gridTab);
|
||||||
|
|
||||||
public boolean isPendingWindow();
|
public boolean isPendingWindow();
|
||||||
|
|
||||||
public void setTabTitle(String title);
|
public void setTabTitle(String title);
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Properties;
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.webui.desktop.IDesktop;
|
import org.adempiere.webui.desktop.IDesktop;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MForm;
|
import org.compiere.model.MForm;
|
||||||
import org.compiere.model.MInfoWindow;
|
import org.compiere.model.MInfoWindow;
|
||||||
import org.compiere.model.MProcess;
|
import org.compiere.model.MProcess;
|
||||||
|
@ -59,8 +60,8 @@ import org.zkoss.zul.Vlayout;
|
||||||
public class HelpController
|
public class HelpController
|
||||||
{
|
{
|
||||||
private Anchorlayout dashboardLayout;
|
private Anchorlayout dashboardLayout;
|
||||||
private Panel pnlToolTip, pnlContextHelp;
|
private Panel pnlToolTip, pnlContextHelp, pnlQuickInfo;
|
||||||
private Html htmlToolTip, htmlContextHelp;
|
private Html htmlToolTip, htmlContextHelp, htmlQuickInfo;
|
||||||
|
|
||||||
public HelpController()
|
public HelpController()
|
||||||
{
|
{
|
||||||
|
@ -86,6 +87,20 @@ public class HelpController
|
||||||
dashboardColumn.appendChild(dashboardColumnLayout);
|
dashboardColumn.appendChild(dashboardColumnLayout);
|
||||||
dashboardLayout.appendChild(dashboardColumn);
|
dashboardLayout.appendChild(dashboardColumn);
|
||||||
|
|
||||||
|
Panelchildren content = new Panelchildren();
|
||||||
|
|
||||||
|
pnlQuickInfo = new Panel();
|
||||||
|
pnlQuickInfo.setSclass("dashboard-widget");
|
||||||
|
pnlQuickInfo.setTitle(Msg.getMsg(Env.getCtx(), "QuickInfo"));
|
||||||
|
pnlQuickInfo.setMaximizable(false);
|
||||||
|
pnlQuickInfo.setCollapsible(true);
|
||||||
|
pnlQuickInfo.setOpen(true);
|
||||||
|
pnlQuickInfo.setBorder("normal");
|
||||||
|
dashboardColumnLayout.appendChild(pnlQuickInfo);
|
||||||
|
content = new Panelchildren();
|
||||||
|
pnlQuickInfo.appendChild(content);
|
||||||
|
content.appendChild(htmlQuickInfo = new Html());
|
||||||
|
|
||||||
pnlToolTip = new Panel();
|
pnlToolTip = new Panel();
|
||||||
pnlToolTip.setSclass("dashboard-widget");
|
pnlToolTip.setSclass("dashboard-widget");
|
||||||
pnlToolTip.setTitle(Msg.getMsg(Env.getCtx(), "ToolTip"));
|
pnlToolTip.setTitle(Msg.getMsg(Env.getCtx(), "ToolTip"));
|
||||||
|
@ -94,7 +109,7 @@ public class HelpController
|
||||||
pnlToolTip.setOpen(true);
|
pnlToolTip.setOpen(true);
|
||||||
pnlToolTip.setBorder("normal");
|
pnlToolTip.setBorder("normal");
|
||||||
dashboardColumnLayout.appendChild(pnlToolTip);
|
dashboardColumnLayout.appendChild(pnlToolTip);
|
||||||
Panelchildren content = new Panelchildren();
|
content = new Panelchildren();
|
||||||
pnlToolTip.appendChild(content);
|
pnlToolTip.appendChild(content);
|
||||||
content.appendChild(htmlToolTip = new Html());
|
content.appendChild(htmlToolTip = new Html());
|
||||||
htmlToolTip.setWidgetOverride("defaultMessage", "'"+Msg.getMsg(Env.getCtx(), "PlaceCursorIntoField")+"'");
|
htmlToolTip.setWidgetOverride("defaultMessage", "'"+Msg.getMsg(Env.getCtx(), "PlaceCursorIntoField")+"'");
|
||||||
|
@ -121,6 +136,7 @@ public class HelpController
|
||||||
|
|
||||||
renderToolTip(null);
|
renderToolTip(null);
|
||||||
renderCtxHelp(X_AD_CtxHelp.CTXTYPE_Home, 0);
|
renderCtxHelp(X_AD_CtxHelp.CTXTYPE_Home, 0);
|
||||||
|
renderQuickInfo(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderToolTip(GridField field)
|
public void renderToolTip(GridField field)
|
||||||
|
@ -405,6 +421,24 @@ public class HelpController
|
||||||
htmlContextHelp.setContent(sb.toString());
|
htmlContextHelp.setContent(sb.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderQuickInfo(GridTab gridTab) {
|
||||||
|
if (gridTab == null) {
|
||||||
|
pnlQuickInfo.setVisible(false);
|
||||||
|
} else {
|
||||||
|
String widget = gridTab.getStatusLinesWidget();
|
||||||
|
if (widget == null) {
|
||||||
|
pnlQuickInfo.setVisible(false);
|
||||||
|
} else {
|
||||||
|
pnlQuickInfo.setVisible(true);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("<html>\n<body>\n<div class=\"help-content\">\n");
|
||||||
|
sb.append(widget);
|
||||||
|
sb.append("</div>\n</body>\n</html>");
|
||||||
|
htmlQuickInfo.setContent(sb.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String stripHtml(String htmlString, boolean all)
|
private String stripHtml(String htmlString, boolean all)
|
||||||
{
|
{
|
||||||
htmlString = htmlString
|
htmlString = htmlString
|
||||||
|
|
Loading…
Reference in New Issue