
package tmcm.xComputer;
import java.awt.*;


class ScrollMemoryView extends Panel {

   
   boolean visible;
   
   int currentStyle;
   
   Scrollbar bar;
   MemoryScrollCanvas canvas;
   
   ScrollMemoryView() {
      canvas = new MemoryScrollCanvas(this);
      bar = new Scrollbar();
      setLayout(new BorderLayout());
      add("Center",canvas);
      add("East",bar);
   }   
   
   
   void reset(short[] newData) {
      System.arraycopy(newData,0,canvas.data,0,1024);
      canvas.redrawOSC();
      if (visible)
         canvas.repaint();
   }
   
   void setScrollPos(int scrollTo) {
      canvas.setStart(scrollTo);
      if (visible) {
         Graphics g = canvas.getGraphics();
         canvas.paint(g);
         g.dispose();
      }
      bar.setValue(scrollTo);
   }
   
   void setViewStyle(int style) {
      canvas.currentStyle = style;
      canvas.redrawOSC();
      if (visible)
         canvas.repaint();
   }
   
   void set(int location, short data,int flashCount) {
       canvas.set(location,data,visible,flashCount);
   }
   
   public boolean handleEvent(Event evt) {
      if (evt.id == Event.SCROLL_LINE_DOWN || evt.id == Event.SCROLL_LINE_UP || 
          evt.id == Event.SCROLL_PAGE_DOWN || evt.id == Event.SCROLL_PAGE_UP || 
          evt.id == Event.SCROLL_ABSOLUTE) {
         int val = bar.getValue();
         if (val > 1023) {
            val = 1023;
            bar.setValue(val);
         }
         else if (val < 0) {
            val = 0;
            bar.setValue(0);
         }
         canvas.setStart(val);
         if (visible)
            canvas.repaint();
         return true;
      }
      return super.handleEvent(evt);
   }
      
}  // end of class ScrollMemoryView



