    001/*****************************************************************************
    002 * Copyright by The HDF Group.                                               *
    003 * All rights reserved.                                                      *
    004 *                                                                           *
    005 * This file is part of the HDF Java Products distribution.                  *
    006 * The full copyright notice, including terms governing use, modification,   *
    007 * and redistribution, is contained in the COPYING file, which can be found  *
    008 * at the root of the source code distribution tree,                         *
    009 * or in https://www.hdfgroup.org/licenses.                                  *
    010 * If you do not have access to either file, you may request a copy from     *
    011 * help@hdfgroup.org.                                                        *
    012 ****************************************************************************/
    013
    014package hdf.view.TreeView;
    015
    016import org.slf4j.Logger;
    017import org.slf4j.LoggerFactory;
    018
    019import org.eclipse.swt.widgets.Composite;
    020
    021import hdf.view.Tools;
    022import hdf.view.ViewProperties;
    023import hdf.view.DataView.DataViewManager;
    024
    025/**
    026 * A simple Factory class which returns concrete instances of the default
    027 * TreeView.
    028 *
    029 * @author jhenderson
    030 * @version 1.0 4/18/2018
    031 */
    032public class DefaultTreeViewFactory extends TreeViewFactory {
    033
    034    private static final Logger log = LoggerFactory.getLogger(DefaultTreeViewFactory.class);
    035
    036    @Override
    037    public TreeView getTreeView(Composite parent, DataViewManager viewer) throws ClassNotFoundException {
    038        String dataViewName = null;
    039        Object[] initargs = { parent, viewer };
    040        TreeView theView = null;
    041
    042        dataViewName = ViewProperties.DEFAULT_TREEVIEW_NAME;
    043
    044        Class<?> theClass = null;
    045        try {
    046            log.trace("getTreeView(): Class.forName({})", dataViewName);
    047
    048            /* Attempt to load the class by the given name */
    049            theClass = Class.forName(dataViewName);
    050        }
    051        catch (Exception ex) {
    052            log.debug("getTreeView(): unable to load default TreeView class by name({})", dataViewName);
    053            theClass = null;
    054        }
    055
    056        if (theClass == null) throw new ClassNotFoundException();
    057
    058        try {
    059            theView = (TreeView) Tools.newInstance(theClass, initargs);
    060
    061            log.trace("getTreeView(): returning TreeView instance {}", theView);
    062        }
    063        catch (Exception ex) {
    064            log.debug("getTreeView(): Error instantiating class:", ex);
    065            theView = null;
    066        }
    067
    068        return theView;
    069    }
    070
    071}