/*
PIOPrinterImageHandler.java
(c) 2014 Ed Swartz
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
*/
package v9t9.machine.printer;
import org.eclipse.swt.widgets.Display;
import ejs.base.properties.IProperty;
import ejs.base.properties.IPropertyListener;
import v9t9.common.dsr.IPIOListener;
import v9t9.common.dsr.IPrinterImageEngine;
import v9t9.common.dsr.IPrinterImageHandler;
import v9t9.common.machine.IMachine;
import v9t9.machine.dsr.rs232.RS232Settings;
/**
* This handles printer data coming from PIO
* @author ejs
*
*/
public class PIOPrinterImageHandler implements IPIOListener, IPrinterImageHandler {
private IPrinterImageEngine engine;
private IProperty activeProperty;
public PIOPrinterImageHandler(IMachine machine, IPrinterImageEngine engine_) {
this.activeProperty = machine.getSettings().get(RS232Settings.settingPIOPrint);
this.engine = engine_;
activeProperty.addListener(new IPropertyListener() {
@Override
public void propertyChanged(IProperty property) {
engine.flushPage();
}
});
}
/* (non-Javadoc)
* @see v9t9.common.dsr.IPrinterImageHandler#getPrinterId()
*/
@Override
public String getPrinterId() {
return engine.getPrinterId();
}
@Override
public IPrinterImageEngine getEngine() {
return engine;
}
/* (non-Javadoc)
* @see v9t9.common.dsr.IPIOListener#charsTransmitted(byte[])
*/
@Override
public void charsTransmitted(final byte[] buffer) {
if (!activeProperty.getBoolean())
return;
Display.getDefault().syncExec(new Runnable() {
public void run() {
for (byte b : buffer) {
engine.print(b);
}
}
});
}
}