*/
public final class TreeFontSet {
+ static final int BOLD_AND_ITALIC = Font.BOLD + Font.ITALIC;
+ final static float FONT_SIZE_CHANGE_STEP = 1.0f;
final static float SMALL_FONTS_BASE = 8;
private final static String DEFAULT_FONT = "Verdana";
- final static float FONT_SIZE_CHANGE_STEP = 1.0f;
- static final int BOLD_AND_ITALIC = Font.BOLD + Font.ITALIC;
+ private Font _base_font;
+ private boolean _decreased_size_by_system = false;
+ private FontMetrics _fm_large;
+ // Handy holders for font metrics
+ private FontMetrics _fm_small;
+ private Font _large_font;
+ private Font _large_font_memory;
+ private Font _large_font_system;
+ private final int _max;
+ private final int _min;
// the owner (needed to get font metrics)
private final MainPanel _owner;
// The fonts
private Font _small_font;
- private Font _large_font;
- private Font _base_font;
- private Font _small_font_system;
- private Font _large_font_system;
private Font _small_font_memory;
- private Font _large_font_memory;
- // Handy holders for font metrics
- public FontMetrics _fm_small;
- FontMetrics _fm_large;
- FontMetrics _fm_large_bold;
+ private Font _small_font_system;
+ private int _small_max_ascent = 0;
// hold font measurements
- int _small_max_descent = 0;
- int _small_max_ascent = 0;
- private final int _min;
- private final int _max;
- private boolean _decreased_size_by_system = false;
+ private int _small_max_descent = 0;
TreeFontSet( final MainPanel owner ) {
_owner = owner;
setBaseFont( new Font( DEFAULT_FONT, Font.PLAIN, 10 ) );
}
+ public FontMetrics getFontMetricsLarge() {
+ return _fm_large;
+ }
+
+ public FontMetrics getFontMetricsSmall() {
+ return _fm_small;
+ }
+
public Font getSmallFont() {
return _small_font;
}
+ public int getSmallMaxAscent() {
+ return _small_max_ascent;
+ }
+
+ public int getSmallMaxDescent() {
+ return _small_max_descent;
+ }
+
+ private Font getLargeFontSystem() {
+ return _large_font_system;
+ }
+
+ private void intializeFonts() {
+ final int small_size = getBaseFont().getSize() - 2;
+ int italic = Font.ITALIC;
+ if ( getBaseFont().getStyle() == Font.BOLD ) {
+ italic = italic + Font.BOLD;
+ }
+ _small_font = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), small_size );
+ _large_font = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), getBaseFont().getSize() );
+ _small_font_system = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), small_size );
+ _large_font_system = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), getBaseFont().getSize() );
+ _small_font_memory = _small_font;
+ _large_font_memory = _large_font;
+ setupFontMetrics();
+ }
+
+ private void setDecreasedSizeBySystem( final boolean decreased_size_by_system ) {
+ _decreased_size_by_system = decreased_size_by_system;
+ }
+
+ private void setupFontMetrics() {
+ _fm_small = _owner.getFontMetrics( _small_font );
+ _fm_large = _owner.getFontMetrics( _large_font );
+ _small_max_descent = _fm_small.getMaxDescent();
+ _small_max_ascent = _fm_small.getMaxAscent() + 1;
+ }
+
void decreaseFontSize( final int min, final boolean decreased_size_by_system ) {
if ( decreased_size_by_system && !isDecreasedSizeBySystem() ) {
_small_font_memory = _small_font;
}
}
- Font getLargeFontMemory() {
- return _large_font_memory;
- }
-
Font getBaseFont() {
return _base_font;
}
return _large_font;
}
+ Font getLargeFontMemory() {
+ return _large_font_memory;
+ }
+
Font getSmallFontSystem() {
return _small_font_system;
}
void smallFonts() {
setDecreasedSizeBySystem( false );
- _small_font = _small_font.deriveFont( SMALL_FONTS_BASE - 1 );
+ _small_font = _small_font.deriveFont( SMALL_FONTS_BASE - 2 );
_large_font = _large_font.deriveFont( SMALL_FONTS_BASE );
setupFontMetrics();
}
void superTinyFonts() {
setDecreasedSizeBySystem( false );
_small_font = _small_font.deriveFont( 2f );
- _large_font = _large_font.deriveFont( 3f );
+ _large_font = _large_font.deriveFont( 4f );
setupFontMetrics();
}
void tinyFonts() {
setDecreasedSizeBySystem( false );
- _small_font = _small_font.deriveFont( 5f );
+ _small_font = _small_font.deriveFont( 4f );
_large_font = _large_font.deriveFont( 6f );
setupFontMetrics();
}
-
- private Font getLargeFontSystem() {
- return _large_font_system;
- }
-
- private void intializeFonts() {
- final int small_size = getBaseFont().getSize() - 1;
- int italic = Font.ITALIC;
- if ( getBaseFont().getStyle() == Font.BOLD ) {
- italic = italic + Font.BOLD;
- }
- _small_font = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), small_size );
- _large_font = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), getBaseFont().getSize() );
- _small_font_system = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), small_size );
- _large_font_system = new Font( getBaseFont().getFontName(), getBaseFont().getStyle(), getBaseFont().getSize() );
- _small_font_memory = _small_font;
- _large_font_memory = _large_font;
- setupFontMetrics();
- }
-
- private void setDecreasedSizeBySystem( final boolean decreased_size_by_system ) {
- _decreased_size_by_system = decreased_size_by_system;
- }
-
- private void setupFontMetrics() {
- _fm_small = _owner.getFontMetrics( _small_font );
- _fm_large = _owner.getFontMetrics( _large_font );
- _fm_large_bold = _owner.getFontMetrics( _large_font.deriveFont( Font.BOLD ) );
- _small_max_descent = _fm_small.getMaxDescent();
- _small_max_ascent = _fm_small.getMaxAscent() + 1;
- }
}