Package org.openpnp.machine.reference

Source Code of org.openpnp.machine.reference.ReferenceMachine

/*
   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.machine.reference;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.swing.Action;

import org.openpnp.gui.support.PropertySheetWizardAdapter;
import org.openpnp.gui.support.Wizard;
import org.openpnp.machine.reference.camera.LtiCivilCamera;
import org.openpnp.machine.reference.camera.OpenCvCamera;
import org.openpnp.machine.reference.camera.TableScannerCamera;
import org.openpnp.machine.reference.camera.VfwCamera;
import org.openpnp.machine.reference.feeder.ReferenceTapeFeeder;
import org.openpnp.machine.reference.feeder.ReferenceTrayFeeder;
import org.openpnp.machine.reference.feeder.ReferenceTubeFeeder;
import org.openpnp.spi.Camera;
import org.openpnp.spi.Feeder;
import org.openpnp.spi.PropertySheetHolder;
import org.openpnp.spi.base.AbstractMachine;
import org.openpnp.spi.base.SimplePropertySheetHolder;
import org.simpleframework.xml.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ReferenceMachine extends AbstractMachine {
  private static Logger logger = LoggerFactory.getLogger(ReferenceMachine.class);

  @Element
  private ReferenceDriver driver;
 
  private boolean enabled;
 
  public ReferenceDriver getDriver() {
    return driver;
  }

  @Override
  public boolean isEnabled() {
    return enabled;
  }
 
  @Override
  public void setEnabled(boolean enabled) throws Exception {
    logger.debug("setEnabled({})", enabled);
    if (enabled) {
      try {
        driver.setEnabled(true);
        this.enabled = true;
      }
      catch (Exception e) {
        fireMachineEnableFailed(e.getMessage());
        throw e;
      }
      fireMachineEnabled();
    }
    else {
      try {
        driver.setEnabled(false);
        this.enabled = false;
      }
      catch (Exception e) {
        fireMachineDisableFailed(e.getMessage());
        throw e;
      }
      fireMachineDisabled("User requested stop.");
    }
  }

  @Override
  public Wizard getConfigurationWizard() {
    return driver.getConfigurationWizard();
  }
 
  @Override
    public String getPropertySheetHolderTitle() {
      return getClass().getSimpleName();
    }

    @Override
    public PropertySheetHolder[] getChildPropertySheetHolders() {
        ArrayList<PropertySheetHolder> children = new ArrayList<PropertySheetHolder>();
        children.add(new SimplePropertySheetHolder("Feeders", getFeeders()));
        children.add(new SimplePropertySheetHolder("Heads", getHeads()));
        children.add(new SimplePropertySheetHolder("Cameras", getCameras()));
        children.add(new SimplePropertySheetHolder("Driver", Collections.singletonList(getDriver())));
        return children.toArray(new PropertySheetHolder[]{});
    }
   
    @Override
    public Action[] getPropertySheetHolderActions() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public PropertySheet[] getPropertySheets() {
        return new PropertySheet[] {
                new PropertySheetWizardAdapter(getConfigurationWizard())
        };
    }

    @Override
  public List<Class<? extends Feeder>> getCompatibleFeederClasses() {
    List<Class<? extends Feeder>> l = new ArrayList<Class<? extends Feeder>>();
    l.add(ReferenceTrayFeeder.class);
    l.add(ReferenceTapeFeeder.class);
    l.add(ReferenceTubeFeeder.class);
    return l;
  }

  @Override
  public List<Class<? extends Camera>>  getCompatibleCameraClasses() {
    List<Class<? extends Camera>> l = new ArrayList<Class<? extends Camera>>();
    l.add(LtiCivilCamera.class);
    l.add(VfwCamera.class);
    l.add(TableScannerCamera.class);
    l.add(OpenCvCamera.class);
    return l;
  }
 
    @Override
  public void home() throws Exception {
    logger.debug("home");
    super.home();
  }
   
    @Override
    public void close() throws IOException {
        driver.close();
    }
}
TOP

Related Classes of org.openpnp.machine.reference.ReferenceMachine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.