package demo.view;

import java.awt.EventQueue;
import java.awt.event.MouseEvent;

import y.view.EditMode;

/**
 * Shows how to add focus support to EditMode. This demo uses a customized
 * EditMode that blocks the delegation of mouse events in case the graph view
 * has no focus. Additionally, it will grab the focus upon releasing the mouse on the view. 
 */
public class FocusDemo extends ViewActionDemo {
  public FocusDemo() {}

  protected EditMode createEditMode() {
    EditMode mode = new EditMode() {
      public void mousePressed(MouseEvent ev) {
        if (view.hasFocus() || view.getCanvasComponent().hasFocus()) {
          super.mousePressed(ev);
        }
      }

      public void mouseDragged(MouseEvent ev) {
        if (view.hasFocus() || view.getCanvasComponent().hasFocus()) {
          super.mouseDragged(ev);
        }
      }

      public void mouseReleased(MouseEvent ev) {
        if (view.getCanvasComponent().hasFocus()) {
          super.mouseReleased(ev);
        }
        else {
          view.getCanvasComponent().requestFocus();
        }
      }
    };
    return mode;
  }
  
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        initLnF();
        new FocusDemo().start("Focus Demo");
      }
    });
  }
}

    

      
