Package cl.niclabs.skandium.trace

Source Code of cl.niclabs.skandium.trace.SkelFrame

/*   Skandium: A Java(TM) based parallel skeleton library.
*  
*   Copyright (C) 2009 NIC Labs, Universidad de Chile.
*
*   Skandium 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 3 of the License, or
*   (at your option) any later version.
*
*   Skandium 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 Skandium.  If not, see <http://www.gnu.org/licenses/>.
*  
*   This class uses JGraphx library by JGraph Ltd under the following
*   license:
*  
*   Copyright (c) 2001-2009, JGraph Ltd
*   All rights reserved.
*  
*   Redistribution and use in source and binary forms, with or without modification,
*   are permitted provided that the following conditions are met:
*  
*   Redistributions of source code must retain the above copyright notice, this list
*   of conditions and the following disclaimer.
*   Redistributions in binary form must reproduce the above copyright notice, this
*   list of conditions and the following disclaimer in the documentation and/or
*   other materials provided with the distribution.
*   Neither the name of JGraph Ltd nor the names of its contributors may be used
*   to endorse or promote products derived from this software without specific prior written permission.
*   Termination for Patent Action. This License shall terminate
*   automatically, as will all licenses assigned to you by the copyright
*   holders of this software, and you may no longer exercise any of the
*   rights granted to you by this license as of the date you commence an
*   action, including a cross-claim or counterclaim, against the
*   copyright holders of this software or any licensee of this software
*   alleging that any part of the JGraph, JGraphX and/or mxGraph software
*   libraries infringe a patent. This termination provision shall not
*   apply for an action alleging patent infringement by combinations of
*   this software with other software or hardware.
*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
*   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
*   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
*   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
*   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
*   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
*   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
*   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*  
*/

package cl.niclabs.skandium.trace;

import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import cl.niclabs.skandium.skeletons.Skeleton;

import com.mxgraph.model.mxCell;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;

class SkelFrame  extends JFrame {

  private static final long serialVersionUID = -2707712944901661771L;
  private final Controller controller;
  mxGraph graph;
  private long time;

  SkelFrame(Controller cont) throws HeadlessException {
    super("Skandium Visualizer");
    this.controller = cont;
    graph = new mxGraph();
  }
 
  void initSkelFrame(Skeleton<?,?> skeleton) {
    Object parent = graph.getDefaultParent();
   
    mxCell mainCell;
    graph.getModel().beginUpdate();
    try {
      mainCell = (mxCell) graph.insertVertex(parent,null,"",10,10,0,0,SkeletonTreeBuilder.STYLE_NOSHAPE);
      mainCell.setConnectable(false);
      SkeletonTreeBuilder builder = new SkeletonTreeBuilder(controller, graph,mainCell);
      skeleton.accept(builder);
      graph.setCellsLocked(true);
      graph.setCellsSelectable(false);     
    }
    finally {
      graph.getModel().endUpdate();
    }

   
    mxGraphComponent graphComponent = new mxGraphComponent(graph);
    getContentPane().add(graphComponent);
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    addWindowListener(new WindowAdapter () {

      @Override
      public void windowClosing(WindowEvent e) {
        controller.close();
      }

    });
    setSize(400, 320);
    setVisible(true);
    time = System.currentTimeMillis();
  }
 
  void updateTrace(mxCell traceVert, long invokes, long execTime) {
    if (invokes>0) {
      String value = new String();
      if (execTime > 0 ) {
        double segs = (float)execTime / 1000;
        value = String.format("%.0g\n%.2f", (float) invokes, segs);       
      } else
        value = String.format("%.0g", (float) invokes);
      graph.getModel().beginUpdate();
      traceVert.setValue(value);
      graph.getModel().endUpdate();
     
      long currTime = System.currentTimeMillis();
      if (currTime - time > 1000) {
        graph.refresh();
        time = currTime;
      }
    }
  }
 
  void refresh() {
    graph.refresh();
  }
 
  void close() {
    dispose();
  }
 
}
TOP

Related Classes of cl.niclabs.skandium.trace.SkelFrame

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.