package form import "github.com/df-mc/dragonfly/server/world" // Submittable is a structure which may be submitted by sending it as a form using form.New(). When filled out // and submitted, the struct will have its Submit method called and its fields will have the values that the // Submitter passed filled out. // The fields of a Submittable struct must be either unexported or have a type of one of those that implement // the form.Element interface. type Submittable interface { // Submit is called when the Submitter submits the form sent to it. Once this method is called, all fields // in the struct will have their values filled out as filled out by the Submitter. Submit(submitter Submitter, tx *world.Tx) } // MenuSubmittable is a structure which may be submitted by sending it as a form using form.NewMenu(), much // like a Submittable. The struct will have its Submit method called with the button pressed. // A struct that implements the MenuSubmittable interface must only have exported fields with the type // form.Button. type MenuSubmittable interface { // Submit is called when the Submitter submits the menu form sent to it. The method is called with the // button that was pressed. It may be compared with buttons in the MenuSubmittable struct to check which // button was pressed. Submit(submitter Submitter, pressed Button, tx *world.Tx) } // ModalSubmittable is a structure which may be submitted by sending it as a form using form.NewModal(), much // like a Submittable and a MenuSubmittable. The struct will have its Submit method called with the button // pressed. // A struct that implements the ModalSubmittable interface must have exactly two exported fields with the type // form.Button, which may be used to specify the text of the Modal form's buttons. Unlike with a Menu form, // buttons on a Modal form will not have images. type ModalSubmittable MenuSubmittable // Closer represents a form which has special logic when being closed by a Submitter. type Closer interface { // Close is called when the Submitter closes a form. Close(submitter Submitter, tx *world.Tx) } // Submitter is an entity that is able to submit a form sent to it. It is able to fill out fields in the form // which will then be present when handled. The Submitter is also able to close the form. type Submitter interface { SendForm(form Form) CloseForm() }