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.awt.GraphicsEnvironment; 018import java.io.File; 019 020import org.eclipse.swt.SWT; 021import org.eclipse.swt.events.SelectionAdapter; 022import org.eclipse.swt.events.SelectionEvent; 023import org.eclipse.swt.graphics.Font; 024import org.eclipse.swt.layout.GridData; 025import org.eclipse.swt.layout.GridLayout; 026import org.eclipse.swt.widgets.Button; 027import org.eclipse.swt.widgets.Combo; 028import org.eclipse.swt.widgets.Composite; 029import org.eclipse.swt.widgets.Control; 030import org.eclipse.swt.widgets.DirectoryDialog; 031import org.eclipse.swt.widgets.Display; 032import org.eclipse.swt.widgets.FileDialog; 033import org.eclipse.swt.widgets.Label; 034import org.eclipse.swt.widgets.Text; 035 036import hdf.view.Tools; 037import hdf.view.ViewProperties; 038 039/** 040 * UserOptionsGeneralPage.java - Configuration page for general application settings. 041 */ 042public class UserOptionsGeneralPage extends UserOptionsDefaultPage { 043 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserOptionsGeneralPage.class); 044 045 private Text UGField, workField, maxMemberField, startMemberField; 046 047 private Combo fontSizeChoice, fontTypeChoice, delimiterChoice, imageOriginChoice, indexBaseChoice; 048 049 private Button checkCurrentUserDir, checkUserHomeDir, checkAutoContrast, checkShowValues; 050 private Button currentDirButton, userHomeButton, rwButton, helpButton; 051 private Button checkReadOnly, checkReadAll; 052 053 private boolean isFontChanged; 054 private boolean isUserGuideChanged; 055 private boolean isWorkDirChanged; 056 057 private String workDir; 058 059 private static String fontname; 060 061 public UserOptionsGeneralPage() { 062 super("General Settings"); 063 isFontChanged = false; 064 isUserGuideChanged = false; 065 isWorkDirChanged = false; 066 } 067 068 /** 069 * Performs special processing when this page's Defaults button has been pressed. 070 */ 071 @Override 072 public void performDefaults() { 073 super.performDefaults(); 074 } 075 076 /** 077 * Notifies that the OK button of this page's container has been pressed. 078 * 079 * @return <code>false</code> to abort the container's OK processing and 080 * <code>true</code> to allow the OK to happen 081 */ 082 @Override 083 public boolean performOk() { 084 getPreferenceStore(); 085 086 if (UGField != null) { 087 String UGPath = UGField.getText(); 088 if ((UGPath != null) && (UGPath.length() > 0)) { 089 UGPath = UGPath.trim(); 090 isUserGuideChanged = !UGPath.equals(ViewProperties.getUsersGuide()); 091 ViewProperties.setUsersGuide(UGPath); 092 } 093 } 094 095 if (workField != null) { 096 String workPath = workField.getText(); 097 if (checkCurrentUserDir.getSelection()) 098 workPath = System.getProperty("user.dir"); 099 else if (checkUserHomeDir.getSelection()) 100 workPath = System.getProperty("user.home"); 101 102 if ((workPath != null) && (workPath.length() > 0)) { 103 workPath = workPath.trim(); 104 isWorkDirChanged = !workPath.equals(ViewProperties.getWorkDir()); 105 ViewProperties.setWorkDir(workPath); 106 } 107 } 108 109 // set font size and type 110 try { 111 if (fontTypeChoice != null) { 112 String ftype = fontTypeChoice.getItem(fontTypeChoice.getSelectionIndex()); 113 int fsize = Integer.parseInt(fontSizeChoice.getItem(fontSizeChoice.getSelectionIndex())); 114 log.trace("performOk: save font options {} - {}", ftype, fsize); 115 116 if (ViewProperties.getFontSize() != fsize) { 117 ViewProperties.setFontSize(fsize); 118 isFontChanged = true; 119 log.trace("performOk: props font size {}", ViewProperties.getFontSize()); 120 } 121 122 if (!ftype.equalsIgnoreCase(ViewProperties.getFontType())) { 123 ViewProperties.setFontType(ftype); 124 isFontChanged = true; 125 log.trace("performOk: props font {}", ViewProperties.getFontType()); 126 } 127 } 128 } 129 catch (Exception ex) { 130 isFontChanged = false; 131 } 132 133 // set file access 134 if (checkReadOnly != null) { 135 if (checkReadOnly.getSelection()) 136 ViewProperties.setReadOnly(true); 137 else 138 ViewProperties.setReadOnly(false); 139 } 140 141 // set data delimiter 142 if (delimiterChoice != null) 143 ViewProperties.setDataDelimiter(delimiterChoice.getItem(delimiterChoice.getSelectionIndex())); 144 if (imageOriginChoice != null) 145 ViewProperties.setImageOrigin(imageOriginChoice.getItem(imageOriginChoice.getSelectionIndex())); 146 147 if (checkReadAll != null) { 148 if (checkReadAll.getSelection()) { 149 ViewProperties.setStartMembers(0); 150 ViewProperties.setMaxMembers(-1); 151 } 152 else { 153 try { 154 int maxsize = Integer.parseInt(maxMemberField.getText()); 155 ViewProperties.setMaxMembers(maxsize); 156 } 157 catch (Exception ex) { 158 } 159 160 try { 161 int startsize = Integer.parseInt(startMemberField.getText()); 162 ViewProperties.setStartMembers(startsize); 163 } 164 catch (Exception ex) { 165 } 166 } 167 } 168 169 if (checkAutoContrast != null) 170 ViewProperties.setAutoContrast(checkAutoContrast.getSelection()); 171 if (checkShowValues != null) 172 ViewProperties.setShowImageValue(checkShowValues.getSelection()); 173 174 if (indexBaseChoice != null) { 175 if (indexBaseChoice.getSelectionIndex() == 0) 176 ViewProperties.setIndexBase1(false); 177 else 178 ViewProperties.setIndexBase1(true); 179 } 180 181 return true; 182 } 183 184 public boolean isFontChanged() { 185 return isFontChanged; 186 } 187 188 public boolean isUserGuideChanged() { 189 return isUserGuideChanged; 190 } 191 192 public boolean isWorkDirChanged() { 193 return isWorkDirChanged; 194 } 195 196 /** 197 * Loads all stored values in the <code>FieldEditor</code>s. 198 */ 199 protected void load() { 200 getPreferenceStore(); 201 202 try { 203 curFont = new Font( 204 Display.getCurrent(), 205 ViewProperties.getFontType(), 206 ViewProperties.getFontSize(), 207 SWT.NORMAL); 208 } 209 catch (Exception ex) { 210 curFont = null; 211 } 212 213 workDir = ViewProperties.getWorkDir(); 214 if (workDir == null) 215 workDir = rootDir; 216 217 workField.setText(workDir); 218 219 if (workDir.equals(System.getProperty("user.dir"))) { 220 checkCurrentUserDir.setSelection(true); 221 checkUserHomeDir.setSelection(false); 222 workField.setEnabled(false); 223 } 224 else if (workDir.equals(System.getProperty("user.home"))) { 225 checkCurrentUserDir.setSelection(false); 226 checkUserHomeDir.setSelection(true); 227 workField.setEnabled(false); 228 } 229 else { 230 checkCurrentUserDir.setSelection(false); 231 checkUserHomeDir.setSelection(false); 232 workField.setEnabled(true); 233 } 234 235 log.trace("UserOptionsGeneralPage: workDir={}", workDir); 236 237 UGField.setText(ViewProperties.getUsersGuide()); 238 239 checkReadOnly.setSelection(ViewProperties.isReadOnly()); 240 241 rwButton.setSelection(!ViewProperties.isReadOnly()); 242 243 String fontsize = String.valueOf(ViewProperties.getFontSize()); 244 log.trace("performOk: load General options fontsize={}", fontsize); 245 try { 246 int selectionIndex = fontSizeChoice.indexOf(fontsize); 247 fontSizeChoice.select(selectionIndex); 248 } 249 catch (Exception ex) { 250 fontSizeChoice.select(0); 251 } 252 253 fontname = ViewProperties.getFontType(); 254 log.trace("performOk: load General options fontname={}", fontname); 255 try { 256 int selectionIndex = fontTypeChoice.indexOf(fontname); 257 fontTypeChoice.select(selectionIndex); 258 } 259 catch (Exception ex) { 260 String sysFontName = Display.getDefault().getSystemFont().getFontData()[0].getName(); 261 262 try { 263 int selectionIndex = fontTypeChoice.indexOf(sysFontName); 264 fontTypeChoice.select(selectionIndex); 265 } 266 catch (Exception ex2) { 267 fontTypeChoice.select(0); 268 } 269 } 270 271 checkAutoContrast.setSelection(ViewProperties.isAutoContrast()); 272 273 checkShowValues.setSelection(ViewProperties.showImageValues()); 274 275 String[] imageOriginChoices = { ViewProperties.ORIGIN_UL, ViewProperties.ORIGIN_LL, ViewProperties.ORIGIN_UR, 276 ViewProperties.ORIGIN_LR }; 277 imageOriginChoice.setItems(imageOriginChoices); 278 279 try { 280 int selectionIndex = imageOriginChoice.indexOf(ViewProperties.getImageOrigin()); 281 imageOriginChoice.select(selectionIndex); 282 } 283 catch (Exception ex) { 284 imageOriginChoice.select(0); 285 } 286 287 // helpButton.setImage(ViewProperties.getHelpIcon()); 288 289 if (ViewProperties.isIndexBase1()) 290 indexBaseChoice.select(1); 291 else 292 indexBaseChoice.select(0); 293 294 String[] delimiterChoices = { ViewProperties.DELIMITER_TAB, ViewProperties.DELIMITER_COMMA, 295 ViewProperties.DELIMITER_SPACE, ViewProperties.DELIMITER_COLON, ViewProperties.DELIMITER_SEMI_COLON }; 296 delimiterChoice.setItems(delimiterChoices); 297 298 try { 299 int selectionIndex = delimiterChoice.indexOf(ViewProperties.getDataDelimiter()); 300 delimiterChoice.select(selectionIndex); 301 } 302 catch (Exception ex) { 303 delimiterChoice.select(0); 304 } 305 306 int nMax = ViewProperties.getMaxMembers(); 307 checkReadAll.setSelection((nMax<=0) || (nMax==Integer.MAX_VALUE)); 308 309 startMemberField.setText(String.valueOf(ViewProperties.getStartMembers())); 310 311 maxMemberField.setText(String.valueOf(ViewProperties.getMaxMembers())); 312 } 313 314 /** 315 * Creates and returns the SWT control for the customized body of this 316 * preference page under the given parent composite. 317 * 318 * @param parent the parent composite 319 * @return the new control 320 */ 321 @Override 322 protected Control createContents(Composite parent) { 323 shell = parent.getShell(); 324 Composite composite = new Composite(parent, SWT.NONE); 325 composite.setLayout(new GridLayout()); 326 327 org.eclipse.swt.widgets.Group workingDirectoryGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 328 workingDirectoryGroup.setLayout(new GridLayout(3, false)); 329 workingDirectoryGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 330 workingDirectoryGroup.setFont(curFont); 331 workingDirectoryGroup.setText("Default Working Directory"); 332 333 checkCurrentUserDir = new Button(workingDirectoryGroup, SWT.CHECK); 334 checkCurrentUserDir.setFont(curFont); 335 checkCurrentUserDir.setText("\"User Work\" or"); 336 checkCurrentUserDir.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 337 checkCurrentUserDir.addSelectionListener(new SelectionAdapter() { 338 @Override 339 public void widgetSelected(SelectionEvent e) { 340 boolean isCheckCurrentUserDirSelected = checkCurrentUserDir.getSelection(); 341 if (isCheckCurrentUserDirSelected) 342 checkUserHomeDir.setSelection(false); 343 workField.setEnabled(!isCheckCurrentUserDirSelected); 344 currentDirButton.setEnabled(!isCheckCurrentUserDirSelected); 345 } 346 }); 347 348 checkUserHomeDir = new Button(workingDirectoryGroup, SWT.CHECK); 349 checkUserHomeDir.setFont(curFont); 350 checkUserHomeDir.setText("\"User Home\" or"); 351 checkUserHomeDir.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 352 checkUserHomeDir.addSelectionListener(new SelectionAdapter() { 353 @Override 354 public void widgetSelected(SelectionEvent e) { 355 boolean isCheckUserHomeDirSelected = checkUserHomeDir.getSelection(); 356 if (isCheckUserHomeDirSelected) 357 checkCurrentUserDir.setSelection(false); 358 workField.setEnabled(!isCheckUserHomeDirSelected); 359 currentDirButton.setEnabled(!isCheckUserHomeDirSelected); 360 } 361 }); 362 363 workField = new Text(workingDirectoryGroup, SWT.SINGLE | SWT.BORDER); 364 workField.setFont(curFont); 365 workField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 366 367 currentDirButton = new Button(workingDirectoryGroup, SWT.PUSH); 368 currentDirButton.setFont(curFont); 369 currentDirButton.setText("Browse..."); 370 currentDirButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 371 currentDirButton.addSelectionListener(new SelectionAdapter() { 372 @Override 373 public void widgetSelected(SelectionEvent e) { 374 final DirectoryDialog dChooser = new DirectoryDialog(shell); 375 dChooser.setFilterPath(workDir); 376 dChooser.setText("Select a Directory"); 377 378 String dir = dChooser.open(); 379 380 if(dir == null) return; 381 382 workField.setText(dir); 383 } 384 }); 385 386 org.eclipse.swt.widgets.Group helpDocumentGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 387 helpDocumentGroup.setLayout(new GridLayout(3, false)); 388 helpDocumentGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 389 helpDocumentGroup.setFont(curFont); 390 helpDocumentGroup.setText("Help Document"); 391 392 Label label = new Label(helpDocumentGroup, SWT.RIGHT); 393 label.setFont(curFont); 394 label.setText("User's Guide: "); 395 396 UGField = new Text(helpDocumentGroup, SWT.SINGLE | SWT.BORDER); 397 UGField.setFont(curFont); 398 UGField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 399 400 Button browseButton = new Button(helpDocumentGroup, SWT.PUSH); 401 browseButton.setFont(curFont); 402 browseButton.setText("Browse..."); 403 browseButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 404 browseButton.addSelectionListener(new SelectionAdapter() { 405 @Override 406 public void widgetSelected(SelectionEvent e) { 407 final FileDialog fChooser = new FileDialog(shell, SWT.OPEN); 408 fChooser.setFilterPath(rootDir); 409 fChooser.setFilterExtensions(new String[] {"*"}); 410 fChooser.setFilterNames(new String[] {"All Files"}); 411 fChooser.setFilterIndex(0); 412 413 if(fChooser.open() == null) { 414 return; 415 } 416 417 File chosenFile = new File(fChooser.getFilterPath() + File.separator + fChooser.getFileName()); 418 419 if(!chosenFile.exists()) { 420 // Give an error 421 return; 422 } 423 424 UGField.setText(chosenFile.getAbsolutePath()); 425 } 426 }); 427 428 org.eclipse.swt.widgets.Group fileAccessModeGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 429 fileAccessModeGroup.setLayout(new GridLayout(2, true)); 430 fileAccessModeGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 431 fileAccessModeGroup.setFont(curFont); 432 fileAccessModeGroup.setText("Default File Access Mode"); 433 434 checkReadOnly = new Button(fileAccessModeGroup, SWT.RADIO); 435 checkReadOnly.setFont(curFont); 436 checkReadOnly.setText("Read Only"); 437 checkReadOnly.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, false, false)); 438 439 rwButton = new Button(fileAccessModeGroup, SWT.RADIO); 440 rwButton.setFont(curFont); 441 rwButton.setText("Read/Write"); 442 rwButton.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, false, false)); 443 444 org.eclipse.swt.widgets.Group textFontGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 445 textFontGroup.setLayout(new GridLayout(4, false)); 446 textFontGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 447 textFontGroup.setFont(curFont); 448 textFontGroup.setText("Text Font"); 449 450 label = new Label(textFontGroup, SWT.RIGHT); 451 label.setFont(curFont); 452 label.setText("Font Size: "); 453 454 String[] fontSizeChoices = { "8", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32", "34", "36", "48" }; 455 fontSizeChoice = new Combo(textFontGroup, SWT.SINGLE | SWT.READ_ONLY); 456 fontSizeChoice.setFont(curFont); 457 fontSizeChoice.setItems(fontSizeChoices); 458 fontSizeChoice.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 459 460 label = new Label(textFontGroup, SWT.RIGHT); 461 label.setFont(curFont); 462 label.setText("Font Type: "); 463 464 String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 465 466 fontTypeChoice = new Combo(textFontGroup, SWT.SINGLE | SWT.READ_ONLY); 467 fontTypeChoice.setFont(curFont); 468 fontTypeChoice.setItems(fontNames); 469 fontTypeChoice.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 470 471 org.eclipse.swt.widgets.Group imageGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 472 imageGroup.setLayout(new GridLayout(5, false)); 473 imageGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 474 imageGroup.setFont(curFont); 475 imageGroup.setText("Image"); 476 477 helpButton = new Button(imageGroup, SWT.PUSH); 478 helpButton.setImage(ViewProperties.getHelpIcon()); 479 helpButton.setToolTipText("Help on Auto Contrast"); 480 helpButton.addSelectionListener(new SelectionAdapter() { 481 @Override 482 public void widgetSelected(SelectionEvent e) { 483 final String msg = "Auto Contrast does the following to compute a gain/bias \n" 484 + "that will stretch the pixels in the image to fit the pixel \n" 485 + "values of the graphics system. For example, it stretches unsigned\n" 486 + "short data to fit the full range of an unsigned short. Later \n" 487 + "code simply takes the high order byte and passes it to the graphics\n" 488 + "system (which expects 0-255). It uses some statistics on the pixels \n" 489 + "to prevent outliers from throwing off the gain/bias calculations much.\n\n" 490 + "To compute the gain/bias we... \n" 491 + "Find the mean and std. deviation of the pixels in the image \n" + "min = mean - 3 * std.dev. \n" 492 + "max = mean + 3 * std.dev. \n" + "small fudge factor because this tends to overshoot a bit \n" 493 + "Stretch to 0-USHRT_MAX \n" + " gain = USHRT_MAX / (max-min) \n" 494 + " bias = -min \n" + "\n" + "To apply the gain/bias to a pixel, use the formula \n" 495 + "data[i] = (data[i] + bias) * gain \n" + "\n" 496 // + 497 // "Finally, for auto-ranging the sliders for gain/bias, we do the following \n" 498 // + "gain_min = 0 \n" 499 // + "gain_max = gain * 3.0 \n" 500 // + "bias_min = -fabs(bias) * 3.0 \n" 501 // + "bias_max = fabs(bias) * 3.0 \n" 502 + "\n\n"; 503 504 Tools.showInformation(getShell(), "Help", msg); 505 } 506 }); 507 508 checkAutoContrast = new Button(imageGroup, SWT.CHECK); 509 checkAutoContrast.setFont(curFont); 510 checkAutoContrast.setText("Autogain Image Contrast"); 511 checkAutoContrast.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 512 513 checkShowValues = new Button(imageGroup, SWT.CHECK); 514 checkShowValues.setFont(curFont); 515 checkShowValues.setText("Show Values"); 516 checkShowValues.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 517 518 label = new Label(imageGroup, SWT.RIGHT); 519 label.setFont(curFont); 520 label.setText("Image Origin: "); 521 522 imageOriginChoice = new Combo(imageGroup, SWT.SINGLE | SWT.READ_ONLY); 523 imageOriginChoice.setFont(curFont); 524 imageOriginChoice.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 525 526 org.eclipse.swt.widgets.Group dataGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 527 dataGroup.setLayout(new GridLayout(4, false)); 528 dataGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 529 dataGroup.setFont(curFont); 530 dataGroup.setText("Data"); 531 532 label = new Label(dataGroup, SWT.RIGHT); 533 label.setFont(curFont); 534 label.setText("Index Base: "); 535 536 String[] indexBaseChoices = { "0-based", "1-based" }; 537 indexBaseChoice = new Combo(dataGroup, SWT.SINGLE | SWT.READ_ONLY); 538 indexBaseChoice.setFont(curFont); 539 indexBaseChoice.setItems(indexBaseChoices); 540 indexBaseChoice.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 541 542 Label delimLabel = new Label(dataGroup, SWT.RIGHT); 543 delimLabel.setFont(curFont); 544 delimLabel.setText("Data Delimiter: "); 545 delimLabel.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); 546 547 delimiterChoice = new Combo(dataGroup, SWT.SINGLE | SWT.READ_ONLY); 548 delimiterChoice.setFont(curFont); 549 delimiterChoice.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 550 551 org.eclipse.swt.widgets.Group objectsGroup = new org.eclipse.swt.widgets.Group(composite, SWT.NONE); 552 objectsGroup.setLayout(new GridLayout(5, true)); 553 objectsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 554 objectsGroup.setFont(curFont); 555 objectsGroup.setText("Objects to Open"); 556 557 checkReadAll = new Button(objectsGroup, SWT.CHECK); 558 checkReadAll.setFont(curFont); 559 checkReadAll.setText("Open All"); 560 checkReadAll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 561 checkReadAll.addSelectionListener(new SelectionAdapter() { 562 @Override 563 public void widgetSelected(SelectionEvent e) { 564 startMemberField.setEnabled(!checkReadAll.getSelection()); 565 maxMemberField.setEnabled(!checkReadAll.getSelection()); 566 } 567 }); 568 569 label = new Label(objectsGroup, SWT.RIGHT); 570 label.setFont(curFont); 571 label.setText("Start Member: "); 572 573 startMemberField = new Text(objectsGroup, SWT.SINGLE | SWT.BORDER); 574 startMemberField.setFont(curFont); 575 startMemberField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 576 577 label = new Label(objectsGroup, SWT.RIGHT); 578 label.setFont(curFont); 579 label.setText("Member Count: "); 580 581 maxMemberField = new Text(objectsGroup, SWT.SINGLE | SWT.BORDER); 582 maxMemberField.setFont(curFont); 583 maxMemberField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); 584 585 startMemberField.setEnabled(!checkReadAll.getSelection()); 586 maxMemberField.setEnabled(!checkReadAll.getSelection()); 587 588 load(); 589 // return scroller; 590 return composite; 591 } 592}