import java.awt.*; import java.awt.event.*; class AmCanvas extends Canvas{ AmCanvas(){// konstruktor setBackground(AmDefault.backgroundColor); setForeground(AmDefault.foregroundColor); addMouseListener(new AmMouseListener(this)); addKeyListener(new AmKeyListener()); }//konstruktor static Point start = AmDefault.start; public void paint(Graphics g){// lo~uendile joonistamine // joon ymber louendi: int canvh = Am.canvas.getSize().height; int canvw = Am.canvas.getSize().width; g.setColor(Color.green); g.drawRect(0, 0 , canvw-1, canvh-1); if(Am.s != null){ // kui (planeeritud) skeem on olemas, siis joonistada: Am.s.view.draw(g, Am.s); } else{ // kui skeemi pole, siis tyhjendada louend: g.setColor(AmDefault.backgroundColor); g.fillRect(0, 0 , canvw-1, canvh-1); // lo~uendi tyhjendamine toimib vaate vahetamisel } // kuna joonistamine toimub alati ka pearaami muutmisel, // siis on siin paras koht kerimisribade (ymber)seadmiseks // vertikaalne: int vis_am = 100; if (canvh < Am.s.view.height){// kui joonis ei mahu lo~uendile vis_am = (int)( ((float)canvh/(float)Am.s.view.height)*100); } Am.sbv.setVisibleAmount(vis_am); // horisontaalne: vis_am = 100; if (canvw < Am.s.view.width){// kui joonis ei mahu lo~uendile vis_am = (int)( ((float)canvw/(float)Am.s.view.width)*100); } Am.sbh.setVisibleAmount(vis_am); Am.caret.draw(g); }//paint }//AmCanvas // lo~uendiga seotud kuularid: class AmKeyListener implements KeyListener{ //AmKeyListener(){} public void keyPressed(KeyEvent event){ switch(event.getKeyCode()){ case KeyEvent.VK_LEFT: Am.caret.moveLeft(); break; case KeyEvent.VK_RIGHT: Am.caret.moveRight(); break; case KeyEvent.VK_DOWN: Am.caret.moveDown(); break; case KeyEvent.VK_UP: Am.caret.moveUp(); break; case KeyEvent.VK_PAGE_DOWN: break; case KeyEvent.VK_PAGE_UP: break; } }//keyPressed public void keyReleased(KeyEvent event){ }//keyReleased public void keyTyped(KeyEvent event){ char c = event.getKeyChar(); System.out.println("typed:"+c+"."); int xxx = (int)c; System.out.println("int c = "+xxx); if((int)c == KeyEvent.CHAR_UNDEFINED) System.out.println("pole char"); if(c == 0)System.out.println("pole char"); else System.out.println("on char"); if((int)c == 127){ // || (int)c == 8) // delete-klahv backspace-klahv if(Am.selected != null){// sama mis menyyst Delete AmEdit.deleteSketch(Am.selected); Am.cancelSelection(); if(Am.s != null) Am.s.view.plan(Am.s, Am.startx, Am.starty); Am.canvas.repaint(); } } else{ // on symbol AmEdit.insertCharAtCaretRight(c); int oldh = Am.s.view.height; Am.s.view.plan(Am.s, Am.startx, Am.starty); if (oldh == Am.s.view.height){ // ei muutunud Am.caret.row.repaintFromCaret(); // ainult rida //skeemikommentaari korral veel lopukommentaar if(Am.s.view instanceof AmView1 && Am.caret.parentHead == null && Am.caret.parentPrimitive == null){ //veel loppu: // !!! vaatest so~ltuv !!! AmSketch s = Am.caret.parent; Am.canvas.repaint( s.comment.x, s.comment.y + s.view.height- s.comment.height/4, s.comment.width, s.comment.height ); } } else // kogu skeem alates sellest reast Am.canvas.repaint(Am.s.view.x, Am.caret.row.y, Am.s.view.width, Am.s.view.height - (Am.caret.row.y-Am.s.view.y) ); }//else on symbol }//keyTyped }//AmKeyListener class AmMouseListener implements MouseListener{ AmCanvas c; AmMouseListener(AmCanvas cc){c = cc;} public void mousePressed(MouseEvent e){ System.out.println("MousePressedEvent:"+e); } public void mouseReleased(MouseEvent e){ } public void mouseEntered(MouseEvent e){ System.out.println("MouseEnteredEvent:"+e); } public void mouseExited(MouseEvent e){ System.out.println("MouseExitedEvent:"+e); } public void mouseClicked(MouseEvent e){ // hiireklo~psu koht: Point p = new Point(e.getX(), e.getY()); System.out.println("MouseClickedEvent:"+e); if(Am.selected != null){// vana valik maha Am.selected.view.unpaintSelection(); Am.cancelSelection(); } // leida skeem, millel hiirt klo~psati: AmView.finish = false; AmView.result = new AmCaret(); AmSketch sk = Am.s.view.pointLocation(p, Am.s); if(sk != null){// valida klo~psatud skeem Am.setSelection(sk); Am.s.view.repaintSelection(); } else if (AmView.result.parent != null){// oli tekstil mingis skeemis Am.caret.unpaint(); Am.caret.parent = AmView.result.parent; Am.caret.row = AmView.result.row; Am.caret.parentText = AmView.result.parentText; Am.caret.parentHead = AmView.result.parentHead; Am.caret.parentPrimitive = AmView.result.parentPrimitive; Am.caret.moveInRowToMouse(p); Am.caret.paint(); } }//mouseClicked }//AmMouseListener