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