Package net.sf.mzmine.desktop.impl

Source Code of net.sf.mzmine.desktop.impl.StatusBar

/*
* Copyright 2006-2012 The MZmine 2 Development Team
*
* This file is part of MZmine 2.
*
* MZmine 2 is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* MZmine 2 is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* MZmine 2; if not, write to the Free Software Foundation, Inc., 51 Franklin St,
* Fifth Floor, Boston, MA 02110-1301 USA
*/

package net.sf.mzmine.desktop.impl;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.logging.Logger;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;

import net.sf.mzmine.util.components.LabeledProgressBar;

public class StatusBar extends JPanel implements Runnable, MouseListener {

  // frequency in milliseconds how often to update free memory label
  public static final int MEMORY_LABEL_UPDATE_FREQUENCY = 1000;
  public static final int STATUS_BAR_HEIGHT = 20;
  public static final Font statusBarFont = new Font("SansSerif", Font.PLAIN,
      12);

  private Logger logger = Logger.getLogger(this.getClass().getName());

  private JPanel statusTextPanel, memoryPanel;
  private JLabel statusTextLabel;
  private LabeledProgressBar memoryLabel;

  public StatusBar() {

    setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
    setBorder(new EtchedBorder());

    statusTextPanel = new JPanel();
    statusTextPanel.setLayout(new BoxLayout(statusTextPanel,
        BoxLayout.X_AXIS));
    statusTextPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED));

    statusTextLabel = new JLabel();
    statusTextLabel.setFont(statusBarFont);
    statusTextLabel.setMinimumSize(new Dimension(100, STATUS_BAR_HEIGHT));
    statusTextLabel
        .setPreferredSize(new Dimension(3200, STATUS_BAR_HEIGHT));

    statusTextPanel.add(Box.createRigidArea(new Dimension(5,
        STATUS_BAR_HEIGHT)));
    statusTextPanel.add(statusTextLabel);

    add(statusTextPanel);

    memoryLabel = new LabeledProgressBar();
    memoryPanel = new JPanel();
    memoryPanel.setLayout(new BoxLayout(memoryPanel, BoxLayout.X_AXIS));
    memoryPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED));
    memoryPanel.add(Box
        .createRigidArea(new Dimension(10, STATUS_BAR_HEIGHT)));
    memoryPanel.add(memoryLabel);
    memoryPanel.add(Box
        .createRigidArea(new Dimension(10, STATUS_BAR_HEIGHT)));

    memoryLabel.addMouseListener(this);

    add(memoryPanel);

    Thread memoryLabelUpdaterThread = new Thread(this,
        "Memory label updater thread");
    memoryLabelUpdaterThread.start();

  }

  /**
   * Set the text displayed in status bar
   *
   * @param statusText
   *            Text for status bar
   * @param textColor
   *            Text color
   */
  public void setStatusText(String statusText, Color textColor) {
    statusTextLabel.setText(statusText);
    statusTextLabel.setForeground(textColor);
  }

  /**
   * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
   */
  public void mousePressed(MouseEvent event) {
    // do nothing

  }

  /**
   * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
   */
  public void mouseReleased(MouseEvent event) {
    // do nothing

  }

  /**
   * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
   */
  public void mouseEntered(MouseEvent event) {
    // do nothing

  }

  /**
   * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
   */
  public void mouseExited(MouseEvent event) {
    // do nothing

  }

  /**
   * @see java.lang.Runnable#run()
   */
  public synchronized void run() {

    while (true) {

      // get free memory in megabytes
      long freeMem = Runtime.getRuntime().freeMemory() / (1024 * 1024);
      long totalMem = Runtime.getRuntime().totalMemory() / (1024 * 1024);
      double fullMem = ((double) (totalMem - freeMem)) / totalMem;

      memoryLabel.setValue(fullMem, freeMem + "MB free");
      memoryLabel.setToolTipText("JVM memory: " + freeMem + "MB, "
          + totalMem + "MB total");

      try {
        wait(MEMORY_LABEL_UPDATE_FREQUENCY);
      } catch (InterruptedException e) {
        // ignore
      }

    }

  }

  public void mouseClicked(MouseEvent arg0) {
    logger.info("Running garbage collector");
    System.gc();
  }

}
TOP

Related Classes of net.sf.mzmine.desktop.impl.StatusBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.