198 lines
5.2 KiB
Java
198 lines
5.2 KiB
Java
/*
|
|
* Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
|
|
*/
|
|
package ch.psi.mxsc;
|
|
|
|
import ch.psi.pshell.device.Device;
|
|
import ch.psi.pshell.device.DeviceBase;
|
|
import ch.psi.pshell.imaging.DimensionDouble;
|
|
import ch.psi.pshell.imaging.PointDouble;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public class BasePlate extends DeviceBase {
|
|
|
|
final static PointDouble[] pucksPosition = new PointDouble[]{
|
|
new PointDouble(0, 75),
|
|
new PointDouble(0, 150),
|
|
new PointDouble(64.95, 187.5),
|
|
new PointDouble(129.9, 150),
|
|
new PointDouble(64.95, 112.5),
|
|
new PointDouble(64.95, 37.5),
|
|
new PointDouble(129.9, 75),
|
|
new PointDouble(194.85, 37.5),
|
|
new PointDouble(194.85, -37.5),
|
|
new PointDouble(129.9, 0),
|
|
new PointDouble(64.95, -37.5),
|
|
new PointDouble(129.9, -75),
|
|
new PointDouble(129.9, -150),
|
|
new PointDouble(64.95, -187.5),
|
|
new PointDouble(64.95, -112.5),
|
|
new PointDouble(0, -75),
|
|
new PointDouble(0, -150),
|
|
new PointDouble(-64.95, -187.5),
|
|
new PointDouble(-129.9, -150),
|
|
new PointDouble(-64.95, -112.5),
|
|
new PointDouble(-64.95, -37.5),
|
|
new PointDouble(-129.9, -75),
|
|
new PointDouble(-194.85, -37.5),
|
|
new PointDouble(-194.85, 37.5),
|
|
new PointDouble(-129.9, 0),
|
|
new PointDouble(-64.95, 37.5),
|
|
new PointDouble(-129.9, 75),
|
|
new PointDouble(-129.9, 150),
|
|
new PointDouble(-64.95, 187.5),
|
|
new PointDouble(-64.95, 112.5)
|
|
};
|
|
final static int numberOfPucks = pucksPosition.length;
|
|
//final static DimensionDouble size = new DimensionDouble(580.0, 580.0);
|
|
final static DimensionDouble size = new DimensionDouble(470.0, 470.0);
|
|
|
|
BasePlate() {
|
|
super("BasePlate", new BasePlateConfig());
|
|
ArrayList<Puck> pucks = new ArrayList<>();
|
|
for (int i = 0; i < numberOfPucks; i++) {
|
|
new Puck(this, i);
|
|
}
|
|
getPucks()[0].setSelected(true);
|
|
}
|
|
|
|
@Override
|
|
protected void doInitialize() throws IOException, InterruptedException {
|
|
super.doInitialize();
|
|
}
|
|
|
|
@Override
|
|
public BasePlateConfig getConfig() {
|
|
return (BasePlateConfig) super.getConfig();
|
|
}
|
|
|
|
|
|
|
|
public Puck[] getPucks() {
|
|
ArrayList<Puck> ret = new ArrayList<>();
|
|
for (Device d : getChildren()) {
|
|
ret.add((Puck) d);
|
|
}
|
|
return ret.toArray(new Puck[0]);
|
|
}
|
|
|
|
|
|
Puck getSelectedPuck(){
|
|
for (Puck p:getPucks()){
|
|
if (p.isSelected()){
|
|
return p;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
Sample getSelectedSample(){
|
|
Puck puck = getSelectedPuck();
|
|
if (puck != null){
|
|
for (Sample s: puck.getSamples()){
|
|
if (s.isSelected()){
|
|
return s;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
void resetSelection(){
|
|
Puck puck = getSelectedPuck();
|
|
if (puck != null){
|
|
puck.setSelected(false);
|
|
}
|
|
}
|
|
|
|
Sample getLoadedSample(){
|
|
for (Puck p:getPucks()){
|
|
for (Sample s: p.getSamples()){
|
|
if (s.isLoaded()){
|
|
return s;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
void resetLoadedSample(){
|
|
for (Puck p:getPucks()){
|
|
for (Sample s: p.getSamples()){
|
|
s.setLoaded(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
DimensionDouble getSize(){
|
|
return size;
|
|
}
|
|
|
|
public int getNumberOfPucks() {
|
|
return numberOfPucks;
|
|
}
|
|
|
|
public PointDouble getPuckPosition(Puck puck) {
|
|
return pucksPosition[puck.index];
|
|
}
|
|
|
|
public Puck getPuckByName(String name) {
|
|
for (Device d : getChildren()) {
|
|
if (d.getName().equals(name)){
|
|
return (Puck) d;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
public void loadSample(Sample sample) throws Exception{
|
|
Sample loaded = getLoadedSample();
|
|
if (loaded !=null){
|
|
throw new Exception("Sample already loaded: " + loaded);
|
|
}
|
|
if (sample!=null){
|
|
resetLoadedSample();
|
|
//TODO
|
|
sample.setLoaded(true);
|
|
}
|
|
}
|
|
|
|
public void unloadSample(Sample sample) throws Exception{
|
|
if (sample!=null){
|
|
//TODO
|
|
resetLoadedSample();
|
|
}
|
|
}
|
|
|
|
public void loadSample() throws Exception{
|
|
loadSample(getSelectedSample());
|
|
}
|
|
|
|
public void unloadSample() throws Exception{
|
|
unloadSample (getLoadedSample());
|
|
}
|
|
|
|
|
|
void onSelectionChanged(){
|
|
Sample sample = getSelectedSample();
|
|
if (sample!=null){
|
|
//setCache(sample.getName());
|
|
setCache(new Object[]{sample.getPuck().segment, sample.getPuck().number, sample.index+1});
|
|
} else {
|
|
Puck puck = getSelectedPuck();
|
|
if (puck!=null){
|
|
//setCache(puck.getName());
|
|
setCache(new Object[]{puck.segment, puck.number, null});
|
|
}
|
|
}
|
|
setCache(null);
|
|
}
|
|
|
|
}
|