001: /*
002: * Copyright 2006-2007 Pentaho Corporation. All rights reserved.
003: * This software was developed by Pentaho Corporation and is provided under the terms
004: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
005: * this file except in compliance with the license. If you need a copy of the license,
006: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt.
007: *
008: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
009: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
010: * the license for the specific language governing your rights and limitations.
011: *
012: * Additional Contributor(s): Martin Schmid gridvision engineering GmbH
013: */
014: package org.pentaho.reportdesigner.crm.report.tests;
015:
016: import com.jgoodies.forms.layout.CellConstraints;
017: import com.jgoodies.forms.layout.FormLayout;
018:
019: import javax.swing.*;
020: import javax.swing.event.ChangeEvent;
021: import javax.swing.event.ChangeListener;
022: import java.awt.*;
023: import java.awt.geom.Arc2D;
024: import java.awt.geom.Ellipse2D;
025: import java.awt.geom.PathIterator;
026:
027: import org.jetbrains.annotations.NotNull;
028:
029: /**
030: * User: Martin
031: * Date: 20.10.2007
032: * Time: 19:43:49
033: */
034: @SuppressWarnings({"ALL"})
035: public class EllipseTest {
036: public static void main(String[] args)
037: throws ClassNotFoundException,
038: UnsupportedLookAndFeelException, IllegalAccessException,
039: InstantiationException {
040: UIManager.setLookAndFeel(UIManager
041: .getSystemLookAndFeelClassName());
042:
043: JFrame frame = new JFrame();
044: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
045:
046: FormLayout formLayout = new FormLayout(
047: "4dlu, fill:pref:grow, 4dlu", "4dlu, fill:pref:grow, "
048: + "4dlu, default, " + "4dlu, default, "
049: + "4dlu");
050:
051: CellConstraints cc = new CellConstraints();
052:
053: final JSlider startSlider = new JSlider(-360, 360);
054: final JSlider extentSlider = new JSlider(-360, 360);
055:
056: startSlider.setPaintTicks(true);
057: startSlider.setPaintLabels(true);
058: startSlider.setMajorTickSpacing(45);
059:
060: extentSlider.setPaintTicks(true);
061: extentSlider.setPaintLabels(true);
062: extentSlider.setMajorTickSpacing(45);
063:
064: extentSlider.setValue(-45);
065:
066: frame.getContentPane().setLayout(formLayout);
067:
068: final JPanel panel = new JPanel() {
069: protected void paintComponent(Graphics g) {
070: super .paintComponent(g);
071:
072: Graphics2D g2d = (Graphics2D) g;
073: g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
074: RenderingHints.VALUE_ANTIALIAS_ON);
075:
076: Ellipse2D.Double e = new Ellipse2D.Double(100, 10, 200,
077: 100);
078:
079: Arc2D.Double a = new Arc2D.Double(e.getBounds2D(),
080: startSlider.getValue(),
081: extentSlider.getValue(), Arc2D.OPEN);
082:
083: g2d.draw(e);
084:
085: g2d.setStroke(new BasicStroke(3));
086:
087: g2d.setStroke(new Stroke() {
088: @NotNull
089: public Shape createStrokedShape(@NotNull
090: Shape p) {
091: PathIterator pathIterator = p
092: .getPathIterator(null);
093: while (!pathIterator.isDone()) {
094: pathIterator.next();
095: }
096: return new Rectangle();
097: }
098: });
099: g2d.setColor(Color.BLUE);
100: g2d.draw(a);
101: }
102: };
103:
104: startSlider.addChangeListener(new ChangeListener() {
105: public void stateChanged(ChangeEvent e) {
106: panel.repaint();
107: }
108: });
109:
110: extentSlider.addChangeListener(new ChangeListener() {
111: public void stateChanged(ChangeEvent e) {
112: panel.repaint();
113: }
114: });
115:
116: frame.getContentPane().add(panel, cc.xy(2, 2));
117: frame.getContentPane().add(startSlider, cc.xy(2, 4));
118: frame.getContentPane().add(extentSlider, cc.xy(2, 6));
119:
120: frame.setBounds(100, 100, 500, 300);
121: frame.setVisible(true);
122: }
123: }
|