01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19:
20: package org.netbeans.modules.bpel.design.model.elements.icons;
21:
22: import java.awt.Graphics2D;
23: import java.awt.Shape;
24: import java.awt.geom.Arc2D;
25: import org.netbeans.modules.bpel.design.geometry.Triangle;
26:
27: /**
28: *
29: * @author anjeleevich
30: */
31: public class RepeatUntilIcon2D extends Icon2D {
32:
33: private RepeatUntilIcon2D() {
34: }
35:
36: public void paint(Graphics2D g2) {
37: g2.setStroke(STROKE);
38: g2.setPaint(COLOR);
39: g2.draw(SHAPE_1);
40: g2.fill(SHAPE_2);
41: }
42:
43: public static final Icon2D INSTANCE = new RepeatUntilIcon2D();
44:
45: private static final Shape SHAPE_1;
46: private static final Shape SHAPE_2;
47:
48: static {
49: final double r = 7;
50: final double kt = 6;
51: final double kn = 4;
52:
53: final double start = -45 + 180;
54: final double delta = 270;
55:
56: SHAPE_1 = new Arc2D.Double(-r, -r, 2 * r, 2 * r, start, delta,
57: Arc2D.OPEN);
58:
59: double phi = Math.PI * start / 180;
60:
61: float x = (float) (r * Math.cos(phi));
62: float y = (float) (-r * Math.sin(phi));
63:
64: float tx = (float) (-y / r);
65: float ty = (float) (x / r);
66:
67: float nx = -ty;
68: float ny = tx;
69:
70: tx *= kt;
71: ty *= kt;
72: nx *= kn;
73: ny *= kn;
74:
75: SHAPE_2 = new Triangle(x + tx, y + ty, x - nx, y - ny, x + nx,
76: y + ny);
77: }
78: }
|