public IStatus execute(final IProgressMonitor monitor, IAdaptable info) throws ExecutionException { Display display = (Display) info.getAdapter(Display.class); // set map extent try { monitor.subTask(Messages.get("OpenMapOperation_calcLayersBounds")); if (map.getLayers().isEmpty()) { display.asyncExec( new Runnable() { public void run() { MessageBox box = new MessageBox(page.getWorkbenchWindow().getShell()); box.setText(Messages.get("OpenMapOperation_noLayersText")); box.setMessage(Messages.get("OpenMapOperation_noLayersMsg")); box.open(); } }); return Status.CANCEL_STATUS; } final ReferencedEnvelope bbox = map.getMaxExtent() == null ? calcLayersBounds(map.getLayers(), map.getCRS(), monitor) : map.getMaxExtent(); if (map.getMaxExtent() == null && bbox != null) { log.info("### No map max extent -> using calculated values: " + bbox); map.setMaxExtent(bbox); } if (bbox == null && !map.getLayers().isEmpty()) { display.syncExec( new Runnable() { public void run() { MessageBox box = new MessageBox(page.getWorkbenchWindow().getShell()); box.setText(Messages.get("OpenMapOperation_bboxErrorText")); box.setMessage(Messages.get("OpenMapOperation_bboxErrorMsg")); box.open(); } }); } else { map.setVisible(true); } return Status.OK_STATUS; } catch (Exception e) { throw new ExecutionException(e.getLocalizedMessage(), e); } }