package app.navigps.gui.svgComponents.DisplayObjects;
import app.navigps.gui.NaviRootWindow;
import app.navigps.gui.svgComponents.Canvas;
import app.navigps.gui.svgComponents.SVGCanvasLayers;
import app.navigps.gui.svgComponents.SynchronizedSVGLayer;
import app.navigps.utils.NaviLogger;
import app.navigps.utils.NaviPoint;
import java.awt.Component;
import java.util.Vector;
import java.util.logging.Level;
import app.database.odb.core.ServiceCore;
import app.navigps.gui.svgComponents.ServicesContainer;
import org.apache.batik.dom.svg.SVGOMPoint;
/**
*
* @author Grzegorz (wara) Warywoda
*/
public class ComponentDisplayManager extends AbstractDisplayManager{
//private Vector <ObjectToDisplayService> services = new Vector<ObjectToDisplayService>(100);
public ComponentDisplayManager(Canvas can) {
super(can);
}
@Override
public void putObject(Object object, SVGOMPoint point) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void putObject(Vector object) {
for (Object e : object) {
if(e instanceof ObjectService)
//((ObjectService)e).setVisible(false);
getDisplayLayer().add((ObjectService)e);
}
getDisplayLayer().updateComponent();
}
@Override
public void removeLastServices() {
//services.removeAllElements();
getDisplayLayer().removeAll();
getDisplayLayer().repaint();
}
private SynchronizedSVGLayer getDisplayLayer(){
SVGCanvasLayers svgcl = (SVGCanvasLayers)can.getParent();
return (SynchronizedSVGLayer)svgcl.getServicesContainer();
}
@Override
public void updateService(final Object element) {
new Thread(new Runnable() {
@Override
public void run() {
if(element instanceof ServiceCore){
ServiceCore sc = (ServiceCore)element;
Component[] comps = getDisplayLayer().getComponents();
for (Component c : comps) {
ObjectService os = (ObjectService)c;
if(os.getOID().equals(sc.getOID())){
os.updateService(sc);
String msg = "Service \'"+os.getServiceName()+"\' has been changed";
NaviRootWindow.getBridgeInformationPipe().currentStatusChanged(msg);
System.out.println(msg);
return;
}
}
}else{
NaviLogger.logger.log(Level.WARNING, "Method UpdateService \"argument is not instance class ServiceCore\"");
}
}
}).start();
}
@Override
public Object createObject(ServiceCore sc) {
String groupName = sc.getServiceDescription().getCategory().getName();
String serviceName = sc.getServiceDescription().getServiceName();
String serviceDesc = sc.getServiceDescription().getAdditionaInfo();
String serviceStreet = sc.getServiceDescription().getServiceStreet();
String serviceNumber = sc.getServiceDescription().getServiceNumber();
String serviceCity = sc.getServiceDescription().getCity();
serviceDesc+="<br>Street: <b>"+serviceStreet+" "+serviceNumber+"</b><br>City: "+serviceCity;
NaviPoint np = new NaviPoint(sc.getServiceAttributes().getX(),
sc.getServiceAttributes().getY());
return new ObjectService(serviceDesc,groupName,serviceName,sc.getOID(), np);
}
@Override
public Vector createObject(Vector<ServiceCore> vsc) {
Vector <ObjectService> vos = new Vector<ObjectService>();
if(vsc != null)
for (ServiceCore os : vsc) {
vos.add((ObjectService)createObject(os));
}
return vos;
}
@Override
public Object getObject(long oid) {
return ((ServicesContainer)getDisplayLayer()).getObject(oid);
}
@Override
public Vector getAllObjects() {
throw new UnsupportedOperationException("Not supported yet.");
}
}