/* * Copyright (C) 2011 Jason von Nieda <jason@vonnieda.org> * * This file is part of OpenPnP. * * OpenPnP 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 3 of the * License, or (at your option) any later version. * * OpenPnP 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 OpenPnP. If not, see * <http://www.gnu.org/licenses/>. * * For more information about OpenPnP visit http://openpnp.org */ package org.openpnp.model; import org.openpnp.model.Board.Side; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Version; import org.simpleframework.xml.core.Commit; import org.simpleframework.xml.core.Persist; /** * A Placement describes a location on a Board where a Part will be placed, along with information * about how to place it. * * @author jason */ public class Placement extends AbstractModelObject implements Identifiable { public enum Type { Place, Fiducial, Ignore } /** * History: 1.0: Initial revision. 1.1: Replaced Boolean place with Type type. Deprecated place. */ @Version(revision = 1.2) private double version; @Attribute private String id; @Element private Location location; @Attribute private Side side = Side.Top; @Attribute(required = false) private String partId; @Attribute private Type type; private Part part; @Attribute private boolean glue; @Attribute private boolean checkFids; @SuppressWarnings("unused") private Placement() { this(null); } public Placement(String id) { this.id = id; this.type = Type.Place; setLocation(new Location(LengthUnit.Millimeters)); } @SuppressWarnings("unused") @Persist private void persist() { partId = (part == null ? null : part.getId()); } @SuppressWarnings("unused") @Commit private void commit() { setLocation(location); if (getPart() == null) { setPart(Configuration.get().getPart(partId)); } } public Part getPart() { return part; } public void setPart(Part part) { Part oldValue = this.part; this.part = part; firePropertyChange("part", oldValue, part); } public String getId() { return id; } public Location getLocation() { return location; } public void setLocation(Location location) { Location oldValue = this.location; this.location = location; firePropertyChange("location", oldValue, location); } public Side getSide() { return side; } public void setSide(Side side) { Object oldValue = this.side; this.side = side; firePropertyChange("side", oldValue, side); } public Type getType() { return type; } public void setType(Type type) { Object oldValue = this.type; this.type = type; firePropertyChange("type", oldValue, type); } public boolean getGlue() { return glue; } public void setGlue(boolean glue) { Object oldValue = this.glue; this.glue = glue; firePropertyChange("glue", oldValue, glue); } public boolean getCheckFids() { return checkFids; } public void setCheckFids(boolean checkFids) { Object oldValue = this.checkFids; this.checkFids = checkFids; firePropertyChange("check fids", oldValue, checkFids); } @Override public String toString() { return String.format("id %s, location %s, side %s, part %s, type %s", id, location, side, part, type); } }