Multi-layer PCB support

This commit is contained in:
bancika
2012-08-24 11:12:46 +00:00
parent 4b2242336a
commit f419c1afb9
3 changed files with 40 additions and 23 deletions
@@ -0,0 +1,10 @@
package org.diylc.common;
public enum PCBLayer {
_1, _2, _3, _4, _5;
public String toString() {
return name().substring(1);
};
}
@@ -1,23 +0,0 @@
package org.diylc.presenter;
import org.diylc.common.ComponentType;
import org.diylc.common.IComponentFiler;
import org.diylc.core.IDIYComponent;
public class ComponentZOrderFiler implements IComponentFiler {
private int zOrder;
public ComponentZOrderFiler(int zOrder) {
super();
this.zOrder = zOrder;
}
@SuppressWarnings("unchecked")
@Override
public boolean testComponent(IDIYComponent<?> component) {
ComponentType componentType = ComponentProcessor.getInstance().extractComponentTypeFrom(
(Class<? extends IDIYComponent<?>>) component.getClass());
return Math.round(componentType.getZOrder()) == zOrder;
}
}
@@ -0,0 +1,30 @@
package org.diylc.presenter;
import java.lang.reflect.Method;
import org.diylc.common.IComponentFiler;
import org.diylc.common.PCBLayer;
import org.diylc.core.IDIYComponent;
public class PCBLayerFiler implements IComponentFiler {
private PCBLayer layer;
public PCBLayerFiler(PCBLayer layer) {
super();
this.layer = layer;
}
@SuppressWarnings("unchecked")
@Override
public boolean testComponent(IDIYComponent<?> component) {
Class<?> clazz = component.getClass();
try {
Method m = clazz.getMethod("getLayer", null);
PCBLayer l = (PCBLayer) m.invoke(component);
return layer == l;
} catch (Exception e) {
return false;
}
}
}