mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Update tooltip for X button based on current screen and close action
This commit is contained in:
@@ -177,9 +177,14 @@ public enum FControl implements KeyEventDispatcher {
|
||||
});
|
||||
}
|
||||
|
||||
public CloseAction getCloseAction() {
|
||||
return this.closeAction;
|
||||
}
|
||||
|
||||
public void setCloseAction(CloseAction closeAction0) {
|
||||
if (this.closeAction == closeAction0) { return; }
|
||||
this.closeAction = closeAction0;
|
||||
Singletons.getView().getNavigationBar().updateBtnCloseTooltip();
|
||||
|
||||
final ForgePreferences prefs = Singletons.getModel().getPreferences();
|
||||
prefs.setPref(FPref.UI_CLOSE_ACTION, closeAction0.toString());
|
||||
|
||||
@@ -618,19 +618,27 @@ public class Game implements INavigationTabData {
|
||||
return Screens.MATCH_SCREEN;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#allowTabClose()
|
||||
*/
|
||||
@Override
|
||||
public boolean allowTabClose() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#canCloseTab()
|
||||
*/
|
||||
@Override
|
||||
public String getTabCloseButtonTooltip() {
|
||||
public String getCloseButtonTooltip() {
|
||||
return "Concede Game";
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#onClosingTab()
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#onClosing()
|
||||
*/
|
||||
@Override
|
||||
public boolean onClosingTab() {
|
||||
public boolean onClosing() {
|
||||
if (!isGameOver()) {
|
||||
Singletons.getControl().stopGame();
|
||||
return false; //delay hiding tab
|
||||
|
||||
@@ -602,19 +602,27 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider, INavigationTabData {
|
||||
return Screens.DECK_EDITOR_CONSTRUCTED;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#allowTabClose()
|
||||
*/
|
||||
@Override
|
||||
public boolean allowTabClose() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#canCloseTab()
|
||||
*/
|
||||
@Override
|
||||
public String getTabCloseButtonTooltip() {
|
||||
return null; //return null to indicate not to show close button
|
||||
public String getCloseButtonTooltip() {
|
||||
return "Close Editor";
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#onClosingTab()
|
||||
*/
|
||||
@Override
|
||||
public boolean onClosingTab() {
|
||||
public boolean onClosing() {
|
||||
if (canExit()) {
|
||||
Singletons.getControl().changeState(Screens.HOME_SCREEN);
|
||||
}
|
||||
|
||||
@@ -177,19 +177,27 @@ public enum CHomeUI implements ICDoc, IMenuProvider, INavigationTabData {
|
||||
return Screens.HOME_SCREEN;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#allowTabClose()
|
||||
*/
|
||||
@Override
|
||||
public boolean allowTabClose() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#getTabCloseButtonTooltip()
|
||||
*/
|
||||
@Override
|
||||
public String getTabCloseButtonTooltip() {
|
||||
return null; //return null to indicate not to show close button
|
||||
public String getCloseButtonTooltip() {
|
||||
return "Exit Forge";
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#onClosingTab()
|
||||
*/
|
||||
@Override
|
||||
public boolean onClosingTab() {
|
||||
public boolean onClosing() {
|
||||
Singletons.getControl().exitForge();
|
||||
return false; //don't allow closing Home tab
|
||||
}
|
||||
|
||||
@@ -215,8 +215,7 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
Singletons.getControl().setCloseAction((CloseAction) comboBox.getSelectedItem());
|
||||
}
|
||||
});
|
||||
CloseAction selectedItem = CloseAction.valueOf(this.prefs.getPref(FPref.UI_CLOSE_ACTION));
|
||||
panel.setComboBox(comboBox, selectedItem);
|
||||
panel.setComboBox(comboBox, Singletons.getControl().getCloseAction());
|
||||
}
|
||||
|
||||
private void initializeAiProfilesComboBox() {
|
||||
|
||||
@@ -64,7 +64,21 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
FSkin.get(clock).setForeground(foreColor);
|
||||
addControls();
|
||||
setupPnlReveal();
|
||||
btnClose.setToolTipText("Exit Forge");
|
||||
updateBtnCloseTooltip();
|
||||
}
|
||||
|
||||
public void updateBtnCloseTooltip() {
|
||||
switch (Singletons.getControl().getCloseAction()) {
|
||||
case NONE:
|
||||
btnClose.setToolTipText("Close");
|
||||
break;
|
||||
case CLOSE_SCREEN:
|
||||
btnClose.setToolTipText(this.selectedTab.data.getCloseButtonTooltip());
|
||||
break;
|
||||
case EXIT_FORGE:
|
||||
btnClose.setToolTipText("Exit Forge");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -133,6 +147,7 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
}
|
||||
tab.setSelected(true);
|
||||
selectedTab = tab;
|
||||
updateBtnCloseTooltip();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +164,7 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
|
||||
private void closeTab(NavigationTab tab) {
|
||||
if (tab == null) { return; }
|
||||
if (!tab.data.onClosingTab()) { return; } //give data a chance to perform special close handling and/or cancel closing tab
|
||||
if (!tab.data.onClosing()) { return; } //give data a chance to perform special close handling and/or cancel closing tab
|
||||
|
||||
if (tab.selected) {
|
||||
setSelectedTab(tabs.get(0)); //select home tab if selected tab closed (TODO: support navigation history and go to previous tab instead)
|
||||
@@ -333,8 +348,9 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
public String getTabCaption();
|
||||
public SkinImage getTabIcon();
|
||||
public Screens getTabDestScreen();
|
||||
public String getTabCloseButtonTooltip();
|
||||
public boolean onClosingTab();
|
||||
public boolean allowTabClose();
|
||||
public String getCloseButtonTooltip();
|
||||
public boolean onClosing();
|
||||
}
|
||||
|
||||
private final class NavigationTab extends JLabel implements ILocalRepaint {
|
||||
@@ -357,10 +373,9 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
skin.setFont(FSkin.getFont(fontSize));
|
||||
|
||||
int closeButtonOffset;
|
||||
String closeButtonTooltip = data.getTabCloseButtonTooltip();
|
||||
if (closeButtonTooltip != null) {
|
||||
if (data.allowTabClose()) {
|
||||
btnClose = new CloseButton();
|
||||
btnClose.setToolTipText(closeButtonTooltip);
|
||||
btnClose.setToolTipText(data.getCloseButtonTooltip());
|
||||
closeButtonOffset = btnClose.getPreferredSize().width;
|
||||
SpringLayout tabLayout = new SpringLayout();
|
||||
setLayout(tabLayout);
|
||||
@@ -383,7 +398,7 @@ public class FNavigationBar extends FTitleBarBase {
|
||||
Singletons.getControl().changeStateAutoFixLayout(data.getTabDestScreen(), NavigationTab.this.getText());
|
||||
}
|
||||
}
|
||||
else if (SwingUtilities.isMiddleMouseButton(e) && data.getTabCloseButtonTooltip() != null) {
|
||||
else if (SwingUtilities.isMiddleMouseButton(e) && data.allowTabClose()) {
|
||||
FNavigationBar.this.closeTab(NavigationTab.this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,11 +130,19 @@ public class ViewBazaarUI extends FPanel implements INavigationTabData {
|
||||
return Screens.QUEST_BAZAAR;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#allowTabClose()
|
||||
*/
|
||||
@Override
|
||||
public boolean allowTabClose() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#canCloseTab()
|
||||
*/
|
||||
@Override
|
||||
public String getTabCloseButtonTooltip() {
|
||||
public String getCloseButtonTooltip() {
|
||||
return "Leave Bazaar";
|
||||
}
|
||||
|
||||
@@ -142,7 +150,7 @@ public class ViewBazaarUI extends FPanel implements INavigationTabData {
|
||||
* @see forge.view.FNavigationBar.INavigationTabData#onClosingTab()
|
||||
*/
|
||||
@Override
|
||||
public boolean onClosingTab() {
|
||||
public boolean onClosing() {
|
||||
Singletons.getControl().changeState(FControl.Screens.HOME_SCREEN);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user