mirror of
https://github.com/gnosygnu/xowa.git
synced 2025-06-13 12:54:14 +00:00
61 lines
3.0 KiB
Java
61 lines
3.0 KiB
Java
|
/*
|
||
|
XOWA: the XOWA Offline Wiki Application
|
||
|
Copyright (C) 2012 gnosygnu@gmail.com
|
||
|
|
||
|
This program is free software: you can redistribute it and/or modify
|
||
|
it under the terms of the GNU Affero General Public License as
|
||
|
published by the Free Software Foundation, either version 3 of the
|
||
|
License, or (at your option) any later version.
|
||
|
|
||
|
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 Affero General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU Affero General Public License
|
||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*;
|
||
|
import gplx.core.type_xtns.*; import gplx.core.interfaces.*;
|
||
|
import gplx.gfui.controls.standards.*;
|
||
|
public class IptBnd_upDownRange implements InjectAble, Gfo_invk, Gfo_evt_itm {
|
||
|
public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr;
|
||
|
public void Inject(Object owner) {
|
||
|
txtBox = GfuiTextBox_.cast(owner);
|
||
|
txtBox.TextAlignH_center_();
|
||
|
if (bndCfg == null) bndCfg = IptCfg_.new_("gplx.gfui.IptBnd_upDownRange");
|
||
|
IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_dec, IptKey_.Down, IptMouseWheel_.Down);
|
||
|
IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_inc, IptKey_.Up, IptMouseWheel_.Up);
|
||
|
IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_exec, IptKey_.Enter, IptMouseBtn_.Middle);
|
||
|
Gfo_evt_mgr_.Sub_same(fwd, evt, this);
|
||
|
} static IptCfg bndCfg;
|
||
|
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||
|
if (ctx.Match(k, Invk_TxtBox_dec)) ExecCmd(cmd, curVal - 1);
|
||
|
else if (ctx.Match(k, Invk_TxtBox_inc)) ExecCmd(cmd, curVal + 1);
|
||
|
else if (ctx.Match(k, Invk_TxtBox_exec)) {
|
||
|
Object valObj = IntClassXtn.Instance.ParseOrNull(txtBox.Text()); if (valObj == null) throw Err_.new_wo_type("invalid int", "text", txtBox.Text());
|
||
|
ExecCmd(doIt, Int_.cast(valObj));
|
||
|
}
|
||
|
else if (ctx.Match(k, evt)) WhenEvt(ctx, m);
|
||
|
else return Gfo_invk_.Rv_unhandled;
|
||
|
return Gfo_invk_.Rv_handled;
|
||
|
} static final String Invk_TxtBox_dec = "txtBox_dec", Invk_TxtBox_inc = "txtBox_inc", Invk_TxtBox_exec = "txtBox_exec";
|
||
|
public int Adj() {return adj;} public IptBnd_upDownRange Adj_(int v) {adj = v; return this;} int adj;
|
||
|
void WhenEvt(GfsCtx ctx, GfoMsg m) {
|
||
|
curVal = m.ReadInt(arg) + adj;
|
||
|
txtBox.Text_(Int_.To_str(curVal));
|
||
|
}
|
||
|
void ExecCmd(String c, int val) {
|
||
|
Gfo_invk_.Invk_by_val(src, c, val - adj);
|
||
|
}
|
||
|
int curVal;
|
||
|
GfuiTextBox txtBox; Gfo_invk src; Gfo_evt_itm fwd; String cmd, evt, doIt, arg;
|
||
|
public static IptBnd_upDownRange new_(Gfo_evt_itm fwd, String cmd, String evt, String arg) {return exec_(fwd, cmd, evt, cmd, arg);}
|
||
|
public static IptBnd_upDownRange exec_(Gfo_evt_itm fwd, String cmd, String evt, String doIt, String arg) {
|
||
|
IptBnd_upDownRange rv = new IptBnd_upDownRange();
|
||
|
rv.fwd = fwd; rv.src = (Gfo_invk)fwd;
|
||
|
rv.cmd = cmd; rv.evt = evt; rv.doIt = doIt; rv.arg = arg;
|
||
|
return rv;
|
||
|
}
|
||
|
}
|