]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.maps/src/org/simantics/maps/pojo/TileJobQueue.java
Share some projects for Simantics District
[simantics/district.git] / org.simantics.district.maps / src / org / simantics / maps / pojo / TileJobQueue.java
1 /*******************************************************************************
2  * Copyright (c) 2012 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.maps.pojo;
13
14 import java.awt.Image;
15
16 import org.simantics.maps.query.IQueryListener;
17 import org.simantics.maps.query.Query;
18 import org.simantics.maps.tile.IFilter;
19 import org.simantics.maps.tile.ITileJobQueue;
20 import org.simantics.maps.tile.ITileListener;
21 import org.simantics.maps.tile.ITileProvider;
22 import org.simantics.maps.tile.TileKey;
23
24 /**
25  * @author Tuukka Lehtonen
26  * @see TileJob
27  */
28 public class TileJobQueue implements ITileJobQueue {
29
30     private TileJob       job;
31
32     public TileJobQueue() {
33     }
34
35     public void setTileProvider(ITileProvider provider) {
36         getJob().setTileProvider(provider);
37     }
38
39     public synchronized TileJob getJob() {
40         if (job == null)
41             job = new TileJob();
42         return job;
43     }
44
45     @Override
46     public void addJob(final TileKey key, final ITileListener listener) {
47         getJob().addJob(new Query<TileKey, Image>(key, new IQueryListener<TileKey, Image>() {
48             @Override
49             public void queryCanceled(Query<TileKey, Image> job) {
50                 listener.tileCanceled(key);
51             }
52             @Override
53             public void queryFailed(Query<TileKey, Image> job, Exception error) {
54                 listener.tileFailed(key, error);
55             }
56             @Override
57             public void queryComplete(Query<TileKey, Image> job, Image result) {
58                 listener.tileUpdated(key, result);
59             }
60         }));
61     }
62
63     @Override
64     public void filterQueries(IFilter<TileKey> filter) {
65         getJob().filterQueries(filter);
66     }
67
68     public void addAsFirstJob(Query<TileKey, Image> job) {
69         getJob().addAsFirstJob(job);
70     }
71
72     public void removeJob(Query<TileKey, Image> job) {
73         getJob().removeJob(job);
74     }
75
76 }