X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fjexer%2FTEditColorThemeWindow.java;h=668309d5798c411bd977107e086e476255a34616;hp=47197d4216f82fd81a5b4801c3645bb42f72ef14;hb=HEAD;hpb=2ce6dab2bbd951e6d0f09f94759efda5ee4b65ac diff --git a/src/jexer/TEditColorThemeWindow.java b/src/jexer/TEditColorThemeWindow.java index 47197d4..668309d 100644 --- a/src/jexer/TEditColorThemeWindow.java +++ b/src/jexer/TEditColorThemeWindow.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2016 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -29,6 +29,7 @@ package jexer; import java.util.List; +import java.util.ResourceBundle; import jexer.bits.Color; import jexer.bits.ColorTheme; @@ -43,7 +44,36 @@ import static jexer.TKeypress.*; * color theme. * */ -public final class TEditColorThemeWindow extends TWindow { +public class TEditColorThemeWindow extends TWindow { + + /** + * Translated strings. + */ + private static final ResourceBundle i18n = ResourceBundle.getBundle(TEditColorThemeWindow.class.getName()); + + // ------------------------------------------------------------------------ + // Variables -------------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * The current editing theme. + */ + private ColorTheme editTheme; + + /** + * The left-side list of colors pane. + */ + private TList colorNames; + + /** + * The foreground color. + */ + private ForegroundPicker foreground; + + /** + * The background color. + */ + private BackgroundPicker background; /** * The foreground color picker. @@ -189,15 +219,15 @@ public final class TEditColorThemeWindow extends TWindow { CellAttributes background = getWindow().getBackground(); CellAttributes attr = new CellAttributes(); - getScreen().drawBox(0, 0, getWidth(), getHeight(), border, - background, 1, false); + drawBox(0, 0, getWidth(), getHeight(), border, background, 1, + false); attr.setTo(getTheme().getColor("twindow.background.modal")); if (isActive()) { attr.setForeColor(getTheme().getColor("tlabel").getForeColor()); attr.setBold(getTheme().getColor("tlabel").isBold()); } - getScreen().putStringXY(1, 0, " Foreground ", attr); + putStringXY(1, 0, i18n.getString("foregroundLabel"), attr); // Have to draw the colors manually because the int value matches // SGR, not CGA. @@ -244,12 +274,11 @@ public final class TEditColorThemeWindow extends TWindow { // Use white-on-black for black. All other colors use // black-on-whatever. attr.reset(); - getScreen().putCharXY(dotX, dotY, GraphicsChars.CP437[0x07], - attr); + putCharXY(dotX, dotY, GraphicsChars.CP437[0x07], attr); } else { attr.setForeColor(color); attr.setBold(bold); - getScreen().putCharXY(dotX, dotY, '\u25D8', attr); + putCharXY(dotX, dotY, '\u25D8', attr); } } @@ -462,15 +491,15 @@ public final class TEditColorThemeWindow extends TWindow { CellAttributes background = getWindow().getBackground(); CellAttributes attr = new CellAttributes(); - getScreen().drawBox(0, 0, getWidth(), getHeight(), border, - background, 1, false); + drawBox(0, 0, getWidth(), getHeight(), border, background, 1, + false); attr.setTo(getTheme().getColor("twindow.background.modal")); if (isActive()) { attr.setForeColor(getTheme().getColor("tlabel").getForeColor()); attr.setBold(getTheme().getColor("tlabel").isBold()); } - getScreen().putStringXY(1, 0, " Background ", attr); + putStringXY(1, 0, i18n.getString("backgroundLabel"), attr); // Have to draw the colors manually because the int value matches // SGR, not CGA. @@ -499,11 +528,10 @@ public final class TEditColorThemeWindow extends TWindow { // Use white-on-black for black. All other colors use // black-on-whatever. attr.reset(); - getScreen().putCharXY(dotX, dotY, GraphicsChars.CP437[0x07], - attr); + putCharXY(dotX, dotY, GraphicsChars.CP437[0x07], attr); } else { attr.setForeColor(color); - getScreen().putCharXY(dotX, dotY, '\u25D8', attr); + putCharXY(dotX, dotY, '\u25D8', attr); } } @@ -594,63 +622,19 @@ public final class TEditColorThemeWindow extends TWindow { } - /** - * The current editing theme. - */ - private ColorTheme editTheme; - - /** - * The left-side list of colors pane. - */ - private TList colorNames; - - /** - * The foreground color. - */ - private ForegroundPicker foreground; - - /** - * The background color. - */ - private BackgroundPicker background; - - /** - * Set various widgets/values to the editing theme color. - * - * @param colorName name of color from theme - */ - private void refreshFromTheme(final String colorName) { - CellAttributes attr = editTheme.getColor(colorName); - foreground.color = attr.getForeColor(); - foreground.bold = attr.isBold(); - background.color = attr.getBackColor(); - } - - /** - * Examines foreground, background, and colorNames and sets the color in - * editTheme. - */ - private void saveToEditTheme() { - String colorName = colorNames.getSelected(); - if (colorName == null) { - return; - } - CellAttributes attr = editTheme.getColor(colorName); - attr.setForeColor(foreground.color); - attr.setBold(foreground.bold); - attr.setBackColor(background.color); - editTheme.setColor(colorName, attr); - } + // ------------------------------------------------------------------------ + // Constructors ----------------------------------------------------------- + // ------------------------------------------------------------------------ /** - * Public constructor. The file open box will be centered on screen. + * Public constructor. The window will be centered on screen. * * @param application the TApplication that manages this window */ public TEditColorThemeWindow(final TApplication application) { // Register with the TApplication - super(application, "Colors", 0, 0, 60, 18, MODAL); + super(application, i18n.getString("windowTitle"), 0, 0, 60, 18, MODAL); // Initialize with the first color List colors = getTheme().getColorNames(); @@ -669,6 +653,12 @@ public final class TEditColorThemeWindow extends TWindow { refreshFromTheme(colorNames.getSelected()); } }, + new TAction() { + // When the user navigates with keyboard + public void DO() { + refreshFromTheme(colorNames.getSelected()); + } + }, new TAction() { // When the user navigates with keyboard public void DO() { @@ -681,7 +671,7 @@ public final class TEditColorThemeWindow extends TWindow { refreshFromTheme(colors.get(0)); colorNames.setSelectedIndex(0); - addButton(" &OK ", getWidth() - 37, getHeight() - 4, + addButton(i18n.getString("okButton"), getWidth() - 37, getHeight() - 4, new TAction() { public void DO() { ColorTheme global = getTheme(); @@ -696,7 +686,8 @@ public final class TEditColorThemeWindow extends TWindow { } ); - addButton("&Cancel", getWidth() - 25, getHeight() - 4, + addButton(i18n.getString("cancelButton"), getWidth() - 25, + getHeight() - 4, new TAction() { public void DO() { getApplication().closeWindow(TEditColorThemeWindow.this); @@ -708,9 +699,34 @@ public final class TEditColorThemeWindow extends TWindow { activate(colorNames); // Add shortcut text - newStatusBar("Select Colors"); + newStatusBar(i18n.getString("statusBar")); + } + + // ------------------------------------------------------------------------ + // Event handlers --------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Handle keystrokes. + * + * @param keypress keystroke event + */ + @Override + public void onKeypress(final TKeypressEvent keypress) { + // Escape - behave like cancel + if (keypress.equals(kbEsc)) { + getApplication().closeWindow(this); + return; + } + + // Pass to my parent + super.onKeypress(keypress); } + // ------------------------------------------------------------------------ + // TWindow ---------------------------------------------------------------- + // ------------------------------------------------------------------------ + /** * Draw me on screen. */ @@ -725,34 +741,49 @@ public final class TEditColorThemeWindow extends TWindow { attr.setForeColor(getTheme().getColor("tlabel").getForeColor()); attr.setBold(getTheme().getColor("tlabel").isBold()); } - getScreen().putStringXY(3, 2, "Color Name", attr); + putStringXY(3, 2, i18n.getString("colorName"), attr); // Draw the sample text box attr.reset(); attr.setForeColor(foreground.color); attr.setBold(foreground.bold); attr.setBackColor(background.color); - getScreen().putStringXY(getWidth() - 17, getHeight() - 6, - "Text Text Text", attr); - getScreen().putStringXY(getWidth() - 17, getHeight() - 5, - "Text Text Text", attr); + putStringXY(getWidth() - 17, getHeight() - 6, + i18n.getString("textTextText"), attr); + putStringXY(getWidth() - 17, getHeight() - 5, + i18n.getString("textTextText"), attr); } + // ------------------------------------------------------------------------ + // TEditColorThemeWindow -------------------------------------------------- + // ------------------------------------------------------------------------ + /** - * Handle keystrokes. + * Set various widgets/values to the editing theme color. * - * @param keypress keystroke event + * @param colorName name of color from theme */ - @Override - public void onKeypress(final TKeypressEvent keypress) { - // Escape - behave like cancel - if (keypress.equals(kbEsc)) { - getApplication().closeWindow(this); + private void refreshFromTheme(final String colorName) { + CellAttributes attr = editTheme.getColor(colorName); + foreground.color = attr.getForeColor(); + foreground.bold = attr.isBold(); + background.color = attr.getBackColor(); + } + + /** + * Examines foreground, background, and colorNames and sets the color in + * editTheme. + */ + private void saveToEditTheme() { + String colorName = colorNames.getSelected(); + if (colorName == null) { return; } - - // Pass to my parent - super.onKeypress(keypress); + CellAttributes attr = editTheme.getColor(colorName); + attr.setForeColor(foreground.color); + attr.setBold(foreground.bold); + attr.setBackColor(background.color); + editTheme.setColor(colorName, attr); } }