Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package geometrija;
- import java.awt.Color;
- import java.awt.Cursor;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import javax.swing.JComponent;
- import javax.swing.RepaintManager;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionAdapter;
- import java.awt.image.renderable.RenderContext;
- import java.util.ArrayList;
- import java.util.Iterator;
- import javax.swing.GroupLayout;
- import javax.swing.GroupLayout.Alignment;
- import javax.swing.JLabel;
- public class CrtezBoss extends JComponent {
- int x;
- int y;
- int xPoz, yPoz;
- int xEnd, xStart;
- int yEnd, yStart;
- int flag = 0;
- int temp;
- int pozicijaSelektovanog;
- int tX, tY;
- int rX, rY;
- boolean stanjeDrag = false;
- public ArrayList<Oblik> lista = new ArrayList<Oblik>();
- public ArrayList<Oblik> listaUndo = new ArrayList<Oblik>();
- public ArrayList<Oblik> selektovani = new ArrayList<>();
- private Oblik b;
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public static void main(String[] args) {
- }
- public CrtezBoss() {
- GroupLayout groupLayout = new GroupLayout(this);
- groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGap(0, 450, Short.MAX_VALUE));
- groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.TRAILING).addGap(0, 300, Short.MAX_VALUE));
- setLayout(groupLayout);
- // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- addMouseListener(new MouseAdapter() {
- @Override
- public void mousePressed(MouseEvent e) {
- stanjeDrag = false;
- tX = e.getX();
- tY = e.getY();
- if (Aplikacija.staRadim == CrtOpcija.DEFAULT) {
- }
- if (Aplikacija.staRadim == CrtOpcija.TACKA) {
- lista.add(new Tacka(e.getX(), e.getY(), Aplikacija.getBojaRama()));
- }
- else if (Aplikacija.staRadim == CrtOpcija.LINIJA) {
- if (flag == 0) {
- xStart = e.getX();
- yStart = e.getY();
- flag = 1;
- } else {
- lista.add(new Linija(new Tacka(xStart, yStart), new Tacka(e.getX(), e.getY()),
- Aplikacija.getBojaRama()));
- flag = 0;
- }
- }
- else if (Aplikacija.staRadim == CrtOpcija.KVADRAT) {
- DialKvadrat d1 = new DialKvadrat();
- d1.setVisible(true);
- if (DialKvadrat.isDaLiCrtati()) {
- Kvadrat kv1 = new Kvadrat(new Tacka(e.getX(), e.getY()), DialKvadrat.getDuzinaStranice(),
- Aplikacija.getBojaRama());
- kv1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.add(kv1);
- }
- }
- else if (Aplikacija.staRadim == CrtOpcija.PRAVOUGAONIK) {
- DialPravougaonik d2 = new DialPravougaonik();
- d2.setVisible(true);
- if (DialPravougaonik.isDaLiCrtati()) {
- Pravougaonik pr1 = new Pravougaonik(new Tacka(e.getX(), e.getY()),
- DialPravougaonik.getDuzinaStranice(), DialPravougaonik.getVisina(),
- Aplikacija.getBojaRama());
- pr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.add(pr1);
- }
- }
- else if (Aplikacija.staRadim == CrtOpcija.KRUG) {
- DialKrug d3 = new DialKrug();
- d3.setVisible(true);
- if (DialKrug.isDaLiCrtati()) {
- Krug kr1 = new Krug(new Tacka(e.getX(), e.getY()), DialKrug.getPoluprecnik(),
- Aplikacija.getBojaRama());
- kr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.add(kr1);
- }
- }
- else if (Aplikacija.staRadim == CrtOpcija.SELEKTUJ) {
- selektovanje(e.getX(), e.getY());
- }
- else if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
- selektovanje(e.getX(), e.getY());
- modifikacija();
- }
- }
- });
- addMouseMotionListener(new MouseMotionAdapter() {
- public void mouseDragged(MouseEvent e) {
- if (Aplikacija.staRadim == CrtOpcija.POMERI) {
- if (!selektovani.isEmpty()) {
- b = selektovani.get(0);
- // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- if (b instanceof Kvadrat) {
- // setCursor(new Cursor(Cursor.MOVE_CURSOR));
- ((Kvadrat) b).pomeriNa(e.getX() - ((Kvadrat) b).getDuzinaStranice() / 2,
- e.getY() - ((Kvadrat) b).getDuzinaStranice() / 2);
- } else if (b instanceof Krug) {
- // setCursor(new Cursor(Cursor.MOVE_CURSOR));
- ((Krug) b).pomeriNa(e.getX(), e.getY());
- } else if (b instanceof Pravougaonik) {
- // setCursor(new Cursor(Cursor.MOVE_CURSOR));
- ((Pravougaonik) b).pomeriNa(e.getX() - ((Pravougaonik) b).getDuzinaStranice() / 2,
- e.getY() - ((Pravougaonik) b).getVisina());
- } else if (b instanceof Linija) {
- // setCursor(new Cursor(Cursor.MOVE_CURSOR));
- ((Linija) b).pomeriNa(e.getX(), e.getY());
- } else if (b instanceof Tacka) {
- // setCursor(new Cursor(Cursor.MOVE_CURSOR));
- ((Tacka) b).pomeriNa(e.getX(), e.getY());
- }
- }
- } else if (Aplikacija.staRadim == CrtOpcija.DRGKVADRAT) {
- Kvadrat kvd = new Kvadrat(new Tacka(tX, tY), Math.abs(Math.max(tX - e.getX(), tY - e.getY())),
- Aplikacija.getBojaRama());
- kvd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- if (!lista.isEmpty()) {
- if (stanjeDrag == true) {
- lista.remove(lista.size() - 1);
- } else {
- stanjeDrag = true;
- }
- }
- lista.add(kvd);
- }
- else if (Aplikacija.staRadim == CrtOpcija.DRGPRAVOUGAONIK) {
- Pravougaonik pd = new Pravougaonik(new Tacka(tX, tY), Math.abs(tX - e.getX()),
- Math.abs(tY - e.getY()), Aplikacija.getBojaRama());
- pd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- if (!lista.isEmpty()) {
- if (stanjeDrag == true) {
- lista.remove(lista.size() - 1);
- } else {
- stanjeDrag = true;
- }
- }
- lista.add(pd);
- } else if (Aplikacija.staRadim == CrtOpcija.DRGKRUG) {
- Krug kgd = new Krug(new Tacka(tX, tY), Math.min(Math.abs(tX - e.getX()), Math.abs(tY - e.getY())),
- Aplikacija.getBojaRama());
- kgd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- if (!lista.isEmpty()) {
- if (stanjeDrag == true) {
- lista.remove(lista.size() - 1);
- } else {
- stanjeDrag = true;
- }
- }
- lista.add(kgd);
- }
- }
- });
- // repaint
- }
- public void paintComponent(Graphics g) {
- if (Aplikacija.staRadim == CrtOpcija.OBRISI_SVE) {
- g.clearRect(0, 0, getWidth(), getHeight());
- lista.clear();
- Aplikacija.staRadim = CrtOpcija.DEFAULT;
- }
- // if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
- // modifikacija();
- // }
- //
- if (Aplikacija.staRadim == CrtOpcija.UNDO) {
- if (!lista.isEmpty()) {
- listaUndo.add(lista.get(lista.size() - 1));
- lista.remove(lista.size() - 1);
- }
- Aplikacija.staRadim = CrtOpcija.DEFAULT;
- }
- if (Aplikacija.staRadim == CrtOpcija.REDO) {
- if (!listaUndo.isEmpty()) {
- lista.add(listaUndo.get(listaUndo.size() - 1));
- listaUndo.remove(listaUndo.size() - 1);
- }
- Aplikacija.staRadim = CrtOpcija.DEFAULT;
- }
- if (Aplikacija.staRadim == CrtOpcija.OBRISI) {
- if (!selektovani.isEmpty()) {
- lista.forEach((a) -> {
- if (a.isSelektovan()) {
- temp = lista.indexOf(a);
- }
- });
- lista.remove(lista.get(temp));
- selektovani.clear();
- Aplikacija.staRadim = CrtOpcija.DEFAULT;
- }
- }
- lista.forEach((a) -> {
- a.popuni(g);
- a.crtajSe(g);
- });
- getRootPane().validate();
- getRootPane().repaint();
- }
- public void selektovanje(int x, int y) {
- selektovani.clear();
- lista.forEach((a) -> {
- a.setSelektovan(false);
- if (a.sadrzi(x, y))
- selektovani.add(a);
- });
- if (!selektovani.isEmpty()) {
- selektovani.get(selektovani.size() - 1).setSelektovan(true);
- }
- }
- public void modifikacija(){
- if (!selektovani.isEmpty()) {
- lista.forEach((a) -> {
- if (a.isSelektovan()) {
- b = a;
- pozicijaSelektovanog = lista.indexOf(a);
- }
- });
- if (b instanceof Kvadrat) {
- DialKvadrat d1 = new DialKvadrat();
- d1.setVisible(true);
- if (DialKvadrat.isDaLiCrtati()) {
- ((Kvadrat) b).setDuzinaStranice(DialKvadrat.getDuzinaStranice());
- ((Kvadrat) b).setBoja(Aplikacija.getBojaRama());
- ((Kvadrat) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.set(pozicijaSelektovanog, b);
- }
- } else if (b instanceof Pravougaonik) {
- DialPravougaonik d1 = new DialPravougaonik();
- d1.setVisible(true);
- if (DialPravougaonik.isDaLiCrtati()) {
- ((Pravougaonik) b).setDuzinaStranice(DialPravougaonik.getDuzinaStranice());
- ((Pravougaonik) b).setVisina(DialPravougaonik.getVisina());
- ((Pravougaonik) b).setBoja(Aplikacija.getBojaRama());
- ((Pravougaonik) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.set(pozicijaSelektovanog,b);
- }
- } else if (b instanceof Krug) {
- DialKrug d1 = new DialKrug();
- d1.setVisible(true);
- if (DialKrug.isDaLiCrtati()) {
- ((Krug) b).setR(DialKrug.getPoluprecnik());
- ((Krug) b).setBoja(Aplikacija.getBojaRama());
- ((Krug) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
- lista.set(pozicijaSelektovanog, b);
- }
- }
- }
- Aplikacija.staRadim = CrtOpcija.DEFAULT;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement