shifted genre pie charts to separate tab
This commit is contained in:
parent
903f474b8c
commit
7ae40b1c8c
@ -0,0 +1,268 @@
|
|||||||
|
package sarsoo.fmframework.fx.controller;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import javafx.application.Platform;
|
||||||
|
import javafx.concurrent.Service;
|
||||||
|
import javafx.concurrent.Task;
|
||||||
|
import javafx.event.ActionEvent;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.Accordion;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.ChoiceBox;
|
||||||
|
import javafx.scene.control.TitledPane;
|
||||||
|
import javafx.scene.control.ToolBar;
|
||||||
|
import javafx.scene.layout.BorderPane;
|
||||||
|
import javafx.stage.FileChooser;
|
||||||
|
import sarsoo.fmframework.fx.FmFramework;
|
||||||
|
import sarsoo.fmframework.fx.chart.GenrePieChartTitledPane;
|
||||||
|
import sarsoo.fmframework.fx.chart.PieChartTitledPane;
|
||||||
|
import sarsoo.fmframework.log.Logger;
|
||||||
|
import sarsoo.fmframework.log.entry.InfoEntry;
|
||||||
|
import sarsoo.fmframework.log.entry.LogEntry;
|
||||||
|
|
||||||
|
public class GenrePieChartPaneController {
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
BorderPane borderPane;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
Accordion accordionCharts;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
ToolBar toolbar;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
Button buttonLoadAll;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
Button buttonLoad;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
ChoiceBox choiceBox;
|
||||||
|
|
||||||
|
ArrayList<GenreHierarchy> genreHierarchies = new ArrayList<GenreHierarchy>();
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void initialize() {
|
||||||
|
try {
|
||||||
|
if (new File("./piechart.json").isFile()) {
|
||||||
|
File file = new File("./piechart.json");
|
||||||
|
|
||||||
|
BufferedReader br = new BufferedReader(new FileReader(file));
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
String jsonLine = br.readLine();
|
||||||
|
while (jsonLine != null) {
|
||||||
|
sb.append(jsonLine);
|
||||||
|
jsonLine = br.readLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
br.close();
|
||||||
|
|
||||||
|
String jsonString = sb.toString();
|
||||||
|
|
||||||
|
JSONObject rootParsedJsonObj = new JSONObject(jsonString);
|
||||||
|
|
||||||
|
JSONArray hierarchiesJsonArray = rootParsedJsonObj.getJSONObject("genrehierarchy")
|
||||||
|
.getJSONArray("genres");
|
||||||
|
|
||||||
|
if (hierarchiesJsonArray.length() > 0) {
|
||||||
|
// menuPieChart.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
int counter;
|
||||||
|
for (counter = 0; counter < hierarchiesJsonArray.length(); counter++) {
|
||||||
|
|
||||||
|
JSONObject hierarchyJsonObj = (JSONObject) hierarchiesJsonArray.get(counter);
|
||||||
|
// JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
||||||
|
// ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
||||||
|
|
||||||
|
String hierarchyName = hierarchyJsonObj.getString("name");
|
||||||
|
JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
||||||
|
ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < hierarchyTagsJsonArray.length(); i++) {
|
||||||
|
hierarchyTagNameList.add(hierarchyTagsJsonArray.getString(i));
|
||||||
|
// allTags.add(hierarchyTagsJsonArray.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
choiceBox.getItems().add(new GenreHierarchy(hierarchyName, hierarchyTagNameList));
|
||||||
|
// paneList.add(new GenrePieChartTitledPane(hierarchyName, hierarchyTagNameList));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
protected void handleLoad(ActionEvent event) {
|
||||||
|
GenreHierarchy hier = (GenreHierarchy) choiceBox.getValue();
|
||||||
|
|
||||||
|
if (hier != null) {
|
||||||
|
Service<Void> service = new Service<Void>() {
|
||||||
|
@Override
|
||||||
|
protected Task<Void> createTask() {
|
||||||
|
return new Task<Void>() {
|
||||||
|
@Override
|
||||||
|
protected Void call() throws Exception {
|
||||||
|
|
||||||
|
GenrePieChartTitledPane pane = new GenrePieChartTitledPane(hier.getName(),
|
||||||
|
hier.getTagNames());
|
||||||
|
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
accordionCharts.getPanes().add(pane);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
service.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
protected void handleLoadAll(ActionEvent event) {
|
||||||
|
|
||||||
|
File file = null;
|
||||||
|
String path = null;
|
||||||
|
if (new File("./piechart.json").isFile()) {
|
||||||
|
file = new File("./piechart.json");
|
||||||
|
} else {
|
||||||
|
FileChooser fileChooser = new FileChooser();
|
||||||
|
fileChooser.setTitle("open pie chart json");
|
||||||
|
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JSON", "*.json"));
|
||||||
|
file = fileChooser.showOpenDialog(FmFramework.getStage());
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshPieCharts(file);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshPieCharts(File file) {
|
||||||
|
|
||||||
|
Logger.getLog().log(new LogEntry("refreshPieCharts"));
|
||||||
|
|
||||||
|
Service<Void> service = new Service<Void>() {
|
||||||
|
@Override
|
||||||
|
protected Task<Void> createTask() {
|
||||||
|
return new Task<Void>() {
|
||||||
|
@Override
|
||||||
|
protected Void call() throws Exception {
|
||||||
|
|
||||||
|
String jsonString = null;
|
||||||
|
if (file != null) {
|
||||||
|
|
||||||
|
BufferedReader br = new BufferedReader(new FileReader(file));
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
String jsonLine = br.readLine();
|
||||||
|
while (jsonLine != null) {
|
||||||
|
sb.append(jsonLine);
|
||||||
|
jsonLine = br.readLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
br.close();
|
||||||
|
|
||||||
|
jsonString = sb.toString();
|
||||||
|
Logger.getLog().logInfo(new InfoEntry("refreshPieCharts").addArg("json read"));
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject rootParsedJsonObj = new JSONObject(jsonString);
|
||||||
|
|
||||||
|
JSONArray hierarchiesJsonArray = rootParsedJsonObj.getJSONObject("genrehierarchy")
|
||||||
|
.getJSONArray("genres");
|
||||||
|
JSONObject pieJson = rootParsedJsonObj.getJSONObject("pie");
|
||||||
|
|
||||||
|
Logger.getLog().logInfo(new InfoEntry("refreshPieCharts").addArg("arrays parsed"));
|
||||||
|
|
||||||
|
int counter;
|
||||||
|
ArrayList<TitledPane> paneList = new ArrayList<TitledPane>();
|
||||||
|
|
||||||
|
ArrayList<String> allTags = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (counter = 0; counter < hierarchiesJsonArray.length(); counter++) {
|
||||||
|
JSONObject hierarchyJsonObj = (JSONObject) hierarchiesJsonArray.get(counter);
|
||||||
|
JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
||||||
|
ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
||||||
|
|
||||||
|
String hierarchyName = hierarchyJsonObj.getString("name");
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < hierarchyTagsJsonArray.length(); i++) {
|
||||||
|
hierarchyTagNameList.add(hierarchyTagsJsonArray.getString(i));
|
||||||
|
allTags.add(hierarchyTagsJsonArray.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
paneList.add(new GenrePieChartTitledPane(hierarchyName, hierarchyTagNameList));
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONArray totalPieTags = pieJson.getJSONArray("tags");
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < totalPieTags.length(); i++) {
|
||||||
|
allTags.add((totalPieTags).getString(i));
|
||||||
|
}
|
||||||
|
paneList.add(new PieChartTitledPane("total", allTags));
|
||||||
|
|
||||||
|
// final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
accordionCharts.getPanes().clear();
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < paneList.size(); i++) {
|
||||||
|
accordionCharts.getPanes().add(paneList.get(i));
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
// latch.countDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// latch.await();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
service.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class GenreHierarchy {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private ArrayList<String> tagNames;
|
||||||
|
|
||||||
|
public GenreHierarchy(String name, ArrayList<String> tagNames) {
|
||||||
|
this.name = name;
|
||||||
|
this.tagNames = tagNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getTagNames() {
|
||||||
|
return tagNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -32,6 +32,7 @@ import sarsoo.fmframework.fx.tab.ArtistTab;
|
|||||||
import sarsoo.fmframework.fx.tab.ConsoleTab;
|
import sarsoo.fmframework.fx.tab.ConsoleTab;
|
||||||
import sarsoo.fmframework.fx.tab.FMObjListEditTab;
|
import sarsoo.fmframework.fx.tab.FMObjListEditTab;
|
||||||
import sarsoo.fmframework.fx.tab.FMObjListTab;
|
import sarsoo.fmframework.fx.tab.FMObjListTab;
|
||||||
|
import sarsoo.fmframework.fx.tab.GenrePieChartTab;
|
||||||
import sarsoo.fmframework.fx.tab.ScrobbleChartTab;
|
import sarsoo.fmframework.fx.tab.ScrobbleChartTab;
|
||||||
import sarsoo.fmframework.fx.tab.TrackTab;
|
import sarsoo.fmframework.fx.tab.TrackTab;
|
||||||
import sarsoo.fmframework.log.Log;
|
import sarsoo.fmframework.log.Log;
|
||||||
@ -69,7 +70,6 @@ public class RootController {
|
|||||||
refreshScrobbleCounts();
|
refreshScrobbleCounts();
|
||||||
addLastTrackTab();
|
addLastTrackTab();
|
||||||
refreshTagMenu();
|
refreshTagMenu();
|
||||||
refreshPieChartMenu();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshScrobbleCounts() {
|
public void refreshScrobbleCounts() {
|
||||||
@ -157,188 +157,6 @@ public class RootController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshPieChartMenu() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (new File("./piechart.json").isFile()) {
|
|
||||||
File file = new File("./piechart.json");
|
|
||||||
|
|
||||||
BufferedReader br = new BufferedReader(new FileReader(file));
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
String jsonLine = br.readLine();
|
|
||||||
while (jsonLine != null) {
|
|
||||||
sb.append(jsonLine);
|
|
||||||
jsonLine = br.readLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
br.close();
|
|
||||||
|
|
||||||
String jsonString = sb.toString();
|
|
||||||
|
|
||||||
JSONObject rootParsedJsonObj = new JSONObject(jsonString);
|
|
||||||
|
|
||||||
JSONArray hierarchiesJsonArray = rootParsedJsonObj.getJSONObject("genrehierarchy")
|
|
||||||
.getJSONArray("genres");
|
|
||||||
|
|
||||||
if (hierarchiesJsonArray.length() > 0) {
|
|
||||||
menuPieChart.setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
int counter;
|
|
||||||
for (counter = 0; counter < hierarchiesJsonArray.length(); counter++) {
|
|
||||||
JSONObject hierarchyJsonObj = (JSONObject) hierarchiesJsonArray.get(counter);
|
|
||||||
// JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
|
||||||
// ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
|
||||||
|
|
||||||
String hierarchyName = hierarchyJsonObj.getString("name");
|
|
||||||
JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
|
||||||
ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < hierarchyTagsJsonArray.length(); i++) {
|
|
||||||
hierarchyTagNameList.add(hierarchyTagsJsonArray.getString(i));
|
|
||||||
// allTags.add(hierarchyTagsJsonArray.getString(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
// paneList.add(new GenrePieChartTitledPane(hierarchyName, hierarchyTagNameList));
|
|
||||||
|
|
||||||
MenuItem item = new MenuItem(hierarchyName);
|
|
||||||
|
|
||||||
item.setOnAction(new EventHandler<ActionEvent>() {
|
|
||||||
@Override
|
|
||||||
public void handle(ActionEvent e) {
|
|
||||||
|
|
||||||
// TAG ITEM HANDLER SERVICE
|
|
||||||
Service<Void> service = new Service<Void>() {
|
|
||||||
@Override
|
|
||||||
protected Task<Void> createTask() {
|
|
||||||
return new Task<Void>() {
|
|
||||||
@Override
|
|
||||||
protected Void call() throws Exception {
|
|
||||||
|
|
||||||
GenrePieChartTitledPane pane = new GenrePieChartTitledPane(hierarchyName,
|
|
||||||
hierarchyTagNameList);
|
|
||||||
|
|
||||||
// final CountDownLatch latch = new CountDownLatch(1);
|
|
||||||
Platform.runLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
accordionCharts.getPanes().add(pane);
|
|
||||||
} finally {
|
|
||||||
// latch.countDown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// latch.await();
|
|
||||||
// Keep with the background work
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
service.start();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
menuPieChart.getItems().add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void refreshPieCharts(File file) {
|
|
||||||
|
|
||||||
Logger.getLog().log(new LogEntry("refreshPieCharts"));
|
|
||||||
|
|
||||||
Service<Void> service = new Service<Void>() {
|
|
||||||
@Override
|
|
||||||
protected Task<Void> createTask() {
|
|
||||||
return new Task<Void>() {
|
|
||||||
@Override
|
|
||||||
protected Void call() throws Exception {
|
|
||||||
|
|
||||||
String jsonString = null;
|
|
||||||
if (file != null) {
|
|
||||||
|
|
||||||
BufferedReader br = new BufferedReader(new FileReader(file));
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
String jsonLine = br.readLine();
|
|
||||||
while (jsonLine != null) {
|
|
||||||
sb.append(jsonLine);
|
|
||||||
jsonLine = br.readLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
br.close();
|
|
||||||
|
|
||||||
jsonString = sb.toString();
|
|
||||||
Logger.getLog().logInfo(new InfoEntry("refreshPieCharts").addArg("json read"));
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject rootParsedJsonObj = new JSONObject(jsonString);
|
|
||||||
|
|
||||||
JSONArray hierarchiesJsonArray = rootParsedJsonObj.getJSONObject("genrehierarchy")
|
|
||||||
.getJSONArray("genres");
|
|
||||||
JSONObject pieJson = rootParsedJsonObj.getJSONObject("pie");
|
|
||||||
|
|
||||||
Logger.getLog().logInfo(new InfoEntry("refreshPieCharts").addArg("arrays parsed"));
|
|
||||||
|
|
||||||
int counter;
|
|
||||||
ArrayList<TitledPane> paneList = new ArrayList<TitledPane>();
|
|
||||||
|
|
||||||
ArrayList<String> allTags = new ArrayList<String>();
|
|
||||||
|
|
||||||
for (counter = 0; counter < hierarchiesJsonArray.length(); counter++) {
|
|
||||||
JSONObject hierarchyJsonObj = (JSONObject) hierarchiesJsonArray.get(counter);
|
|
||||||
JSONArray hierarchyTagsJsonArray = hierarchyJsonObj.getJSONArray("tags");
|
|
||||||
ArrayList<String> hierarchyTagNameList = new ArrayList<String>();
|
|
||||||
|
|
||||||
String hierarchyName = hierarchyJsonObj.getString("name");
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < hierarchyTagsJsonArray.length(); i++) {
|
|
||||||
hierarchyTagNameList.add(hierarchyTagsJsonArray.getString(i));
|
|
||||||
allTags.add(hierarchyTagsJsonArray.getString(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
paneList.add(new GenrePieChartTitledPane(hierarchyName, hierarchyTagNameList));
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONArray totalPieTags = pieJson.getJSONArray("tags");
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < totalPieTags.length(); i++) {
|
|
||||||
allTags.add((totalPieTags).getString(i));
|
|
||||||
}
|
|
||||||
paneList.add(new PieChartTitledPane("total", allTags));
|
|
||||||
|
|
||||||
// final CountDownLatch latch = new CountDownLatch(1);
|
|
||||||
Platform.runLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
accordionCharts.getPanes().clear();
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < paneList.size(); i++) {
|
|
||||||
accordionCharts.getPanes().add(paneList.get(i));
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
// latch.countDown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// latch.await();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
service.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addTab(Tab tab) {
|
public void addTab(Tab tab) {
|
||||||
tabPane.getTabs().add(tab);
|
tabPane.getTabs().add(tab);
|
||||||
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
|
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
|
||||||
@ -474,20 +292,13 @@ public class RootController {
|
|||||||
if (track != null) {
|
if (track != null) {
|
||||||
TrackTab tab = new TrackTab(track);
|
TrackTab tab = new TrackTab(track);
|
||||||
|
|
||||||
// final CountDownLatch latch = new CountDownLatch(1);
|
|
||||||
Platform.runLater(new Runnable() {
|
Platform.runLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
|
||||||
tabPane.getTabs().add(tab);
|
tabPane.getTabs().add(tab);
|
||||||
} finally {
|
|
||||||
// latch.countDown();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// latch.await();
|
|
||||||
}
|
}
|
||||||
// Keep with the background work
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -501,24 +312,6 @@ public class RootController {
|
|||||||
addLastTrackTab();
|
addLastTrackTab();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
|
||||||
protected void handleRefreshPieChart(ActionEvent event) throws IOException {
|
|
||||||
|
|
||||||
File file = null;
|
|
||||||
String path = null;
|
|
||||||
if (new File("./piechart.json").isFile()) {
|
|
||||||
file = new File("./piechart.json");
|
|
||||||
} else {
|
|
||||||
FileChooser fileChooser = new FileChooser();
|
|
||||||
fileChooser.setTitle("open pie chart json");
|
|
||||||
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JSON", "*.json"));
|
|
||||||
file = fileChooser.showOpenDialog(FmFramework.getStage());
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshPieCharts(file);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
protected void handleCreateList(ActionEvent event) {
|
protected void handleCreateList(ActionEvent event) {
|
||||||
|
|
||||||
@ -550,7 +343,6 @@ public class RootController {
|
|||||||
try {
|
try {
|
||||||
addTab(new ScrobbleChartTab());
|
addTab(new ScrobbleChartTab());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,6 +375,11 @@ public class RootController {
|
|||||||
addTab(new ConsoleTab());
|
addTab(new ConsoleTab());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
protected void handleGenrePieTab(ActionEvent event) {
|
||||||
|
addTab(new GenrePieChartTab());
|
||||||
|
}
|
||||||
|
|
||||||
private ArrayList<Tag> tags;
|
private ArrayList<Tag> tags;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
@ -593,9 +390,6 @@ public class RootController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Label labelStatsScrobblesTotal;
|
private Label labelStatsScrobblesTotal;
|
||||||
//
|
|
||||||
// @FXML
|
|
||||||
// private PieChart pieChartGenres;
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private TabPane tabPane;
|
private TabPane tabPane;
|
||||||
@ -608,29 +402,8 @@ public class RootController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Menu menuChart;
|
private Menu menuChart;
|
||||||
//
|
|
||||||
// @FXML
|
|
||||||
// private PieChart pieChartRap;
|
|
||||||
//
|
|
||||||
// @FXML
|
|
||||||
// private PieChart pieChartRapTotal;
|
|
||||||
//
|
|
||||||
// @FXML
|
|
||||||
// private PieChart pieChartRock;
|
|
||||||
//
|
|
||||||
// @FXML
|
|
||||||
// private PieChart pieChartRockTotal;
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Accordion accordionCharts;
|
private Accordion accordionCharts;
|
||||||
|
|
||||||
@FXML
|
|
||||||
private TitledPane titledPaneGenres;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private TitledPane titledPaneRap;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private StackPane stackViewGenres;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package sarsoo.fmframework.fx.tab;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javafx.fxml.FXMLLoader;
|
||||||
|
import javafx.scene.control.Tab;
|
||||||
|
import javafx.scene.layout.AnchorPane;
|
||||||
|
import sarsoo.fmframework.fx.controller.GenrePieChartPaneController;
|
||||||
|
|
||||||
|
public class GenrePieChartTab extends Tab{
|
||||||
|
|
||||||
|
public GenrePieChartTab() {
|
||||||
|
|
||||||
|
setText("genre pie");
|
||||||
|
|
||||||
|
FXMLLoader loader = new FXMLLoader(getClass().getResource("../ui/GenrePieChartPane.fxml"));
|
||||||
|
|
||||||
|
AnchorPane pane;
|
||||||
|
try {
|
||||||
|
pane = (AnchorPane) loader.load();
|
||||||
|
|
||||||
|
AnchorPane.setTopAnchor(pane, 0.0);
|
||||||
|
AnchorPane.setLeftAnchor(pane, 0.0);
|
||||||
|
AnchorPane.setRightAnchor(pane, 0.0);
|
||||||
|
AnchorPane.setBottomAnchor(pane, 0.0);
|
||||||
|
|
||||||
|
setContent(pane);
|
||||||
|
|
||||||
|
GenrePieChartPaneController control = (GenrePieChartPaneController) loader.getController();
|
||||||
|
|
||||||
|
//control.populate();
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.control.*?>
|
||||||
|
<?import java.lang.*?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
|
||||||
|
<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sarsoo.fmframework.fx.controller.GenrePieChartPaneController">
|
||||||
|
<children>
|
||||||
|
<BorderPane fx:id="borderPane" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<bottom>
|
||||||
|
<ToolBar fx:id="toolbar" prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
|
||||||
|
<items>
|
||||||
|
<Button fx:id="buttonLoadAll" mnemonicParsing="false" onAction="#handleLoadAll" text="load all" />
|
||||||
|
<ChoiceBox fx:id="choiceBox" prefWidth="150.0" />
|
||||||
|
<Button fx:id="buttonLoad" mnemonicParsing="false" onAction="#handleLoad" text="load" />
|
||||||
|
</items>
|
||||||
|
</ToolBar>
|
||||||
|
</bottom>
|
||||||
|
<center>
|
||||||
|
<Accordion fx:id="accordionCharts" BorderPane.alignment="CENTER" />
|
||||||
|
</center>
|
||||||
|
</BorderPane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
@ -27,7 +27,7 @@
|
|||||||
<Menu fx:id="menuChart" mnemonicParsing="false" text="chart">
|
<Menu fx:id="menuChart" mnemonicParsing="false" text="chart">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem fx:id="menuItemScrobbleChart" mnemonicParsing="false" onAction="#handleScrobbleChart" text="daily scrobbles" />
|
<MenuItem fx:id="menuItemScrobbleChart" mnemonicParsing="false" onAction="#handleScrobbleChart" text="daily scrobbles" />
|
||||||
<Menu fx:id="menuPieChart" mnemonicParsing="false" text="load pie chart" visible="false" />
|
<MenuItem fx:id="menuItemGenrePieChartTab" mnemonicParsing="false" onAction="#handleGenrePieTab" text="genre pie chart" />
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu fx:id="menuTag" mnemonicParsing="false" text="tags" />
|
<Menu fx:id="menuTag" mnemonicParsing="false" text="tags" />
|
||||||
@ -60,26 +60,7 @@
|
|||||||
<tabs>
|
<tabs>
|
||||||
<Tab fx:id="tabHome" closable="false" text="home">
|
<Tab fx:id="tabHome" closable="false" text="home">
|
||||||
<content>
|
<content>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
|
||||||
<children>
|
|
||||||
<BorderPane prefHeight="354.0" prefWidth="211.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<center>
|
|
||||||
<Accordion fx:id="accordionCharts" prefHeight="325.0" prefWidth="222.0" BorderPane.alignment="CENTER">
|
|
||||||
<panes>
|
|
||||||
|
|
||||||
</panes>
|
|
||||||
</Accordion>
|
|
||||||
</center>
|
|
||||||
<bottom>
|
|
||||||
<ToolBar prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
|
|
||||||
<items>
|
|
||||||
<Button fx:id="buttonPieChartRefresh" mnemonicParsing="false" onAction="#handleRefreshPieChart" text="refresh" />
|
|
||||||
</items>
|
|
||||||
</ToolBar>
|
|
||||||
</bottom>
|
|
||||||
</BorderPane>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</content>
|
</content>
|
||||||
</Tab>
|
</Tab>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user