//This file is part of SECONDO. //Copyright (C) 2004, University in Hagen, Department of Computer Science, //Database Systems for New Applications. //SECONDO 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. //SECONDO 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 SECONDO; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //2012, July Simone Jandt package viewer.hoese.algebras; import viewer.hoese.algebras.jnet.*; import java.awt.geom.*; import java.awt.*; import viewer.*; import viewer.hoese.*; import sj.lang.ListExpr; import gui.Environment; import javax.swing.JPanel; import tools.Reporter; import java.util.*; import gui.SecondoObject; /** * A displayclass for a single unit of the moving point type */ public class Dsplujpoint extends DisplayTimeGraph{ private UJPoint ujp; private String label; public Dsplujpoint() { super(); } public void init (String name, int nameWidth, int indent, ListExpr type, ListExpr value, QueryResult qr) { AttrName = extendString(name, nameWidth, indent); try{ ujp = new UJPoint (value); label = ujp.toString(); qr.addEntry(this); TimeBounds = ujp.getBoundingInterval(); } catch (JNetworkNotAvailableException ex){ err = true; Reporter.writeError(ex.getMessage()); qr.addEntry(AttrName + ex.getMessage()); } catch (Exception ex) { ex.printStackTrace(); err = true; Reporter.writeError("Error in ListExpr :parsing aborted"); qr.addEntry(AttrName + "error"); } return; } public boolean isPointType(int num){ return ujp.isPointType(num); } public boolean isLineType(int num){ return ujp.isLineType(num); } public int numberOfShapes(){ return ujp.numOfShapes(); } public Rectangle2D.Double getBounds(){ return ujp.getBounds(); } public Shape getRenderObject(int no, AffineTransform af){ double t = RefLayer.getActualTime(); double pointSize = Cat.getPointSize(renderAttribute,CurrentState.ActualTime); boolean asRect = Cat.getPointasRect(); Point2D.Double actPos = ujp.getPointAtTime(t); if(actPos == null) return null; if(!ProjectionManager.project(actPos.x,actPos.y,actPos)) return null; double pointSizeX = Math.abs(pointSize/af.getScaleX()); double pointSizeY = Math.abs(pointSize/af.getScaleY()); Shape shape; if (asRect) { shape = new Rectangle2D.Double(actPos.getX()- pointSizeX/2, actPos.getY()- pointSizeY/2, pointSizeX, pointSizeY); } else { shape = new Ellipse2D.Double(actPos.getX() - pointSizeX/2, actPos.getY() - pointSizeY/2, pointSizeX, pointSizeY); } return shape; } /** A method of the Timed-Interface * * @return the global time boundaries [min..max] this instance is defined at * @see Source */ public Interval getBoundingInterval () { return ujp.getBoundingInterval(); } /** A method of the Timed-Interface * @return The Vector representation of the time intervals this instance is defined at * @see Source */ public Vector getIntervals(){ return ujp.getIntervals(); } /** * A method of the Timed-Interface to render the content of the TimePanel * @param PixelTime pixel per hour * @return A JPanel component with the renderer * @see Source */ public JPanel getTimeRenderer (double PixelTime) { return ujp.getTimeRenderer(PixelTime); } };