/******************************************************************************* * Copyright (c) 2012 Association for Decentralized Information Management * in Industry THTH ry. * 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 * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.maps.pojo; import java.awt.Image; import org.simantics.maps.query.IQueryListener; import org.simantics.maps.query.Query; import org.simantics.maps.tile.IFilter; import org.simantics.maps.tile.ITileJobQueue; import org.simantics.maps.tile.ITileListener; import org.simantics.maps.tile.ITileProvider; import org.simantics.maps.tile.TileKey; /** * @author Tuukka Lehtonen * @see TileJob */ public class TileJobQueue implements ITileJobQueue { private TileJob job; public TileJobQueue() { } public void setTileProvider(ITileProvider provider) { getJob().setTileProvider(provider); } public synchronized TileJob getJob() { if (job == null) job = new TileJob(); return job; } @Override public void addJob(final TileKey key, final ITileListener listener) { getJob().addJob(new Query(key, new IQueryListener() { @Override public void queryCanceled(Query job) { listener.tileCanceled(key); } @Override public void queryFailed(Query job, Exception error) { listener.tileFailed(key, error); } @Override public void queryComplete(Query job, Image result) { listener.tileUpdated(key, result); } })); } @Override public void filterQueries(IFilter filter) { getJob().filterQueries(filter); } public void addAsFirstJob(Query job) { getJob().addAsFirstJob(job); } public void removeJob(Query job) { getJob().removeJob(job); } @Override public void clear() { getJob().clear(); getJob().dispose(); } }