X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.district.maps%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Fpojo%2FTileJobQueue.java;fp=org.simantics.district.maps%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Fpojo%2FTileJobQueue.java;h=f6ab637c5513541bb6143516590e6bb2b31c84de;hb=e9f74f09e0cedb603c0b4de9e542de8dd64a5ce3;hp=0000000000000000000000000000000000000000;hpb=16ee01dc5a40981c58fd5b478b89552e5814e8bb;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.maps/src/org/simantics/maps/pojo/TileJobQueue.java b/org.simantics.district.maps/src/org/simantics/maps/pojo/TileJobQueue.java new file mode 100644 index 00000000..f6ab637c --- /dev/null +++ b/org.simantics.district.maps/src/org/simantics/maps/pojo/TileJobQueue.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * 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); + } + +}