/* (non-Javadoc) * @see com.netlight.layout.runner.ILayoutRunnerPhase#execute(com.netlight.layout.runner.LayoutRunner) */ @Override public void execute(ILayoutRunner runner, boolean stopThreadWhenDone) { IHierarchicalNodeLayout layout = runner.getLayout(); IHierarchicalNodeModel model = layout.getModel(); IBreakCriteria criteria = runner.getBreakCriteria(); LayoutRunnerConfiguration settings = runner.getConfiguration(); // int n = 0; if (layout != null) { while (runner.isRunning()) { runner.visit(layout); // fit view if (settings.isAllowAutoFitAtStepEnd()) runner.autoFit(model); // break using criteria? if (criteria != null) if (criteria.shouldBreak(layout)) { criteria.onBreak(); if (stopThreadWhenDone) runner.setRunning(false, true); // no using runner.stop because this destroy our thread :) break; } // break because of ended algorithm if (!layout.canAlgo()) { if (stopThreadWhenDone) runner.setRunning(false, true); break; } } } }