/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * ResourceMonitor.java * * Created on 15-Apr-2012, 1:04:46 AM */ package webcamstudio.components; import java.awt.Component; import java.util.Timer; import java.util.TimerTask; import webcamstudio.mixers.MasterMixer; /** * * @author patrick */ public class ResourceMonitor extends javax.swing.JPanel { Timer timer = new Timer(); private static ResourceMonitor instance = null; /** Creates new form ResourceMonitor */ private ResourceMonitor() { initComponents(); timer.scheduleAtFixedRate(new ResourceMonitorThread(this), 0, 1000); } public static ResourceMonitor getInstance(){ if (instance==null){ instance = new ResourceMonitor(); } return instance; } public void addMessage(ResourceMonitorLabel label){ label.setBorder(lblFPS.getBorder()); this.add(label); if (label.getEndTime() !=0){ System.err.println(label.getText()); } this.revalidate(); } public void removeMessage(ResourceMonitorLabel label){ this.remove(label); this.revalidate(); this.repaint(); } public void updateInfo(){ long maxMem = Runtime.getRuntime().maxMemory() / 1024 / 1024; long usedMem = ((Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()) / 1024 / 1024); memLevel.setMaximum((int)maxMem); memLevel.setValue((int)usedMem); memLevel.setString(usedMem + "MB/" + maxMem + "MB"); lblFPS.setText(Math.round(MasterMixer.getInstance().getFPS()) + " fps"); lblMixerSize.setText(MasterMixer.getInstance().getWidth()+ "X" + MasterMixer.getInstance().getHeight()); for (Component c: this.getComponents()){ if (c instanceof ResourceMonitorLabel){ ResourceMonitorLabel rml = (ResourceMonitorLabel)c; if (rml.getEndTime() != 0 && rml.getEndTime()< System.currentTimeMillis()){ removeMessage(rml); } } } } /** 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() { memLevel = new javax.swing.JProgressBar(); lblFPS = new javax.swing.JLabel(); lblMixerSize = new javax.swing.JLabel(); setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED)); setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); memLevel.setName("memLevel"); // NOI18N memLevel.setStringPainted(true); add(memLevel); lblFPS.setText("jLabel1"); lblFPS.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED)); lblFPS.setName("lblFPS"); // NOI18N add(lblFPS); lblMixerSize.setText("jLabel1"); lblMixerSize.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED)); lblMixerSize.setName("lblMixerSize"); // NOI18N add(lblMixerSize); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel lblFPS; private javax.swing.JLabel lblMixerSize; private javax.swing.JProgressBar memLevel; // End of variables declaration//GEN-END:variables } class ResourceMonitorThread extends TimerTask{ ResourceMonitor monitor; ResourceMonitorThread(ResourceMonitor m){ monitor=m; } @Override public void run() { monitor.updateInfo(); } }