1 19 20 28 29 package org.netbeans.modules.xml.schema.abe; 30 31 import java.awt.BasicStroke ; 32 import java.awt.Color ; 33 import java.awt.Font ; 34 import java.awt.Graphics ; 35 import java.awt.Graphics2D ; 36 import java.awt.Point ; 37 import java.awt.Rectangle ; 38 import java.awt.Stroke ; 39 import javax.swing.JLabel ; 40 import javax.swing.SwingUtilities ; 41 42 46 public abstract class AnnotatedBorderPanel extends ABEBaseDropPanel{ 47 48 private static final long serialVersionUID = 7526472295622776147L; 49 private boolean drawAnnotation = true; 50 51 52 public AnnotatedBorderPanel(InstanceUIContext context) { 53 super(context); 54 } 55 56 public void setDrawAnnotation(boolean drawAnnotation){ 57 this.drawAnnotation = drawAnnotation; 58 } 59 60 Point startPoint = null; 61 void setStartDrawPoint(Point startPoint){ 62 this.startPoint = startPoint; 63 } 64 65 String annotationString; 66 void setAnnotationString(String annotationString){ 67 this.annotationString = annotationString; 68 } 69 70 public void paintComponent(Graphics g){ 71 Graphics2D g2d = (Graphics2D ) g; 72 super.paintComponent(g2d); 73 74 if(!drawAnnotation){ 76 return; 77 } 78 79 Rectangle area = getBounds(); 80 int height = area.height; 82 Stroke stroke = g2d.getStroke(); 83 if(shouldDrawBorder()){ 84 Color oldColor = g2d.getColor(); 85 g2d.setColor(borderColor); 86 Stroke drawingStroke2 = 87 new BasicStroke ( 88 2, 89 BasicStroke.CAP_BUTT, 90 BasicStroke.JOIN_MITER, 91 10, 92 new float[] {5}, 93 0 94 ); 95 96 g2d.setStroke((drawingStroke2)); 97 g2d.drawRoundRect(area.x, area.y+1, area.width , area.height -2 , 10, 10); 98 g2d.setColor(oldColor); 99 } 100 101 102 103 g2d.setPaint(Color.lightGray); 104 float[] dashPattern = { 2, 2 }; 105 g2d.setStroke(new BasicStroke (1, BasicStroke.CAP_BUTT, 106 BasicStroke.JOIN_MITER, 10, 107 dashPattern, 0)); 108 g2d.drawLine(startPoint.x, startPoint.y, startPoint.x, startPoint.y + height); 110 111 int FONTSIZE = new JLabel ().getFont().getSize(); 112 113 Font oldFont = g2d.getFont(); 114 Color stringColor = Color.lightGray; 115 if(drawBoldString){ 116 Font font = new Font (oldFont.getName(), Font.BOLD, oldFont.getSize()); 117 g2d.setFont(font); 118 stringColor = Color.BLACK; 119 } 120 121 int fWidth = SwingUtilities.computeStringWidth(g2d.getFontMetrics(), "s"); 122 int strH = (FONTSIZE) * annotationString.length(); 123 int segments = height / (strH); 124 boolean strSeg = false; 125 int currentY = startPoint.y; 126 int fixedX = startPoint.x - 2 - fWidth; 127 for(int i = 0; i<segments; i++){ 128 if(strSeg){ 129 g2d.setPaint(stringColor); 133 currentY += 8; 134 for(char c: annotationString.toCharArray()){ 136 g2d.drawString(""+c, fixedX, currentY); 137 currentY += FONTSIZE; 138 } 139 currentY += FONTSIZE; 140 strSeg = false; 141 }else{ 142 strSeg = true; 143 currentY += strH; 144 } 145 146 } 147 g2d.setStroke(stroke); 148 g2d.setFont(oldFont); 149 } 150 151 public boolean shouldDrawBorder(){ 152 return this.drawBorder; 153 } 154 155 private boolean drawBorder = false; 156 157 public void setDrawBorder(boolean drawBorder){ 158 this.drawBorder = drawBorder; 159 } 160 161 private Color borderColor = InstanceDesignConstants.XP_ORANGE; 162 public void setBorderColor(Color borderColor){ 163 this.borderColor = borderColor; 164 } 165 166 boolean drawBoldString = false; 167 public void drawBoldString(boolean drawBoldString){ 168 this.drawBoldString = drawBoldString; 169 } 170 171 } 172 | Popular Tags |