/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.navigator.utils; import org.apache.commons.lang.StringUtils; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Timer; import de.cismet.tools.StaticDebuggingTools; /** * DOCUMENT ME! * * @author thorsten * @version $Revision$, $Date$ */ @org.openide.util.lookup.ServiceProvider(service = CidsClientToolbarItem.class) public class SimpleMemoryMonitoringToolbarWidget extends AbstractAction implements CidsClientToolbarItem { //~ Static fields/initializers --------------------------------------------- static boolean visible = StaticDebuggingTools.checkHomeForFile("cismetMemoryMonitoring"); //~ Instance fields -------------------------------------------------------- private final Timer timer = new Timer(300, new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { final Runtime runtime = Runtime.getRuntime(); final long memory = (long)(runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024; final long totmem = (long)runtime.totalMemory() / 1024 / 1024; SimpleMemoryMonitoringToolbarWidget.this.putValue( Action.NAME, StringUtils.leftPad(Long.toString(memory), 4, '0') + "MB/" + StringUtils.leftPad(Long.toString(totmem), 4, '0') + "MB"); } }); //~ Constructors ----------------------------------------------------------- /** * Creates a new MemoryToolbar object. */ public SimpleMemoryMonitoringToolbarWidget() { this.putValue(Action.NAME, "Memory"); if (isVisible()) { timer.start(); } } //~ Methods ---------------------------------------------------------------- @Override public void actionPerformed(final ActionEvent e) { new Thread() { @Override public void run() { System.gc(); } }.start(); } @Override public String getSorterString() { return "ZZZ"; } /** * DOCUMENT ME! */ public void startTimer() { if (!timer.isRunning()) { timer.start(); } } @Override public final boolean isVisible() { return visible; } }