From 1ffc4191a8b0535ec91799ea956fa20a0f95fa9e Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Fri, 23 Dec 2016 13:48:41 -0500 Subject: [PATCH] Cfg: Add 'Gui - Menus' --- .../apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java | 2 +- .../cfgs/specials/edits/objs/Xoedit_itm.java | 1 + .../gplx/xowa/guis/menus/Xog_menu_bldr.java | 65 +++++ .../gplx/xowa/guis/menus/Xog_menu_mgr.java | 12 +- .../xowa/guis/menus/Xog_menu_mnu_src.java | 253 ------------------ .../xowa/guis/menus/Xog_popup_mnu_mgr.java | 58 ++-- .../xowa/guis/menus/Xog_window_mnu_mgr.java | 20 +- .../gplx/xowa/guis/menus/dom/Xog_mnu_grp.java | 18 +- 8 files changed, 121 insertions(+), 308 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/guis/menus/Xog_menu_bldr.java delete mode 100644 400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java index e85a09a22..c6c7aab8f 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java @@ -37,7 +37,7 @@ public class Xocfg_dflt_mgr { } public void Add(Gfo_invk invk, String... keys) { for (String key : keys) { - hash.Add(key, invk); + hash.Add_if_dupe_use_nth(key, invk); } } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java index e7339371e..d19c517ab 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java @@ -66,6 +66,7 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { rv.Add_int("id", id); rv.Add_str("key", key); rv.Add_str("dflt", dflt); + rv.Add_str("dflt_text", String_.Replace(dflt, "'", "'")); rv.Add_str("lang", lang); rv.Add_str("name", name); rv.Add_str("help", help); diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_bldr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_bldr.java new file mode 100644 index 000000000..3f27c1923 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_bldr.java @@ -0,0 +1,65 @@ +/* +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.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +import gplx.xowa.guis.cmds.*; +class Xog_menu_bldr { + private int indent = 0; + private Bry_bfr bfr = Bry_bfr_.Reset(0); + public String Gen_str() {return bfr.To_str_and_clear();} + private Xog_menu_bldr Indent_add() {indent += 2; return this;} + private Xog_menu_bldr Indent_del() {indent -= 2; return this;} + private void Indent() { + if (indent > 0) + bfr.Add_byte_repeat(Byte_ascii.Space, indent); + } + public Xog_menu_bldr Add_spr() { + Indent(); + bfr.Add(Const_spr); + return this; + } + public Xog_menu_bldr Add_grp_bgn(String key) { + Indent(); + bfr.Add(Const_itm_grp_bgn_lhs); + bfr.Add_str_u8(key); + bfr.Add(Const_itm_grp_bgn_rhs); + Indent_add(); + return this; + } + public Xog_menu_bldr Add_grp_end() { + Indent_del(); + Indent(); + bfr.Add(Const_itm_grp_end); + return this; + } + public Xog_menu_bldr Add_btn(String key) { + Indent(); + bfr.Add(Const_itm_btn_bgn_lhs); + bfr.Add_str_u8(key); + bfr.Add(Const_itm_btn_bgn_rhs); + return this; + } + private static final byte[] + Const_spr = Bry_.new_a7("add_spr;\n") + , Const_itm_btn_bgn_lhs = Bry_.new_a7("add_btn_default('") + , Const_itm_btn_bgn_rhs = Bry_.new_a7("');\n") + , Const_itm_grp_bgn_lhs = Bry_.new_a7("add_grp_default('") + , Const_itm_grp_bgn_rhs = Bry_.new_a7("') {\n") + , Const_itm_grp_end = Bry_.new_a7("}\n") + ; + public static final Xog_menu_bldr Instance = new Xog_menu_bldr(); Xog_menu_bldr() {} +} diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java index 701a9bf26..898ebeea3 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java @@ -26,10 +26,10 @@ public class Xog_menu_mgr implements Gfo_invk { popup_mnu_mgr = new Xog_popup_mnu_mgr(gui_mgr, this); window_mnu_mgr = new Xog_window_mnu_mgr(gui_mgr, this); } - public Xog_mnu_regy Regy() {return regy;} private Xog_mnu_regy regy; - public Xog_popup_mnu_mgr Popup() {return popup_mnu_mgr;} private Xog_popup_mnu_mgr popup_mnu_mgr; - public Xog_window_mnu_mgr Window() {return window_mnu_mgr;} private Xog_window_mnu_mgr window_mnu_mgr; - public Xog_mnu_bldr Menu_bldr() {return menu_bldr;} private Xog_mnu_bldr menu_bldr; + public Xog_mnu_regy Regy() {return regy;} private Xog_mnu_regy regy; + public Xog_popup_mnu_mgr Popup() {return popup_mnu_mgr;} private Xog_popup_mnu_mgr popup_mnu_mgr; + public Xog_window_mnu_mgr Window() {return window_mnu_mgr;} private Xog_window_mnu_mgr window_mnu_mgr; + public Xog_mnu_bldr Menu_bldr() {return menu_bldr;} private Xog_mnu_bldr menu_bldr; public void Init_by_app(Xoae_app app) { this.app = app; regy.Init_by_app(app); @@ -37,8 +37,8 @@ public class Xog_menu_mgr implements Gfo_invk { public void Init_by_kit() { try { if (!app.Mode().Tid_is_gui()) return; // NOTE: do not try to initialize menu if http_server; will fail in headless mode when it tries to load SWT images; DATE:2015-03-27 - popup_mnu_mgr.Init_by_kit(); - window_mnu_mgr.Init_by_kit(); + popup_mnu_mgr.Init_by_kit(app); + window_mnu_mgr.Init_by_kit(app); Lang_changed(app.Usere().Lang()); } catch (Exception e) { // ignore errors while loading custom menus, else fatal error; DATE:2014-07-01 diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java deleted file mode 100644 index e3931d8fa..000000000 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java +++ /dev/null @@ -1,253 +0,0 @@ -/* -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.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.xowa.guis.cmds.*; -class Xog_menu_mgr_src { - public static final String Browser_win - = Xog_menu_bldr.Instance - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_file) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_save_as) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_print) - . Add_btn(Xog_cmd_itm_.Key_app_exit) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_edit) - . Add_btn(Xog_cmd_itm_.Key_gui_page_selection_select_all) - . Add_btn(Xog_cmd_itm_.Key_gui_page_selection_copy) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_find_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_view) - . Add_btn(Xog_cmd_itm_.Key_gui_font_increase) - . Add_btn(Xog_cmd_itm_.Key_gui_font_decrease) - . Add_btn(Xog_cmd_itm_.Key_gui_font_reset) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_read) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_edit) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_html) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_reload) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_prog_log_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_history) - . Add_btn(Xog_cmd_itm_.Key_nav_go_bwd) - . Add_btn(Xog_cmd_itm_.Key_nav_go_fwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_usr_history_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_bookmarks) - . Add_btn(Xog_cmd_itm_.Key_nav_wiki_main_page) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_usr_bookmarks_add) - . Add_btn(Xog_cmd_itm_.Key_usr_bookmarks_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_tools) - . Add_btn(Xog_cmd_itm_.Key_nav_cfg_main) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_download_central) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_list) - . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_script) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_maintenance) - . Add_btn(Xog_cmd_itm_.Key_nav_setup_download) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_help) - . Add_btn(Xog_cmd_itm_.Key_nav_help_help) - . Add_btn(Xog_cmd_itm_.Key_nav_help_xowa_main) - . Add_btn(Xog_cmd_itm_.Key_nav_help_xowa_blog) - . Add_btn(Xog_cmd_itm_.Key_nav_help_change_log) - . Add_btn(Xog_cmd_itm_.Key_nav_help_diagnostics) - . Add_btn(Xog_cmd_itm_.Key_nav_cfg_menu) - . Add_spr() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_system_data) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_log_session) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_cfg_app) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_cfg_lang) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_cfg_user) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_cfg_custom) - . Add_btn(Xog_cmd_itm_.Key_nav_system_data_usr_history) - . Add_grp_end() - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_help_about) - . Add_grp_end() - . Gen_str(); - public static final String Html_page - = Xog_menu_bldr.Instance - . Add_btn(Xog_cmd_itm_.Key_nav_go_bwd) - . Add_btn(Xog_cmd_itm_.Key_nav_go_fwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_reload) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_selection_select_all) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_font_increase) - . Add_btn(Xog_cmd_itm_.Key_gui_font_decrease) - . Add_btn(Xog_cmd_itm_.Key_gui_font_reset) - . Add_spr() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_file) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_save_as) -// . Add_btn(Xog_cmd_itm_.Key_gui_page_view_print) - . Add_btn(Xog_cmd_itm_.Key_app_exit) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_tabs) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dupe__at_dflt__focus_y) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_select_fwd) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_select_bwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_move_fwd) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_move_bwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_others) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_to_bgn) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_to_end) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_undo) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_view) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_read) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_edit) - . Add_btn(Xog_cmd_itm_.Key_gui_page_view_mode_html) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_prog_log_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_history) - . Add_btn(Xog_cmd_itm_.Key_usr_history_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_bookmarks) - . Add_btn(Xog_cmd_itm_.Key_nav_wiki_main_page) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_usr_bookmarks_add) - . Add_btn(Xog_cmd_itm_.Key_usr_bookmarks_show) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_tools) - . Add_btn(Xog_cmd_itm_.Key_nav_cfg_main) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_download_central) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_list) - . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_script) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_setup_maintenance) - . Add_btn(Xog_cmd_itm_.Key_nav_setup_download) - . Add_grp_end() - . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_help) - . Add_btn(Xog_cmd_itm_.Key_nav_help_help) - . Add_btn(Xog_cmd_itm_.Key_nav_help_xowa_main) - . Add_btn(Xog_cmd_itm_.Key_nav_help_xowa_blog) - . Add_btn(Xog_cmd_itm_.Key_nav_help_change_log) - . Add_btn(Xog_cmd_itm_.Key_nav_help_diagnostics) - . Add_btn(Xog_cmd_itm_.Key_nav_cfg_menu) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_nav_help_about) - . Add_grp_end() - . Gen_str(); - - public static final String Html_link - = Xog_menu_bldr.Instance - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_y) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_selection_copy) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_find_show_by_paste) - . Gen_str(); - public static final String Html_file - = Xog_menu_bldr.Instance - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_y) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_page_selection_save_file_as) - . Gen_str(); - public static final String Tabs_btns - = Xog_menu_bldr.Instance - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dupe__at_dflt__focus_y) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_select_fwd) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_select_bwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_move_fwd) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_move_bwd) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_others) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_to_bgn) - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_to_end) - . Add_spr() - . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_undo) - . Gen_str(); - public static final String Prog - = Xog_menu_bldr.Instance - . Add_btn(Xog_cmd_itm_.Key_gui_browser_prog_log_show) - . Gen_str(); - public static final String Info = String_.Concat_lines_nl - ( "" - ); -} -class Xog_menu_bldr { - private int indent = 0; - private Bry_bfr bfr = Bry_bfr_.Reset(0); - public String Gen_str() {return bfr.To_str_and_clear();} - private Xog_menu_bldr Indent_add() {indent += 2; return this;} - private Xog_menu_bldr Indent_del() {indent -= 2; return this;} - private void Indent() { - if (indent > 0) - bfr.Add_byte_repeat(Byte_ascii.Space, indent); - } - public Xog_menu_bldr Add_spr() { - Indent(); - bfr.Add(Const_spr); - return this; - } - public Xog_menu_bldr Add_grp_bgn(String key) { - Indent(); - bfr.Add(Const_itm_grp_bgn_lhs); - bfr.Add_str_u8(key); - bfr.Add(Const_itm_grp_bgn_rhs); - Indent_add(); - return this; - } - public Xog_menu_bldr Add_grp_end() { - Indent_del(); - Indent(); - bfr.Add(Const_itm_grp_end); - return this; - } - public Xog_menu_bldr Add_btn(String key) { - Indent(); - bfr.Add(Const_itm_btn_bgn_lhs); - bfr.Add_str_u8(key); - bfr.Add(Const_itm_btn_bgn_rhs); - return this; - } - private static final byte[] - Const_spr = Bry_.new_a7("add_spr;\n") - , Const_itm_btn_bgn_lhs = Bry_.new_a7("add_btn_default('") - , Const_itm_btn_bgn_rhs = Bry_.new_a7("');\n") - , Const_itm_grp_bgn_lhs = Bry_.new_a7("add_grp_default('") - , Const_itm_grp_bgn_rhs = Bry_.new_a7("') {\n") - , Const_itm_grp_end = Bry_.new_a7("}\n") - ; - public static final Xog_menu_bldr Instance = new Xog_menu_bldr(); Xog_menu_bldr() {} -} diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java index 5d67ae8ad..00d60ae72 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java @@ -19,17 +19,17 @@ package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.xowa.guis.menus.dom.*; import gplx.xowa.langs.*; public class Xog_popup_mnu_mgr implements Gfo_invk { - private Ordered_hash hash = Ordered_hash_.New(); + private final Ordered_hash hash = Ordered_hash_.New(); + private final Xog_mnu_grp[] mnus = new Xog_mnu_grp[6]; private Xoa_gui_mgr gui_mgr; - private Xog_mnu_grp[] mnus = new Xog_mnu_grp[6]; public Xog_popup_mnu_mgr(Xoa_gui_mgr gui_mgr, Xog_menu_mgr menu_mgr) { this.gui_mgr = gui_mgr; - html_page = Ctor(0, Root_key_html_page, Xog_menu_mgr_src.Html_page); // NOTE: default menu; always build first; NOTE: set default here (fires before cfg) - html_link = Ctor(1, Root_key_html_link, Xog_menu_mgr_src.Html_link); - html_file = Ctor(2, Root_key_html_file, Xog_menu_mgr_src.Html_file); - tabs_btns = Ctor(3, Root_key_tabs_btns, Xog_menu_mgr_src.Tabs_btns); - prog = Ctor(4, Root_key_prog, Xog_menu_mgr_src.Prog); - info = Ctor(5, Root_key_info, Xog_menu_mgr_src.Info); + html_page = Ctor(0, Root_key_html_page); // NOTE: default menu; always build first; + html_link = Ctor(1, Root_key_html_link); + html_file = Ctor(2, Root_key_html_file); + tabs_btns = Ctor(3, Root_key_tabs_btns); + prog = Ctor(4, Root_key_prog); + info = Ctor(5, Root_key_info); } public Xog_mnu_grp Tabs_btns() {return tabs_btns;} private Xog_mnu_grp tabs_btns; public Xog_mnu_grp Html_page() {return html_page;} private Xog_mnu_grp html_page; @@ -37,33 +37,37 @@ public class Xog_popup_mnu_mgr implements Gfo_invk { public Xog_mnu_grp Html_file() {return html_file;} private Xog_mnu_grp html_file; public Xog_mnu_grp Prog() {return prog;} private Xog_mnu_grp prog; public Xog_mnu_grp Info() {return info;} private Xog_mnu_grp info; - public void Init_by_kit() { + public void Init_by_kit(Xoae_app app) { for (int i = 0; i < mnus.length; i++) mnus[i].Source_exec(gui_mgr.App().Gfs_mgr()); // NOTE: build menu now; NOTE: do not set default here, or else will override user setting + app.Cfg().Bind_many_app(this, Cfg__tabs, Cfg__html__basic, Cfg__html__file, Cfg__html__link, Cfg__status); } public void Lang_changed(Xol_lang_itm lang) { for (int i = 0; i < mnus.length; i++) Xog_mnu_base.Update_grp_by_lang(gui_mgr.Menu_mgr().Menu_bldr(), lang, mnus[i]); } - public Xog_mnu_grp Get_or_new(String key) { - Xog_mnu_grp rv = (Xog_mnu_grp)hash.Get_by(key); - if (rv == null) { - rv = new Xog_mnu_grp(gui_mgr, true, key); - hash.Add(key, rv); - } - return rv; - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v")); - else return Gfo_invk_.Rv_unhandled; - } private static final String Invk_get = "get"; - public static final String Root_key_tabs_btns = "browser.tabs.btns" - , Root_key_html_page = "html_box", Root_key_html_link = "browser.html.link", Root_key_html_file = "browser.html.file" - , Root_key_prog = "browser.prog", Root_key_info = "browser.info" - ; - private Xog_mnu_grp Ctor(int i, String key, String src) { - Xog_mnu_grp rv = Get_or_new(key).Source_default_(src); + private Xog_mnu_grp Ctor(int i, String key) { + Xog_mnu_grp rv = new Xog_mnu_grp(gui_mgr, true, key); + hash.Add(key, rv); mnus[i] = rv; return rv; } + private void Source_(Xog_mnu_grp mnu, String source) {mnu.Source_(source);} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__tabs)) Source_(tabs_btns , m.ReadStr("v")); + else if (ctx.Match(k, Cfg__html__basic)) Source_(html_page , m.ReadStr("v")); + else if (ctx.Match(k, Cfg__html__link)) Source_(html_link , m.ReadStr("v")); + else if (ctx.Match(k, Cfg__html__file)) Source_(html_file , m.ReadStr("v")); + else if (ctx.Match(k, Cfg__status)) Source_(prog , m.ReadStr("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + public static final String Root_key_tabs_btns = "browser.tabs.btns", Root_key_prog = "browser.prog", Root_key_info = "browser.info" + , Root_key_html_page = "html_box", Root_key_html_link = "browser.html.link", Root_key_html_file = "browser.html.file"; + private static final String + Cfg__tabs = "xowa.gui.menus.tabs.source" + , Cfg__html__basic = "xowa.gui.menus.html.basic" + , Cfg__html__link = "xowa.gui.menus.html.link" + , Cfg__html__file = "xowa.gui.menus.html.file" + , Cfg__status = "xowa.gui.menus.status.source"; } diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java index d3035293c..b96a9fc54 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java @@ -19,14 +19,15 @@ package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.xowa.guis.menus.dom.*; import gplx.xowa.langs.*; public class Xog_window_mnu_mgr implements Gfo_invk { - private Ordered_hash hash = Ordered_hash_.New(); + private final Ordered_hash hash = Ordered_hash_.New(); public Xog_mnu_grp Browser() {return browser;} private Xog_mnu_grp browser; public Xog_window_mnu_mgr(Xoa_gui_mgr gui_mgr, Xog_menu_mgr menu_mgr) { this.gui_mgr = gui_mgr; - browser = Get_or_new(Root_key_browser_win).Source_default_(Xog_menu_mgr_src.Browser_win); // NOTE: set default here (fires before cfg) + browser = Get_or_new(Root_key_browser_win); } private Xoa_gui_mgr gui_mgr; - public void Init_by_kit() { + public void Init_by_kit(Xoae_app app) { browser.Source_exec(gui_mgr.App().Gfs_mgr()); // NOTE: build menu now; NOTE: do not set default here, or else will override user setting + app.Cfg().Bind_many_app(this, Cfg__window__enabled, Cfg__window__source); } public Xog_mnu_grp Get_or_new(String key) { Xog_mnu_grp rv = (Xog_mnu_grp)hash.Get_by(key); @@ -40,8 +41,15 @@ public class Xog_window_mnu_mgr implements Gfo_invk { Xog_mnu_base.Update_grp_by_lang(gui_mgr.Menu_mgr().Menu_bldr(), lang, browser); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v")); + if (ctx.Match(k, Cfg__window__enabled)) browser.Enabled_(m.ReadYn("v")); + else if (ctx.Match(k, Cfg__window__source)) browser.Source_(m.ReadStr("v")); else return Gfo_invk_.Rv_unhandled; - } private static final String Invk_get = "get"; - public static final String Root_key_browser_win = "main_win"; + return this; + } + private static final String Root_key_browser_win = "main_win"; + + private static final String + Cfg__window__enabled = "xowa.gui.menus.window.enabled" + , Cfg__window__source = "xowa.gui.menus.window.source" + ; } diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java index 52cd7e1e3..28b7d2e63 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java @@ -42,14 +42,7 @@ public class Xog_mnu_grp extends Xog_mnu_base { if (!mnu_is_popup && app.Gui_mgr().Browser_win().Win_box() != null) Gfo_invk_.Invk_by_key(app.Gui_mgr().Browser_win(), Gfui_html.Evt_win_resized); } - public String Source() {return source;} private String source; - public String Source_default() {return source_default;} public Xog_mnu_grp Source_default_(String v) {source_default = source = v; return this;} private String source_default; - private Xog_mnu_grp Source_(Xoa_gfs_mgr gfs_mgr, String v) { - Object rslt = Source_exec(gfs_mgr, v); - if (rslt != Gfo_invk_.Rv_error) - source = v; - return this; - } + public String Source() {return source;} private String source; public void Source_(String v) {this.source = v; this.Source_exec(app.Gfs_mgr());} public Object Source_exec(Xoa_gfs_mgr gfs_mgr) {return Source_exec(gfs_mgr, source);} private Object Source_exec(Xoa_gfs_mgr gfs_mgr, String v) { if (!enabled) return Gfo_invk_.Rv_handled; @@ -101,13 +94,8 @@ public class Xog_mnu_grp extends Xog_mnu_base { } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_build)) this.Build(); - else if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); - else if (ctx.Match(k, Invk_enabled_)) this.Enabled_(m.ReadYn("v")); - else if (ctx.Match(k, Invk_source)) return source; - else if (ctx.Match(k, Invk_source_)) this.Source_(app.Gfs_mgr(), m.ReadStr("v")); - else if (ctx.Match(k, Invk_source_default)) return source_default; - else if (ctx.Match(k, Invk_source_default_)) source_default = m.ReadStr("v"); else return super.Invk(ctx, ikey, k, m); return this; - } private static final String Invk_build = "build", Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_source = "source", Invk_source_ = "source_", Invk_source_default = "source_default", Invk_source_default_ = "source_default_"; + } + private static final String Invk_build = "build"; }