/**
* Copyright 2015 Santhosh Kumar Tekuri
*
* The JLibs authors license this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package jlibs.swing;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
/**
* @author Santhosh Kumar T
*/
public class VerticalTextIcon implements Icon, SwingConstants{
private Component comp;
private String text;
private boolean clockwize;
public VerticalTextIcon(Component comp, String text, boolean clockwize){
this.comp = comp;
this.text = text;
this.clockwize = clockwize;
}
public void paintIcon(Component c, Graphics g, int x, int y){
Graphics2D g2 = (Graphics2D)g;
Font oldFont = g.getFont();
Color oldColor = g.getColor();
AffineTransform oldTransform = g2.getTransform();
g.setFont(c.getFont());
g.setColor(c.getForeground());
if(clockwize){
g2.translate(x+getIconWidth(), y);
g2.rotate(Math.PI/2);
}else{
g2.translate(x, y+getIconHeight());
g2.rotate(-Math.PI/2);
}
FontMetrics fm = g.getFontMetrics();
g.drawString(text, 0, fm.getLeading()+fm.getAscent());
g.setFont(oldFont);
g.setColor(oldColor);
g2.setTransform(oldTransform);
}
public int getIconWidth(){
return comp.getGraphics().getFontMetrics().getHeight();
}
public int getIconHeight(){
return SwingUtilities.computeStringWidth(comp.getGraphics().getFontMetrics(), text);
}
}