use super::{
MouseButton,
KeyboardButton,
Window,
};
use glium::glutin::event::{MouseScrollDelta,ModifiersState};
#[cfg(feature="file_drop")]
use std::path::PathBuf;
pub trait WindowPage<'a>{
type Output;
fn on_window_close_requested(&mut self,window:&mut Window);
#[cfg(not(feature="lazy"))]
fn on_update_requested(&mut self,window:&mut Window);
fn on_redraw_requested(&mut self,window:&Window);
fn on_mouse_pressed(&mut self,window:&mut Window,button:MouseButton);
fn on_mouse_released(&mut self,window:&mut Window,button:MouseButton);
fn on_mouse_scrolled(&mut self,window:&mut Window,scroll:MouseScrollDelta);
fn on_mouse_moved(&mut self,window:&mut Window,position:[f32;2]);
fn on_keyboard_pressed(&mut self,window:&mut Window,button:KeyboardButton);
fn on_keyboard_released(&mut self,window:&mut Window,button:KeyboardButton);
fn on_character_recieved(&mut self,window:&mut Window,character:char);
fn on_window_resized(&mut self,window:&mut Window,new_size:[u32;2]);
fn on_window_moved(&mut self,window:&mut Window,position:[i32;2]);
fn on_window_focused(&mut self,window:&mut Window,focused:bool);
fn on_suspended(&mut self,window:&mut Window);
fn on_resumed(&mut self,window:&mut Window);
fn on_modifiers_changed(&mut self,window:&mut Window,modifiers:ModifiersState);
#[cfg(feature="file_drop")]
fn on_file_dropped(&mut self,window:&mut Window,path:PathBuf);
#[cfg(feature="file_drop")]
fn on_file_hovered(&mut self,window:&mut Window,path:PathBuf);
#[cfg(feature="file_drop")]
fn on_file_hovered_canceled(&mut self,window:&mut Window);
fn on_event_loop_closed(&mut self,window:&mut Window)->Self::Output;
}