librejack/src/view/StatisticsUI.java (9752B)
package view; import com.formdev.flatlaf.FlatDarkLaf; import java.io.IOException; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import model.Statistics; /** * GUI to display a pie chart and the following statistics: * <ul> * <li>Wins</li> * <li>Losses</li> * <li>Pushes</li> * </ul> * * @author Michael Neuper * <a href="mailto:michael@michaelneuper.com">michael@michaelneuper.com</a> */ public class StatisticsUI extends javax.swing.JFrame { Statistics stats; /** * Creates new form StatisticsUI */ public StatisticsUI() { try { this.stats = Statistics.load(); } catch (IOException e) { System.err.println(e);; } initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanelNorth = new javax.swing.JPanel(); jLabelStatistics = new javax.swing.JLabel(); jPanelCenter = new javax.swing.JPanel(); statisticsChart1 = new view.StatisticsChart(); jPanelStatisticsText = new javax.swing.JPanel(); jLabelLosses = new javax.swing.JLabel(); jLabelWins = new javax.swing.JLabel(); jLabelPushes = new javax.swing.JLabel(); jLabelWinsAmount = new javax.swing.JLabel(); jLabelLossesAmount = new javax.swing.JLabel(); jLabelPushesAmount = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Statistics"); setAlwaysOnTop(true); jLabelStatistics.setFont(new java.awt.Font("Segoe UI", 1, 48)); // NOI18N jLabelStatistics.setText("Statistics"); javax.swing.GroupLayout jPanelNorthLayout = new javax.swing.GroupLayout(jPanelNorth); jPanelNorth.setLayout(jPanelNorthLayout); jPanelNorthLayout.setHorizontalGroup( jPanelNorthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelNorthLayout.createSequentialGroup() .addGap(349, 349, 349) .addComponent(jLabelStatistics) .addContainerGap(432, Short.MAX_VALUE)) ); jPanelNorthLayout.setVerticalGroup( jPanelNorthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelNorthLayout.createSequentialGroup() .addGap(16, 16, 16) .addComponent(jLabelStatistics) .addContainerGap(22, Short.MAX_VALUE)) ); getContentPane().add(jPanelNorth, java.awt.BorderLayout.NORTH); jLabelLosses.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N jLabelLosses.setText("Losses:"); jLabelWins.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N jLabelWins.setText("Wins:"); jLabelPushes.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N jLabelPushes.setText("Pushes:"); jLabelWinsAmount.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N jLabelWinsAmount.setText("" + stats.getWins()); jLabelLossesAmount.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N jLabelLossesAmount.setText("" + stats.getLosses()); jLabelPushesAmount.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N jLabelPushesAmount.setText("" + stats.getPushes()); javax.swing.GroupLayout jPanelStatisticsTextLayout = new javax.swing.GroupLayout(jPanelStatisticsText); jPanelStatisticsText.setLayout(jPanelStatisticsTextLayout); jPanelStatisticsTextLayout.setHorizontalGroup( jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStatisticsTextLayout.createSequentialGroup() .addGap(40, 40, 40) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelPushes) .addComponent(jLabelLosses) .addComponent(jLabelWins)) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStatisticsTextLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelWinsAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabelPushesAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(115, 115, 115)) .addGroup(jPanelStatisticsTextLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabelLossesAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) ); jPanelStatisticsTextLayout.setVerticalGroup( jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelStatisticsTextLayout.createSequentialGroup() .addGap(94, 94, 94) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelWinsAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabelWins)) .addGap(27, 27, 27) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelLosses) .addComponent(jLabelLossesAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(26, 26, 26) .addGroup(jPanelStatisticsTextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelPushes) .addComponent(jLabelPushesAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanelCenterLayout = new javax.swing.GroupLayout(jPanelCenter); jPanelCenter.setLayout(jPanelCenterLayout); jPanelCenterLayout.setHorizontalGroup( jPanelCenterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelCenterLayout.createSequentialGroup() .addComponent(jPanelStatisticsText, javax.swing.GroupLayout.PREFERRED_SIZE, 286, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(statisticsChart1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanelCenterLayout.setVerticalGroup( jPanelCenterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanelStatisticsText, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelCenterLayout.createSequentialGroup() .addContainerGap(13, Short.MAX_VALUE) .addComponent(statisticsChart1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); getContentPane().add(jPanelCenter, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold>//GEN-END:initComponents /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the FlatDarkLaf look and feel */ try { UIManager.setLookAndFeel(new FlatDarkLaf()); } catch (UnsupportedLookAndFeelException e) { System.err.println(e); } /* Create and display the form */ java.awt.EventQueue.invokeLater(() -> { new StatisticsUI().setVisible(true); }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabelLosses; private javax.swing.JLabel jLabelLossesAmount; private javax.swing.JLabel jLabelPushes; private javax.swing.JLabel jLabelPushesAmount; private javax.swing.JLabel jLabelStatistics; private javax.swing.JLabel jLabelWins; private javax.swing.JLabel jLabelWinsAmount; private javax.swing.JPanel jPanelCenter; private javax.swing.JPanel jPanelNorth; private javax.swing.JPanel jPanelStatisticsText; private view.StatisticsChart statisticsChart1; // End of variables declaration//GEN-END:variables }