Skip to content

Commit

Permalink
workerTree: Re-collapse nodes after a drop.
Browse files Browse the repository at this point in the history
  • Loading branch information
kingjon3377 committed Oct 18, 2020
1 parent 478d0da commit b2f572f
Showing 1 changed file with 11 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ shared JTree&UnitMemberSelectionSource&UnitSelectionSource workerTree(
["Wis", WorkerStats.wisdom],
["Cha", WorkerStats.charisma]];

class WorkerTreeTransferHandler(TreeSelectionModel selectionModel)
extends TransferHandler() {
class WorkerTreeTransferHandler(TreeSelectionModel selectionModel, Boolean(TreePath) isExpanded,
Anything(TreePath) collapsePath) extends TransferHandler() {
"Unit members can only be moved, not copied or linked."
shared actual Integer getSourceActions(JComponent component) =>
TransferHandler.move;
Expand Down Expand Up @@ -181,13 +181,16 @@ shared JTree&UnitMemberSelectionSource&UnitSelectionSource workerTree(
exists pathLast = path.lastPathComponent) {
Object tempTarget;
Object local = wtModel.getModelObject(pathLast);
TreePath targetPath;
if (is UnitMember local) {
TreePath pathParent = path.parentPath;
tempTarget = wtModel.getModelObject(pathParent.lastPathComponent);
targetPath = path.parentPath;
tempTarget = wtModel.getModelObject(targetPath.lastPathComponent);
} else {
targetPath = path;
tempTarget = local;
}
Transferable trans = support.transferable;
Boolean shouldBeExpanded = isExpanded(targetPath);
try {
if (is IUnit tempTarget,
trans.isDataFlavorSupported(
Expand All @@ -197,6 +200,9 @@ shared JTree&UnitMemberSelectionSource&UnitSelectionSource workerTree(
for ([member, unit] in list) {
wtModel.moveMember(member, unit, tempTarget);
}
if (!shouldBeExpanded) {
collapsePath(targetPath);
}
return true;
} else if (is String tempTarget,
trans.isDataFlavorSupported(UnitTransferable.flavor)) {
Expand Down Expand Up @@ -409,7 +415,7 @@ shared JTree&UnitMemberSelectionSource&UnitSelectionSource workerTree(
showsRootHandles = true;
dropMode = DropMode.on;

transferHandler = WorkerTreeTransferHandler(selectionModel);
transferHandler = WorkerTreeTransferHandler(selectionModel, (TreePath p) => isExpanded(p), collapsePath);

cellRenderer = unitMemberCellRenderer;

Expand Down

0 comments on commit b2f572f

Please sign in to comment.