Capacitor3.java


Capacitor3.java

// Capacitor2.java

import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.scene.input.* ;
import javafx.collections.*;
import javafx.geometry.Point2D;

public class Capacitor3  {
	double xpos, ypos;
	double angle;
	Color clr;
	Group grp = new Group();
	double orgSceneX, orgSceneY, orgTranslateX, orgTranslateY;


    Capacitor3()
    {
	clr = Color.RED;
	xpos = 0.0;
	ypos = 0.0;
	angle = 0.0;
	
    }
    void setAngle(double angle)
    {
	this.angle = angle;
	grp.setRotate(-angle);
    }

   public void setPosition(double x, double y) {
	xpos = x;
	ypos = y;
	grp.setTranslateX(xpos);
	grp.setTranslateY(-ypos);
   }

   public boolean contains(Point2D pt) {
	Point2D local = grp.screenToLocal(pt);
	return grp.contains(local);
   }

   public String toString() {
         return "loc " + xpos + " " + ypos;
   }

   public void draw(Group parent) {
	double resc = 0.1;
	grp.setScaleX(resc);
	grp.setScaleY(resc);
	Rectangle rb = new Rectangle(-2.5,-1.5,5.0,3.0);
	rb.setFill(Color.TRANSPARENT);

	double res = parent.getScaleX();
	Path p = new Path();
	ObservableList<PathElement> pl = p.getElements();
	double [] xp = { 0.5, 0.7, 0.9 };
	double [] yp = { 1.3, 1.4, 1.5 };
	pl.add(new MoveTo(-2.5,0.0));
	pl.add(new LineTo(-0.5,0.0));
	pl.add(new MoveTo(-0.5,-1.5));
	pl.add(new LineTo(-0.5,1.5));

	pl.add(new MoveTo(0.5,-1.0));
	pl.add(new LineTo(0.5, 1.0));
	pl.add(new CubicCurveTo(xp[0],yp[0],xp[1],yp[1],xp[2],yp[2]));
	pl.add(new MoveTo(0.5,-1.0));
	pl.add(new CubicCurveTo(xp[0],-yp[0],xp[1],-yp[1],xp[2],-yp[2]));

	pl.add(new MoveTo(0.5,0.0));
	pl.add(new LineTo(2.5,0.0));

	ObservableList<Node> ol = grp.getChildren();
	p.setStrokeWidth(20/res);
	p.setStroke(clr);
 	p.setStrokeLineCap(StrokeLineCap.ROUND);

	ol.addAll(rb,p);

	parent.getChildren().add(grp);
        
	grp.setCursor(Cursor.CROSSHAIR);

	grp.setOnMousePressed( e ->
	{
	    Point2D pt = grp.getParent().sceneToLocal(e.getSceneX(),e.getSceneY());
	    orgSceneX = pt.getX();
	    orgSceneY = pt.getY();
	    orgTranslateX = xpos;
	    orgTranslateY = ypos;
	}
	);

	grp.setOnMouseDragged( e ->
	{
		Point2D pt = grp.getParent().sceneToLocal(e.getSceneX(),e.getSceneY());
		double offsetX = pt.getX() - orgSceneX;
		double offsetY = pt.getY() - orgSceneY;
		setPosition(orgTranslateX+offsetX,orgTranslateY-offsetY);
	}
	);
    }
}


Maintained by John Loomis, updated Mon Mar 05 12:00:17 2018