feat(options-module): implement tab open/close handling in OptionsModule and OptionsTab
This commit is contained in:
@@ -80,6 +80,7 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule
|
||||
|
||||
@Override
|
||||
public void onActivate() {
|
||||
this.activeTab().onTabOpen(this);
|
||||
this.setupOptionsWindow();
|
||||
this.getModuleService().changeActiveState(this.optionsWindow.getId(), true);
|
||||
this.getModuleService().hideExcept(this.getId(), this.optionsWindow.getId());
|
||||
@@ -249,8 +250,11 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule
|
||||
|
||||
final var selectedTab = this.tabsByControlId.get(controlId);
|
||||
if (selectedTab != null) {
|
||||
this.activeTab().onTabClose(this, () -> {
|
||||
this.activeTabId = selectedTab.tabId();
|
||||
this.activeTab().onTabOpen(this);
|
||||
this.setupOptionsWindow();
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -267,8 +271,10 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule
|
||||
}
|
||||
|
||||
private void closeOptions() {
|
||||
this.activeTab().onTabClose(this, () -> {
|
||||
this.getModuleService().changeActiveState(this.getId(), false);
|
||||
this.getModuleService().changeDisplayState(this.getId(), false);
|
||||
});
|
||||
}
|
||||
|
||||
private static ImmutableCoordI2 centeredPosition(final CoordI2 dimension) {
|
||||
|
||||
@@ -23,4 +23,12 @@ public interface OptionsTab {
|
||||
|
||||
default void onContentCleared(final OptionsModuleContext context) {
|
||||
}
|
||||
|
||||
default void onTabOpen(final OptionsModuleContext context) {
|
||||
|
||||
}
|
||||
|
||||
default void onTabClose(final OptionsModuleContext context, final Runnable closeTab) {
|
||||
closeTab.run();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user