001/*****************************************************************************
002 * Copyright by The HDF Group.                                               *
003 * Copyright by the Board of Trustees of the University of Illinois.         *
004 * All rights reserved.                                                      *
005 *                                                                           *
006 * This file is part of the HDF Java Products distribution.                  *
007 * The full copyright notice, including terms governing use, modification,   *
008 * and redistribution, is contained in the COPYING file, which can be found  *
009 * at the root of the source code distribution tree,                         *
010 * or in https://www.hdfgroup.org/licenses.                                  *
011 * If you do not have access to either file, you may request a copy from     *
012 * help@hdfgroup.org.                                                        *
013 ****************************************************************************/
014
015package hdf.view.DataView;
016
017import java.util.HashMap;
018
019import org.eclipse.swt.widgets.Composite;
020import org.eclipse.swt.widgets.Shell;
021
022import hdf.object.HObject;
023import hdf.view.ImageView.ImageView;
024import hdf.view.MetaDataView.MetaDataView;
025import hdf.view.PaletteView.PaletteView;
026import hdf.view.TableView.TableView;
027import hdf.view.TreeView.TreeView;
028
029/**
030 * The data view factory interface for displaying data objects
031 */
032public abstract class DataViewFactory {
033    /**
034     * Get an instance of TableView given the appropriate constructor parameters
035     *
036     * @param viewer
037     *             The data view manager
038     * @param dataPropertiesMap
039     *             The properties for the table view
040     *
041     * @throws ClassNotFoundException
042     *             If there is an error getting the class for a table view.
043     *
044     * @return the table view.
045     */
046    @SuppressWarnings("rawtypes")
047    public abstract TableView    getTableView(DataViewManager viewer, HashMap dataPropertiesMap) throws ClassNotFoundException;
048
049    /**
050     * Get an instance of ImageView given the appropriate constructor parameters
051     *
052     * @param viewer
053     *             The data view manager
054     * @param dataPropertiesMap
055     *             The properties for the image view
056     *
057     * @throws ClassNotFoundException
058     *             If there is an error getting the class for a image view.
059     *
060     * @return the image view.
061     */
062    @SuppressWarnings("rawtypes")
063    public abstract ImageView    getImageView(DataViewManager viewer, HashMap dataPropertiesMap) throws ClassNotFoundException;
064
065    /**
066     * Get an instance of PaletteView given the appropriate constructor parameters
067     *
068     * @param parent
069     *             The parent shell for the palette view
070     * @param viewer
071     *             The data view manager
072     * @param theImageView
073     *             The image view for the palette view
074     *
075     * @throws ClassNotFoundException
076     *             If there is an error getting the class for a palette view.
077     *
078     * @return the palette view.
079     */
080    public abstract PaletteView  getPaletteView(Shell parent, DataViewManager viewer, ImageView theImageView) throws ClassNotFoundException;
081
082    /**
083     * Get an instance of MetaDataView given the appropriate constructor parameters
084     *
085     * @param parent
086     *             The parent composite for the maetadata view
087     * @param viewer
088     *             The data view manager
089     * @param theObj
090     *             The object for the metadata view
091     *
092     * @throws ClassNotFoundException
093     *             If there is an error getting the class for a metadata view.
094     *
095     * @return the metadata view.
096     */
097    public abstract MetaDataView getMetaDataView(Composite parent, DataViewManager viewer, HObject theObj) throws ClassNotFoundException;
098
099    /**
100     * Get an instance of TreeView given the appropriate constructor parameters
101     *
102     * @param parent
103     *             The parent composite for the tree view
104     * @param viewer
105     *             The data view manager
106     *
107     * @throws ClassNotFoundException
108     *             If there is an error getting the class for a tree view.
109     *
110     * @return the tree view.
111     */
112    public abstract TreeView getTreeView(Composite parent, DataViewManager viewer) throws ClassNotFoundException;
113}