package net.i2p.router.web; import java.io.Writer; import net.i2p.router.RouterContext; /** * Base helper */ public abstract class HelperBase { protected RouterContext _context; protected Writer _out; static final String PROP_ADVANCED = "routerconsole.advanced"; static final String CHECKED = " checked=\"checked\" "; /** * Configure this bean to query a particular router context * * @param contextId beginning few characters of the routerHash, or null to pick * the first one we come across. */ public void setContextId(String contextId) { try { _context = ContextHelper.getContext(contextId); } catch (Throwable t) { t.printStackTrace(); } } /** @since 0.9.9 */ public boolean isAdvanced() { return _context.getBooleanProperty(PROP_ADVANCED); } /** might be useful in the jsp's */ //public RouterContext getContext() { return _context; } /** * Renamed from setWriter, we realy don't want setFoo(non-String) * Prevent jsp.error.beans.property.conversion 500 error for ?writer=foo * @since 0.8.2 */ public void storeWriter(Writer out) { _out = out; } /** * Is a boolean property set to true? * * @param prop must default to false * @return non-null, either "" or " checked=\"checked\" " * @since 0.9.24 consolidated from various helpers */ protected String getChecked(String prop) { if (_context.getBooleanProperty(prop)) return CHECKED; return ""; } /** translate a string */ public String _t(String s) { return Messages.getString(s, _context); } /** * translate a string with a parameter * This is a lot more expensive than _t(s), so use sparingly. * * @param s string to be translated containing {0} * The {0} will be replaced by the parameter. * Single quotes must be doubled, i.e. ' -> '' in the string. * @param o parameter, not translated. * To translate parameter also, use _t("foo {0} bar", _t("baz")) * Do not double the single quotes in the parameter. * Use autoboxing to call with ints, longs, floats, etc. */ public String _t(String s, Object o) { return Messages.getString(s, o, _context); } /** two params @since 0.7.14 */ public String _t(String s, Object o, Object o2) { return Messages.getString(s, o, o2, _context); } /** translate (ngettext) @since 0.7.14 */ public String ngettext(String s, String p, int n) { return Messages.getString(n, s, p, _context); } /** * Mark a string for extraction by xgettext and translation. * Use this only in static initializers. * It does not translate! * @return s */ public static String _x(String s) { return s; } }