| /* |
| * Copyright 2000-2012 JetBrains s.r.o. |
| * |
| * Licensed 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 com.intellij.ui.tabs.impl; |
| |
| import javax.swing.*; |
| import javax.swing.border.EmptyBorder; |
| import java.awt.*; |
| |
| public class ShapeTransformTest { |
| private static class Painter extends JLabel { |
| private final ShapeTransform myT; |
| |
| private Painter(String text, ShapeTransform transform) { |
| setText(text); |
| setFont(getFont().deriveFont(30f)); |
| setBorder(new EmptyBorder(6, 6, 6, 6)); |
| myT = transform; |
| setOpaque(false); |
| } |
| |
| @Override |
| protected void paintComponent(Graphics g) { |
| super.paintComponent(g); |
| |
| g.setColor(Color.red); |
| final Graphics2D g2d = (Graphics2D)g; |
| |
| int arc1 = 4; |
| int arc2 = 6; |
| |
| final Rectangle r = new Rectangle(arc1, arc1, getWidth() - arc1 - 1, getHeight() - arc1 - 1); |
| |
| myT.reset(r); |
| |
| myT.moveTo(myT.getX() - myT.deltaX(arc1), myT.getMaxY()); |
| myT.quadTo(myT.getX(), myT.getMaxY(), myT.getX(), myT.getMaxY() - myT.deltaY(arc1)); |
| myT.lineTo(myT.getX(), myT.getY() + myT.deltaY(arc2)); |
| myT.quadTo(myT.getX(), myT.getY(), myT.getX() + myT.deltaX(arc2), myT.getY()); |
| myT.lineTo(myT.getMaxX() - myT.deltaX(arc2), myT.getY()); |
| myT.quadTo(myT.getMaxX(), myT.getY(), myT.getMaxX(), myT.getY() + myT.deltaY(arc2)); |
| myT.lineTo(myT.getMaxX(), myT.getMaxY()); |
| |
| g2d.draw(myT.getShape()); |
| |
| |
| final int innerRecSize = 18; |
| final Rectangle innerRec = new Rectangle(getWidth() / 2 - innerRecSize / 2, getHeight() / 2 - innerRecSize / 2, innerRecSize, innerRecSize); |
| |
| final ShapeTransform inner = myT.createTransform(innerRec); |
| inner.moveTo(inner.getX(), inner.getMaxY()); |
| inner.lineTo(inner.getX(), inner.getY()); |
| inner.lineTo(inner.getMaxX(), inner.getY()); |
| inner.lineTo(inner.getMaxX(), inner.getMaxY()); |
| |
| g2d.draw(inner.getShape()); |
| } |
| } |
| |
| |
| public static void main(String[] args) { |
| final JFrame frame = new JFrame(); |
| frame.getContentPane().setLayout(new BorderLayout()); |
| final JPanel content = new JPanel(new FlowLayout(FlowLayout.CENTER)); |
| frame.getContentPane().add(content, BorderLayout.CENTER); |
| |
| content.add(new Painter("TOP", new ShapeTransform.Top())); |
| content.add(new Painter("LEFT", new ShapeTransform.Left())); |
| content.add(new Painter("BOTTOM", new ShapeTransform.Bottom())); |
| content.add(new Painter("RIGHT", new ShapeTransform.Right())); |
| |
| frame.setBounds(300, 300, 300, 300); |
| frame.show(); |
| } |
| } |