package org.openpnp.machine.reference.psh;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import org.openpnp.gui.MainFrame;
import org.openpnp.gui.components.ClassSelectionDialog;
import org.openpnp.gui.support.Icons;
import org.openpnp.gui.support.MessageBoxes;
import org.openpnp.model.Configuration;
import org.openpnp.spi.Actuator;
import org.openpnp.spi.Head;
import org.openpnp.spi.PropertySheetHolder;
import org.openpnp.spi.base.SimplePropertySheetHolder;
public class ActuatorsPropertySheetHolder extends SimplePropertySheetHolder {
final Head head;
public ActuatorsPropertySheetHolder(Head head, String title, List<? extends PropertySheetHolder> children,
Icon icon) {
super(title, children, icon);
this.head = head;
}
@Override
public Action[] getPropertySheetHolderActions() {
return new Action[] {newAction};
}
public Action newAction = new AbstractAction() {
{
putValue(SMALL_ICON, Icons.add);
putValue(NAME, "New Actuator...");
putValue(SHORT_DESCRIPTION, "Create a new actuator.");
}
@Override
public void actionPerformed(ActionEvent arg0) {
Configuration configuration = Configuration.get();
ClassSelectionDialog<Actuator> dialog = new ClassSelectionDialog<>(MainFrame.get(),
"Select Actuator...", "Please select a Actuator implemention from the list below.",
configuration.getMachine().getCompatibleActuatorClasses());
dialog.setVisible(true);
Class<? extends Actuator> cls = dialog.getSelectedClass();
if (cls == null) {
return;
}
try {
Actuator actuator = cls.newInstance();
if (head != null) {
head.addActuator(actuator);
}
else {
Configuration.get().getMachine().addActuator(actuator);
}
}
catch (Exception e) {
MessageBoxes.errorBox(MainFrame.get(), "Camera Error", e);
}
}
};
}