SHARE
TWEET

Pikaso_with_offset

sixshoot95 Jan 12th, 2017 76 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package geometrija;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Cursor;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7.  
  8. import javax.swing.JComponent;
  9. import javax.swing.RepaintManager;
  10.  
  11. import java.awt.event.MouseAdapter;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.event.MouseMotionAdapter;
  15. import java.awt.image.renderable.RenderContext;
  16. import java.util.ArrayList;
  17. import java.util.Iterator;
  18. import javax.swing.GroupLayout;
  19. import javax.swing.GroupLayout.Alignment;
  20. import javax.swing.JLabel;
  21.  
  22. public class CrtezBoss extends JComponent {
  23.     int x;
  24.     int y;
  25.     int xPoz, yPoz;
  26.     int xEnd, xStart;
  27.     int yEnd, yStart;
  28.     int flag = 0;
  29.     int temp;
  30.     int pozicijaSelektovanog;
  31.  
  32.     int tX, tY;
  33.     int rX, rY;
  34.     boolean stanjeDrag = false;
  35.  
  36.     public ArrayList<Oblik> lista = new ArrayList<Oblik>();
  37.  
  38.     public ArrayList<Oblik> listaUndo = new ArrayList<Oblik>();
  39.  
  40.     public ArrayList<Oblik> selektovani = new ArrayList<>();
  41.     private Oblik b;
  42.  
  43.     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  44.  
  45.     public static void main(String[] args) {
  46.  
  47.     }
  48.  
  49.     public CrtezBoss() {
  50.  
  51.         GroupLayout groupLayout = new GroupLayout(this);
  52.         groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGap(0, 450, Short.MAX_VALUE));
  53.         groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.TRAILING).addGap(0, 300, Short.MAX_VALUE));
  54.         setLayout(groupLayout);
  55.  
  56.         // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  57.         addMouseListener(new MouseAdapter() {
  58.  
  59.             @Override
  60.             public void mousePressed(MouseEvent e) {
  61.                 stanjeDrag = false;
  62.  
  63.                 tX = e.getX();
  64.                 tY = e.getY();
  65.  
  66.                 if (Aplikacija.staRadim == CrtOpcija.DEFAULT) {
  67.                 }
  68.                 if (Aplikacija.staRadim == CrtOpcija.TACKA) {
  69.                     lista.add(new Tacka(e.getX(), e.getY(), Aplikacija.getBojaRama()));
  70.                 }
  71.                 else if (Aplikacija.staRadim == CrtOpcija.LINIJA) {
  72.                     if (flag == 0) {
  73.                         xStart = e.getX();
  74.                         yStart = e.getY();
  75.                         flag = 1;
  76.                     } else {
  77.                         lista.add(new Linija(new Tacka(xStart, yStart), new Tacka(e.getX(), e.getY()),
  78.                                 Aplikacija.getBojaRama()));
  79.                         flag = 0;
  80.                     }
  81.                 }
  82.                 else if (Aplikacija.staRadim == CrtOpcija.KVADRAT) {
  83.                     DialKvadrat d1 = new DialKvadrat();
  84.                     d1.setVisible(true);
  85.                     if (DialKvadrat.isDaLiCrtati()) {
  86.                         Kvadrat kv1 = new Kvadrat(new Tacka(e.getX(), e.getY()), DialKvadrat.getDuzinaStranice(),
  87.                                 Aplikacija.getBojaRama());
  88.                         kv1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  89.                         lista.add(kv1);
  90.                     }
  91.                 }
  92.                 else if (Aplikacija.staRadim == CrtOpcija.PRAVOUGAONIK) {
  93.                     DialPravougaonik d2 = new DialPravougaonik();
  94.                     d2.setVisible(true);
  95.                     if (DialPravougaonik.isDaLiCrtati()) {
  96.                         Pravougaonik pr1 = new Pravougaonik(new Tacka(e.getX(), e.getY()),
  97.                                 DialPravougaonik.getDuzinaStranice(), DialPravougaonik.getVisina(),
  98.                                 Aplikacija.getBojaRama());
  99.                         pr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  100.                         lista.add(pr1);
  101.                     }
  102.  
  103.                 }
  104.                 else if (Aplikacija.staRadim == CrtOpcija.KRUG) {
  105.                     DialKrug d3 = new DialKrug();
  106.                     d3.setVisible(true);
  107.                     if (DialKrug.isDaLiCrtati()) {
  108.                         Krug kr1 = new Krug(new Tacka(e.getX(), e.getY()), DialKrug.getPoluprecnik(),
  109.                                 Aplikacija.getBojaRama());
  110.                         kr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  111.                         lista.add(kr1);
  112.                     }
  113.  
  114.                 }
  115.                 else if (Aplikacija.staRadim == CrtOpcija.SELEKTUJ) {
  116.  
  117.                     selektovanje(e.getX(), e.getY());
  118.                 }
  119.                 else if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
  120.                     selektovanje(e.getX(), e.getY());
  121.                     modifikacija();
  122.                 }
  123.  
  124.             }
  125.  
  126.         });
  127.  
  128.         addMouseMotionListener(new MouseMotionAdapter() {
  129.  
  130.             public void mouseDragged(MouseEvent e) {
  131.                 if (Aplikacija.staRadim == CrtOpcija.POMERI) {
  132.  
  133.                     if (!selektovani.isEmpty()) {
  134.                         b = selektovani.get(0);
  135.                         // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  136.                         if (b instanceof Kvadrat) {
  137.                             // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  138.                             ((Kvadrat) b).pomeriNa(e.getX() - ((Kvadrat) b).getDuzinaStranice() / 2,
  139.                                     e.getY() - ((Kvadrat) b).getDuzinaStranice() / 2);
  140.                         } else if (b instanceof Krug) {
  141.                             // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  142.                             ((Krug) b).pomeriNa(e.getX(), e.getY());
  143.                         } else if (b instanceof Pravougaonik) {
  144.                             // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  145.                             ((Pravougaonik) b).pomeriNa(e.getX() - ((Pravougaonik) b).getDuzinaStranice() / 2,
  146.                                     e.getY() - ((Pravougaonik) b).getVisina());
  147.                         } else if (b instanceof Linija) {
  148.                             // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  149.                             ((Linija) b).pomeriNa(e.getX(), e.getY());
  150.                         } else if (b instanceof Tacka) {
  151.                             // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  152.                             ((Tacka) b).pomeriNa(e.getX(), e.getY());
  153.                         }
  154.                     }
  155.                 } else if (Aplikacija.staRadim == CrtOpcija.DRGKVADRAT) {
  156.  
  157.                     Kvadrat kvd = new Kvadrat(new Tacka(tX, tY), Math.abs(Math.max(tX - e.getX(), tY - e.getY())),
  158.                             Aplikacija.getBojaRama());
  159.                     kvd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  160.  
  161.                     if (!lista.isEmpty()) {
  162.                         if (stanjeDrag == true) {
  163.                             lista.remove(lista.size() - 1);
  164.                         } else {
  165.                             stanjeDrag = true;
  166.                         }
  167.  
  168.                     }
  169.                     lista.add(kvd);
  170.  
  171.                 }
  172.  
  173.                 else if (Aplikacija.staRadim == CrtOpcija.DRGPRAVOUGAONIK) {
  174.  
  175.                     Pravougaonik pd = new Pravougaonik(new Tacka(tX, tY), Math.abs(tX - e.getX()),
  176.                             Math.abs(tY - e.getY()), Aplikacija.getBojaRama());
  177.                     pd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  178.  
  179.                     if (!lista.isEmpty()) {
  180.                         if (stanjeDrag == true) {
  181.                             lista.remove(lista.size() - 1);
  182.                         } else {
  183.                             stanjeDrag = true;
  184.                         }
  185.  
  186.                     }
  187.                     lista.add(pd);
  188.                 } else if (Aplikacija.staRadim == CrtOpcija.DRGKRUG) {
  189.  
  190.                     Krug kgd = new Krug(new Tacka(tX, tY), Math.min(Math.abs(tX - e.getX()), Math.abs(tY - e.getY())),
  191.                             Aplikacija.getBojaRama());
  192.                     kgd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  193.  
  194.                     if (!lista.isEmpty()) {
  195.                         if (stanjeDrag == true) {
  196.                             lista.remove(lista.size() - 1);
  197.                         } else {
  198.                             stanjeDrag = true;
  199.                         }
  200.  
  201.                     }
  202.                     lista.add(kgd);
  203.                 }
  204.  
  205.             }
  206.         });
  207.  
  208.         // repaint
  209.     }
  210.  
  211.     public void paintComponent(Graphics g) {
  212.  
  213.         if (Aplikacija.staRadim == CrtOpcija.OBRISI_SVE) {
  214.             g.clearRect(0, 0, getWidth(), getHeight());
  215.             lista.clear();
  216.             Aplikacija.staRadim = CrtOpcija.DEFAULT;
  217.         }
  218.        
  219. //      if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
  220. //          modifikacija();
  221. //      }
  222. //     
  223.         if (Aplikacija.staRadim == CrtOpcija.UNDO) {
  224.             if (!lista.isEmpty()) {
  225.                 listaUndo.add(lista.get(lista.size() - 1));
  226.                 lista.remove(lista.size() - 1);
  227.             }
  228.             Aplikacija.staRadim = CrtOpcija.DEFAULT;
  229.         }
  230.         if (Aplikacija.staRadim == CrtOpcija.REDO) {
  231.             if (!listaUndo.isEmpty()) {
  232.                 lista.add(listaUndo.get(listaUndo.size() - 1));
  233.                 listaUndo.remove(listaUndo.size() - 1);
  234.             }
  235.  
  236.             Aplikacija.staRadim = CrtOpcija.DEFAULT;
  237.         }
  238.         if (Aplikacija.staRadim == CrtOpcija.OBRISI) {
  239.             if (!selektovani.isEmpty()) {
  240.                 lista.forEach((a) -> {
  241.                     if (a.isSelektovan()) {
  242.                         temp = lista.indexOf(a);
  243.                     }
  244.                 });
  245.  
  246.                 lista.remove(lista.get(temp));
  247.                 selektovani.clear();
  248.  
  249.                 Aplikacija.staRadim = CrtOpcija.DEFAULT;
  250.             }
  251.         }
  252.  
  253.  
  254.  
  255.         lista.forEach((a) -> {
  256.             a.popuni(g);
  257.             a.crtajSe(g);
  258.         });
  259.         getRootPane().validate();
  260.         getRootPane().repaint();
  261.  
  262.     }
  263.  
  264.     public void selektovanje(int x, int y) {
  265.  
  266.         selektovani.clear();
  267.  
  268.         lista.forEach((a) -> {
  269.             a.setSelektovan(false);
  270.             if (a.sadrzi(x, y))
  271.                 selektovani.add(a);
  272.         });
  273.  
  274.         if (!selektovani.isEmpty()) {
  275.             selektovani.get(selektovani.size() - 1).setSelektovan(true);
  276.         }
  277.  
  278.     }
  279.    
  280.     public void modifikacija(){
  281.         if (!selektovani.isEmpty()) {
  282.             lista.forEach((a) -> {
  283.                 if (a.isSelektovan()) {
  284.                     b = a;
  285.                     pozicijaSelektovanog = lista.indexOf(a);
  286.                 }
  287.             });
  288.  
  289.             if (b instanceof Kvadrat) {
  290.                 DialKvadrat d1 = new DialKvadrat();
  291.                 d1.setVisible(true);
  292.                 if (DialKvadrat.isDaLiCrtati()) {
  293.                     ((Kvadrat) b).setDuzinaStranice(DialKvadrat.getDuzinaStranice());
  294.                     ((Kvadrat) b).setBoja(Aplikacija.getBojaRama());
  295.                     ((Kvadrat) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  296.                     lista.set(pozicijaSelektovanog, b);
  297.                 }
  298.             } else if (b instanceof Pravougaonik) {
  299.                 DialPravougaonik d1 = new DialPravougaonik();
  300.                 d1.setVisible(true);
  301.                 if (DialPravougaonik.isDaLiCrtati()) {
  302.                     ((Pravougaonik) b).setDuzinaStranice(DialPravougaonik.getDuzinaStranice());
  303.                     ((Pravougaonik) b).setVisina(DialPravougaonik.getVisina());
  304.                     ((Pravougaonik) b).setBoja(Aplikacija.getBojaRama());
  305.                     ((Pravougaonik) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  306.                     lista.set(pozicijaSelektovanog,b);
  307.                 }
  308.             } else if (b instanceof Krug) {
  309.                 DialKrug d1 = new DialKrug();
  310.                 d1.setVisible(true);
  311.                 if (DialKrug.isDaLiCrtati()) {
  312.                     ((Krug) b).setR(DialKrug.getPoluprecnik());
  313.                     ((Krug) b).setBoja(Aplikacija.getBojaRama());
  314.                     ((Krug) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  315.                     lista.set(pozicijaSelektovanog, b);
  316.                 }
  317.             }
  318.         }
  319.         Aplikacija.staRadim = CrtOpcija.DEFAULT;
  320.     }
  321.  
  322. }
RAW Paste Data
Top