// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.commands.usage; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Shape; import java.util.List; import javax.swing.JFrame; import org.apache.commons.collections15.Transformer; import de.ugoe.cs.autoquest.CommandHelpers; import de.ugoe.cs.autoquest.usageprofiles.FirstOrderMarkovModel; import de.ugoe.cs.autoquest.usageprofiles.FirstOrderMarkovModel.MarkovEdge; import de.ugoe.cs.util.console.Command; import de.ugoe.cs.util.console.GlobalDataContainer; import edu.uci.ics.jung.algorithms.layout.ISOMLayout; import edu.uci.ics.jung.algorithms.layout.Layout; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.visualization.BasicVisualizationServer; import edu.uci.ics.jung.visualization.decorators.ToStringLabeller; import edu.uci.ics.jung.visualization.renderers.Renderer.VertexLabel.Position; /** *

* Command that visualizes first-order Markov models. *

* * @author Steffen Herbold * @version 1.0 */ public class CMDshowMarkovModel implements Command { /* * (non-Javadoc) * * @see de.ugoe.cs.util.console.Command#help() */ @Override public String help() { return "showMarkovModel {}"; } /* * (non-Javadoc) * * @see de.ugoe.cs.util.console.Command#run(java.util.List) */ @Override public void run(List parameters) { String modelname; boolean showNodeNames = false; try { modelname = (String) parameters.get(0); if (parameters.size() == 2) { showNodeNames = Boolean .parseBoolean((String) parameters.get(1)); } } catch (Exception e) { throw new IllegalArgumentException(); } Object dataObject = GlobalDataContainer.getInstance() .getData(modelname); if (dataObject == null) { CommandHelpers.objectNotFoundMessage(modelname); return; } if (!(dataObject instanceof FirstOrderMarkovModel)) { CommandHelpers.objectNotType(modelname, "FirstOrderMarkovModel"); return; } FirstOrderMarkovModel mm = (FirstOrderMarkovModel) dataObject; Graph graph = mm.getGraph(); Layout layout = new ISOMLayout( graph); layout.setSize(new Dimension(1000, 800)); // sets the initial size // of the space // The BasicVisualizationServer is parameterized by the edge // types BasicVisualizationServer vv = new BasicVisualizationServer( layout); vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing // area size if (showNodeNames) { final Rectangle rect = new Rectangle(240, 20); Transformer vertexShapeTransformer = new Transformer() { public Shape transform(String s) { return rect; } }; vv.getRenderer().getVertexLabelRenderer() .setPosition(Position.CNTR); vv.getRenderContext().setVertexShapeTransformer( vertexShapeTransformer); vv.getRenderContext().setVertexLabelTransformer( new ToStringLabeller()); } vv.getRenderContext().setEdgeLabelTransformer( new ToStringLabeller()); JFrame frame = new JFrame("Markov Model"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().add(vv); frame.pack(); frame.setVisible(true); } }