use of javafx.scene.control.MenuItem in project jfreechart-fx by jfree.
the class ChartViewer method createContextMenu.
/**
* Creates the context menu.
*
* @return The context menu.
*/
private ContextMenu createContextMenu() {
final ContextMenu menu = new ContextMenu();
menu.setAutoHide(true);
Menu export = new Menu("Export As");
MenuItem pngItem = new MenuItem("PNG...");
pngItem.setOnAction(e -> handleExportToPNG());
export.getItems().add(pngItem);
MenuItem jpegItem = new MenuItem("JPEG...");
jpegItem.setOnAction(e -> handleExportToJPEG());
export.getItems().add(jpegItem);
if (ExportUtils.isOrsonPDFAvailable()) {
MenuItem pdfItem = new MenuItem("PDF...");
pdfItem.setOnAction(e -> handleExportToPDF());
export.getItems().add(pdfItem);
}
if (ExportUtils.isJFreeSVGAvailable()) {
MenuItem svgItem = new MenuItem("SVG...");
svgItem.setOnAction(e -> handleExportToSVG());
export.getItems().add(svgItem);
}
menu.getItems().add(export);
return menu;
}
use of javafx.scene.control.MenuItem in project RichTextFX by FXMisc.
the class ContextMenuTests method start.
@Override
public void start(Stage stage) throws Exception {
super.start(stage);
menu = new ContextMenu(new MenuItem("A menu item"));
area.setContextMenu(menu);
area.setContextMenuXOffset(offset);
area.setContextMenuYOffset(offset);
}
use of javafx.scene.control.MenuItem in project assembly64fx by freabemania.
the class SidifyMainContoller method init.
public void init(Boolean showBackButton) {
if (!playerWindowActive.compareAndSet(false, true)) {
setCancelShow(true);
return;
}
imageCache = CachedImageService.getInstance();
playListService = PlaylistService.getInstance();
downloadService = DownloadArtifactsService.getInstance();
pathService = PathService.getInstance();
sidPlayService = SIDPlayerService.getInstance();
volume.setMin(-50L);
volume.setMax(12);
volume.setValue(sidPlayService.getVolume());
volume.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number oldVal, Number newVal) {
sidPlayService.setVolume(newVal.intValue());
}
});
volume.valueChangingProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean wasChanging, Boolean changing) {
if (!changing) {
sidPlayService.storeVolume();
}
}
});
if (isOffline()) {
enableSearchImage.setVisible(false);
}
performSearchImage.setVisible(false);
searchField.setVisible(false);
setIconPlaying(false);
name.setCellValueFactory(new PropertyValueFactory<PlaylistEntry, String>("nameMasked"));
group.setCellValueFactory(new PropertyValueFactory<PlaylistEntry, String>("groupMasked"));
year.setCellValueFactory(new PropertyValueFactory<PlaylistEntry, String>("year"));
downloaded.setCellValueFactory(new PropertyValueFactory<PlaylistEntry, ImageView>("downloaded"));
status.setCellValueFactory(new PropertyValueFactory<PlaylistEntry, ImageView>("status"));
progressSlider.setMin(0);
progressSlider.setMax(SLIDERMAX);
progressSlider.disableProperty().setValue(Boolean.TRUE);
progressUpdater = new ProgressUpdater(played, remaining, progressSlider, prevSub, nextSub);
status.setMaxWidth(40);
status.setMinWidth(40);
status.setSortable(false);
name.setSortable(false);
group.setSortable(false);
year.setSortable(false);
// songLength.setSortable(false);
downloaded.setSortable(false);
songlist.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
songlist.setPlaceholder(new Label(""));
songlist.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
searchPeriod.setItems(FXCollections.observableArrayList(SEARCH_PERIOD.ALL, SEARCH_PERIOD.ONE_DAY, SEARCH_PERIOD.TWO_DAYS, SEARCH_PERIOD.FOUR_DAYS, SEARCH_PERIOD.ONE_WEEK, SEARCH_PERIOD.TWO_WEEKS, SEARCH_PERIOD.THREE_WEEKS, SEARCH_PERIOD.ONE_MONTH, SEARCH_PERIOD.TWO_MONTHS));
searchPeriod.getSelectionModel().select(0);
searchPeriod.setVisible(false);
if (openedMain || !showBackButton) {
openedMain = true;
backToAssemblyImage.setVisible(false);
}
getStage().getScene().heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
resizeComponentsHeight();
delayedResize();
}
});
getStage().getScene().widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneWidth) {
resizeComponentsWidth();
delayedResize();
}
});
songlist.setRowFactory(tv -> {
TableRow<PlaylistEntry> row = new TableRow<>();
row.setOnDragDetected(event -> {
if (!row.isEmpty() && isPlaylistMine(activePlaylist)) {
Integer index = row.getIndex();
Dragboard db = row.startDragAndDrop(TransferMode.MOVE);
db.setDragView(row.snapshot(null, null));
ClipboardContent cc = new ClipboardContent();
cc.put(SERIALIZED_MIME_TYPE, index);
db.setContent(cc);
event.consume();
}
});
row.setOnDragOver(event -> {
if (!isSearchActive() && isPlaylistMine(activePlaylist)) {
Dragboard db = event.getDragboard();
if (db.hasContent(SERIALIZED_MIME_TYPE)) {
if (row.getIndex() != ((Integer) db.getContent(SERIALIZED_MIME_TYPE)).intValue()) {
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
event.consume();
}
}
}
});
row.setOnDragDropped(event -> {
if (!isSearchActive() && isPlaylistMine(activePlaylist)) {
Dragboard db = event.getDragboard();
if (db.hasContent(SERIALIZED_MIME_TYPE)) {
int draggedIndex = (Integer) db.getContent(SERIALIZED_MIME_TYPE);
PlaylistEntry draggedPerson = songlist.getItems().remove(draggedIndex);
int dropIndex;
if (row.isEmpty()) {
dropIndex = songlist.getItems().size();
} else {
dropIndex = row.getIndex();
}
songlist.getItems().add(dropIndex, draggedPerson);
event.setDropCompleted(true);
clearAndSelect(dropIndex);
Analytics.sendEvent("sidify", "dragndrop_song");
playListService.moveSongInList(playListService.getPlaylistForSong(draggedPerson), draggedIndex, dropIndex);
event.consume();
populateLeftList();
}
}
});
return row;
});
getStage().setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) {
if (GlobalRepoService.getInstance().contains("overridebacktoassembly")) {
closeAndcleanup(true);
} else {
closeAndcleanup(!LocalDBService.getInstance().getSidifyAsDefault());
}
}
});
populateLeftList();
leftlist.setCellFactory(callback -> new ListCell<PlayerItem>() {
@Override
protected void updateItem(PlayerItem t, boolean bln) {
super.updateItem(t, bln);
if (t != null) {
setText(t.getName());
}
}
});
leftlist.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
disableSearch(true, false);
PlayerItem clickedItem = leftlist.getSelectionModel().getSelectedItem();
if (clickedItem.getType() == MENU_TYPE.NONCLICKABLE) {
leftlist.getSelectionModel().clearSelection();
} else if (clickedItem.getType() == MENU_TYPE.PLAYLIST || clickedItem.getType() == MENU_TYPE.PUBLICLIST) {
PlaylistInfo playlist = clickedItem.getPlaylist();
// activePlaylist = playlist;
if ((event.getButton() == MouseButton.SECONDARY || event.isControlDown()) && !isOffline()) {
final ContextMenu contextMenu = new ContextMenu();
if (clickedItem.getType() == MENU_TYPE.PLAYLIST) {
MenuItem tmp = new MenuItem("Delete");
tmp.setOnAction((ActionEvent event2) -> {
playListService.deletePlaylist(playlist);
populateLeftList();
clearSongList();
});
MenuItem rename = new MenuItem("Edit");
rename.setOnAction((ActionEvent event2) -> {
GuiUtils.showDialog("sidifyCreateNewPlaylist.fxml", Boolean.TRUE, "Yada", getStage(), new Object[] { playlist, false });
populateLeftList();
});
contextMenu.getItems().add(tmp);
contextMenu.getItems().add(rename);
leftlist.setContextMenu(contextMenu);
} else {
MenuItem tmp = new MenuItem("Unfollow");
tmp.setOnAction((ActionEvent event2) -> {
playListService.deletePlaylist(playlist);
playListService.resetAndGetPublicPlaylists();
populateLeftList();
});
contextMenu.getItems().add(tmp);
}
MenuItem offline = new MenuItem("Download to offline");
offline.setOnAction((ActionEvent event2) -> {
Analytics.sendEvent("sidify", "download_playlist");
workQueue.offer(playlist);
});
MenuItem info = new MenuItem("Playlistinfo");
info.setOnAction((ActionEvent event2) -> {
GuiUtils.showDialog("sidifyViewPublicPlaylistInfo.fxml", Boolean.TRUE, "Playlistinfo", getStage(), new Object[] { playlist });
});
MenuItem exportLists = new MenuItem("Export playlist");
exportLists.setOnAction((ActionEvent event2) -> {
GuiUtils.showDialog("sidifyExportPlaylist.fxml", Boolean.TRUE, "Playlistinfo", getStage(), new Object[] { playlist });
});
contextMenu.getItems().add(offline);
contextMenu.getItems().add(info);
contextMenu.getItems().add(exportLists);
leftlist.setContextMenu(contextMenu);
} else {
refreshCurrentSongList(playlist);
}
if (event.getClickCount() == 2) {
activePlaylist = playlist;
if (activePlaylist != null) {
List<PlaylistEntry> songsForPlaylist = playListService.getSongsForPlaylist(activePlaylist);
if (songsForPlaylist.size() > 0) {
if (randomSongs.get() == false) {
clearAndSelect(0);
setActiveSongInList(0);
} else {
randomize();
clearAndSelect(getActiveSongInList());
}
startSwitchSongLoopFromScratch();
}
}
songlist.requestFocus();
}
scrollToTop();
populateLeftList();
}
}
});
songlist.setOnKeyTyped(event -> {
if (!isSearchActive()) {
if (event.getCharacter().length() > 0 && event.getCharacter().charAt(0) == Support.ENTER_KEY) {
setBackgroundplaylistState();
setNewSongPlayingState(false);
startSwitchSongLoopFromScratch();
}
}
});
songlist.setOnMousePressed(event -> {
songlist.setContextMenu(null);
List<PlaylistEntry> selectedItems = songlist.getSelectionModel().getSelectedItems();
if (selectedItems == null) {
return;
}
if (isSearchActive()) {
List<List<ContentEntry>> contentEntries = new ArrayList<>();
for (PlaylistEntry playlistEntry : selectedItems) {
ContentEntryInfo entryInfo = SearchService.getInstance().getSearchItems(playlistEntry.getId(), playlistEntry.getCategory());
List<ContentEntry> entries = entryInfo.getContentEntry().stream().filter(item -> item.getName().toLowerCase().endsWith(".sid")).collect(Collectors.toList());
List<ContentEntry> tmp = new ArrayList<>();
tmp.addAll(entries);
contentEntries.add(tmp);
}
boolean addable = !contentEntries.stream().filter(item -> item.size() > 1).findFirst().isPresent();
if (event.getButton() == MouseButton.SECONDARY || event.isControlDown()) {
if (addable) {
final ContextMenu contextMenu = new ContextMenu();
Menu addToPlaylist = new Menu("Add to playlist");
for (PlaylistInfo plist : playListService.getPlaylistInfo()) {
PlaylistMenuItem mItem = new PlaylistMenuItem(plist);
mItem.setOnAction((ActionEvent event2) -> {
PlaylistMenuItem item = (PlaylistMenuItem) event2.getSource();
if (Support.isPlaylistMine(item.getPlaylist())) {
playListService.addSongs(item.getPlaylist(), selectedItems, contentEntries);
songlist.getSelectionModel().clearSelection();
} else {
GenericMessageDialogController.withErrorProps("Sidify", "You can not add song to public lists!").showAndWait();
}
});
addToPlaylist.getItems().add(mItem);
}
MenuItem mItem = new MenuItem("Add to new playlist");
mItem.setOnAction((ActionEvent event2) -> {
SidifyCreatePlaylistController controller = GuiUtils.showDialog("sidifyCreateNewPlaylist.fxml", Boolean.TRUE, "Create new playlist", getStage(), new Object[] { null, false });
PlaylistInfo newPlaylist = controller.getNewlyCreatedPlayList();
if (newPlaylist != null) {
playListService.addSongs(newPlaylist, selectedItems, contentEntries);
songlist.getSelectionModel().clearSelection();
populateLeftList();
}
});
addToPlaylist.getItems().add(mItem);
contextMenu.getItems().add(addToPlaylist);
songlist.setContextMenu(contextMenu);
} else {
// If we have more than one entry and
// want to add all
final ContextMenu contextMenu = new ContextMenu();
long nofSids = contentEntries.stream().collect(Collectors.summarizingInt(item -> item.size())).getSum();
Menu addToPlaylist = new Menu("Add all (" + nofSids + ") songs to playlist");
for (PlaylistInfo plist : playListService.getPlaylistInfo()) {
ContentEntryInfoMenuItem mItem = new ContentEntryInfoMenuItem(plist.getName(), contentEntries);
mItem.setOnAction((ActionEvent event2) -> {
ContentEntryInfoMenuItem item = (ContentEntryInfoMenuItem) event2.getSource();
playListService.addSongs(plist, selectedItems, item.getContentEntries());
songlist.getSelectionModel().clearSelection();
populateLeftList();
});
addToPlaylist.getItems().add(mItem);
}
contextMenu.getItems().add(addToPlaylist);
MenuItem mItem = new MenuItem("Add to new playlist");
mItem.setOnAction((ActionEvent event2) -> {
SidifyCreatePlaylistController controller = GuiUtils.showDialog("sidifyCreateNewPlaylist.fxml", Boolean.TRUE, "Create new playlist", getStage(), new Object[] { null, false });
PlaylistInfo newPlaylist = controller.getNewlyCreatedPlayList();
ContentEntryInfoMenuItem cmItem = new ContentEntryInfoMenuItem(newPlaylist.getName(), contentEntries);
if (newPlaylist != null) {
playListService.addSongs(newPlaylist, selectedItems, cmItem.getContentEntries());
songlist.getSelectionModel().clearSelection();
populateLeftList();
}
});
addToPlaylist.getItems().add(mItem);
songlist.setContextMenu(contextMenu);
}
} else {
if (event.getClickCount() == 2) {
setBackgroundplaylistState();
try {
if (contentEntries.size() == 1 && contentEntries.get(0).size() == 1) {
setNewSongPlayingState(false);
selectedItems.get(0).setFileId(contentEntries.get(0).get(0).getId());
startSwitchSongLoopFromScratch();
} else {
GuiUtils.showDialog("sidifyViewMultipeSongs.fxml", Boolean.TRUE, "Choose", getStage(), new Object[] { Support.flattenAndEnrichEntries(selectedItems, contentEntries) });
refreshPlaylistIfNeeded(playListService.getPlaylistForSong(selectedItems.get(0)));
populateLeftList();
}
} catch (Exception e) {
LOGGER.error("Unable to play item", e);
}
}
}
} else {
List<List<ContentEntry>> contentEntries = new ArrayList<>();
for (PlaylistEntry playlistEntry : selectedItems) {
List<ContentEntry> tmp = new ArrayList<>();
ContentEntry entry = new ContentEntry();
entry.setFullPlaylistInfo(playlistEntry);
entry.setId(playlistEntry.getFileId());
entry.setName(playlistEntry.getName());
tmp.add(entry);
contentEntries.add(tmp);
}
setBackgroundplaylistState();
if ((event.getButton() == MouseButton.SECONDARY || event.isControlDown()) && !isOffline()) {
final ContextMenu contextMenu = new ContextMenu();
Menu addToPlaylist = new Menu("Add to playlist");
for (PlaylistInfo plist : playListService.getPlaylistInfo()) {
PlaylistMenuItem mItem = new PlaylistMenuItem(plist);
mItem.setOnAction((ActionEvent event2) -> {
PlaylistMenuItem item = (PlaylistMenuItem) event2.getSource();
if (Support.isPlaylistMine(item.getPlaylist())) {
playListService.addSongs(item.getPlaylist(), selectedItems, contentEntries);
PlaylistInfo currentPlaylist = playListService.getPlaylistForSong(selectedItems.get(0));
refreshPlaylistIfNeeded(currentPlaylist);
songlist.getSelectionModel().clearSelection();
} else {
GenericMessageDialogController.withErrorProps("Sidify", "You can not add song to public lists!").showAndWait();
}
});
addToPlaylist.getItems().add(mItem);
}
contextMenu.getItems().add(addToPlaylist);
MenuItem mItem = new MenuItem("Add to new playlist");
mItem.setOnAction((ActionEvent event2) -> {
SidifyCreatePlaylistController controller = GuiUtils.showDialog("sidifyCreateNewPlaylist.fxml", Boolean.TRUE, "Create new playlist", getStage(), new Object[] { null, false });
PlaylistInfo newPlaylist = controller.getNewlyCreatedPlayList();
ContentEntryInfoMenuItem cmItem = new ContentEntryInfoMenuItem(newPlaylist.getName(), contentEntries);
if (newPlaylist != null) {
playListService.addSongs(newPlaylist, selectedItems, cmItem.getContentEntries());
songlist.getSelectionModel().clearSelection();
populateLeftList();
}
});
addToPlaylist.getItems().add(mItem);
if (isPlaylistMine(playListService.getPlaylistForSong(selectedItems.get(0)))) {
PlaylistEntryMenuItem deleteItem = new PlaylistEntryMenuItem("Delete", selectedItems);
deleteItem.setOnAction((ActionEvent event2) -> {
PlaylistEntryMenuItem item = (PlaylistEntryMenuItem) event2.getSource();
PlaylistInfo currentPlaylist = playListService.getPlaylistForSong(item.getPlaylistEntry());
playListService.deleteSongs(currentPlaylist, item.getPlaylistEntries());
songlist.getSelectionModel().clearSelection();
populateLeftList();
refreshPlaylistIfNeeded(currentPlaylist);
});
contextMenu.getItems().add(deleteItem);
}
songlist.setContextMenu(contextMenu);
} else if (event.getClickCount() == 2) {
setNewSongPlayingState(false);
startSwitchSongLoopFromScratch();
populateLeftList();
}
}
});
searchField.setOnKeyReleased((event) -> {
if (event.getCode() == KeyCode.ENTER) {
doSearch(searchField.getText());
}
});
try {
searchPeriod.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends SEARCH_PERIOD> observable, SEARCH_PERIOD oldValue, SEARCH_PERIOD newValue) -> doSearch(searchField.getText()));
} catch (Exception e) {
LOGGER.info("Unable to add listener", e);
}
disableSearch();
workQueue = new ArrayBlockingQueue<>(1000);
Executors.newSingleThreadExecutor().execute(() -> {
while (true) {
try {
Object queueItem = workQueue.take();
if (queueItem instanceof PoisonPill) {
break;
} else if (queueItem instanceof PlaylistInfo) {
downloadPlaylistOffline((PlaylistInfo) queueItem, true);
} else if (queueItem instanceof String && ((String) queueItem).equals("checklists")) {
for (PlaylistInfo pInfo : playListService.getPlaylistInfo()) {
if (pInfo.isAvailableOffline()) {
downloadPlaylistOffline(pInfo, false);
}
}
}
} catch (Exception e) {
}
}
});
if (!isOffline()) {
checkOfflineScheduler = Executors.newScheduledThreadPool(1);
checkOfflineScheduler.scheduleAtFixedRate(() -> {
workQueue.offer("checklists");
}, 5, 10, TimeUnit.SECONDS);
}
}
use of javafx.scene.control.MenuItem in project assembly64fx by freabemania.
the class Main method createMenuWithAction.
private static MenuItem createMenuWithAction(Artifact clickedEntry, String name, Type type, GuiLocation installation, Object payload) {
MenuItem view = new MenuItem(name);
view.setOnAction(ContextMenuEvent.of(new ActionAndIdHolder(clickedEntry, type, installation, payload)));
return view;
}
use of javafx.scene.control.MenuItem in project assembly64fx by freabemania.
the class Main method viewPrimary.
public void viewPrimary() {
primaryStage = new Stage();
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) {
System.exit(1);
}
});
if (!userService.isPremium()) {
userService.deleteExcludesFromLocalDbQuiet();
}
// Setting the saved windowsize
if (localDbService.hasLocalDBSetting("screenHeight")) {
primaryStage.setHeight(Double.valueOf(localDbService.getLocalDBSetting("screenHeight")));
}
if (localDbService.hasLocalDBSetting("screenWidth")) {
primaryStage.setWidth(Double.valueOf(localDbService.getLocalDBSetting("screenWidth")));
}
GuiUtils.attachIconToStage(primaryStage);
LOGGER.info("Assembly64 v." + version + " is starting up...");
try {
if (userService.isPremium()) {
primaryStage.setTitle("Assembly64 - Hero edition");
} else {
primaryStage.setTitle("Assembly64 - Free edition");
}
// menuBar = new MenuBar();
Menu menuFile = new Menu("Assembly64");
Menu menuLogs = new Menu("Logs");
Menu menuMisc = new Menu("Misc");
// A64
MenuItem openFile = new MenuItem("Open D64/D71/D81/TAP/G64/T64/BIN/CRT/SID");
menuFile.getItems().add(openFile);
MenuItem settingsItem = new MenuItem("Preferences");
menuFile.getItems().add(settingsItem);
MenuItem exitItem = new MenuItem("Exit");
menuFile.getItems().add(exitItem);
// logsmenu
MenuItem viewLogItem = new MenuItem("Systemlog");
menuLogs.getItems().add(viewLogItem);
MenuItem changelog = new MenuItem("Changelog");
menuLogs.getItems().add(changelog);
MenuItem instructions = new MenuItem("Instructions");
menuMisc.getItems().add(instructions);
// misc
MenuItem backers = new MenuItem("Backers");
menuMisc.getItems().add(backers);
MenuItem donations = new MenuItem("Donations");
menuMisc.getItems().add(donations);
MenuItem feedbackItem = new MenuItem("Feedback & Feature requests");
menuMisc.getItems().add(feedbackItem);
MenuItem aboutItem = new MenuItem("About");
menuMisc.getItems().add(aboutItem);
menuBar = new MenuBar();
menuBar.getMenus().addAll(menuFile, menuLogs, menuMisc);
feedbackItem.setOnAction((item) -> {
GuiUtils.showDialogBare("feedback.fxml", "Submit feedback");
});
exitItem.setOnAction((item) -> {
System.exit(1);
});
openFile.setOnAction((item) -> {
Analytics.sendEvent("application_click", "open_file");
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Resource File");
fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("All", "*.*"), new FileChooser.ExtensionFilter("PRG", "*.d64"), new FileChooser.ExtensionFilter("D64", "*.d64"), new FileChooser.ExtensionFilter("D71", "*.d71"), new FileChooser.ExtensionFilter("T64", "*.t64"), new FileChooser.ExtensionFilter("TAP", "*.d71"), new FileChooser.ExtensionFilter("G64", "*.g64"), new FileChooser.ExtensionFilter("G64", "*.tap"), new FileChooser.ExtensionFilter("D71", "*.d71"), new FileChooser.ExtensionFilter("D81", "*.d81"), new FileChooser.ExtensionFilter("BIN", "*.bin"), new FileChooser.ExtensionFilter("CRT", "*.crt"));
launchViceOrImageView(fileChooser.showOpenDialog(primaryStage));
});
settingsItem.setOnAction((item) -> {
try {
GuiUtils.showDialogBare("mainSettings.fxml", "Settings", new Object[] {});
} catch (Exception e) {
LOGGER.error("Unable to view settings", e);
GenericMessageDialogController.withErrorProps("Oops", "Unable to view settings").showAndWait();
}
});
viewLogItem.setOnAction((item) -> {
try {
Analytics.sendEvent("application_click", "view_logs");
GuiUtils.showDialogBare("viewFileFromDisk.fxml", "View log", new File(LogConfig.getLogFileAsString()), "Systemlog");
} catch (Exception e) {
LOGGER.error("Unable to view logs", e);
GenericMessageDialogController.withErrorProps("Oops", "Unable to view logs").showAndWait();
}
});
donations.setOnAction((i) -> {
String linebreak = System.getProperty("line.separator");
String donStr = userService.getDonations().stream().map(item -> item.dateFormatted() + linebreak + item.getName()).collect(Collectors.joining(linebreak + linebreak));
GuiUtils.showDialogBare("viewFileFromDisk.fxml", "Donations by heroes", donStr, "Donationshistory");
});
backers.setOnAction((item) -> {
try {
String[] bck = userService.getBackers();
int start = ThreadLocalRandom.current().nextInt(0, bck.length - 1);
StringBuffer names = new StringBuffer();
for (int i = 0; i < bck.length - 1; i++) {
int pos = (start + i) % (bck.length - 1);
names.append(bck[pos] + "\n");
}
Analytics.sendEvent("application_click", "view_backers");
GuiUtils.showDialogBare("viewFileFromDisk.fxml", "Backing heroes of Assembly64", names.toString(), "List of backers");
} catch (Exception e) {
GenericMessageDialogController.withErrorProps("Oops", "Unable to view backers").showAndWait();
LOGGER.error("Unable to view logs", e);
}
});
instructions.setOnAction((item) -> {
try {
Analytics.sendEvent("application_click", "view_instructions");
GuiUtils.showDialogBare("viewFileFromDisk.fxml", "This is the way", getClass().getResourceAsStream("instructions.txt"), "Instructions");
} catch (Exception e) {
GenericMessageDialogController.withErrorProps("Oops", "Unable to view instructions").showAndWait();
LOGGER.error("Unable to view instructions", e);
}
});
changelog.setOnAction((item) -> {
Analytics.sendEvent("application_click", "view_changelog");
try {
GuiUtils.showDialogBare("viewFileFromDisk.fxml", "Haxxing haxxing haxxing", getClass().getResourceAsStream("changelog.txt"), "Changelog");
} catch (Exception e) {
GenericMessageDialogController.withErrorProps("Oops", "Unable to view changelog").showAndWait();
LOGGER.error("Unable to view logs", e);
}
});
aboutItem.setOnAction((item) -> {
try {
Analytics.sendEvent("application_click", "view_about");
showAboutDia();
} catch (Exception e) {
LOGGER.error("Unable to view about", e);
GenericMessageDialogController.withErrorProps("Oops", "Unable to view about").showAndWait();
}
});
topContainer.getChildren().addAll(menuBar);
topContainer.setStyle("-fx-background: #222222;");
Scene scene = new Scene(topContainer, 300, maxHeight);
scene.getStylesheets().add(getClass().getResource("css-psidplayer.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setResizable(true);
GlobalRepoService.getInstance().put("primarystage", primaryStage);
if (!localDbService.getBooleanLocalDBSetting(Support.SIDIFYASDEFAULT) || userService.isFreemium()) {
primaryStage.show();
} else {
ReturningTask<Void> task = () -> {
Platform.runLater(() -> {
primaryStage.hide();
executeIfPremium((Runnable) -> {
GuiUtils.showDialog("sidifyMain.fxml", false, "Sidify Heroium", NullWindowOwner.of(), new Object[] { Boolean.TRUE });
}, "open_sidify_default");
});
return null;
};
ExecutorUtil.executeAsyncWithRetry(task);
}
scene.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
tree.setMinHeight(topContainer.getHeight() - menuBar.getHeight());
setMagnifierAndSidify();
}
});
scene.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
tree.setMinWidth(treeAndComponents.getWidth());
setMagnifierAndSidify();
}
});
// bootstrapping
GlobalRepoService.getInstance().put("rootscene", scene);
for (WorkLocation location : userService.getExistingLocations()) {
artifactsService.assertCorrectTargetFolderNames(location.asFile());
}
setupTree();
sidifyView.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
Analytics.sendEvent("application_click", "open_sidify");
executeIfPremium((Runnable) -> {
// Platform.runLater(() -> primaryStage.hide());
GuiUtils.showDialog("sidifyMain.fxml", false, "Sidify Heroium", NullWindowOwner.of(), new Object[] { Boolean.FALSE });
}, "open_sidify");
});
downloadLatestDbView.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
executeIfPremium((Runnable) -> {
if (userService.getPrimaryInstallation().exists()) {
InstallationService.getInstance().downloadLatestFromDatabase();
} else {
GenericMessageDialogController.withErrorProps("Ooops..", "No valid downloadlocation is present").showAndWait();
}
}, "download_latest");
});
userService.locationsAssert();
if (!localDbService.hasLocalDBSetting(Support.LAST_VERSION)) {
localDbService.addLocalDBSetting(Support.LAST_VERSION, "0.00");
}
if (localDbService.getBooleanLocalDBSetting(Support.SHOWDIA_ON_STARTUP) || !version.equals(localDbService.getLocalDBSetting(Support.LAST_VERSION))) {
ReturningTask<Void> task = () -> {
Thread.sleep(300);
Platform.runLater(() -> showAboutDia());
return null;
};
ExecutorUtil.executeAsyncWithRetry(task);
}
ReturningTask<Void> deleteTmpTask = () -> {
LocalStorageUtil.deleteOldFiles(PathService.getInstance().getTmpFolderAsString(), Support.ONE_WEEK_IN_MILLIS);
LocalStorageUtil.deleteOldFiles(PathService.getInstance().getDownloadTmpFolderAsString(), Support.ONE_MONTH_IN_MILLIS);
return null;
};
ExecutorUtil.executeAsyncWithRetry(deleteTmpTask);
// migrate db to .db
for (WorkLocation location : userService.getLocations()) {
PathService.getInstance().renameDbFolder(location);
}
if (userService.getExistingLocations().size() == 0 && localDbService.hasLocalDBSetting(WORKDIR)) {
addLocation(new File(localDbService.getLocalDBSetting(WORKDIR)));
localDbService.deleteLocalDBSetting(WORKDIR);
}
if (userService.isPremium() && !localDbService.getBooleanLocalDBSetting(Support.SIDIFYASDEFAULT)) {
ExecutorUtil.executeAsync(() -> {
Platform.runLater(() -> {
examineContent();
});
});
}
refreshTree();
} catch (Exception e) {
LOGGER.error("Unable to delete cached items", e);
GenericMessageDialogController.withErrorProps("OOoops", "Unable to startup properly").showAndWait();
}
}
Aggregations