/* * @(#)JAudioMonitor.java * * Copyright (c) 2012 Werner Randelshofer, Goldau, Switzerland. * All rights reserved. * * You may not use, copy or modify this file, except in compliance with the * license agreement you entered into with Werner Randelshofer. * For details see accompanying license terms. */ package org.monte.screenrecorder; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; /** * JAudioMonitor. * * @author Werner Randelshofer * @version 1.0 2012-07-11 Created. */ public class JAudioMonitor extends javax.swing.JPanel { private Timer timer; private Color semiTransparent=new Color(0x40ffffff,true); private class Handler implements ActionListener { @Override public void actionPerformed(ActionEvent e) { repaint(); } } private Handler handler = new Handler(); private ScreenRecorder recorder; /** Creates new form JAudioMonitor */ public JAudioMonitor() { initComponents(); setOpaque(false); setPreferredSize(new Dimension(7, 16)); setMinimumSize(new Dimension(7, 16)); } public ScreenRecorder getScreenRecorder() { return recorder; } public void setScreenRecorder(ScreenRecorder recorder) { this.recorder = recorder; } public void start() { if (timer == null) { timer = new Timer(250, handler); timer.start(); } } public void stop() { if (timer != null) { timer.stop(); timer = null; } } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); int w = getWidth(); int h = getHeight(); if (recorder != null) { float level = recorder.getAudioLevelLeft(); if (level != -1) { int levelHeight = Math.min(h, (int) (h * 7 * level)); g.setColor(semiTransparent); g.fillRect(0,0,3,h-levelHeight); g.setColor(Color.WHITE); g.fillRect(0, h - levelHeight, 3, levelHeight); } level = recorder.getAudioLevelRight(); if (level != -1) { int levelHeight = Math.min(h, (int) (h * 7 * level)); g.setColor(semiTransparent); g.fillRect(4,0,3,h-levelHeight); g.setColor(Color.WHITE); g.fillRect(4, h - levelHeight, 3, levelHeight); } } } /** 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() { }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }