package org.openpnp.gui.components.nav; import org.openpnp.events.FeederSelectedEvent; import org.openpnp.model.Configuration; import org.openpnp.model.Footprint; import org.openpnp.model.LengthUnit; import org.openpnp.model.Location; import org.openpnp.spi.Feeder; import org.openpnp.util.UiUtils; import com.google.common.eventbus.Subscribe; import javafx.application.Platform; import javafx.scene.Group; import javafx.scene.control.Tooltip; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; public class FeederView extends Group { final Feeder feeder; public FeederView(Feeder feeder) { this.feeder = feeder; Rectangle outline = new Rectangle(8, 8); outline.setFill(Color.SLATEGRAY); outline.setTranslateX(-outline.getWidth() / 2); outline.setTranslateY(-outline.getHeight() / 2); getChildren().add(outline); Footprint footprint = null; if (feeder.getPart() != null) { if (feeder.getPart().getPackage() != null) { if (feeder.getPart().getPackage().getFootprint() != null) { footprint = feeder.getPart().getPackage().getFootprint(); } } } FootprintView footprintView = new FootprintView(footprint, Color.BLACK); getChildren().add(footprintView); UiUtils.bindTooltip(this, new Tooltip(feeder.getName())); setOnMouseClicked(event -> { Configuration.get().getBus().post(new FeederSelectedEvent(feeder)); }); Configuration.get().getBus().register(this); updateLocation(); } private void updateLocation() { try { Location l = feeder.getPickLocation().convertToUnits(LengthUnit.Millimeters); setTranslateX(l.getX()); setTranslateY(l.getY()); setRotate(l.getRotation()); } catch (Exception e) { } } @Subscribe public void feederSelected(FeederSelectedEvent e) { Platform.runLater(() -> { if (e.feeder == feeder) { setEffect(new SelectedEffect()); } else { setEffect(null); } }); } }