| /******************************************************************************* |
| * Copyright (c) 2005 The Regents of the University of California. |
| * This material was produced under U.S. Government contract W-7405-ENG-36 |
| * for Los Alamos National Laboratory, which is operated by the University |
| * of California for the U.S. Department of Energy. The U.S. Government has |
| * rights to use, reproduce, and distribute this software. NEITHER THE |
| * GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR |
| * ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified |
| * to produce derivative works, such modified software should be clearly marked, |
| * so as not to confuse it with the version available from LANL. |
| * |
| * Additionally, this program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * LA-CC 04-115 |
| *******************************************************************************/ |
| package org.eclipse.ptp.ui.preferences; |
| |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.ptp.ui.IPTPUIConstants; |
| import org.eclipse.ptp.ui.PTPUIPlugin; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Button; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Text; |
| |
| /** |
| * @author Clement chu |
| * |
| */ |
| public class ViewerPreferencesPage extends AbstractPreferencePage { |
| private ViewIntFieldEditor toolTipField = null; |
| private Button tooltipIsWrapButton = null; |
| private Button tooltipShowAllTimeButton = null; |
| |
| /** Inner class ViewIntFieldEditor |
| * used for validation of text field |
| * |
| */ |
| private class ViewIntFieldEditor { |
| private int textLimit = 5; |
| private String labelText = null; |
| private int min = 0; |
| private int max = 10; |
| private Text textField = null; |
| private String msg = ""; |
| |
| /** Constructor |
| * @param labelText |
| * @param min |
| * @param max |
| * @param parent |
| */ |
| ViewIntFieldEditor(String labelText, int min, int max, Composite parent) { |
| this.labelText = labelText; |
| this.min = min; |
| this.max = max; |
| createControl(parent); |
| } |
| |
| /** Create control |
| * @param parent |
| */ |
| protected void createControl(Composite parent) { |
| doFillIntoGrid(parent); |
| } |
| |
| /** Create text field into given composite |
| * @param parent |
| */ |
| protected void doFillIntoGrid(Composite parent) { |
| new Label(parent, SWT.LEFT).setText(labelText); |
| |
| textField = new Text(parent, SWT.SINGLE | SWT.BORDER); |
| textField.setFont(parent.getFont()); |
| textField.setTextLimit(textLimit); |
| textField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| textField.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| ViewerPreferencesPage.this.isValid(); |
| } |
| }); |
| |
| new Label(parent, SWT.RIGHT).setText("(" + min + "-" + max + ")"); |
| } |
| |
| /** Set text field enabled |
| * @param isEnable |
| */ |
| public void setEnabled(boolean isEnable) { |
| if (textField != null) { |
| textField.setEnabled(isEnable); |
| } |
| } |
| |
| /** Set value into text field |
| * @param value |
| */ |
| public void setValue(int value) { |
| if (textField != null) { |
| textField.setText(String.valueOf(value)); |
| } |
| } |
| |
| /** Get value from text field |
| * @return |
| */ |
| public int getValue() { |
| try { |
| return Integer.parseInt(textField.getText()); |
| } catch (NumberFormatException e) { |
| return 0; |
| } |
| } |
| |
| /** Set error message |
| * @param msg |
| */ |
| public void setErrorMessage(String msg) { |
| this.msg = msg; |
| } |
| |
| /** Get error message |
| * @return |
| */ |
| public String getErrorMessage() { |
| return msg; |
| } |
| |
| /** Is text field valid |
| * @return |
| */ |
| public boolean isValid() { |
| setErrorMessage(""); |
| try { |
| int value = Integer.parseInt(textField.getText()); |
| if (value < min || value > max) { |
| setErrorMessage("Value must be in the range of (" + min + "-" + max + ")"); |
| return false; |
| } |
| } catch (NumberFormatException e) { |
| setErrorMessage("Value must be integer: " + e.getMessage()); |
| return false; |
| } |
| return true; |
| } |
| } |
| |
| /** Constructor |
| * |
| */ |
| public ViewerPreferencesPage() { |
| super(); |
| setPreferenceStore(PTPUIPlugin.getDefault().getPreferenceStore()); |
| setDescription(PreferenceMessages.getString("ViewerPreferencePage.desc")); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) |
| */ |
| protected Control createContents(Composite parent) { |
| //getWorkbench().getHelpSystem().setHelp(getControl(), IPDebugHelpContextIds.P_DEBUG_PREFERENCE_PAGE); |
| Composite composite = new Composite(parent, SWT.NULL); |
| GridLayout layout = new GridLayout(1, false); |
| layout.numColumns = 1; |
| layout.marginHeight = 0; |
| layout.marginWidth = 0; |
| composite.setLayout(layout); |
| GridData data = new GridData(GridData.FILL_HORIZONTAL); |
| data.verticalAlignment = GridData.FILL; |
| data.horizontalAlignment = GridData.FILL; |
| composite.setLayoutData(data); |
| createSpacer(composite, 1); |
| createViewSettingPreferences(composite); |
| setValues(); |
| return composite; |
| } |
| |
| /** Create tooltip group composite |
| * @param parent |
| */ |
| protected void createTooltipGroup(Composite parent) { |
| Composite group = createGroupComposite(parent, 1, false, PreferenceMessages.getString("ViewerPreferencesPage.tooltipName")); |
| Composite compTooltip = createComposite(group, 1); |
| |
| tooltipShowAllTimeButton = createCheckButton(compTooltip, PreferenceMessages.getString("ViewerPreferencesPage.tooltip_showAllTime")); |
| tooltipShowAllTimeButton.addSelectionListener(new SelectionAdapter() { |
| public void widgetSelected(SelectionEvent e) { |
| toolTipField.setEnabled(!tooltipShowAllTimeButton.getSelection()); |
| if (tooltipShowAllTimeButton.getSelection()) |
| toolTipField.setValue((int)getPreferenceStore().getDefaultLong(IPTPUIConstants.VIEW_TOOLTIP_TIMEOUT)); |
| } |
| }); |
| toolTipField = new ViewIntFieldEditor(PreferenceMessages.getString("ViewerPreferencesPage.tooltip_timeout"), 1000, 10000, createComposite(compTooltip, 3)); |
| tooltipIsWrapButton = createCheckButton(compTooltip, PreferenceMessages.getString("ViewerPreferencesPage.tooltip_iswrap")); |
| } |
| |
| /** Create icon group composite |
| * @param parent |
| */ |
| protected void createIconGroup(Composite parent) { |
| /* |
| Composite group = createGroupComposite(parent, 1, false, PreferenceMessages.getString("ViewerPreferencesPage.iconName")); |
| Composite compIcon = createComposite(group, 3); |
| |
| iconSpacingXField = new ViewIntFieldEditor(PreferenceMessages.getString("ViewerPreferencesPage.icon_spacing_x"), 1, 10, compIcon); |
| iconSpacingYField = new ViewIntFieldEditor(PreferenceMessages.getString("ViewerPreferencesPage.icon_spacing_y"), 1, 10, compIcon); |
| |
| iconWidthField = new ViewIntFieldEditor(PreferenceMessages.getString("ViewerPreferencesPage.icon_width"), 12, 100, compIcon); |
| iconHeightField = new ViewIntFieldEditor(PreferenceMessages.getString("ViewerPreferencesPage.icon_height"), 12, 100, compIcon); |
| */ |
| } |
| |
| /** Create view setting preferences |
| * @param parent |
| */ |
| protected void createViewSettingPreferences(Composite parent) { |
| //createIconGroup(parent); |
| createTooltipGroup(parent); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.preference.PreferencePage#performDefaults() |
| */ |
| public void performDefaults() { |
| IPreferenceStore store = getPreferenceStore(); |
| /* |
| iconSpacingXField.setValue(store.getDefaultInt(IPTPUIConstants.VIEW_ICON_SPACING_X)); |
| iconSpacingYField.setValue(store.getDefaultInt(IPTPUIConstants.VIEW_ICON_SPACING_Y)); |
| iconWidthField.setValue(store.getDefaultInt(IPTPUIConstants.VIEW_ICON_WIDTH)); |
| iconHeightField.setValue(store.getDefaultInt(IPTPUIConstants.VIEW_ICON_HEIGHT)); |
| */ |
| toolTipField.setValue((int)store.getDefaultLong(IPTPUIConstants.VIEW_TOOLTIP_TIMEOUT)); |
| tooltipIsWrapButton.setSelection(store.getDefaultBoolean(IPTPUIConstants.VIEW_TOOLTIP_ISWRAP)); |
| tooltipShowAllTimeButton.setSelection(store.getDefaultBoolean(IPTPUIConstants.VIEW_TOOLTIP_SHOWALLTIME)); |
| super.performDefaults(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.preference.IPreferencePage#performOk() |
| */ |
| public boolean performOk() { |
| storeValues(); |
| PTPUIPlugin.getDefault().savePluginPreferences(); |
| return true; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ptp.ui.preferences.AbstractPreferencePage#setValues() |
| */ |
| protected void setValues() { |
| IPreferenceStore store = getPreferenceStore(); |
| /* |
| iconSpacingXField.setValue(store.getInt(IPTPUIConstants.VIEW_ICON_SPACING_X)); |
| iconSpacingYField.setValue(store.getInt(IPTPUIConstants.VIEW_ICON_SPACING_Y)); |
| iconWidthField.setValue(store.getInt(IPTPUIConstants.VIEW_ICON_WIDTH)); |
| iconHeightField.setValue(store.getInt(IPTPUIConstants.VIEW_ICON_HEIGHT)); |
| */ |
| toolTipField.setValue((int)store.getLong(IPTPUIConstants.VIEW_TOOLTIP_TIMEOUT)); |
| tooltipIsWrapButton.setSelection(store.getBoolean(IPTPUIConstants.VIEW_TOOLTIP_ISWRAP)); |
| tooltipShowAllTimeButton.setSelection(store.getBoolean(IPTPUIConstants.VIEW_TOOLTIP_SHOWALLTIME)); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ptp.ui.preferences.AbstractPreferencePage#storeValues() |
| */ |
| protected void storeValues() { |
| IPreferenceStore store = getPreferenceStore(); |
| /* |
| store.setValue(IPTPUIConstants.VIEW_ICON_SPACING_X, iconSpacingXField.getValue()); |
| store.setValue(IPTPUIConstants.VIEW_ICON_SPACING_Y, iconSpacingYField.getValue()); |
| store.setValue(IPTPUIConstants.VIEW_ICON_WIDTH, iconWidthField.getValue()); |
| store.setValue(IPTPUIConstants.VIEW_ICON_HEIGHT, iconHeightField.getValue()); |
| */ |
| store.setValue(IPTPUIConstants.VIEW_TOOLTIP_TIMEOUT, (long)toolTipField.getValue()); |
| store.setValue(IPTPUIConstants.VIEW_TOOLTIP_ISWRAP, tooltipIsWrapButton.getSelection()); |
| store.setValue(IPTPUIConstants.VIEW_TOOLTIP_SHOWALLTIME, tooltipShowAllTimeButton.getSelection()); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.preference.IPreferencePage#isValid() |
| */ |
| public boolean isValid() { |
| setErrorMessage(null); |
| setMessage(null); |
| /* |
| if (!iconSpacingXField.isValid()) { |
| setErrorMessage(iconSpacingXField.getErrorMessage()); |
| return false; |
| } |
| if (!iconSpacingYField.isValid()) { |
| setErrorMessage(iconSpacingYField.getErrorMessage()); |
| return false; |
| } |
| if (!iconWidthField.isValid()) { |
| setErrorMessage(iconWidthField.getErrorMessage()); |
| return false; |
| } |
| if (!iconHeightField.isValid()) { |
| setErrorMessage(iconHeightField.getErrorMessage()); |
| return false; |
| } |
| */ |
| if (!toolTipField.isValid()) { |
| setErrorMessage(toolTipField.getErrorMessage()); |
| return false; |
| } |
| return true; |
| } |
| } |