Sha256: a1280192b66a385741d1ca675aee515faaebeb1ea38c9d277ccb3308ac959ccf

Contents?: true

Size: 1.41 KB

Versions: 10

Compression:

Stored size: 1.41 KB

Contents

module Clevic
  # keeps a list of names => results mappings
  # and returns
  class ConfirmDialog
    def initialize
      @names = []
      @results = []
      yield self if block_given?
    end

    attr_accessor :names, :results, :question, :title, :dialog_result, :parent

    def to_java( arg )
      @options.keys.to_java( arg )
    end

    def canonical_results
      @canonical_results ||= [:accept, :reject]
    end

    # To create a an Ok button that has the focus, and causes
    # the class to return true from accepted?
    #  dialog['Ok'] = :accept, true
    #
    # To create a Cancel button that returns true from rejected?
    #  dialog['Cancel'] = :reject
    def []=( name, *args )
      result, default = *args.flatten
      raise "Result is not in #{@canonical_results.inspect}" unless canonical_results.include?( result.to_sym )
      names << name.to_s
      results << result.to_sym
      @default = name.to_s if default
    end

    def accepted?
      results[dialog_result] == :accept
    end

    def rejected?
      results[dialog_result] == :reject
    end

    def show
      self.dialog_result = javax.swing.JOptionPane.showOptionDialog(
        parent,
        question,
        title,
        javax.swing.JOptionPane::DEFAULT_OPTION,
        javax.swing.JOptionPane::QUESTION_MESSAGE,
        nil, # icon. Not used here
        names.to_java( :object ),
        @default
      )
      self
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
clevic-0.14.6 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.5 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.4 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.3 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.2 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.1 lib/clevic/swing/confirm_dialog.rb
clevic-0.14.0 lib/clevic/swing/confirm_dialog.rb
clevic-0.13.0.b12 lib/clevic/swing/confirm_dialog.rb
clevic-0.13.0.b11 lib/clevic/swing/confirm_dialog.rb
clevic-0.13.0.b10 lib/clevic/swing/confirm_dialog.rb