001    package nl.cwi.sen1.gui.plugin.editor;
002    
003    import java.awt.Color;
004    import java.awt.Graphics;
005    import java.awt.Rectangle;
006    import java.awt.Shape;
007    
008    import javax.swing.text.BadLocationException;
009    import javax.swing.text.DefaultHighlighter;
010    import javax.swing.text.JTextComponent;
011    import javax.swing.text.Position;
012    import javax.swing.text.View;
013    
014    class BracketHighlightPainter extends
015            DefaultHighlighter.DefaultHighlightPainter {
016    
017        BracketHighlightPainter(Color color) {
018            super(color);
019        }
020    
021        public Shape paintLayer(Graphics g, int offs0, int offs1, Shape bounds,
022                JTextComponent c, View view) {
023    
024            try {
025                Shape shape = view.modelToView(offs0, Position.Bias.Forward, offs1,
026                        Position.Bias.Backward, bounds);
027                Rectangle r = (shape instanceof Rectangle) ? (Rectangle) shape
028                        : shape.getBounds();
029                g.setColor(getColor());
030                g.drawRect(r.x, r.y, r.width - 1, r.height - 1);
031                return r;
032            } catch (BadLocationException e) {
033            }
034    
035            return null;
036        }
037    }