import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
+import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import com.jgoodies.forms.layout.RowSpec;
import com.ranfa.lib.CheckVersion;
import com.ranfa.lib.Easter;
-import com.ranfa.lib.EstimateAlbumTypeCycle;
import com.ranfa.lib.ManualUpdateThreadImpl;
-import com.ranfa.lib.Scraping;
import com.ranfa.lib.SettingJSONProperty;
import com.ranfa.lib.Settings;
-import com.ranfa.lib.Song;
+import com.ranfa.lib.Suffix;
import com.ranfa.lib.TwitterIntegration;
import com.ranfa.lib.Version;
import com.ranfa.lib.concurrent.CountedThreadFactory;
+import com.ranfa.lib.database.EstimateAlbumTypeCycle;
+import com.ranfa.lib.database.Scraping;
+import com.ranfa.lib.database.Song;
+import com.ranfa.lib.handler.CrashHandler;
import com.ranfa.lib.songinfo.FetchFromAPI;
-@Version(major = 3, minor = 1, patch = 0)
+@Version(major = 4, minor = 0, patch = 1, suffix = Suffix.BETA)
public class DelesteRandomSelector extends JFrame {
private static ArrayList<Song> selectedSongsList = new ArrayList<>();
private JScrollPane scrollPane;
private JTextArea textArea;
private JTabbedPane tabbedPane;
- private JPanel panelTool;
+ private JPanel panelInfo;
private JPanel panelNorthTool;
private JLabel labelSubToolTitle;
private JLabel labelVersionTool;
private JPanel panelCenterTool;
- private JLabel lblNewLabel;
+ private JLabel labelInfoPlaySongs;
private JLabel labelSongNameToolTitle;
private JLabel labelSongNameToolTip;
private JLabel labelAttributeToolTitle;
this.btnImport.setEnabled(true);
this.btnImport.setText(Messages.MSGNarrowingDownSongs.toString());
};
+ private JLabel labelToolProgress;
+ public static JProgressBar progressTool;
+ public static JLabel labelInfoProgressSongName;
+ private JPanel panelScore;
+ private JPanel panelScoreNorth;
+ private JPanel panelScoreCenter;
+ private JLabel labelScoreTitle;
+ private JLabel labelScoreVersion;
/**
* Launch the application.
public DelesteRandomSelector() {
ExecutorService es = Executors.newCachedThreadPool(new CountedThreadFactory(() -> "DRS", "AsyncEventInquerier", false));
this.contentPane = new JPanel();
+ // output system info phase
+ CompletableFuture.runAsync(() -> {
+ CrashHandler handle = new CrashHandler();
+ handle.outSystemInfo();
+ }, es).whenCompleteAsync((ret, ex) -> {
+ if(ex != null) {
+ logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(ex);
+ if(ex instanceof NullPointerException) {
+ handle.execute();
+ }
+ handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
+ }
+ }, es);
boolean isFirst = !Scraping.databaseExists();
// database check phase
CompletableFuture.runAsync(() -> {
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(ex);
if(ex instanceof NullPointerException) {
- throw new RuntimeException(ex);
+ handle.execute();
}
- throw new IllegalStateException(ex);
+ handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
CompletableFuture<ArrayList<Song>> getFromJsonFuture = CompletableFuture.supplyAsync(() -> Scraping.getFromJson(), es);
// setting check phase
CompletableFuture.runAsync(() -> {
if(!Settings.fileExists() && !Settings.writeDownJSON()) {
- JOptionPane.showMessageDialog(this, "Exception:NullPointerException\nCannot Keep up! Please re-download this Application!");
- throw new NullPointerException("FATAL: cannot continue!");
+ JOptionPane.showMessageDialog(this, "Exception:NullPointerException\nPlease see crash report for more detail.");
+ CrashHandler handle = new CrashHandler("Failed to generate setting file.", new NullPointerException("FATAL: cannot continue!"));
+ handle.execute();
}
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(ex);
if(ex instanceof NullPointerException) {
- throw new RuntimeException(ex);
+ handle.execute();
}
- throw new IllegalStateException(ex);
+ handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
this.logger.debug("Loading settings...");
this.property.setCheckLibraryUpdates(Settings.needToCheckLibraryUpdates());
this.logger.debug("Window Height: {}", this.property.getWindowHeight());
this.logger.debug("Song Limit: {}", this.property.getSongLimit());
this.logger.debug("SaveScoreLog: {}", this.property.isSaveScoreLog());
+ this.setBounds(100, 100, this.property.getWindowWidth(), this.property.getWindowHeight());
if(this.property.isCheckVersion()) {
this.softwareUpdateFuture = CompletableFuture.runAsync(() -> CheckVersion.needToBeUpdated(), es);
}
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
- throw new IllegalStateException(ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
getWholeDataFuture.thenAcceptAsync(list -> this.logger.info("Scraping data size:" + list.size()), es);
}, es);
this.logger.debug("Version: {}", CheckVersion.getVersion());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // this.setBounds(100, 100, this.property.getWindowWidth(), this.property.getWindowHeight());
- this.setBounds(100, 100, 960, 540);
+ // this.setBounds(100, 100, 960, 643);
this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
this.setContentPane(this.contentPane);
contentPane.setLayout(new CardLayout(0, 0));
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
- throw new IllegalStateException(ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
});
try {
builder.start();
} catch (IOException e1) {
- logger.error("Cannot start external jar file. maybe are you running this with mac or linux?", e);
+ logger.error("Exception was thrown during concurrent process", e1);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(e1));
+ handle.execute();
}
- }).whenCompleteAsync((ret, ex) -> {
+ }, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
- throw new RuntimeException(ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
- });
+ }, es);
});
panelEastMain.add(btnConfig, "2, 6, fill, fill");
DelesteRandomSelector.this.integratorBool = true;
DelesteRandomSelector.this.logger.info("show up completed.");
labelCurrentSongOrderTool.setText("null");
+ progressTool.setValue(0);
listToolMapDataFuture = CompletableFuture.supplyAsync(() -> {
List<String> data = toolIntegrateList.stream()
.map(s -> s.getName())
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
});
impl = new ManualUpdateThreadImpl();
CompletableFuture.runAsync(impl, es).whenCompleteAsync((t, u) -> {
if(u != null) {
- logger.warn("Exception while processing update manually.", e);
+ logger.warn("Exception while processing update manually.", u);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(u));
+ handle.execute();
JOptionPane.showMessageDialog(null, "There was a problem during processing library update manually.\nIf this appears repeatedly, please contact developer with your app log.");
}
}, es);
}
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
- logger.error("Exception was thrown during concurrent process");
+ logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
});
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.addChangeListener(e -> {
CompletableFuture.runAsync(() -> {
+ labelToolProgress.setText(Messages.MSGAPIWaitAPIFetch.toString());
String currentTabName = tabbedPane.getTitleAt(tabbedPane.getSelectedIndex());
- if(currentTabName.equals("SubTools") && labelCurrentSongOrderTool.getText().equals("null")) {
+ if(currentTabName.equals("SongInfo") && labelCurrentSongOrderTool.getText().equals("null")) {
logger.info("Detected switching tool tab");
listToolMapData = listToolMapDataFuture.join();
+ if(toolIntegrateList == null) {
+ return;
+ }
Song firstSong = toolIntegrateList.get(0);
Map<String, String> fetchMap = new HashMap<>();
for(Map<String, String> tmpMap : listToolMapData) {
labelLyricToolTip.setText(fetchMap.get("lyric"));
labelComposerToolTip.setText(fetchMap.get("composer"));
labelArrangeToolTip.setText(fetchMap.get("arrange"));
- labelMemberToolTip.setText(fetchMap.get("member"));
+ labelMemberToolTip.setText("<html><body>" + fetchMap.get("member") + "</html></body>");
}
}, es).whenCompleteAsync((ret, ex) -> {
+ labelToolProgress.setText("Information parse Complete.");
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
+ CrashHandler handle = new CrashHandler(new IllegalStateException(ex));
+ handle.execute();
}
}, es);
});
tabbedPane.addTab("Main", null, panelMain, null);
contentPane.add(tabbedPane, "name_307238585319500");
- panelTool = new JPanel();
- tabbedPane.addTab("SubTools", null, panelTool, null);
- panelTool.setLayout(new BorderLayout(0, 0));
+ panelInfo = new JPanel();
+ tabbedPane.addTab("SongInfo", null, panelInfo, null);
+ panelInfo.setLayout(new BorderLayout(0, 0));
panelNorthTool = new JPanel();
- panelTool.add(panelNorthTool, BorderLayout.NORTH);
+ panelInfo.add(panelNorthTool, BorderLayout.NORTH);
panelNorthTool.setLayout(new FormLayout(new ColumnSpec[] {
ColumnSpec.decode("center:max(524dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
new RowSpec[] {
RowSpec.decode("max(16dlu;default)"),}));
- labelSubToolTitle = new JLabel("補助ツール");
+ labelSubToolTitle = new JLabel("楽曲情報");
labelSubToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 16));
panelNorthTool.add(labelSubToolTitle, "1, 1");
panelNorthTool.add(labelVersionTool, "3, 1");
panelCenterTool = new JPanel();
- panelTool.add(panelCenterTool, BorderLayout.CENTER);
+ panelInfo.add(panelCenterTool, BorderLayout.CENTER);
panelCenterTool.setLayout(new FormLayout(new ColumnSpec[] {
FormSpecs.RELATED_GAP_COLSPEC,
ColumnSpec.decode("max(40dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
ColumnSpec.decode("10dlu"),
FormSpecs.RELATED_GAP_COLSPEC,
- ColumnSpec.decode("max(10dlu;default)"),
+ ColumnSpec.decode("max(12dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
ColumnSpec.decode("max(90dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
- FormSpecs.DEFAULT_COLSPEC,
+ ColumnSpec.decode("max(14dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
- FormSpecs.DEFAULT_COLSPEC,
FormSpecs.RELATED_GAP_COLSPEC,
- FormSpecs.DEFAULT_COLSPEC,
+ ColumnSpec.decode("max(14dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
ColumnSpec.decode("max(90dlu;default)"),
FormSpecs.RELATED_GAP_COLSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
+ FormSpecs.DEFAULT_ROWSPEC,
+ FormSpecs.RELATED_GAP_ROWSPEC,
+ FormSpecs.DEFAULT_ROWSPEC,
+ FormSpecs.RELATED_GAP_ROWSPEC,
+ FormSpecs.DEFAULT_ROWSPEC,
+ FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,}));
- lblNewLabel = new JLabel("今回プレイした楽曲");
- lblNewLabel.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(lblNewLabel, "2, 2, center, default");
+ labelInfoPlaySongs = new JLabel(Messages.MSGInfoPlayedSongs.toString());
+ labelInfoPlaySongs.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelInfoPlaySongs, "2, 2, center, default");
- labelSongNameToolTitle = new JLabel("Song Name");
+ labelSongNameToolTitle = new JLabel(Messages.MSGInfoSongName.toString());
labelSongNameToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelSongNameToolTitle, "2, 6, center, default");
- labelSongNameToolTip = new JLabel("Please wait...");
+ labelSongNameToolTip = new JLabel(Messages.MSGInfoWait.toString());
labelSongNameToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelSongNameToolTip, "10, 6, center, default");
- labelMemberToolTitle = new JLabel("Member");
- labelMemberToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelMemberToolTitle, "18, 6, center, default");
+ labelLyricToolTitle = new JLabel(Messages.MSGInfoLyricsBy.toString());
+ labelLyricToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelLyricToolTitle, "17, 6, center, default");
- labelMemberToolTip = new JLabel("Please wait...");
- labelMemberToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelMemberToolTip, "26, 6, center, default");
+ labelLyricToolTip = new JLabel(Messages.MSGInfoWait.toString());
+ labelLyricToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelLyricToolTip, "25, 6, center, default");
- labelAttributeToolTitle = new JLabel("Song Attribute");
+ labelAttributeToolTitle = new JLabel(Messages.MSGInfoSongAttribute.toString());
labelAttributeToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelAttributeToolTitle, "2, 10, center, default");
- labelAttributeToolTip = new JLabel("Please wait...");
+ labelAttributeToolTip = new JLabel(Messages.MSGInfoWait.toString());
labelAttributeToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelAttributeToolTip, "10, 10, center, default");
- labelDifficultyToolTitle = new JLabel("Difficulty");
+ labelComposerToolTitle = new JLabel(Messages.MSGInfoComposedBy.toString());
+ labelComposerToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelComposerToolTitle, "17, 10, center, default");
+
+ labelComposerToolTip = new JLabel(Messages.MSGInfoWait.toString());
+ labelComposerToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelComposerToolTip, "25, 10, center, default");
+
+ labelDifficultyToolTitle = new JLabel(Messages.MSGInfoSongDifficulty.toString());
labelDifficultyToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelDifficultyToolTitle, "2, 14, center, default");
- labelDifficultyToolTip = new JLabel("Please wait...");
+ labelDifficultyToolTip = new JLabel(Messages.MSGInfoWait.toString());
labelDifficultyToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelDifficultyToolTip, "10, 14, center, default");
- labelLevelToolTitle = new JLabel("Song Level");
+ labelArrangeToolTitle = new JLabel(Messages.MSGInfoArrangedBy.toString());
+ labelArrangeToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelArrangeToolTitle, "17, 14, center, default");
+
+ labelArrangeToolTip = new JLabel(Messages.MSGInfoWait.toString());
+ labelArrangeToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelArrangeToolTip, "25, 14, center, default");
+
+ labelLevelToolTitle = new JLabel(Messages.MSGInfoSongLevel.toString());
labelLevelToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelLevelToolTitle, "2, 18, center, default");
- labelLevelToolTip = new JLabel("Please wait...");
+ labelLevelToolTip = new JLabel(Messages.MSGInfoWait.toString());
labelLevelToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelLevelToolTip, "10, 18, center, default");
- labelNotesToolTitle = new JLabel("Notes");
+ labelMemberToolTitle = new JLabel(Messages.MSGInfoMember.toString());
+ labelMemberToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelMemberToolTitle, "17, 18, center, default");
+
+ labelMemberToolTip = new JLabel(Messages.MSGInfoWait.toString());
+ labelMemberToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelMemberToolTip, "25, 18, center, default");
+
+ labelNotesToolTitle = new JLabel(Messages.MSGInfoSongNotes.toString());
labelNotesToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelNotesToolTitle, "2, 22, center, default");
- labelNotesToolTip = new JLabel("Please wait...");
+ labelNotesToolTip = new JLabel(Messages.MSGInfoWait.toString());
labelNotesToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
panelCenterTool.add(labelNotesToolTip, "10, 22, center, default");
- btnPrevSongTool = new JButton("prev");
- btnPrevSongTool.addActionListener(e -> {
+ btnNextSongTool = new JButton("next");
+ btnNextSongTool.addActionListener(e -> {
CompletableFuture.runAsync(() -> {
int currentIndex = Integer.parseInt(labelCurrentSongOrderTool.getText()) - 1;
- if(currentIndex != 0) {
- Song prevSong = toolIntegrateList.get(currentIndex - 1);
- logger.info("currently : {} Next: {}", currentIndex + 1, currentIndex);
- logger.info("prevSong: {}", prevSong);
+ if(currentIndex != property.getSongLimit() - 1) {
+ Song nextSong = toolIntegrateList.get(currentIndex + 1);
+ logger.info("currently : {} Next: {}", currentIndex + 1, currentIndex + 2);
+ logger.info("nextSong: {}", nextSong);
Map<String, String> fetchMap = new HashMap<>();
for(Map<String, String> tmpMap : listToolMapData) {
String normalizeApiName = Normalizer.normalize(tmpMap.get("songname").toString(), Normalizer.Form.NFKD);
- String normalizeLocalName = Normalizer.normalize(prevSong.getName(), Normalizer.Form.NFKD);
+ String normalizeLocalName = Normalizer.normalize(nextSong.getName(), Normalizer.Form.NFKD);
if(normalizeApiName.equals(normalizeLocalName)) {
fetchMap = tmpMap;
break;
}
}
- labelSongNameToolTip.setText(prevSong.getName());
- labelAttributeToolTip.setText(prevSong.getAttribute());
- labelDifficultyToolTip.setText(prevSong.getDifficulty());
- labelLevelToolTip.setText(String.valueOf(prevSong.getLevel()));
- labelNotesToolTip.setText(String.valueOf(prevSong.getNotes()));
- labelCurrentSongOrderTool.setText(String.valueOf(currentIndex));
+ labelSongNameToolTip.setText(nextSong.getName());
+ labelAttributeToolTip.setText(nextSong.getAttribute());
+ labelDifficultyToolTip.setText(nextSong.getDifficulty());
+ labelLevelToolTip.setText(String.valueOf(nextSong.getLevel()));
+ labelNotesToolTip.setText(String.valueOf(nextSong.getNotes()));
+ labelCurrentSongOrderTool.setText(String.valueOf(currentIndex + 2));
labelLyricToolTip.setText(fetchMap.get("lyric"));
labelComposerToolTip.setText(fetchMap.get("composer"));
labelArrangeToolTip.setText(fetchMap.get("arrange"));
- labelMemberToolTip.setText(fetchMap.get("member"));
+ labelMemberToolTip.setText("<html><body>" + fetchMap.get("member") + "</html></body>");
}
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
}, es);
});
- labelLyricToolTitle = new JLabel("Lyrics By");
- labelLyricToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelLyricToolTitle, "2, 26, center, default");
-
- labelLyricToolTip = new JLabel("Please wait...");
- labelLyricToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelLyricToolTip, "10, 26, center, default");
-
- labelComposerToolTitle = new JLabel("Composed By");
- labelComposerToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelComposerToolTitle, "2, 30, center, default");
-
- labelComposerToolTip = new JLabel("Please wait...");
- labelComposerToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelComposerToolTip, "10, 30, center, default");
-
- labelArrangeToolTitle = new JLabel("Arranged By");
- labelArrangeToolTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelArrangeToolTitle, "2, 34, center, default");
-
- labelArrangeToolTip = new JLabel("Please wait...");
- labelArrangeToolTip.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(labelArrangeToolTip, "10, 34, center, default");
- btnPrevSongTool.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(btnPrevSongTool, "2, 36");
-
- btnNextSongTool = new JButton("next");
- btnNextSongTool.addActionListener(e -> {
+ btnPrevSongTool = new JButton("prev");
+ btnPrevSongTool.addActionListener(e -> {
CompletableFuture.runAsync(() -> {
int currentIndex = Integer.parseInt(labelCurrentSongOrderTool.getText()) - 1;
- if(currentIndex != property.getSongLimit() - 1) {
- Song nextSong = toolIntegrateList.get(currentIndex + 1);
- logger.info("currently : {} Next: {}", currentIndex + 1, currentIndex + 2);
- logger.info("nextSong: {}", nextSong);
+ if(currentIndex != 0) {
+ Song prevSong = toolIntegrateList.get(currentIndex - 1);
+ logger.info("currently : {} Next: {}", currentIndex + 1, currentIndex);
+ logger.info("prevSong: {}", prevSong);
Map<String, String> fetchMap = new HashMap<>();
for(Map<String, String> tmpMap : listToolMapData) {
String normalizeApiName = Normalizer.normalize(tmpMap.get("songname").toString(), Normalizer.Form.NFKD);
- String normalizeLocalName = Normalizer.normalize(nextSong.getName(), Normalizer.Form.NFKD);
+ String normalizeLocalName = Normalizer.normalize(prevSong.getName(), Normalizer.Form.NFKD);
if(normalizeApiName.equals(normalizeLocalName)) {
fetchMap = tmpMap;
break;
}
}
- labelSongNameToolTip.setText(nextSong.getName());
- labelAttributeToolTip.setText(nextSong.getAttribute());
- labelDifficultyToolTip.setText(nextSong.getDifficulty());
- labelLevelToolTip.setText(String.valueOf(nextSong.getLevel()));
- labelNotesToolTip.setText(String.valueOf(nextSong.getNotes()));
- labelCurrentSongOrderTool.setText(String.valueOf(currentIndex + 2));
+ labelSongNameToolTip.setText(prevSong.getName());
+ labelAttributeToolTip.setText(prevSong.getAttribute());
+ labelDifficultyToolTip.setText(prevSong.getDifficulty());
+ labelLevelToolTip.setText(String.valueOf(prevSong.getLevel()));
+ labelNotesToolTip.setText(String.valueOf(prevSong.getNotes()));
+ labelCurrentSongOrderTool.setText(String.valueOf(currentIndex));
labelLyricToolTip.setText(fetchMap.get("lyric"));
labelComposerToolTip.setText(fetchMap.get("composer"));
labelArrangeToolTip.setText(fetchMap.get("arrange"));
- labelMemberToolTip.setText(fetchMap.get("member"));
+ labelMemberToolTip.setText("<html><body>" + fetchMap.get("member") + "</html></body>");
}
}, es).whenCompleteAsync((ret, ex) -> {
if(ex != null) {
logger.error("Exception was thrown during concurrent process", ex);
}
- });
+ }, es);
});
+ btnPrevSongTool.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(btnPrevSongTool, "10, 28");
labelCurrentSongOrderTool = new JLabel("null");
- panelCenterTool.add(labelCurrentSongOrderTool, "4, 36");
+ panelCenterTool.add(labelCurrentSongOrderTool, "12, 28");
labelSlashTool = new JLabel("/");
- panelCenterTool.add(labelSlashTool, "6, 36");
+ panelCenterTool.add(labelSlashTool, "14, 28");
labelSongLimitTool = new JLabel(String.valueOf(this.property.getSongLimit()));
- panelCenterTool.add(labelSongLimitTool, "8, 36");
+ panelCenterTool.add(labelSongLimitTool, "15, 28");
btnNextSongTool.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(btnNextSongTool, "10, 36");
+ panelCenterTool.add(btnNextSongTool, "17, 28");
- btnMoreInfoTool = new JButton("More Information");
+ btnMoreInfoTool = new JButton(Messages.MSGInfoOpenBrowser.toString());
btnMoreInfoTool.addActionListener(e -> {
CompletableFuture.runAsync(() -> {
int currentIndex = Integer.parseInt(labelCurrentSongOrderTool.getText()) - 1;
}, es);
});
btnMoreInfoTool.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
- panelCenterTool.add(btnMoreInfoTool, "18, 36");
+ panelCenterTool.add(btnMoreInfoTool, "25, 28");
+
+ labelToolProgress = new JLabel(Messages.MSGAPIWaitAPIFetch.toString());
+ labelToolProgress.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelToolProgress, "10, 32, center, default");
+
+ progressTool = new JProgressBar();
+ progressTool.setStringPainted(true);
+ progressTool.setValue(0);
+ progressTool.setMaximum(property.getSongLimit());
+ panelCenterTool.add(progressTool, "17, 32");
+
+ labelInfoProgressSongName = new JLabel("Processing:");
+ labelInfoProgressSongName.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 12));
+ panelCenterTool.add(labelInfoProgressSongName, "10, 34");
+
+ panelScore = new JPanel();
+ tabbedPane.addTab("Scores", null, panelScore, null);
+ panelScore.setLayout(new BorderLayout(0, 0));
+
+ panelScoreNorth = new JPanel();
+ panelScore.add(panelScoreNorth, BorderLayout.NORTH);
+ panelScoreNorth.setLayout(new FormLayout(new ColumnSpec[] {
+ ColumnSpec.decode("828px"),
+ FormSpecs.RELATED_GAP_COLSPEC,
+ ColumnSpec.decode("max(53dlu;default)"),},
+ new RowSpec[] {
+ RowSpec.decode("20px"),}));
+
+ labelScoreTitle = new JLabel("スコア、ファン計算");
+ labelScoreTitle.setFont(new Font("UD デジタル 教科書体 NP-B", Font.PLAIN, 16));
+ panelScoreNorth.add(labelScoreTitle, "1, 1, center, center");
+
+ labelScoreVersion = new JLabel(CheckVersion.getVersion());
+ labelScoreVersion.setFont(new Font("SansSerif", Font.BOLD, 12));
+ panelScoreNorth.add(labelScoreVersion, "3, 1, center, default");
+
+ panelScoreCenter = new JPanel();
+ panelScore.add(panelScoreCenter, BorderLayout.CENTER);
if(isFirst || !this.property.isCheckLibraryUpdates()) {
setEnabled.run();
}