Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eg.edu.alexu.csd.oop.VectorDrawing;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.RenderingHints;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import java.awt.print.Pageable;
- import java.util.ArrayList;
- import javax.naming.AuthenticationNotSupportedException;
- import javax.swing.JComponent;
- import javax.swing.*;
- import java.awt.color.*;
- public class Sketch extends JComponent {
- private Image image;
- public Graphics2D graphic;
- int OldX, OldY, CurrentX, CurrentY,
- topLeftX, topLeftY;
- private int FirstX, FirstY, SecondX, SecondY, ThirdX, ThirdY;
- ArrayList<Shape> ShapeAdded = new ArrayList<Shape>();
- ArrayList<ArrayList> pageLookLike = new ArrayList<ArrayList>();
- boolean lineClicked = false, freeClicked = true, squareClicked = false,
- rectangleClicked = false, triangleClicked = false, circleClicked = false,
- ellipseClicked = false, triangleClicked1 = false,
- triangleClicked2 = false, done = false, firstPoint = false,
- secondPoint = false, threePoint = false, clearSelected = false;
- Color c;
- public Sketch() {
- setDoubleBuffered(false);
- addMouseListener(new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- OldX = e.getX();
- OldY = e.getY();
- if (triangleClicked && !done && !secondPoint && !threePoint
- && !firstPoint) {
- FirstX = e.getX();
- FirstY = e.getY();
- firstPoint = true;
- // triangleClicked2 = true ;
- }
- if (triangleClicked2 && firstPoint && secondPoint && triangleClicked) {
- firstPoint = false;
- done = false;
- secondPoint = false;
- triangleClicked2 = false;
- ThirdX = e.getX();
- ThirdY = e.getY();
- graphic.drawLine(SecondX, SecondY, ThirdX, ThirdY);
- repaint();
- graphic.drawLine(FirstX, FirstY, ThirdX, ThirdY);
- repaint();
- }
- }
- public void mouseReleased(final MouseEvent e) {
- // TODO Auto-generated method stub
- CurrentX = e.getX();
- CurrentY = e.getY();
- if (lineClicked) {
- Line line = new Line(OldX, OldY, CurrentX, CurrentY);
- line.draw(graphic);
- ShapeAdded.add(line);
- pageLookLike.add(ShapeAdded);
- repaint();
- }
- if (squareClicked) {
- if(OldX < CurrentX)
- topLeftX = OldX;
- else
- topLeftX = CurrentX;
- if(OldY < CurrentY)
- topLeftY = OldY;
- else
- topLeftY = CurrentY;
- Rectangle rectangle = new Rectangle(topLeftX, topLeftY, Math.abs(CurrentX - OldX),
- Math.abs(CurrentX - OldX));
- rectangle.draw(graphic);
- ShapeAdded.add(rectangle);
- pageLookLike.add(ShapeAdded);
- repaint();
- }
- if (rectangleClicked) {
- Rectangle rectangle = new Rectangle(OldX, OldY, CurrentX - OldX,
- CurrentY - OldY);
- rectangle.draw(graphic);
- ShapeAdded.add(rectangle);
- pageLookLike.add(ShapeAdded);
- repaint();
- }
- if (ellipseClicked) {
- Ellipse oval = new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY
- - OldY);
- oval.draw(graphic);
- ShapeAdded.add(oval);
- pageLookLike.add(ShapeAdded);
- repaint();
- }
- if (circleClicked) {
- Circle circle = new Circle(OldX, OldY, CurrentX - OldX, CurrentX
- - OldX);
- circle.draw(graphic);
- ShapeAdded.add(circle);
- pageLookLike.add(ShapeAdded);
- repaint();
- }
- if (triangleClicked) {
- if (!done && !secondPoint && !threePoint && firstPoint) {
- SecondX = e.getX();
- SecondY = e.getY();
- if (!((SecondX == FirstX) && (SecondY == FirstY))) {
- secondPoint = true;
- triangleClicked2 = true;
- done = true;
- }
- graphic.drawLine(FirstX, FirstY, SecondX, SecondY);
- }
- repaint();
- }
- }
- });
- addMouseMotionListener(new MouseMotionAdapter() {
- @Override
- public void mouseDragged(final MouseEvent e) {
- CurrentX = e.getX();
- CurrentY = e.getY();
- if (graphic != null && freeClicked && !lineClicked) {
- graphic.drawLine(OldX, OldY, CurrentX, CurrentY);
- repaint();
- OldX = CurrentX;
- OldY = CurrentY;
- }
- if (graphic != null && lineClicked) {
- clear();
- if (ShapeAdded.size() == 0) {
- new Line(OldX, OldY, CurrentX, CurrentY).draw(graphic);
- }
- else
- for (int i = 0; i < ShapeAdded.size(); i++) {
- ShapeAdded.get(i).draw(graphic);
- new Line(OldX, OldY, CurrentX, CurrentY).draw(graphic);
- }
- if (image == null) {
- image = createImage(getSize().width, getSize().height);
- graphic = (Graphics2D) image.getGraphics();
- graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- }
- }
- repaint();
- repaint();
- if (graphic != null && rectangleClicked) {
- clear();
- if (ShapeAdded.size() == 0) {
- new Rectangle(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
- }
- else
- for (int i = 0; i < ShapeAdded.size(); i++) {
- ShapeAdded.get(i).draw(graphic);
- new Rectangle(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
- }
- if (image == null) {
- image = createImage(getSize().width, getSize().height);
- graphic = (Graphics2D) image.getGraphics();
- graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- }
- }
- repaint();
- if (graphic != null && ellipseClicked) {
- clear();
- if (ShapeAdded.size() == 0) {
- new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
- }
- else
- for (int i = 0; i < ShapeAdded.size(); i++) {
- ShapeAdded.get(i).draw(graphic);
- new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
- }
- if (image == null) {
- image = createImage(getSize().width, getSize().height);
- graphic = (Graphics2D) image.getGraphics();
- graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- }
- }
- repaint();
- if (graphic != null && circleClicked) {
- clear();
- if (ShapeAdded.size() == 0) {
- new Circle(OldX, OldY, CurrentX - OldX, CurrentX - OldX).draw(graphic);
- } else
- for (int i = 0; i < ShapeAdded.size(); i++) {
- ShapeAdded.get(i).draw(graphic);
- new Circle(OldX, OldY, CurrentX - OldX, CurrentX - OldX).draw(graphic);
- }
- if (image == null) {
- image = createImage(getSize().width, getSize().height);
- graphic = (Graphics2D) image.getGraphics();
- graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- }
- }
- repaint();
- }
- });
- }
- protected void paintComponent(final Graphics e) {
- if (image == null) {
- image = createImage(getSize().width, getSize().height);
- graphic = (Graphics2D) image.getGraphics();
- graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- clear();
- }
- e.drawImage(image, 0, 0, null);
- }
- public void clear() {
- if(clearSelected){
- ShapeAdded = new ArrayList<Shape>();
- pageLookLike.add(ShapeAdded);
- clearSelected = false;
- }
- graphic.setPaint(Color.white);
- graphic.fillRect(0, 0, getSize().width, getSize().height);
- graphic.setPaint(Color.black);
- repaint();
- }
- public void undo(){
- if( !(pageLookLike.size() == 0)){
- }
- }
- public void redo(){
- }
- public void changecolor() {
- graphic.setPaint(c);
- repaint();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement