이상적으로는 끌어서 놓기(불가능해 보임) 또는 버튼을 사용하여 목록 상자에서 목록을 재정렬할 수 있기를 원합니다. 위쪽 및 아래쪽 버튼에 대해 JSL을 찾고 있습니다.
더 큰 목표는 디렉터리의 모든 파일을 가져와서 파일 확장자에 따라 두 개의 목록으로 나누는 것입니다. 두 목록을 사용자에게 표시하고 쌍이 일치하도록 파일 순서를 다시 지정할 수 있도록 합니다. 확인을 눌러 2개의 목록 상자에서 파일 이름 목록을 가져오고 쌍으로 코드를 실행하세요. 목록 상자의 목록을 재정렬하는 데 도움이 필요합니다.
다음은 매우 빠른 버튼 버전입니다( Column Quick Swapper에서 수정됨 - Graph Builder에서 여러 Y 및 X축 열을 쉽게 변경 ).
Names Default To Here(1);
move_items = function({lb_ref, direction}, {Default Local},
all_items = lb_ref << Get Items;
sel_items = lb_ref << Get Selected;
If(direction == "Swap",
item_order = Transform Each({sel_item}, sel_items,
Contains(all_items, sel_item)
);
new_order = all_items;
new_order[item_order] = Reverse(sel_items);
,
start_idx = Contains(all_items, sel_items[1]); // set based first found item
new_list = Filter Each({cur_item}, all_items, !Contains(sel_items, cur_item));
new_idx = If(direction == "Up",
start_idx - 1;
, direction == "Down",
start_idx + 1
,
start_idx
);
new_order = Insert(new_list, sel_items, new_idx);
);
lb_ref << Set Items(new_order);
all_items = lb_ref << Get Items;
For Each({cur_item}, sel_items,
new_idx = Contains(all_items, cur_item);
lb_ref << Set Selected(new_idx, 1, Run Script(0));
);
);
nw = New Window("Example",
H List Box(
lb_ref = List Box(
{"First Item", "Second Item", "Third Item"},
width(200),
max selected(2),
nlines(6)
),
Lineup Box(N Col(1),
btn_up = Button Box("", move_items(lb_ref, "Up"), << Set Icon("ListItemUp"), << Set Tip("Move selection up")),
btn_down = Button Box("", move_items(lb_ref, "Down"), << Set Icon("ListItemDown"), << Set Tip("Move selection down")),
)
)
);
마우스 상자를 사용하여 드래그 앤 드롭을 할 수 있다고 생각하지만 JMP의 버튼을 선호합니다(만들기가 훨씬 더 쉽습니다).