Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_904 / libraries / libIverUtiles / src / com / iver / utiles / console / jedit / SyntaxStyle.java @ 10724

History | View | Annotate | Download (3.06 KB)

1
package com.iver.utiles.console.jedit;
2
/*
3
 * SyntaxStyle.java - A simple text style class
4
 * Copyright (C) 1999 Slava Pestov
5
 *
6
 * You may use and modify this package for any purpose. Redistribution is
7
 * permitted, in both source and binary form, provided that this notice
8
 * remains intact in all source distributions of this package.
9
 */
10

    
11
import java.awt.Color;
12
import java.awt.Font;
13
import java.awt.FontMetrics;
14
import java.awt.Graphics;
15
import java.awt.Toolkit;
16

    
17
/**
18
 * A simple text style class. It can specify the color, italic flag,
19
 * and bold flag of a run of text.
20
 * @author Slava Pestov
21
 * @version $Id$
22
 */
23
public class SyntaxStyle
24
{
25
        /**
26
         * Creates a new SyntaxStyle.
27
         * @param color The text color
28
         * @param italic True if the text should be italics
29
         * @param bold True if the text should be bold
30
         */
31
        public SyntaxStyle(Color color, boolean italic, boolean bold)
32
        {
33
                this.color = color;
34
                this.italic = italic;
35
                this.bold = bold;
36
        }
37

    
38
        /**
39
         * Returns the color specified in this style.
40
         */
41
        public Color getColor()
42
        {
43
                return color;
44
        }
45

    
46
        /**
47
         * Returns true if no font styles are enabled.
48
         */
49
        public boolean isPlain()
50
        {
51
                return !(bold || italic);
52
        }
53

    
54
        /**
55
         * Returns true if italics is enabled for this style.
56
         */
57
        public boolean isItalic()
58
        {
59
                return italic;
60
        }
61

    
62
        /**
63
         * Returns true if boldface is enabled for this style.
64
         */
65
        public boolean isBold()
66
        {
67
                return bold;
68
        }
69

    
70
        /**
71
         * Returns the specified font, but with the style's bold and
72
         * italic flags applied.
73
         */
74
        public Font getStyledFont(Font font)
75
        {
76
                if(font == null)
77
                        throw new NullPointerException("font param must not"
78
                                + " be null");
79
                if(font.equals(lastFont))
80
                        return lastStyledFont;
81
                lastFont = font;
82
                lastStyledFont = new Font(font.getFamily(),
83
                        (bold ? Font.BOLD : 0)
84
                        | (italic ? Font.ITALIC : 0),
85
                        font.getSize());
86
                return lastStyledFont;
87
        }
88

    
89
        /**
90
         * Returns the font metrics for the styled font.
91
         */
92
        public FontMetrics getFontMetrics(Font font)
93
        {
94
                if(font == null)
95
                        throw new NullPointerException("font param must not"
96
                                + " be null");
97
                if(font.equals(lastFont) && fontMetrics != null)
98
                        return fontMetrics;
99
                lastFont = font;
100
                lastStyledFont = new Font(font.getFamily(),
101
                        (bold ? Font.BOLD : 0)
102
                        | (italic ? Font.ITALIC : 0),
103
                        font.getSize());
104
                fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics(
105
                        lastStyledFont);
106
                return fontMetrics;
107
        }
108

    
109
        /**
110
         * Sets the foreground color and font of the specified graphics
111
         * context to that specified in this style.
112
         * @param gfx The graphics context
113
         * @param font The font to add the styles to
114
         */
115
        public void setGraphicsFlags(Graphics gfx, Font font)
116
        {
117
                Font _font = getStyledFont(font);
118
                gfx.setFont(_font);
119
                gfx.setColor(color);
120
        }
121

    
122
        /**
123
         * Returns a string representation of this object.
124
         */
125
        public String toString()
126
        {
127
                return getClass().getName() + "[color=" + color +
128
                        (italic ? ",italic" : "") +
129
                        (bold ? ",bold" : "") + "]";
130
        }
131

    
132
        // private members
133
        private Color color;
134
        private boolean italic;
135
        private boolean bold;
136
        private Font lastFont;
137
        private Font lastStyledFont;
138
        private FontMetrics fontMetrics;
139
}