    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.dialog;
    016
    017import java.util.ArrayList;
    018import java.util.Vector;
    019
    020import org.slf4j.Logger;
    021import org.slf4j.LoggerFactory;
    022
    023import org.eclipse.swt.SWT;
    024import org.eclipse.swt.layout.FillLayout;
    025import org.eclipse.swt.layout.GridData;
    026import org.eclipse.swt.layout.GridLayout;
    027import org.eclipse.swt.widgets.Combo;
    028import org.eclipse.swt.widgets.Composite;
    029import org.eclipse.swt.widgets.Control;
    030
    031import hdf.view.ViewProperties;
    032
    033
    034/**
    035 * UserOptionsViewModulesPage.java - Configuration page for user-implementable
    036 * modules.
    037 */
    038public class UserOptionsViewModulesPage extends UserOptionsDefaultPage {
    039    private static final Logger log = LoggerFactory.getLogger(UserOptionsViewModulesPage.class);
    040
    041    private Combo                 choiceTreeView, choiceMetaDataView, choiceTableView, choiceImageView, choicePaletteView;
    042
    043    /** A list of Tree view implementations. */
    044    private static ArrayList<String> treeViews;
    045
    046    /** A list of Image view implementations. */
    047    private static ArrayList<String> imageViews;
    048
    049    /** A list of Table view implementations. */
    050    private static ArrayList<String> tableViews;
    051
    052    /** A list of metadata view implementations. */
    053    private static ArrayList<String> metaDataViews;
    054
    055    /** A list of palette view implementations. */
    056    private static ArrayList<String> paletteViews;
    057
    058    /**
    059     * Configuration page for user-implementable modules.
    060     */
    061    public UserOptionsViewModulesPage() {
    062        super("View Modules Settings");
    063    }
    064
    065    /**
    066     * Performs special processing when this page's Defaults button has been pressed.
    067     */
    068    @Override
    069    public void performDefaults() {
    070        super.performDefaults();
    071    }
    072
    073    /**
    074     * Notifies that the OK button of this page's container has been pressed.
    075     *
    076     * @return <code>false</code> to abort the container's OK processing and <code>true</code> to allow
    077     *         the OK to happen
    078     */
    079    @SuppressWarnings({ "unchecked", "rawtypes" })
    080    @Override
    081    public boolean performOk() {
    082        getPreferenceStore();
    083
    084        ArrayList[] moduleList = { treeViews, metaDataViews, tableViews, imageViews, paletteViews };
    085        Combo[] choiceList = { choiceTreeView, choiceMetaDataView, choiceTableView, choiceImageView, choicePaletteView };
    086        for (int i = 0; i < moduleList.length; i++) {
    087            Combo curModuleCombo = choiceList[i];
    088            if (curModuleCombo != null) {
    089                Object theModule = curModuleCombo.getItem(curModuleCombo.getSelectionIndex());
    090                moduleList[i].remove(theModule);
    091                moduleList[i].add(0, theModule);
    092            }
    093        }
    094
    095        return true;
    096    }
    097
    098    /**
    099     * Loads all stored values in the <code>FieldEditor</code>s.
    100     */
    101    @SuppressWarnings({ "unchecked", "rawtypes" })
    102    protected void load() {
    103        getPreferenceStore();
    104
    105        treeViews = (ArrayList<String>) ViewProperties.getTreeViewList();
    106        metaDataViews = (ArrayList<String>) ViewProperties.getMetaDataViewList();
    107        tableViews = (ArrayList<String>) ViewProperties.getTableViewList();
    108        imageViews = (ArrayList<String>) ViewProperties.getImageViewList();
    109        paletteViews = (ArrayList<String>) ViewProperties.getPaletteViewList();
    110        // srbVector = (ArrayList<String>)ViewProperties.getSrbAccount();
    111
    112        choiceTreeView.setItems(treeViews.toArray(new String[0]));
    113        choiceTreeView.select(0);
    114        choiceMetaDataView.setItems(metaDataViews.toArray(new String[0]));
    115        choiceMetaDataView.select(0);
    116        choiceTableView.setItems(tableViews.toArray(new String[0]));
    117        choiceTableView.select(0);
    118        choiceImageView.setItems(imageViews.toArray(new String[0]));
    119        choiceImageView.select(0);
    120        choicePaletteView.setItems(paletteViews.toArray(new String[0]));
    121        choicePaletteView.select(0);
    122
    123        ArrayList[] moduleList = { treeViews, metaDataViews, tableViews, imageViews, paletteViews };
    124        Combo[] choiceList = { choiceTreeView, choiceMetaDataView, choiceTableView, choiceImageView, choicePaletteView };
    125        for (int i = 0; i < moduleList.length; i++) {
    126            Object theModule = choiceList[i].getItem(choiceList[i].getSelectionIndex());
    127            moduleList[i].remove(theModule);
    128            moduleList[i].add(0, theModule);
    129        }
    130    }
    131
    132    /**
    133     * Creates and returns the SWT control for the customized body of this
    134     * preference page under the given parent composite.
    135     *
    136     * @param parent the parent composite
    137     * @return the new control
    138     */
    139    @Override
    140    protected Control createContents(Composite parent) {
    141        shell = parent.getShell();
    142        Composite composite = new Composite(parent, SWT.NONE);
    143        composite.setLayout(new GridLayout());
    144
    145        org.eclipse.swt.widgets.Group treeViewGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE);
    146        treeViewGroup.setLayout(new FillLayout());
    147        treeViewGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    148        treeViewGroup.setFont(curFont);
    149        treeViewGroup.setText("TreeView Provider");
    150
    151        choiceTreeView = new Combo(treeViewGroup, SWT.SINGLE | SWT.READ_ONLY);
    152        choiceTreeView.setFont(curFont);
    153
    154        org.eclipse.swt.widgets.Group metadataViewGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE);
    155        metadataViewGroup.setLayout(new FillLayout());
    156        metadataViewGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    157        metadataViewGroup.setFont(curFont);
    158        metadataViewGroup.setText("MetaDataView Provider");
    159
    160        choiceMetaDataView = new Combo(metadataViewGroup, SWT.SINGLE | SWT.READ_ONLY);
    161        choiceMetaDataView.setFont(curFont);
    162
    163        org.eclipse.swt.widgets.Group tableViewGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE);
    164        tableViewGroup.setLayout(new FillLayout());
    165        tableViewGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    166        tableViewGroup.setFont(curFont);
    167        tableViewGroup.setText("TableView Provider");
    168
    169        choiceTableView = new Combo(tableViewGroup, SWT.SINGLE | SWT.READ_ONLY);
    170        choiceTableView.setFont(curFont);
    171
    172        org.eclipse.swt.widgets.Group imageViewGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE);
    173        imageViewGroup.setLayout(new FillLayout());
    174        imageViewGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    175        imageViewGroup.setFont(curFont);
    176        imageViewGroup.setText("ImageView Provider");
    177
    178        choiceImageView = new Combo(imageViewGroup, SWT.SINGLE | SWT.READ_ONLY);
    179        choiceImageView.setFont(curFont);
    180
    181        org.eclipse.swt.widgets.Group paletteViewGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE);
    182        paletteViewGroup.setLayout(new FillLayout());
    183        paletteViewGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    184        paletteViewGroup.setFont(curFont);
    185        paletteViewGroup.setText("PaletteView Provider");
    186
    187        choicePaletteView = new Combo(paletteViewGroup, SWT.SINGLE | SWT.READ_ONLY);
    188        choicePaletteView.setFont(curFont);
    189
    190        load();
    191        return composite;
    192
    193    }
    194}