596: def sort(item)
597: if current = selection.selected
598: if current.type == 'Array'
599: parent = current.parent
600: ary = Editor.model2data(current)
601: order, reverse = ask_for_order
602: order or return
603: begin
604: block = eval "lambda { |x| #{order} }"
605: if reverse
606: ary.sort! { |a,b| block[b] <=> block[a] }
607: else
608: ary.sort! { |a,b| block[a] <=> block[b] }
609: end
610: rescue => e
611: Editor.error_dialog(self, "Failed to sort Array with #{order}: #{e}!")
612: else
613: Editor.data2model(ary, model, parent) do |m|
614: m.insert_before(parent, current)
615: end
616: model.remove(current)
617: expand_collapse(parent)
618: window.change
619: toplevel.display_status("Array has been sorted.")
620: end
621: else
622: toplevel.display_status("Only Array nodes can be sorted!")
623: end
624: else
625: toplevel.display_status("Select an Array to sort first!")
626: end
627: end