"""
Implementation of a ButtonEditor demo plugin for Traits UI demo program.

This demo shows each of the two styles of the ButtonEditor.
(As of this writing, they are identical.)
"""

from __future__ import absolute_import
from traits.api import HasTraits, Button
from traitsui.api import Item, View, Group
from traitsui.message import message


#-------------------------------------------------------------------------
#  Demo Class
#-------------------------------------------------------------------------

class ButtonEditorDemo(HasTraits):
    """ This class specifies the details of the ButtonEditor demo.
    """

    # To demonstrate any given Trait editor, an appropriate Trait is required.
    fire_event = Button('Click Me')

    def _fire_event_fired():
        message("Button clicked!")

    # ButtonEditor display
    # (Note that Text and ReadOnly versions are not applicable)
    event_group = Group(Item('fire_event', style='simple', label='Simple'),
                        Item('_'),
                        Item('fire_event', style='custom', label='Custom'),
                        Item('_'),
                        Item(label='[text style unavailable]'),
                        Item('_'),
                        Item(label='[read only style unavailable]'))

    # Demo view
    view1 = View(event_group,
                 title='ButtonEditor',
                 buttons=['OK'],
                 width=250)


# Create the demo:
popup = ButtonEditorDemo()

# Run the demo (if invoked from the command line):
if __name__ == '__main__':
    popup.configure_traits()
