package org.openpnp.gui.components.nav; import org.openpnp.model.LengthUnit; import org.openpnp.model.Location; import org.openpnp.spi.Head; import org.openpnp.spi.Machine; import org.openpnp.spi.MachineListener; import org.openpnp.spi.Nozzle; import org.openpnp.util.UiUtils; import javafx.application.Platform; import javafx.scene.Group; import javafx.scene.control.Tooltip; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; public class NozzleView extends Group { final Nozzle nozzle; public NozzleView(Nozzle nozzle) { this.nozzle = nozzle; Circle c = new Circle(1, Color.RED); getChildren().add(c); UiUtils.bindTooltip(this, new Tooltip(nozzle.getName())); updateLocation(); nozzle.getHead().getMachine().addListener(machineListener); } private void updateLocation() { Location location = nozzle.getLocation().convertToUnits(LengthUnit.Millimeters); setTranslateX(location.getX()); setTranslateY(location.getY()); } MachineListener machineListener = new MachineListener.Adapter() { @Override public void machineHeadActivity(Machine machine, Head head) { Platform.runLater(() -> updateLocation()); } @Override public void machineEnabled(Machine machine) { Platform.runLater(() -> updateLocation()); } }; }