/* 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 . */ package gplx.gfui; import gplx.*; import org.junit.*; public class TabBox_tst { // @Before public void setup() { // fx = TabBoxFxt.new_(); // } TabBoxFxt fx; @Test public void Add() { // fx.Make(1).tst_Selected("0").FetchBtnAt(0).tst_X(0); // fx.Make(3).tst_Selected("2").FetchBtnAt(2).tst_X(160); } // @Test public void Del_at() { // fx.Make(2).Del_at(1).tst_Btns("0"); // fx.Make(2).Del_at(0).tst_Btns("1"); // fx.Make(3).Del_at(0).tst_Btns("1", "2"); // fx.Make(3).Del_at(1).tst_Btns("0", "2"); // fx.Make(3).Del_at(2).tst_Btns("0", "1"); // fx.Make(3).Select(1).Del_at(1).tst_Selected("2"); // 1 deleted; 2 shifted down into slot // fx.Make(3).Select(1).Del_at(0).tst_Selected("1"); // 0 deleted; 1 still remains active (but will have idx of 0 // fx.Make(3).Select(2).Del_at(2).tst_Selected("1"); // 2 deleted; 1 selected // } // @Test public void Selected_byAdd() { // fx.Make(2).Select(0).tst_Selected("0").Select(1).tst_Selected("1"); // } // @Test public void Selected_byBtn() { // fx.Make(2).tst_Selected("1"); // // GfuiBtn btn = fx.TabBox().SubBtnArea().Get_at(0); // btn.Click(); // fx.tst_Selected("0"); // } // @Test public void ReorderTab() { // fx.Make(3).Reorder(0, -1).tst_Raised(false); // fx.Make(3).Reorder(2, 1).tst_Raised(false); // fx.Make(3).Reorder(0, 1).tst_Btns("1", "0", "2").tst_Raised(true).tst_FocusOrder(); // fx.Make(3).Reorder(0, 2).tst_Btns("1", "2", "0").tst_Raised(true).tst_FocusOrder(); // fx.Make(3).Reorder(2, -1).tst_Btns("0", "2", "1").tst_Raised(true).tst_FocusOrder(); // fx.Make(3).Reorder(0, 1).Reorder(1, 2).tst_Btns("0", "2", "1").tst_Raised(true);//.tst_FocusOrder(); // FIXME: broken after FocusOrder set for entire form (instead of per container) // } } class GfuiElemFxt { public GfuiElem UnderElem() {return underElem;} GfuiElem underElem; @gplx.Internal protected GfuiElemFxt tst_X(int expd) {Tfds.Eq(expd, underElem.X()); return this;} public static GfuiElemFxt new_(GfuiElem elem) { GfuiElemFxt rv = new GfuiElemFxt(); rv.underElem = elem; return rv; } GfuiElemFxt() {} } class TabBoxFxt implements GfoInvkAble { @gplx.Internal protected TabBox TabBox() {return tabBox;} @gplx.Internal protected TabBoxFxt Make(int count) { for (int i = 0; i < tabBox.Tabs_Count(); i++) tabBox.Tabs_DelAt(0); for (int i = 0; i < count; i++) tabBox.Tabs_Add(Int_.To_str(i), Int_.To_str(i)); return this; } @gplx.Internal protected TabBoxFxt Del_at(int index) {tabBox.Tabs_DelAt(index); return this;} // @gplx.Internal protected TabBoxFxt Select(int index) {tabBox.Tabs_Select(index); return this;} @gplx.Internal protected GfuiElemFxt FetchBtnAt(int index) { GfuiBtn btn = (GfuiBtn)tabBox.BtnBox().SubElems().Get_at(index); GfuiElemFxt fx_elem = GfuiElemFxt.new_(btn); return fx_elem; } // @gplx.Internal protected TabBoxFxt tst_BtnX(int idx, int expdX) { // Tfds.Eq(expdX, tabBox.SubBtnArea().Get_at(idx).X()); // return this; // } @gplx.Internal protected TabBoxFxt tst_Selected(String expd) { TabPnlItm curTab = tabBox.Tabs_SelectedItm(); GfuiBtn btn = (GfuiBtn)tabBox.BtnBox().SubElems().Get_at(curTab.Idx()); Tfds.Eq(expd, btn.Text()); return this; } @gplx.Internal protected TabBoxFxt tst_Btns(String... expd) { String[] actl = new String[tabBox.Tabs_Count() ]; for (int i = 0; i < tabBox.Tabs_Count() ; i++) { GfuiBtn button = (GfuiBtn)tabBox.BtnBox().SubElems().Get_at(i); actl[i] = button.TextMgr().Val(); } Tfds.Eq_ary(expd, actl); return this; } // @gplx.Internal protected TabBoxFxt tst_Raised(boolean expd) {Tfds.Eq(expd, received != null); return this;} // @gplx.Internal protected TabBoxFxt Reorder(int i, int delta) { // tabBox.Width_(240); // needed for lytMgr // TabBnd_reorderTab reorderBnd = TabBnd_reorderTab.Instance; // received = null; // TabPnl pnl = tabBox.Tabs_FetchAt(i); // reorderBnd.MoveTab(pnl.SubTabBtn(), delta); // return this; // } // @gplx.Internal protected TabBoxFxt tst_FocusOrder() { // for (int i = 0; i < tabBox.SubBtnArea().SubZones().Get_at(0).Count(); i++) { // GfuiElem subBtn = (GfuiElem)tabBox.SubBtnArea().SubZones().Get_at(0).Get_at(i); // Tfds.Eq(i, subBtn.UnderElem().Core().Focus_index()); // } // return this; // } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, OrderChangedReceived_cmd)) OrderChangedReceived(m); else return GfoInvkAble_.Rv_unhandled; return this; } public static final String OrderChangedReceived_cmd = "OrderChangedReceived"; TabBox tabBox; public static TabBoxFxt new_() { TabBoxFxt rv = new TabBoxFxt(); rv.tabBox = TabBox_.new_(); return rv; } TabBoxFxt() {} void OrderChangedReceived(GfoMsg msg) { } //int[] received = null; }