1 package org.woehlke.computer.kurzweil.tabs.dla; 2 3 import lombok.EqualsAndHashCode; 4 import lombok.Getter; 5 import lombok.ToString; 6 import lombok.extern.log4j.Log4j2; 7 import org.woehlke.computer.kurzweil.commons.tabs.TabContext; 8 import org.woehlke.computer.kurzweil.application.ComputerKurzweilContext; 9 10 import java.util.concurrent.ForkJoinTask; 11 12 import static java.lang.Thread.State.NEW; 13 14 15 @Log4j2 16 @Getter 17 @ToString(exclude={"canvas","controller","tab","ctx"}) 18 @EqualsAndHashCode(exclude={"canvas","controller","tab","ctx"},callSuper = false) 19 public class DiffusionLimitedAggregationContext extends ForkJoinTask<Void> implements TabContext, DiffusionLimitedAggregation { 20 21 private DiffusionLimitedAggregationController controller; 22 23 private final DiffusionLimitedAggregationCanvas canvas; 24 private final DiffusionLimitedAggregationModel tabModel; 25 private final DiffusionLimitedAggregationTab tab; 26 private final ComputerKurzweilContext ctx; 27 28 public DiffusionLimitedAggregationContext( 29 DiffusionLimitedAggregationTab tab 30 ) { 31 this.tab = tab; 32 this.ctx = this.tab.getCtx(); 33 this.canvas = new DiffusionLimitedAggregationCanvas(this); 34 this.tabModel = this.canvas.getTabModel(); 35 startController(); 36 } 37 38 @Override 39 public void stopController() { 40 this.controller.exit(); 41 this.controller = new DiffusionLimitedAggregationController(this); 42 } 43 44 @Override 45 public void startController() { 46 if(this.controller == null){ 47 this.controller = new DiffusionLimitedAggregationController(this); 48 } else { 49 if(this.controller.getState() != NEW){ 50 this.stopController(); 51 } 52 } 53 } 54 55 @Override 56 public Void getRawResult() { 57 return null; 58 } 59 60 @Override 61 protected void setRawResult(Void value) { 62 63 } 64 65 @Override 66 protected boolean exec() { 67 this.tab.repaint(); 68 return true; 69 } 70 }