X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/AbstractConfigurationBlock.java b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/AbstractConfigurationBlock.java new file mode 100644 index 0000000..ec72daf --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/AbstractConfigurationBlock.java @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2003-2004 Christopher Lenz and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Christopher Lenz - initial API and implementation + * + * $Id: AbstractConfigurationBlock.java,v 1.1 2004-09-02 18:11:50 jsurfer Exp $ + */ + +package net.sourceforge.phpeclipse.css.ui.internal.preferences; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.FontMetrics; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.layout.GridData; +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; + +/** + * + */ +abstract class AbstractConfigurationBlock { + + // Instance Variables ------------------------------------------------------ + + private IPreferenceStore fPreferenceStore; + + private Map fCheckBoxes = new HashMap(); + private SelectionListener fCheckBoxListener = new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + Button button = (Button) e.widget; + getPreferenceStore().setValue((String) fCheckBoxes.get(button), + button.getSelection()); + } + }; + + private Map fTextFields = new HashMap(); + private ModifyListener fTextFieldListener = new ModifyListener() { + public void modifyText(ModifyEvent e) { + Text text = (Text) e.widget; + getPreferenceStore().setValue((String) fTextFields.get(text), + text.getText()); + } + }; + + private List fNumberFields = new ArrayList(); + private ModifyListener fNumberFieldListener = new ModifyListener() { + public void modifyText(ModifyEvent e) { + //numberFieldChanged((Text) e.widget); + } + }; + + private Map fLabels = new HashMap(); + + // Constructors ------------------------------------------------------------ + + public AbstractConfigurationBlock(IPreferenceStore store) { + this.fPreferenceStore = store; + } + + // Public Methods ---------------------------------------------------------- + + public void initializeFields() { + for (Iterator i = fCheckBoxes.keySet().iterator(); i.hasNext(); ) { + Button button = (Button) i.next(); + String key = (String) fCheckBoxes.get(button); + button.setSelection(getPreferenceStore().getBoolean(key)); + } + for (Iterator i = fTextFields.keySet().iterator(); i.hasNext(); ) { + Text text = (Text) i.next(); + String key = (String) fTextFields.get(text); + text.setText(getPreferenceStore().getString(key)); + } + } + + // Protected Methods ------------------------------------------------------- + + protected final Button addBooleanField(Composite parent, String label, + String key, int indentation) { + + Button checkBox = new Button(parent, SWT.CHECK); + checkBox.setText(label); + + GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + gd.horizontalIndent = indentation; + gd.horizontalSpan = 2; + checkBox.setLayoutData(gd); + checkBox.addSelectionListener(fCheckBoxListener); + + fCheckBoxes.put(checkBox, key); + + return checkBox; + } + + protected final Control addIntegerField(Composite composite, String label, + String key, int textLimit, int indentation) { + + Text textControl = + addStringField(composite, label, textLimit, indentation); + fTextFields.put(textControl, key); + fNumberFields.add(textControl); + textControl.addModifyListener(fNumberFieldListener); + + return textControl; + } + + protected final Control addTextField(Composite composite, String label, + String key, int textLimit, int indentation) { + + Text textControl = + addStringField(composite, label, textLimit, indentation); + fTextFields.put(textControl, key); + textControl.addModifyListener(fTextFieldListener); + + return textControl; + } + + protected final int convertHeightInCharsToPixels(Control control, + int chars) { + GC gc = new GC(control); + gc.setFont(control.getFont()); + FontMetrics fontMetrics = gc.getFontMetrics(); + gc.dispose(); + if (fontMetrics == null) { + return 0; + } + return Dialog.convertHeightInCharsToPixels(fontMetrics, chars); + } + + protected final int convertWidthInCharsToPixels(Control control, + int chars) { + GC gc = new GC(control); + gc.setFont(control.getFont()); + FontMetrics fontMetrics = gc.getFontMetrics(); + gc.dispose(); + if (fontMetrics == null) { + return 0; + } + return Dialog.convertWidthInCharsToPixels(fontMetrics, chars); + } + + protected final Control getLabel(Control field) { + return (Control) fLabels.get(field); + } + + protected final IPreferenceStore getPreferenceStore() { + return fPreferenceStore; + } + + // Private Methods --------------------------------------------------------- + + private Text addStringField(Composite composite, String label, + int textLimit, int indentation) { + + Label labelControl = new Label(composite, SWT.NONE); + labelControl.setText(label); + GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + gd.horizontalIndent = indentation; + labelControl.setLayoutData(gd); + + Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE); + gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + gd.widthHint = convertWidthInCharsToPixels(textControl, textLimit + 1); + textControl.setLayoutData(gd); + textControl.setTextLimit(textLimit); + + fLabels.put(textControl, labelControl); + + return textControl; + } + +}