import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import java.io.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import org.w3c.dom.*; public class XMLJoonis3 extends Frame implements ActionListener, MouseListener, MouseMotionListener{ Button nupp = new Button("Lae"); Button salvesta=new Button("Salvesta"); Button tryki = new Button("Trüki"); Button kustuta=new Button("Kustuta"); String failinimi="joonistusandmed.xml"; Choice kujundivalik=new Choice(); Choice tegevusevalik=new Choice(); Document d; Node juur, kujund, valitudKujund; MouseEvent vajutusKoht; public XMLJoonis3(){ setLayout(new FlowLayout()); add(nupp); add(salvesta); add(tryki); add(kustuta); add(kujundivalik); add(tegevusevalik); nupp.addActionListener(this); salvesta.addActionListener(this); tryki.addActionListener(this); kustuta.addActionListener(this); addMouseListener(this); addMouseMotionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent evt){ System.exit(0); } }); kujundivalik.add("Joon"); kujundivalik.add("Ristkülik"); tegevusevalik.add("Joonista"); tegevusevalik.add("Nihuta"); alusta(); setSize(400,300); setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource()==nupp){ try{ d=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(failinimi); juur=(Element)d.getFirstChild(); repaint(); } catch(Exception viga){System.out.println("Probleem lugemisel: "+viga); } } if(e.getSource()==salvesta){ try{ Transformer t=TransformerFactory.newInstance().newTransformer(); FileOutputStream valja=new FileOutputStream(failinimi); t.transform(new DOMSource(d), new StreamResult(valja)); valja.close(); } catch(Exception viga){ viga.printStackTrace(); } } if(e.getSource()==tryki){System.out.println(d.getFirstChild());} if(e.getSource()==kustuta){alusta();} } public int[] kysiKoordinaadid(Node punkt){ int x=Integer.parseInt(((Element)punkt).getElementsByTagName("x"). item(0).getTextContent()); int y=Integer.parseInt(((Element)punkt).getElementsByTagName("y"). item(0).getTextContent()); return new int[]{x, y}; } public boolean kasTabatiJoon(Node joon, int x, int y){ boolean vastus=false; NodeList punktid=((Element)joon).getElementsByTagName("punkt"); for(int i=1; ix2){ int abi=x1; x1=x2; x2=abi; } if(y1>y2){ int abi=y1; y1=y2; y2=abi; } g.drawRect(x1, y1, x2-x1, y2-y1); } } public void mousePressed(MouseEvent e) { if(tegevusevalik.getSelectedIndex()==0){ if(kujundivalik.getSelectedIndex()==0){ kujund=d.createElement("joon"); } if(kujundivalik.getSelectedIndex()==1){ kujund=d.createElement("ristkylik"); } juur.appendChild(kujund); lisaPunkt(e.getX(), e.getY()); } if(tegevusevalik.getSelectedIndex()==1){ valitudKujund=otsiKujund(e.getX(), e.getY()); vajutusKoht=e; System.out.println(valitudKujund); } } public void mouseDragged(MouseEvent e){ if(tegevusevalik.getSelectedIndex()==0){ if(kujundivalik.getSelectedIndex()==0){ lisaPunkt(e.getX(), e.getY()); } } } public void mouseReleased(MouseEvent e) { if(tegevusevalik.getSelectedIndex()==0){ if(kujundivalik.getSelectedIndex()==1){ lisaPunkt(e.getX(), e.getY()); } } if(tegevusevalik.getSelectedIndex()==1){ if(valitudKujund!=null){ int dx=e.getX()-vajutusKoht.getX(); int dy=e.getY()-vajutusKoht.getY(); NodeList xid=((Element)valitudKujund).getElementsByTagName("x"); NodeList yid=((Element)valitudKujund).getElementsByTagName("y"); for(int i=0; i