use of gaiasky.interafce.BookmarksManager.BookmarkNode in project gaiasky by langurmonkey.
the class BookmarksComponent method genSubtree.
private void genSubtree(TreeNode parent, BookmarkNode bookmark) {
if (bookmark.children != null && !bookmark.children.isEmpty()) {
for (BookmarkNode child : bookmark.children) {
TreeNode tn = new TreeNode(child, skin);
if (child.folder)
tn.setIcon(folderIcon);
else
tn.setIcon(bookmarkIcon);
parent.add(tn);
genSubtree(tn, child);
}
}
}
use of gaiasky.interafce.BookmarksManager.BookmarkNode in project gaiasky by langurmonkey.
the class BookmarksComponent method initialize.
@Override
public void initialize() {
float contentWidth = ControlsWindow.getContentWidth();
searchBox = new OwnTextField("", skin);
searchBox.setName("search box");
searchBox.setWidth(contentWidth);
searchBox.setMessageText(I18n.txt("gui.objects.search"));
searchBox.addListener(event -> {
if (event instanceof InputEvent) {
InputEvent ie = (InputEvent) event;
if (ie.getType() == Type.keyUp && !searchBox.getText().isEmpty()) {
String text = searchBox.getText().toLowerCase().trim();
if (sg.containsNode(text)) {
SceneGraphNode node = sg.getNode(text);
if (node instanceof IFocus) {
IFocus focus = (IFocus) node;
boolean timeOverflow = focus.isCoordinatesTimeOverflow();
boolean ctOn = GaiaSky.instance.isOn(focus.getCt());
if (!timeOverflow && ctOn) {
GaiaSky.postRunnable(() -> {
EventManager.publish(Event.CAMERA_MODE_CMD, searchBox, CameraMode.FOCUS_MODE, true);
EventManager.publish(Event.FOCUS_CHANGE_CMD, searchBox, focus, true);
});
} else if (timeOverflow) {
info(I18n.txt("gui.objects.search.timerange.1", text), I18n.txt("gui.objects.search.timerange.2"));
} else {
info(I18n.txt("gui.objects.search.invisible.1", text), I18n.txt("gui.objects.search.invisible.2", focus.getCt().toString()));
}
}
} else {
info(null, null);
}
if (GaiaSky.instance.getICamera() instanceof NaturalCamera)
((NaturalCamera) GaiaSky.instance.getICamera()).getCurrentMouseKbdListener().removePressedKey(ie.getKeyCode());
if (ie.getKeyCode() == Keys.ESCAPE) {
// Lose focus
stage.setKeyboardFocus(null);
}
} else if (ie.getType() == Type.keyDown) {
if (ie.getKeyCode() == Keys.CONTROL_LEFT || ie.getKeyCode() == Keys.CONTROL_RIGHT) {
// Lose focus
stage.setKeyboardFocus(null);
}
}
return true;
}
return false;
});
// Info message
infoTable = new Table(skin);
infoCell1 = infoTable.add();
infoTable.row();
infoCell2 = infoTable.add();
infoMessage1 = new OwnLabel("", skin, "default-blue");
infoMessage2 = new OwnLabel("", skin, "default-blue");
/*
* OBJECTS
*/
bookmarksTree = new Tree<>(skin);
bookmarksTree.setName("bookmarks tree");
reloadBookmarksTree();
bookmarksTree.addListener(event -> {
if (events)
if (event instanceof ChangeEvent) {
ChangeEvent ce = (ChangeEvent) event;
Actor actor = ce.getTarget();
TreeNode selected = (TreeNode) ((Tree) actor).getSelectedNode();
if (selected != null && !selected.hasChildren()) {
String name = selected.getValue();
if (sg.containsNode(name)) {
SceneGraphNode node = sg.getNode(name);
if (node instanceof IFocus) {
IFocus focus = (IFocus) node;
boolean timeOverflow = focus.isCoordinatesTimeOverflow();
boolean ctOn = GaiaSky.instance.isOn(focus.getCt());
if (!timeOverflow && ctOn) {
GaiaSky.postRunnable(() -> {
EventManager.publish(Event.CAMERA_MODE_CMD, bookmarksTree, CameraMode.FOCUS_MODE, true);
EventManager.publish(Event.FOCUS_CHANGE_CMD, bookmarksTree, focus, true);
});
info(null, null);
} else if (timeOverflow) {
info(I18n.txt("gui.objects.search.timerange.1", name), I18n.txt("gui.objects.search.timerange.2"));
} else {
info(I18n.txt("gui.objects.search.invisible.1", name), I18n.txt("gui.objects.search.invisible.2", focus.getCt().toString()));
}
}
} else {
info(null, null);
}
}
return true;
} else if (event instanceof InputEvent) {
InputEvent ie = (InputEvent) event;
ie.toCoordinates(event.getListenerActor(), tmpCoords);
if (ie.getType() == Type.touchDown && ie.getButton() == Input.Buttons.RIGHT) {
TreeNode target = bookmarksTree.getNodeAt(tmpCoords.y);
// Context menu!
if (target != null) {
// selectBookmark(target.getValue(), true);
GaiaSky.postRunnable(() -> {
ContextMenu cm = new ContextMenu(skin, "default");
// New folder...
BookmarkNode parent = target.node.getFirstFolderAncestor();
String parentName = "/" + (parent == null ? "" : parent.path.toString());
MenuItem newDirectory = new MenuItem(I18n.txt("gui.bookmark.context.newfolder", parentName), skin);
newDirectory.addListener(evt -> {
if (evt instanceof ChangeEvent) {
NewBookmarkFolderDialog newBookmarkFolderDialog = new NewBookmarkFolderDialog(parent != null ? parent.path.toString() : "/", skin, stage);
newBookmarkFolderDialog.setAcceptRunnable(() -> {
String folderName = newBookmarkFolderDialog.input.getText();
EventManager.publish(Event.BOOKMARKS_ADD, newDirectory, parent != null ? parent.path.resolve(folderName).toString() : folderName, true);
reloadBookmarksTree();
});
newBookmarkFolderDialog.show(stage);
return true;
}
return false;
});
cm.addItem(newDirectory);
// Delete
MenuItem delete = new MenuItem(I18n.txt("gui.bookmark.context.delete", target.getValue()), skin);
delete.addListener(evt -> {
if (evt instanceof ChangeEvent) {
EventManager.publish(Event.BOOKMARKS_REMOVE, delete, target.node.path.toString());
reloadBookmarksTree();
return true;
}
return false;
});
cm.addItem(delete);
cm.addSeparator();
// Move up and down
MenuItem moveUp = new MenuItem(I18n.txt("gui.bookmark.context.move.up"), skin);
moveUp.addListener(evt -> {
if (evt instanceof ChangeEvent) {
EventManager.publish(Event.BOOKMARKS_MOVE_UP, moveUp, target.node);
reloadBookmarksTree();
return true;
}
return false;
});
cm.addItem(moveUp);
MenuItem moveDown = new MenuItem(I18n.txt("gui.bookmark.context.move.down"), skin);
moveDown.addListener(evt -> {
if (evt instanceof ChangeEvent) {
EventManager.publish(Event.BOOKMARKS_MOVE_DOWN, moveDown, target.node);
reloadBookmarksTree();
return true;
}
return false;
});
cm.addItem(moveDown);
// Move to...
if (target.node.parent != null) {
MenuItem move = new MenuItem(I18n.txt("gui.bookmark.context.move", target.getValue(), "/"), skin);
move.addListener(evt -> {
if (evt instanceof ChangeEvent) {
EventManager.publish(Event.BOOKMARKS_MOVE, move, target.node, null);
reloadBookmarksTree();
return true;
}
return false;
});
cm.addItem(move);
}
List<BookmarkNode> folders = GaiaSky.instance.getBookmarksManager().getFolders();
for (BookmarkNode folder : folders) {
if (!target.node.isDescendantOf(folder)) {
MenuItem mv = new MenuItem(I18n.txt("gui.bookmark.context.move", target.getValue(), "/" + folder.path.toString()), skin);
mv.addListener(evt -> {
if (evt instanceof ChangeEvent) {
EventManager.publish(Event.BOOKMARKS_MOVE, mv, target.node, folder);
reloadBookmarksTree();
return true;
}
return false;
});
cm.addItem(mv);
}
}
newMenu(cm);
cm.showMenu(stage, Gdx.input.getX(ie.getPointer()) / Settings.settings.program.ui.scale, stage.getHeight() - Gdx.input.getY(ie.getPointer()) / Settings.settings.program.ui.scale);
});
} else {
// New folder
GaiaSky.postRunnable(() -> {
ContextMenu cm = new ContextMenu(skin, "default");
// New folder...
String parentName = "/";
MenuItem newDirectory = new MenuItem(I18n.txt("gui.bookmark.context.newfolder", parentName), skin);
newDirectory.addListener(evt -> {
if (evt instanceof ChangeEvent) {
NewBookmarkFolderDialog nbfd = new NewBookmarkFolderDialog("/", skin, stage);
nbfd.setAcceptRunnable(() -> {
String folderName = nbfd.input.getText();
EventManager.publish(Event.BOOKMARKS_ADD, newDirectory, folderName, true);
reloadBookmarksTree();
});
nbfd.show(stage);
return true;
}
return false;
});
cm.addItem(newDirectory);
newMenu(cm);
cm.showMenu(stage, Gdx.input.getX(ie.getPointer()), Gdx.graphics.getHeight() - Gdx.input.getY(ie.getPointer()));
});
}
}
event.setBubbles(false);
return true;
}
return false;
});
bookmarksScrollPane = new OwnScrollPane(bookmarksTree, skin, "minimalist-nobg");
bookmarksScrollPane.setName("bookmarks scroll");
bookmarksScrollPane.setFadeScrollBars(false);
bookmarksScrollPane.setScrollingDisabled(true, false);
bookmarksScrollPane.setHeight(160f);
bookmarksScrollPane.setWidth(contentWidth);
/*
* ADD TO CONTENT
*/
VerticalGroup objectsGroup = new VerticalGroup().align(Align.left).columnAlign(Align.left).space(pad12);
objectsGroup.addActor(searchBox);
if (bookmarksScrollPane != null) {
objectsGroup.addActor(bookmarksScrollPane);
}
objectsGroup.addActor(infoTable);
component = objectsGroup;
}
use of gaiasky.interafce.BookmarksManager.BookmarkNode in project gaiasky by langurmonkey.
the class BookmarksComponent method reloadBookmarksTree.
public void reloadBookmarksTree() {
java.util.List<BookmarkNode> bookmarks = GaiaSky.instance.getBookmarksManager().getBookmarks();
bookmarksTree.clearChildren();
for (BookmarkNode bookmark : bookmarks) {
TreeNode node = new TreeNode(bookmark, skin);
if (bookmark.folder)
node.setIcon(folderIcon);
else
node.setIcon(bookmarkIcon);
bookmarksTree.add(node);
genSubtree(node, bookmark);
}
bookmarksTree.pack();
}
Aggregations