@@ -42,25 +42,47 @@ public void loadMenuConfig() {
4242 if (file .isDirectory ()) {
4343 files .addAll (Arrays .asList (Objects .requireNonNull (file .listFiles ())));
4444 } else if (file .isFile ()) {
45- this .registerMenu (file );
45+ String name = plugin .get (MainConfig .class ).getFileName (menusFolder , file );
46+ if (!registerMenu (name , file )) {
47+ plugin .getLogger ().log (Level .WARNING , "\" {0}\" cannot be registered as a menu. Ignored" , name );
48+ }
4649 }
4750 }
4851 }
4952
5053 /**
5154 * Register the menu
5255 *
56+ * @param name the menu name
5357 * @param file the menu file
58+ *
59+ * @return true if the menu is registered, false if the menu cannot be registered because of either name duplication or unsupported file
5460 */
55- public void registerMenu (File file ) {
56- String name = plugin .get (MainConfig .class ).getFileName (menusFolder , file );
61+ public boolean registerMenu (String name , File file ) {
5762 if (menuMap .containsKey (name )) {
58- plugin .getLogger ().log (Level .WARNING , "\" {0}\" is already available in the menu manager. Ignored" , name );
59- } else {
60- plugin .get (ConfigBuilder .class ).build (file ).flatMap (config -> {
61- config .setup ();
62- return plugin .get (MenuBuilder .class ).build (config );
63- }).ifPresent (menu -> menuMap .put (name , menu ));
63+ return false ;
64+ }
65+ Optional <Menu > optionalMenu = plugin .get (ConfigBuilder .class ).build (file ).flatMap (config -> {
66+ config .setup ();
67+ return plugin .get (MenuBuilder .class ).build (config );
68+ });
69+ if (optionalMenu .isPresent ()) {
70+ Menu menu = optionalMenu .get ();
71+ menuMap .put (name , menu );
72+ return false ;
73+ }
74+ return true ;
75+ }
76+
77+ /**
78+ * Remove a menu
79+ *
80+ * @param name the menu name
81+ */
82+ public void removeMenu (String name ) {
83+ Menu menu = menuMap .remove (name );
84+ if (menu != null ) {
85+ menu .closeAll ();
6486 }
6587 }
6688
0 commit comments