![JAR search and dependency download from the Maven repository](/logo.png)
com.github.athi.athifx.gui.menu.Menu Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of athi-fx-gui Show documentation
Show all versions of athi-fx-gui Show documentation
AthiFX project for creating JavaFX simple application GUI.
The newest version!
package com.github.athi.athifx.gui.menu;
import com.github.athi.athifx.gui.configuration.AthiFXApplicationProperties;
import com.github.athi.athifx.gui.menu.group.AMenuGroup;
import com.github.athi.athifx.gui.menu.group.Group;
import com.github.athi.athifx.gui.menu.item.AMenuItem;
import com.github.athi.athifx.gui.menu.item.DisableEnableAMenuItemEvent;
import com.github.athi.athifx.gui.menu.item.Item;
import com.github.athi.athifx.gui.navigation.navigator.Navigator;
import com.github.athi.athifx.gui.notification.Notification;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.layout.VBox;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.github.athi.athifx.gui.configuration.ApplicationConfiguration.CANT_FIND_VIEW_MESSAGE;
import static com.github.athi.athifx.gui.configuration.ApplicationConfiguration.VIEW_DOES_NOT_EXIST_MESSAGE;
/**
* Created by Athi
*/
public class Menu extends VBox {
@Inject
private AthiFXApplicationProperties properties;
@Inject
private Navigator navigator;
private boolean hasItems = false;
@PostConstruct
private void initMenu() {
setPrefWidth(200);
setPadding(Insets.EMPTY);
List- items = properties.getItems();
List
groups = properties.getGroups()
.stream()
.sorted((g1, g2) -> Long.compare(g1.id(), g2.id()))
.collect(Collectors.toList());
hasItems = items.stream().anyMatch(item -> Objects.nonNull(item.group()));
if (hasItems) {
for (Group group : groups) {
List groupItems = items.stream()
.filter(item -> item.group() == group)
.sorted((i1, i2) -> Long.compare(i1.id(), i2.id()))
.map(item -> new AMenuItem(item, navigator))
.collect(Collectors.toList());
if (!groupItems.isEmpty()) {
getChildren().add(new AMenuGroup(group, groupItems));
}
}
}
}
@Subscribe
public void onDisableEnableAMenuItemEvent(DisableEnableAMenuItemEvent event) {
try {
String itemId = event.getItem().itemId();
Node lookupNode = this.lookup("#" + itemId);
lookupNode.setDisable(!lookupNode.isDisabled());
} catch (Exception e) {
Notification.error(VIEW_DOES_NOT_EXIST_MESSAGE, CANT_FIND_VIEW_MESSAGE + event.getItem().caption());
}
}
public boolean hasItems() {
return hasItems;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy