private void processNewFile(DataBean bean) { try { locker.acquire(); } catch (InterruptedException e) { e.printStackTrace(); } playback.addFile((String) bean.getGuiParameters().get(GuiParameters.FILENAME)); String colourScheme = getPreferenceColourMapChoice(); SWTGridEntry entry = new SWTGridEntry( (String) bean.getGuiParameters().get(GuiParameters.FILENAME), bean.getData().get(0), canvas, colourScheme, getPreferenceAutoContrastLo(), getPreferenceAutoContrastHi()); Integer xPos = (Integer) bean.getGuiParameters().get(GuiParameters.IMAGEGRIDXPOS); Integer yPos = (Integer) bean.getGuiParameters().get(GuiParameters.IMAGEGRIDYPOS); if (xPos != null && yPos != null) imageGrid.addEntry(entry, xPos, yPos); else imageGrid.addEntry(entry); imageGrid.setThumbnailSize(getPreferenceImageSize()); locker.release(); if (liveActive) playback.moveToLast(); }
/** * Returns a list of all legal parameter values for {@link ShowPlotViewHandler}. The key is the * display name and the value is the parameter value to {@link * ShowPlotViewHandler#VIEW_NAME_PARAM}. * * <p>The list of legal values is made up of the following sources: * * <ul> * <li>All of the Plot Views that have been activated and registered themselves * PlotWindowManager * <li>All views in the view registry whose ID starts with {@link IPlotWindowManager#ID} * <li>All the view references whose primary ID is {@link * IPlotWindowManager#PLOT_VIEW_MULTIPLE_ID} * <li>All Gui Names from {@link PlotService#getGuiNames()}. These are suffixed with {@link * ShowPlotViewHandler#IN_PLOT_SERVER_SUFFIX} * <li>A <code>null</code> value for a option to open a new unique view name. * </ul> */ @Override public Map<String, String> getParameterValues() { PlotWindowManager manager = PlotWindowManager.getPrivateManager(); String[] views = manager.getAllPossibleViews(null, false); Set<String> guiNamesWithData = Collections.emptySet(); try { String[] names = PlotServerProvider.getPlotServer().getGuiNames(); if (names != null) guiNamesWithData = new HashSet<String>(Arrays.asList(names)); } catch (Exception e) { // non-fatal, just means no IN_PLOT_SERVER_SUFFIX next to view name, still shouldn't happen logger.debug("Failed to get list of Gui Names from Plot Server", e); } Map<String, String> values = new HashMap<String, String>(); for (String view : views) { String viewDisplay = view; DATA_BLOCK: if (guiNamesWithData.contains(view)) { try { DataBean db = PlotServerProvider.getPlotServer().getData(view); if (db == null || db.getData() == null || db.getData().isEmpty()) break DATA_BLOCK; viewDisplay = view + IN_PLOT_SERVER_SUFFIX; } catch (Exception ne) { break DATA_BLOCK; } } values.put(viewDisplay, view); } // null is a legal argument, means open a new view values.put(NEW_PLOT_VIEW, null); return values; }
private void processNewGrid(DataBean bean) { final Integer[] gridDims = (Integer[]) bean.getGuiParameters().get(GuiParameters.IMAGEGRIDSIZE); if (gridDims != null && gridDims.length > 0) { try { locker.acquire(); } catch (InterruptedException e) { e.printStackTrace(); } canvas .getDisplay() .asyncExec( new Runnable() { @Override public void run() { imageGrid.dispose(); if (gridDims.length == 1) imageGrid = new PlotServerSWTImageGrid(gridDims[0], gridDims[0], canvas, plotViewName); else imageGrid = new PlotServerSWTImageGrid(gridDims[1], gridDims[0], canvas, plotViewName); imageGrid.setThumbnailSize(getPreferenceImageSize()); locker.release(); canvas.redraw(); } }); } cleanUpOnServer(); }
private void processClientLocalUpdate() { DataBean bean = new DataBean(); int gridDim = (int) Math.ceil(Math.sqrt(filesToLoad.size())); if (imageGrid != null) imageGrid.dispose(); imageGrid = new PlotServerSWTImageGrid(gridDim, gridDim, canvas, plotViewName); imageGrid.setThumbnailSize(getPreferenceImageSize()); Iterator<String> iter = filesToLoad.iterator(); while (iter.hasNext()) { String filename = iter.next(); try { IDataHolder holder = LoaderFactory.getData(filename); IDataset data = holder.getDataset(0); List<DatasetWithAxisInformation> datalist = new ArrayList<DatasetWithAxisInformation>(); DatasetWithAxisInformation d = new DatasetWithAxisInformation(); if (data != null) { d.setData(data); datalist.add(d); bean.setData(datalist); } } catch (Exception e) { logger.error("Error loading data with filename " + filename, e); } bean.putGuiParameter(GuiParameters.FILENAME, filename); processNewFile(bean); } if (liveActive) { sldProgress .getDisplay() .asyncExec( new Runnable() { @Override public void run() { playback.moveToLast(); } }); } }
@SuppressWarnings("unchecked") @Override public void update(Object source, Object changeCode) { if (stopLoading) return; if (source == ImageExplorerView.FOLDER_UPDATE_MARKER) { // Folder Update if (changeCode instanceof List<?>) { playback.clearPlayback(); btnPlay .getDisplay() .asyncExec( new Runnable() { @Override public void run() { resetPlaying(false); if (isLive) { playback.setDelay(50); playback.setStepping(1); playback.start(); btnPlay.setSelection(true); btnPlay.setImage(imgStill); execSvc.execute(playback); if (!monActive) CommandExecutor.executeCommand( getViewSite(), "uk.ac.diamond.scisoft.analysis.rcp.MontorDirectoryAction"); cmbDirectoryLocation.setText(currentDir); isLive = false; } } }); filesToLoad = (List<String>) changeCode; processClientLocalUpdate(); } } else { if (source instanceof RMIPlotServer && changeCode instanceof String) { String viewName = (String) changeCode; if (!viewName.startsWith("Image Explorer")) return; RMIPlotServer server = (RMIPlotServer) source; try { String[] names = server.getGuiNames(); final DataBean bean = server.getData(names[0]); // when imagegrid size is set it means we need to reset the grid if (bean != null && bean.getGuiParameters().get(GuiParameters.IMAGEGRIDSIZE) != null) { Display.getDefault() .syncExec( new Runnable() { @Override public void run() { Integer[] gridDim = (Integer[]) bean.getGuiParameters().get(GuiParameters.IMAGEGRIDSIZE); if (imageGrid != null) imageGrid.dispose(); imageGrid = new PlotServerSWTImageGrid( gridDim[0], gridDim[1], canvas, plotViewName); imageGrid.setThumbnailSize(getPreferenceImageSize()); } }); } if (bean != null) { if (bean.getData().isEmpty()) { // We try to load the data from the filename if data not in the databean String filename = (String) bean.getGuiParameters().get(GuiParameters.FILENAME); if (filename == null) return; List<DatasetWithAxisInformation> data = new ArrayList<>(); DatasetWithAxisInformation dwai = new DatasetWithAxisInformation(); IDataHolder holder = LoaderFactory.getData(filename); IDataset loadedData = holder.getDataset(0); dwai.setData(loadedData); data.add(dwai); bean.setData(data); } processUpdate(bean); } else { throw new Exception("Databean is null. This image grid use is not supported."); } } catch (Exception e) { logger.error("Error updating data from server: ", e); } } } }
private void processUpdate(DataBean bean) { if (bean == null) return; if (bean.getGuiParameters() == null) return; UUID id = (UUID) bean.getGuiParameters().get(GuiParameters.PLOTID); if (id == null || plotID.compareTo(id) != 0) { // filter out own beans if (guiBean == null) guiBean = bean.getGuiParameters().copy(); // cache a local copy else guiBean.merge(bean.getGuiParameters()); // or merge it if (bean.getGuiParameters().containsKey(GuiParameters.FILEOPERATION)) return; if (bean.getGuiParameters().containsKey(GuiParameters.PLOTMODE)) { GuiPlotMode plotMode = (GuiPlotMode) bean.getGuiParameters().get(GuiParameters.PLOTMODE); if (plotMode.equals(GuiPlotMode.IMGEXPL)) { if (bean.getGuiParameters().containsKey(GuiParameters.FILENAME)) { if (filesToLoad == null) filesToLoad = new ArrayList<String>(); filesToLoad.add((String) bean.getGuiParameters().get(GuiParameters.FILENAME)); processNewFile(bean); } else if (bean.getGuiParameters().containsKey(GuiParameters.IMAGEGRIDSIZE)) { if (filesToLoad == null) filesToLoad = new ArrayList<String>(); else filesToLoad.clear(); btnPlay .getDisplay() .asyncExec( new Runnable() { @Override public void run() { resetPlaying(true); } }); processNewGrid(bean); } } } else if (bean.getGuiParameters().containsKey(GuiParameters.IMAGEGRIDLIVEVIEW)) { String directory = (String) bean.getGuiParameters().get(GuiParameters.IMAGEGRIDLIVEVIEW); spawnLoadJob(directory); currentDir = directory; isLive = true; liveActive = true; } } }