private int getTotalWork( CheckWizardPage options, IPlottingSystem system, final IFunctionService funcService) { try { int ret = 1; if (options.is(PersistWizardConstants.ORIGINAL_DATA)) { Collection<ITrace> traces = system.getTraces(); ret += traces != null ? traces.size() : 0; } if (options.is(PersistWizardConstants.IMAGE_HIST)) { final IToolPageSystem tsystem = (IToolPageSystem) system.getAdapter(IToolPageSystem.class); final IToolPage tool = tsystem.getActiveTool(); if (tool != null && tool.getToolId().equals("org.dawb.workbench.plotting.tools.imageCompareTool")) { final Map<String, IDataset> data = (Map<String, IDataset>) tool.getToolData(); if (data != null && !data.isEmpty()) { ret += data.size(); } } } final ITrace trace = system.getTraces().iterator().next(); if (options.is(PersistWizardConstants.MASK) && trace instanceof IImageTrace) { IImageTrace image = (IImageTrace) trace; final String name = options.getString(PersistWizardConstants.MASK); if (image.getMask() != null) { ret += 1; } } final Collection<IRegion> regions = system.getRegions(); if (options.is(PersistWizardConstants.REGIONS) && regions != null && !regions.isEmpty()) { ret += regions.size(); } if (options.is(PersistWizardConstants.DIFF_META)) { if (trace != null && trace instanceof IImageTrace && trace.getData() != null) { ret += 1; } } if (options.is(PersistWizardConstants.FUNCTIONS)) { if (funcService != null) { Map<String, IFunction> functions = funcService.getFunctions(); if (functions != null) ret += functions.size(); } } return ret; } catch (Exception ne) { logger.error("Cannot estimate work, assuming 100 things to do!", ne); return 100; } }
public boolean canFinish() { if (page.isPageComplete() && getContainer().getCurrentPage() == page) { options.setDescription("Please choose the things to save in '" + page.getPath() + "'."); options.setOptionEnabled(PersistWizardConstants.ORIGINAL_DATA, false); options.setOptionEnabled(PersistWizardConstants.IMAGE_HIST, false); options.setOptionEnabled(PersistWizardConstants.MASK, false); options.setOptionEnabled(PersistWizardConstants.REGIONS, false); options.setOptionEnabled(PersistWizardConstants.DIFF_META, false); options.setOptionEnabled(PersistWizardConstants.FUNCTIONS, false); File file = null; IPersistentFile pf = null; PERSIST_BLOCK: try { IPersistenceService service = ServiceLoader.getPersistenceService(); file = new File(page.getAbsoluteFilePath()); if (!file.exists()) break PERSIST_BLOCK; pf = service.getPersistentFile(file.getAbsolutePath()); final List<String> names = pf.getMaskNames(null); if (names != null && !names.isEmpty()) { options.setStringValue(PersistWizardConstants.MASK, names.get(0)); } } catch (Throwable ne) { logger.error("Cannot read persistence file at " + file); } finally { if (pf != null) pf.close(); } final IPlottingSystem system = getPlottingSystem(); if (system != null) { if (system != null) { ITrace trace = system.getTraces().iterator().next(); if (trace != null) { options.setOptionEnabled(PersistWizardConstants.ORIGINAL_DATA, true); if (trace instanceof IImageTrace && ((IImageTrace) trace).getMask() != null) { options.setOptionEnabled(PersistWizardConstants.MASK, true); } } boolean requireHistory = false; final IToolPageSystem tsystem = (IToolPageSystem) system.getAdapter(IToolPageSystem.class); final IToolPage tool = tsystem.getActiveTool(); if (tool != null && tool.getToolId().equals("org.dawb.workbench.plotting.tools.imageCompareTool")) { final Map<String, IDataset> data = (Map<String, IDataset>) tool.getToolData(); if (data != null && !data.isEmpty()) requireHistory = true; } options.setOptionEnabled(PersistWizardConstants.IMAGE_HIST, requireHistory); final Collection<IRegion> regions = system.getRegions(); if (regions != null && !regions.isEmpty()) { options.setOptionEnabled(PersistWizardConstants.REGIONS, true); } if (trace != null && trace instanceof IImageTrace && trace.getData() != null) { IMetadata meta = ((Dataset) trace.getData()).getMetadata(); if (meta != null && (meta instanceof IDiffractionMetadata)) { options.setOptionEnabled(PersistWizardConstants.DIFF_META, true); } } final IWorkbenchPart part = EclipseUtils.getPage().getActivePart(); if (part != null) { final IFunctionService funcService = (IFunctionService) part.getAdapter(IFunctionService.class); if (funcService != null) { options.setOptionEnabled(PersistWizardConstants.FUNCTIONS, true); } } } } } return super.canFinish(); }