/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.plotserver; import java.io.Serializable; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.UUID; import org.eclipse.dawnsci.analysis.dataset.roi.GridPreferences; import org.eclipse.dawnsci.analysis.dataset.roi.ROIList; /** * This class holds the names of the parameters used in GuiBean to communicate with the GUI */ public final class GuiParameters implements Serializable { private String param; // Ordinal of next parameter to be created private static int nextOrdinal = 0; // Assign an ordinal to this parameter private final int ordinal = nextOrdinal++; private final Class<?> clazz; private static final HashMap<String, GuiParameters> namesToObjects = new HashMap<String, GuiParameters>(); /** * Create a new GuiParameters with the specified name that can contain objects of the specified type. * * @param parameter * @param clazz */ private GuiParameters(String parameter, Class<?> clazz) { param = parameter; this.clazz = clazz; namesToObjects.put(parameter, this); } /** * Create a new GuiParameters with the specified name that can contain objects of the top level type, Serializable. * * @param parameter */ private GuiParameters(String parameter) { param = parameter; this.clazz = Serializable.class; namesToObjects.put(parameter, this); } @Override public String toString() { return param; } /** * Provide enum like valueOf method. * @param name String value of GuiParameters * @return the matching GuiParameters object, or <code>null</code> if no matching GuiParameters found */ public static GuiParameters valueOf(String name) { return namesToObjects.get(name); } /** * Provide enum like values method. * @return the set of all GuiParameters objects */ public static GuiParameters[] values() { Collection<GuiParameters> values = namesToObjects.values(); return values.toArray(new GuiParameters[namesToObjects.size()]); } /** * Return the permitted storage type for the given parameter. * <p> * Note, some class types are List.class which does not reflect the contents of the list, see documentation for * individual item for more details. * * @return class */ public Class<?> getStorageClass() { return clazz; } @Override public final boolean equals(Object that) { return that != null && ordinal == ((GuiParameters) that).ordinal; } @Override public final int hashCode() { return ordinal; } /** * Update value of Plot Operation GuiParameter */ public static final String PLOTOP_UPDATE = "UPDATE"; /** * ADD value of Plot Operation GuiParameter */ public static final String PLOTOP_ADD = "ADD"; /** * NONE value of Plot Operation GuiParameter */ public static final String PLOTOP_NONE = "NONE"; /** * Specifies the plotting mode can be any of the values in GuiPlotMode */ public static final GuiParameters PLOTMODE = new GuiParameters("PlotMode", GuiPlotMode.class); /** * Specifies the Title string of the graph */ public static final GuiParameters TITLE = new GuiParameters("Title", String.class); /** * Specifies the ROI name */ public static final GuiParameters ROIDATA = new GuiParameters("ROI", String.class); /** * Specifies the ROI data list */ public static final GuiParameters ROIDATALIST = new GuiParameters("ROIList", ROIList.class); /** * Indicates that all ROIs should be removed */ public static final GuiParameters ROICLEARALL = new GuiParameters("ROIClearAll", Boolean.class); /** * Specifies the UUID of the plot client that originates the bean */ public static final GuiParameters PLOTID = new GuiParameters("PlotID", UUID.class); /** * Specifies the plot operation at the moment can only be UPDATE, ADD or NONE */ public static final GuiParameters PLOTOPERATION = new GuiParameters("PlotOp", String.class); /** * Specified the file operation and should hold a FileOperationsBean for further detail */ public static final GuiParameters FILEOPERATION = new GuiParameters("FileOp", FileOperationBean.class); /** * Specifies the filename */ public static final GuiParameters FILENAME = new GuiParameters("Filename", String.class); /** * Specifies the file format */ public static final GuiParameters FILEFORMAT = new GuiParameters("FileFormat", String.class); /** * Specifies the saving path */ public static final GuiParameters SAVEPATH = new GuiParameters("SavePath", String.class); /** * Specifies a list of selected filenames (as a list of strings) */ public static final GuiParameters FILESELECTEDLIST = new GuiParameters("FileList", List.class); // List<String> /** * Specifies the view to send the loaded file */ public static final GuiParameters DISPLAYFILEONVIEW = new GuiParameters("DisplayOnView", String.class); /** * Specifies the X position / column the data should be placed in the image grid */ public static final GuiParameters IMAGEGRIDXPOS = new GuiParameters("IGridX", Integer.class); /** * Specifies the Y position / row the data should be placed in the image grid */ public static final GuiParameters IMAGEGRIDYPOS = new GuiParameters("IGridY", Integer.class); /** * Specifies the number of columns (or rows and columns) in Image Grid */ public static final GuiParameters IMAGEGRIDSIZE = new GuiParameters("IGridSize", Integer[].class); /** * Metadata node path */ public static final GuiParameters METADATANODEPATH = new GuiParameters("NodePath", String.class); /** * Tree node path (filename#/path/to/node) */ public static final GuiParameters TREENODEPATH = new GuiParameters("TreeNodePath", String.class); /** * Specifies the GUI Preferences used by GridProfile */ public static final GuiParameters GRIDPREFERENCES = new GuiParameters("GridPrefs", GridPreferences.class); /** * Session store for all the images in the ImageGridView for retrieval at next startup. * <p> * The Images are as a list of uk.ac.diamond.scisoft.imagegrid.gridentry.GridImageEntry */ public static final GuiParameters IMAGEGRIDSTORE = new GuiParameters("ImageGridStore", List.class); // List<GridImageEntry> public static final GuiParameters VOLUMEHEADERSIZE = new GuiParameters("RawVolumeHeaderSize", Integer.class); public static final GuiParameters VOLUMEVOXELTYPE = new GuiParameters("RawVolumeVoxelType", Integer.class); public static final GuiParameters VOLUMEXDIM = new GuiParameters("RawVolumeVoxelXDim", Integer.class); public static final GuiParameters VOLUMEYDIM = new GuiParameters("RawVolumeVoxelYDim", Integer.class); public static final GuiParameters VOLUMEZDIM = new GuiParameters("RawVolumeVoxelZDim", Integer.class); /** * Parameter for external access of the image grid view */ public static final GuiParameters IMAGEGRIDLIVEVIEW = new GuiParameters("ImageGridLiveView", String.class); /** * List of IPeaks from fitting routing */ public static final GuiParameters FITTEDPEAKS = new GuiParameters("FittedPeaks", List.class); // List<IPeak> public static final GuiParameters MASKING = new GuiParameters("Masking"); // Unknown/unused? /** * Calibration peaks for NCD */ public static final GuiParameters CALIBRATIONPEAKS = new GuiParameters("CalibrationPeaks"); // Unknown/unused? /** * Calibration function for NCD */ public static final GuiParameters CALIBRATIONFUNCTIONNCD = new GuiParameters("CalibrationFunction"); // Unknown/unused? /** * Specifies the OneDFile */ public static final GuiParameters ONEDFILE = new GuiParameters("OneDFile", OneDDataFilePlotDefinition.class); /** * Parameters for controlling axes */ public static final GuiParameters AXIS_OPERATION = new GuiParameters("AxisOp", AxisOperation.class); /** * Indicates the current update should be done quietly and not broadcast */ public static final GuiParameters QUIET_UPDATE = new GuiParameters("QuietUpdate"); }