/////////////////////////////////////////////////////////////////////////////
// Name:        contrib/samples/ogl/ogledit/view.h
// Purpose:     View-related classes
// Author:      Julian Smart
// Modified by:
// Created:     12/07/98
// RCS-ID:      $Id: view.h 37440 2006-02-10 11:59:52Z ABX $
// Copyright:   (c) Julian Smart
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _OGLSAMPLE_VIEW_H_
#define _OGLSAMPLE_VIEW_H_

#include "doc.h"
#include "wx/ogl/ogl.h"

class MyCanvas: public wxShapeCanvas
{
// DECLARE_DYNAMIC_CLASS(wxShapeCanvas)
 protected:
 public:
  wxView *view;

  MyCanvas(wxView *view, wxWindow *parent = NULL, wxWindowID id = wxID_ANY,
            const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
            long style = wxRETAINED);
  ~MyCanvas(void);

  void OnMouseEvent(wxMouseEvent& event);
  void OnPaint(wxPaintEvent& event);

  virtual void OnLeftClick(double x, double y, int keys = 0);
  virtual void OnRightClick(double x, double y, int keys = 0);

  virtual void OnDragLeft(bool draw, double x, double y, int keys=0); // Erase if draw false
  virtual void OnBeginDragLeft(double x, double y, int keys=0);
  virtual void OnEndDragLeft(double x, double y, int keys=0);

  virtual void OnDragRight(bool draw, double x, double y, int keys=0); // Erase if draw false
  virtual void OnBeginDragRight(double x, double y, int keys=0);
  virtual void OnEndDragRight(double x, double y, int keys=0);

DECLARE_EVENT_TABLE()
};

class DiagramView: public wxView
{
  DECLARE_DYNAMIC_CLASS(DiagramView)
 private:
 public:
  wxFrame *frame;
  MyCanvas *canvas;

  DiagramView(void) { canvas = NULL; frame = NULL; };
  ~DiagramView(void) {};

  bool OnCreate(wxDocument *doc, long flags);
  void OnDraw(wxDC *dc);
  void OnUpdate(wxView *sender, wxObject *hint = NULL);
  bool OnClose(bool deleteWindow = true);

  wxShape *FindSelectedShape(void);

  void OnCut(wxCommandEvent& event);
  void OnChangeBackgroundColour(wxCommandEvent& event);
  void OnEditLabel(wxCommandEvent& event);

DECLARE_EVENT_TABLE()
};

#endif
    // _OGLSAMPLE_VIEW_H_
