gemini-browser

A text-based gemini browser
git clone git://git.laack.co/gemini-browser.git
Log | Files | Refs | README

event.go (1553B)


      1 // Copyright 2015 The TCell Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use file except in compliance with the License.
      5 // You may obtain a copy of the license at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package tcell
     16 
     17 import (
     18 	"time"
     19 )
     20 
     21 // Event is a generic interface used for passing around Events.
     22 // Concrete types follow.
     23 type Event interface {
     24 	// When reports the time when the event was generated.
     25 	When() time.Time
     26 }
     27 
     28 // EventTime is a simple base event class, suitable for easy reuse.
     29 // It can be used to deliver actual timer events as well.
     30 type EventTime struct {
     31 	when time.Time
     32 }
     33 
     34 // When returns the time stamp when the event occurred.
     35 func (e *EventTime) When() time.Time {
     36 	return e.when
     37 }
     38 
     39 // SetEventTime sets the time of occurrence for the event.
     40 func (e *EventTime) SetEventTime(t time.Time) {
     41 	e.when = t
     42 }
     43 
     44 // SetEventNow sets the time of occurrence for the event to the current time.
     45 func (e *EventTime) SetEventNow() {
     46 	e.SetEventTime(time.Now())
     47 }
     48 
     49 // EventHandler is anything that handles events.  If the handler has
     50 // consumed the event, it should return true.  False otherwise.
     51 type EventHandler interface {
     52 	HandleEvent(Event) bool
     53 }