YauhenMardan

Untitled

Mar 7th, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.55 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.GridLayout;
  4. import java.awt.Point;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.awt.event.MouseAdapter;
  8. import java.awt.event.MouseEvent;
  9. import java.util.ArrayList;
  10. import javax.swing.JButton;
  11. import javax.swing.JColorChooser;
  12. import javax.swing.JLayeredPane;
  13. import javax.swing.JPanel;
  14.  
  15. public class DrawingPane extends JLayeredPane {
  16. // consts
  17.  
  18. private final int FIGURES_PANEL_ROWS_NUM = 7;
  19. private final int FIGURES_PANEL_COLS_NUM = 2;
  20.  
  21. private final int WINDOW_WIDTH = 1000;
  22. private final int WINDOW_HEIGHT = 600;
  23. // fields
  24. enum FigureType {
  25. POLYLINE,
  26. LINE_SEGMENT,
  27. RAY,
  28. STRAIGHT_LINE,
  29. OVAL,
  30. CIRCLE,
  31. POLYGON,
  32. REGULAR_POLYGON,
  33. RHOMBUS,
  34. TRIANGLE,
  35. RECTANGLE,
  36. SQUARE
  37. }
  38.  
  39. private ArrayList<JButton> figureButtons;
  40.  
  41. private JButton borderColorButton;
  42. private JButton figureColorButton;
  43. private JButton deleteFigureButton;
  44.  
  45. private Color curBorderColor = new Color(236, 103, 81);
  46. private Color curFigureColor = new Color(10, 100, 100);
  47.  
  48. private JPanel figuresPanel;
  49.  
  50. ArrayList<Point> clickedPoints;
  51.  
  52. FigureMotionAdapter motionAdapter;
  53. FigureMouseAdapter mouseAdapter;
  54.  
  55. // constructors
  56.  
  57. public DrawingPane() {
  58. // figuresPanel
  59. initToolsPanelButtons();
  60. initFiguresPanel();
  61. initAdapters();
  62.  
  63. //
  64. setPreferredSize(new Dimension(WINDOW_WIDTH, WINDOW_HEIGHT));
  65. setLayout(null);
  66. setVisible(true);
  67.  
  68.  
  69. figureButtons.get(FigureType.OVAL.ordinal()).addActionListener(
  70. new ActionListener() {
  71. @Override
  72. public void actionPerformed(ActionEvent e) {
  73. if (clickedPoints != null) {
  74. Figure oval =
  75. new Oval(
  76. clickedPoints.get(0), clickedPoints.get(1), curBorderColor, curFigureColor);
  77. add(oval);
  78. oval.display();
  79. oval.addMouseListener(mouseAdapter);
  80. oval.addMouseMotionListener(motionAdapter);
  81. repaint();
  82. clickedPoints = null;
  83. } else {
  84. clickedPoints = new ArrayList<>();
  85. }
  86. }
  87. });
  88.  
  89. figureButtons.get(FigureType.CIRCLE.ordinal()).addActionListener(
  90. new ActionListener() {
  91. @Override
  92. public void actionPerformed(ActionEvent e) {
  93. if (clickedPoints != null) {
  94. Figure circle =
  95. new Circle(
  96. clickedPoints.get(0), clickedPoints.get(1), curBorderColor, curFigureColor);
  97. add(circle);
  98. circle.display();
  99. circle.addMouseListener(mouseAdapter);
  100. circle.addMouseMotionListener(motionAdapter);
  101. repaint();
  102. clickedPoints = null;
  103. } else {
  104. clickedPoints = new ArrayList<>();
  105. }
  106. }
  107. });
  108.  
  109. figureButtons.get(FigureType.RECTANGLE.ordinal()).addActionListener(
  110. new ActionListener() {
  111. @Override
  112. public void actionPerformed(ActionEvent e) {
  113. if (clickedPoints != null) {
  114. Figure rectangle =
  115. new Rectangle(
  116. clickedPoints.get(0), clickedPoints.get(1), curBorderColor, curFigureColor);
  117. add(rectangle);
  118. rectangle.display();
  119. rectangle.addMouseListener(mouseAdapter);
  120. rectangle.addMouseMotionListener(motionAdapter);
  121. repaint();
  122. clickedPoints = null;
  123. } else {
  124. clickedPoints = new ArrayList<>();
  125. }
  126. }
  127. });
  128.  
  129. figureButtons.get(FigureType.RHOMBUS.ordinal()).addActionListener(
  130. new ActionListener() {
  131. @Override
  132. public void actionPerformed(ActionEvent e) {
  133. if (clickedPoints != null) {
  134. Figure rhombus =
  135. new Rhombus(
  136. clickedPoints.get(0), clickedPoints.get(1), curBorderColor, curFigureColor);
  137. add(rhombus);
  138. rhombus.display();
  139. rhombus.addMouseListener(mouseAdapter);
  140. rhombus.addMouseMotionListener(motionAdapter);
  141. repaint();
  142. clickedPoints = null;
  143. } else {
  144. clickedPoints = new ArrayList<>();
  145. }
  146. }
  147. });
  148.  
  149. figureButtons.get(FigureType.POLYGON.ordinal()).addActionListener(
  150. new ActionListener() {
  151. @Override
  152. public void actionPerformed(ActionEvent event) {
  153. JButton button=(JButton)event.getSource();
  154. if (clickedPoints != null) {
  155. ArrayList<Point> rectPoints = FigureUtils.getСircumscribedRectPoints(clickedPoints);
  156. Figure polygon =
  157. new Polygon(
  158. rectPoints.get(0),
  159. rectPoints.get(1),
  160. clickedPoints,
  161. curBorderColor,
  162. curFigureColor);
  163. add(polygon);
  164. polygon.display();
  165. polygon.addMouseListener(mouseAdapter);
  166. polygon.addMouseMotionListener(motionAdapter);
  167. repaint();
  168. clickedPoints = null;
  169. button.setForeground(Color.BLACK);
  170. } else {
  171. clickedPoints = new ArrayList<>();
  172. button.setForeground(Color.RED);
  173. }
  174. }
  175. });
  176.  
  177. borderColorButton.addActionListener(
  178. new ActionListener() {
  179. @Override
  180. public void actionPerformed(ActionEvent e) {
  181. curBorderColor = JColorChooser.showDialog(null, "Choose border color", curBorderColor);
  182. borderColorButton.setForeground(curBorderColor);
  183. }
  184. });
  185. figureColorButton.addActionListener(
  186. new ActionListener() {
  187. @Override
  188. public void actionPerformed(ActionEvent e) {
  189. curFigureColor = JColorChooser.showDialog(null, "Choose figure color", curFigureColor);
  190. figureColorButton.setForeground(curFigureColor);
  191. }
  192. });
  193. addMouseListener(
  194. new MouseAdapter() {
  195. @Override
  196. public void mousePressed(MouseEvent e) {
  197. if (clickedPoints != null) {
  198. clickedPoints.add(new Point(e.getX(), e.getY()));
  199. }
  200. }
  201. });
  202. }
  203.  
  204. private void initAdapters() {
  205. motionAdapter=new FigureMotionAdapter();
  206. mouseAdapter=new FigureMouseAdapter(this);
  207. }
  208.  
  209. public void initFiguresPanel() {
  210. figureButtons=new ArrayList<>();
  211. figuresPanel = new JPanel(new GridLayout(FIGURES_PANEL_ROWS_NUM, FIGURES_PANEL_COLS_NUM));
  212. JButton figureButton;
  213. for(FigureType figureType : FigureType.values()){
  214. figureButton=new JButton(figureType.name());
  215. figuresPanel.add(figureButton);
  216. figureButtons.add(figureButton);
  217. }
  218.  
  219. figuresPanel.add(deleteFigureButton);
  220. figuresPanel.add(borderColorButton);
  221. figuresPanel.add(figureColorButton);
  222.  
  223. figuresPanel.setBackground(new Color(10, 10, 10));
  224. figuresPanel.setBounds(0, 0, WINDOW_WIDTH / 5, WINDOW_HEIGHT);
  225. add(figuresPanel);
  226. }
  227.  
  228. private void initToolsPanelButtons() {
  229. borderColorButton = new JButton("Border");
  230. figureColorButton = new JButton("Figure");
  231. deleteFigureButton = new JButton("Delete");
  232.  
  233. borderColorButton.setForeground(curBorderColor);
  234. figureColorButton.setForeground(curFigureColor);
  235. }
  236. }
Advertisement
Add Comment
Please, Sign In to add comment