X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.graph.db%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Fdb%2FTGStatusMonitor.java;h=8f93639eac225667401e242bd1e1e0b8993cc6ff;hp=06e0adbedb659f31fe4e1092c28ef8d9643128b9;hb=3efd7d44a55ae1fff284a1826e7c9afe27e0815e;hpb=0b471805f017da83d715a0d8409f53bdd009d31e diff --git a/bundles/org.simantics.graph.db/src/org/simantics/graph/db/TGStatusMonitor.java b/bundles/org.simantics.graph.db/src/org/simantics/graph/db/TGStatusMonitor.java index 06e0adbed..8f93639ea 100644 --- a/bundles/org.simantics.graph.db/src/org/simantics/graph/db/TGStatusMonitor.java +++ b/bundles/org.simantics.graph.db/src/org/simantics/graph/db/TGStatusMonitor.java @@ -20,23 +20,28 @@ public interface TGStatusMonitor { public static class Updater { private final TGStatusMonitor monitor; private final int total; - private int percentage; + private int low; + private int high; + private int current; private int worked; - public Updater(TGStatusMonitor monitor, int total) { + public Updater(TGStatusMonitor monitor, int lowPercentage, int highPercentage, int totalWork) { this.monitor = monitor; - this.total = total; + this.low = lowPercentage; + this.high = highPercentage; + this.total = totalWork; } public int worked(int work) { worked += work; - return percentage = updatePercentage(monitor, percentage, worked, total); + return current = updatePercentage(monitor, low, high, current, worked, total); } } - public static int updatePercentage(TGStatusMonitor monitor, int oldPercentage, int done, int total) { - int current = (100 * done) / total; - if (current > oldPercentage) { + public static int updatePercentage(TGStatusMonitor monitor, int low, int high, int oldPercentage, int done, int total) { + int range = high - low; + int current = low + (range * done) / total; + if (current != oldPercentage) { oldPercentage = current; if (monitor != null) monitor.status(oldPercentage);