Author: bback
Date: 2006-02-19 17:11:00 +0000 (Sun, 19 Feb 2006)
New Revision: 8070

Removed:
   trunk/apps/frost-0.7/source/frost/util/gui/MemoryMonitor.java
Log:
enhancements for memory monitor

Deleted: trunk/apps/frost-0.7/source/frost/util/gui/MemoryMonitor.java
===================================================================
--- trunk/apps/frost-0.7/source/frost/util/gui/MemoryMonitor.java       
2006-02-19 14:14:42 UTC (rev 8069)
+++ trunk/apps/frost-0.7/source/frost/util/gui/MemoryMonitor.java       
2006-02-19 17:11:00 UTC (rev 8070)
@@ -1,360 +0,0 @@
-package frost.util.gui;
-/*
- * @(#)MemoryMonitor.java      1.26 99/04/23
- *
- * Copyright (c) 1998, 1999 by Sun Microsystems, Inc. All Rights Reserved.
- * 
- * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
- * modify and redistribute this software in source and binary code form,
- * provided that i) this copyright notice and license appear on all copies of
- * the software; and ii) Licensee does not utilize the software in a manner
- * which is disparaging to Sun.
- * 
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
- * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
- * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
- * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
- * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
- * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
- * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
- * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
- * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- * 
- * This software is not designed or intended for use in on-line control of
- * aircraft, air traffic, aircraft navigation or aircraft communications; or in
- * the design, construction, operation or maintenance of any nuclear
- * facility. Licensee represents and warrants that it will not use or
- * redistribute the Software for such purposes.
- */
-
-/**
- * 05/07/31, added sequential system.gc() call
- */
-
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.geom.*;
-import java.awt.image.*;
-
-import javax.swing.*;
-
-/**
- * Tracks Memory allocated & used, displayed in graph form.
- */
-public class MemoryMonitor extends JPanel {
-
-    public Surface surf;
-//    JPanel controls;
-//    boolean doControls;
-//    JTextField tf;
-//    JCheckBox box;
-    
-    JFrame dialog = null;
-    boolean isShown = false;
-    
-    private JFrame getDialog() {
-        if( dialog == null ) {
-            dialog = new JFrame();
-            dialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
-            dialog.add(this);
-            dialog.setSize(225,130);
-            dialog.setTitle("Frost Memory Monitor");
-            dialog.addWindowListener(new WindowAdapter() {
-                public void windowClosing(WindowEvent e) {
-                    surf.stop();
-                    isShown = false;
-                    dialog.setVisible(false);
-                }
-            });
-        }
-        return dialog;
-    }
-
-    public void showDialog() {
-        if( isShown ) {
-            return;
-        }
-        surf.start();
-        isShown = true;
-        getDialog().setVisible(true);
-    }
-    
-    public MemoryMonitor() {
-        setLayout(new BorderLayout());
-//        setBorder(new TitledBorder(new EtchedBorder(), "Memory Monitor"));
-        add(surf = new Surface());
-//        controls = new JPanel();
-//        controls.setToolTipText("click to start/stop monitoring + memory 
saving");
-//        Font font = new Font("serif", Font.PLAIN, 10);
-//        JLabel label;
-//        tf = new JTextField("1000");
-//        tf.setPreferredSize(new Dimension(40,20));
-//        controls.add(tf);
-//        controls.add(label = new JLabel("ms"));
-//
-//        box = new JCheckBox("call gc()");
-//        box.setPreferredSize(new Dimension(80,20));
-//        box.setSelected(true);
-//        controls.add(box);
-//
-//        controls.setPreferredSize(new Dimension(100, 80));
-//        controls.setMaximumSize(new Dimension(100, 80));
-//        label.setFont(font);
-//        label.setForeground(Color.black);
-//        addMouseListener(new MouseAdapter() {
-//            public void mouseClicked(MouseEvent e)
-//                     {
-//               removeAll();
-//
-//                if ((doControls = !doControls))
-//                             {
-//                   surf.stop();
-//                   add(controls);
-//                             }
-//                             else
-//                             {
-//                   try { 
-//                                     long val = 
Long.parseLong(tf.getText().trim());
-//
-//                                     if (val >= 50)
-//                                             surf.sleepAmount = val;
-//                   } catch (Exception ex) {}
-//
-//                   surf.start();
-//                   add(surf);
-//                             }
-//                             validate();
-//                             repaint();
-//            }
-//        });
-    }
-
-
-    public class Surface extends JPanel implements Runnable {
-
-        public Thread thread;
-        public long sleepAmount = 1000;
-        private int w, h;
-        private BufferedImage bimg;
-        private Graphics2D big;
-        private Font font = new Font("Times New Roman", Font.PLAIN, 11);
-        private Runtime r = Runtime.getRuntime();
-        private int columnInc;
-        private int pts[];
-        private int ptNum;
-        private int ascent, descent;
-        private float freeMemory, totalMemory;
-        private Rectangle graphOutlineRect = new Rectangle();
-        private Rectangle2D mfRect = new Rectangle2D.Float();
-        private Rectangle2D muRect = new Rectangle2D.Float();
-        private Line2D graphLine = new Line2D.Float();
-        private Color graphColor = new Color(46, 139, 87);
-        private Color mfColor = new Color(0, 100, 0);
-        private String usedStr;
-
-               private int gc_counter = 0;
-
-        public Surface() {
-            setBackground(Color.black);
-//            addMouseListener(new MouseAdapter() {
-//                public void mouseClicked(MouseEvent e) {
-//                    if (thread == null) start(); else stop();
-//                }
-//            });
-        }
-
-        public Dimension getMinimumSize() {
-            return getPreferredSize();
-        }
-
-        public Dimension getMaximumSize() {
-            return getPreferredSize();
-        }
-
-        public Dimension getPreferredSize() {
-            return new Dimension(100, 80);
-        }
-
-            
-        public void paint(Graphics g) {
-
-            if (big == null) {
-                return;
-            }
-
-            big.setBackground(getBackground());
-            big.clearRect(0,0,w,h);
-
-            float freeMemory = (float) r.freeMemory();
-            float totalMemory = (float) r.totalMemory();
-
-            // .. Draw allocated and used strings ..
-            big.setColor(Color.green);
-            big.drawString(String.valueOf((int) totalMemory/1024) + "K 
allocated",  4.0f, (float) ascent+0.5f);
-            usedStr = String.valueOf(((int) (totalMemory - freeMemory))/1024) 
-                + "K used";
-            big.drawString(usedStr, 4, h-descent);
-
-            // Calculate remaining size
-            float ssH = ascent + descent;
-            float remainingHeight = (float) (h - (ssH*2) - 0.5f);
-            float blockHeight = remainingHeight/10;
-            float blockWidth = 20.0f;
-            float remainingWidth = (float) (w - blockWidth - 10);
-
-            // .. Memory Free ..
-            big.setColor(mfColor);
-            int MemUsage = (int) ((freeMemory / totalMemory) * 10);
-            int i = 0;
-            for ( ; i < MemUsage ; i++) { 
-                mfRect.setRect(5,(float) ssH+i*blockHeight,
-                                blockWidth,(float) blockHeight-1);
-                big.fill(mfRect);
-            }
-
-            // .. Memory Used ..
-            big.setColor(Color.green);
-            for ( ; i < 10; i++)  {
-                muRect.setRect(5,(float) ssH+i*blockHeight,
-                                blockWidth,(float) blockHeight-1);
-                big.fill(muRect);
-            }
-
-            // .. Draw History Graph ..
-            big.setColor(graphColor);
-            int graphX = 30;
-            int graphY = (int) ssH;
-            int graphW = w - graphX - 5;
-            int graphH = (int) remainingHeight;
-            graphOutlineRect.setRect(graphX, graphY, graphW, graphH);
-            big.draw(graphOutlineRect);
-
-            int graphRow = graphH/10;
-
-            // .. Draw row ..
-            for (int j = graphY; j <= graphH+graphY; j += graphRow) {
-                graphLine.setLine(graphX,j,graphX+graphW,j);
-                big.draw(graphLine);
-            }
-        
-            // .. Draw animated column movement ..
-            int graphColumn = graphW/15;
-
-            if (columnInc == 0) {
-                columnInc = graphColumn;
-            }
-
-            for (int j = graphX+columnInc; j < graphW+graphX; j+=graphColumn) {
-                graphLine.setLine(j,graphY,j,graphY+graphH);
-                big.draw(graphLine);
-            }
-
-            --columnInc;
-
-            if (pts == null) {
-                pts = new int[graphW];
-                ptNum = 0;
-            } else if (pts.length != graphW) {
-                int tmp[] = null;
-                if (ptNum < graphW) {     
-                    tmp = new int[ptNum];
-                    System.arraycopy(pts, 0, tmp, 0, tmp.length);
-                } else {        
-                    tmp = new int[graphW];
-                    System.arraycopy(pts, pts.length-tmp.length, tmp, 0, 
tmp.length);
-                    ptNum = tmp.length - 2;
-                }
-                pts = new int[graphW];
-                System.arraycopy(tmp, 0, pts, 0, tmp.length);
-            } else {
-                big.setColor(Color.yellow);
-                pts[ptNum] = (int)(graphY+graphH*(freeMemory/totalMemory));
-                for (int j=graphX+graphW-ptNum, k=0;k < ptNum; k++, j++) {
-                    if (k != 0) {
-                        if (pts[k] != pts[k-1]) {
-                            big.drawLine(j-1, pts[k-1], j, pts[k]);
-                        } else {
-                            big.fillRect(j, pts[k], 1, 1);
-                        }
-                    }
-                }
-                if (ptNum+2 == pts.length) {
-                    // throw out oldest point
-                    for (int j = 1;j < ptNum; j++) {
-                        pts[j-1] = pts[j];
-                    }
-                    --ptNum;
-                } else {
-                    ptNum++;
-                }
-            }
-
-                       if (gc_counter > 4)
-                       {
-                               //if (!Common.isRunningProcess() && thread != 
null && box.isSelected() && freeMemory < 2048000L)
-                               if (thread != null /*&& box.isSelected()*/ && 
freeMemory < 2048000L)
-                               {
-                                       big.setColor(Color.red);
-                                       big.fillRect(84, h - descent - 6, 4, 4);
-
-                                       System.gc();
-                               }
-
-                               gc_counter = 0;
-                       }
-                       else
-                               gc_counter++;
-
-            g.drawImage(bimg, 0, 0, this);
-        }
-
-
-        public void start() {
-            thread = new Thread(this);
-            thread.setPriority(Thread.MIN_PRIORITY);
-            thread.setName("MemoryMonitor");
-            thread.start();
-        }
-
-
-        public synchronized void stop() {
-            thread = null;
-            notify();
-        }
-
-
-        public void run() {
-
-            Thread me = Thread.currentThread();
-
-            while (thread == me && !isShowing() || getSize().width == 0) {
-                try {
-                    thread.sleep(500);
-                } catch (InterruptedException e) { return; }
-            }
-    
-            while (thread == me && isShowing()) {
-                Dimension d = getSize();
-                if (d.width != w || d.height != h) {
-                    w = d.width;
-                    h = d.height;
-                    bimg = (BufferedImage) createImage(w, h);
-                    big = bimg.createGraphics();
-                    big.setFont(font);
-                    FontMetrics fm = big.getFontMetrics(font);
-                    ascent = (int) fm.getAscent();
-                    descent = (int) fm.getDescent();
-                }
-
-                repaint();
-
-                try {
-                    thread.sleep(sleepAmount);
-                } catch (InterruptedException e) { break; }
-            }
-            thread = null;
-        }
-    }
-}


Reply via email to