J'aimerais pouvoir réorganiser une liste dans une list box, idéalement par glisser-déposer (ce qui semble impossible) ou bien avec des boutons. Je recherche du JSL pour les boutons haut et bas.
L'objectif principal est d'obtenir tous les fichiers d'un répertoire et de les diviser en deux listes basées sur les extensions de fichiers. Affichez les deux listes à l'utilisateur, permettez-lui de réorganiser les fichiers afin que les paires correspondent. Appuyez sur Ok pour obtenir les listes de noms de fichiers des 2 zones de liste et exécutez le code dessus par paires. J'ai juste besoin d'aide pour réorganiser les listes dans les zones de liste.
Voici une version très rapide pour les boutons (modifiée à partir de Column Quick Swapper - modifiez facilement plusieurs colonnes des axes Y et X dans Graph Builder )
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")),
)
)
);
Je pense que vous pouvez faire du glisser-déposer à l'aide de Mouse Box, mais je préfère les boutons dans JMP (beaucoup plus faciles à créer)