I’ve done something similar, but only with a table.
I guess you can imagine your steps as a row (which probably are).
My table had data property bonded to SQL query:
SELECT id, sifra, folderid, sort_order, op, par1/1000.0 as par1, par2/1000.0 as par2, speed as speed, options, modifiedby, t_stamp, 0 "delete" FROM sifre_krivljenje_koraki
WHERE sifra = '{ignitionomg/izbranaSifra}'
ORDER BY sort_order
I had a column named sort_order (for you would be a step number) and I’ve changed only that value. On the table side, I had two buttons for UP and DOWN and in the buttons actionPerformed I have:
table = event.source.parent.getComponent('PowerTable')
selected_sort_order = table.data.getValueAt(table.selectedRow,"sort_order")
#UP
res = system.db.runPrepUpdate("UPDATE sifre_krivljenje_koraki SET sort_order = 2 * ? - sort_order - 1 WHERE sort_order IN (?, ?)", [selected_sort_order, selected_sort_order - 1, selected_sort_order])
system.db.refresh(table, "data")
table.selectedRow = table.selectedRow - 1
table = event.source.parent.getComponent('PowerTable')
selected_sort_order = table.data.getValueAt(table.selectedRow,"sort_order")
#DOWN
res = system.db.runPrepUpdate("UPDATE sifre_krivljenje_koraki SET sort_order = 2 * ? - sort_order + 1 WHERE sort_order IN (?, ?)", [selected_sort_order, selected_sort_order, selected_sort_order +1])
system.db.refresh(table, "data")
table.selectedRow = table.selectedRow + 1
I guess you can put the code for UP and DOWN buttons (with some modifications) inside your drag&drop events…