add navigation to getCollapsibleItemList

This commit is contained in:
OMGeeky
2025-06-01 22:51:15 +02:00
parent 355bb2bc54
commit cf8c0497bc
4 changed files with 44 additions and 24 deletions

View File

@@ -243,6 +243,7 @@ public class DialogueEditor extends JSONElementEditor {
Dialogue.Reward::new,
cellRendererRewards,
titleRewards,
(x)->null,
false
).collapsiblePanel;
if (dialogue.rewards == null || dialogue.rewards.isEmpty()) {
@@ -355,8 +356,9 @@ public class DialogueEditor extends JSONElementEditor {
dialogue.writable,
Dialogue.Reply::new,
cellRendererReplies,
titleReplies
, true
titleReplies,
(x)->null,
true
).collapsiblePanel;
if (dialogue.replies == null || dialogue.replies.isEmpty()) {
replies.collapse();
@@ -706,6 +708,7 @@ public class DialogueEditor extends JSONElementEditor {
Requirement::new,
cellRendererRequirements,
titleRequirements,
(x)-> x.required_obj,
false
);
CollapsiblePanel requirementsPane = itemsPane.collapsiblePanel;

View File

@@ -73,6 +73,7 @@ public class DroplistEditor extends JSONElementEditor {
DroppedItem::new,
new DroppedItemsCellRenderer(),
"Items in this droplist: ",
(x)-> x.item,
false
).collapsiblePanel;
if (droplist.dropped_items == null || droplist.dropped_items.isEmpty()) {

View File

@@ -0,0 +1,5 @@
package com.gpl.rpg.atcontentstudio.utils;
public interface BasicLambdaWithArgAndReturn<T, R> {
public R doIt(T arg);
}

View File

@@ -29,6 +29,7 @@ public class UiUtils {
Supplier<E> tempSupplier,
DefaultListCellRenderer cellRenderer,
String title,
BasicLambdaWithArgAndReturn<E, GameDataElement> getReferencedObj,
boolean withMoveButtons) {
CollapsiblePanel itemsPane = new CollapsiblePanel(title);
itemsPane.setLayout(new JideBoxLayout(itemsPane, JideBoxLayout.PAGE_AXIS));
@@ -109,28 +110,8 @@ public class UiUtils {
listButtonsPane.add(new JPanel(), JideBoxLayout.VARY);
itemsPane.add(listButtonsPane, JideBoxLayout.FIX);
}
//TODO: add double click to navigate to the item in the editor pane.
// TODO: figure out what ID is needed here
// itemsList.addMouseListener(new MouseAdapter() {
// @Override
// public void mouseClicked(MouseEvent e) {
// if (e.getClickCount() == 2) {
// if (itemsList.getSelectedValue() != null && ((E)itemsList.getSelectedValue()).required_obj != null) {
// ATContentStudio.frame.openEditor(((E)itemsList.getSelectedValue()).required_obj);
// ATContentStudio.frame.selectInTree(((E)itemsList.getSelectedValue()).required_obj);
// }
// }
// }
// });
// itemsList.addKeyListener(new KeyAdapter() {
// @Override
// public void keyReleased(KeyEvent e) {
// if (e.getKeyCode() == KeyEvent.VK_ENTER) {
// ATContentStudio.frame.openEditor(((E)itemsList.getSelectedValue()).required_obj);
// ATContentStudio.frame.selectInTree(((E)itemsList.getSelectedValue()).required_obj);
// }
// }
// });
addNavigationListeners(getReferencedObj, itemsList);
editorPane.setLayout(new JideBoxLayout(editorPane, JideBoxLayout.PAGE_AXIS));
itemsPane.add(editorPane, JideBoxLayout.FIX);
@@ -142,4 +123,34 @@ public class UiUtils {
};
}
private static <E> void addNavigationListeners(BasicLambdaWithArgAndReturn<E, GameDataElement> getReferencedObj, JList<E> itemsList) {
// Add listeners to the list for double-click and Enter key to open the editor
itemsList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
E selectedValue = itemsList.getSelectedValue();
if (selectedValue == null) return;
GameDataElement referencedObj = getReferencedObj.doIt(selectedValue);
if (referencedObj != null) {
ATContentStudio.frame.openEditor(referencedObj);
ATContentStudio.frame.selectInTree( referencedObj);
}
}
}
});
itemsList.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
E selectedValue = itemsList.getSelectedValue();
if (selectedValue == null) return;
GameDataElement referencedObj = getReferencedObj.doIt(selectedValue);
ATContentStudio.frame.openEditor(referencedObj);
ATContentStudio.frame.selectInTree(referencedObj);
}
}
});
}
}