|
@@ -0,0 +1,78 @@
|
|
|
+package ui.view.main;
|
|
|
+
|
|
|
+import java.awt.Color;
|
|
|
+import java.awt.Dimension;
|
|
|
+import java.awt.Graphics;
|
|
|
+import java.awt.Graphics2D;
|
|
|
+import java.awt.RenderingHints;
|
|
|
+
|
|
|
+import javax.swing.JLabel;
|
|
|
+import javax.swing.JPanel;
|
|
|
+import javax.swing.JScrollPane;
|
|
|
+
|
|
|
+import classes.Vector2d;
|
|
|
+
|
|
|
+public class HolonCanvas extends JScrollPane {
|
|
|
+
|
|
|
+ Canvas canvas = new Canvas();
|
|
|
+ private Vector2d pos1 = new Vector2d(100, 100);
|
|
|
+ private Vector2d pos2 = new Vector2d(200, 100);
|
|
|
+
|
|
|
+ private int width = 1000;
|
|
|
+ private int minWidth = 100;
|
|
|
+ private int maxWidth = 4000;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public HolonCanvas() {
|
|
|
+ canvas.setPreferredSize(new Dimension(1000,1000));
|
|
|
+ this.removeMouseWheelListener(this.getMouseWheelListeners()[0]);
|
|
|
+ this.addMouseWheelListener(scroll -> {
|
|
|
+ int scrollValue = -scroll.getWheelRotation() * scroll.getScrollAmount();
|
|
|
+ //clamp value
|
|
|
+ width = Math.max(Math.min(4000, width + 50 * scrollValue), 100);
|
|
|
+ canvas.setPreferredSize(new Dimension(width, width));
|
|
|
+ canvas.revalidate();
|
|
|
+ this.repaint();
|
|
|
+
|
|
|
+ });
|
|
|
+ this.setViewportView(canvas);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void exampleBuildings() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private class Canvas extends JPanel{
|
|
|
+ Canvas(){
|
|
|
+ setBackground(Color.white);
|
|
|
+ add(new JLabel("HolonCanvas"));
|
|
|
+ }
|
|
|
+ public void paintComponent(Graphics g) {
|
|
|
+ super.paintComponent(g);
|
|
|
+ System.out.println("paintComponent");
|
|
|
+ Graphics2D g2d = (Graphics2D) g;
|
|
|
+ g2d.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING,
|
|
|
+ RenderingHints.VALUE_ANTIALIAS_ON));
|
|
|
+ g2d.setColor(Color.blue);
|
|
|
+ double scale = ScaleValue();
|
|
|
+ g2d.fillRect((int)(pos1.getX() * scale), (int)(pos1.getY() * scale), (int) (50 * scale), (int)(50 * scale));
|
|
|
+ g2d.fillRect((int)(pos2.getX() * scale), (int)(pos2.getY() * scale), (int) (50 * scale), (int)(50 * scale));
|
|
|
+ g2d.drawRect(0, 0, this.getPreferredSize().width, this.getPreferredSize().height);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public double ScaleValue(){
|
|
|
+ return width / 1000.0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|