]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/controls/DynamicComboFieldEditor.java
Make background map preference changes apply immediately
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / controls / DynamicComboFieldEditor.java
diff --git a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/controls/DynamicComboFieldEditor.java b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/controls/DynamicComboFieldEditor.java
deleted file mode 100644 (file)
index f3bb8c7..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-package org.simantics.district.imports.ui.controls;
-
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * A field editor for a combo box that allows the drop-down selection of one of
- * a list of items.
- *
- * @since 3.3
- */
-public class DynamicComboFieldEditor extends FieldEditor {
-
-       /**
-        * The <code>Combo</code> widget.
-        */
-       private Combo fCombo;
-
-       /**
-        * The value (not the name) of the currently selected item in the Combo widget.
-        */
-       private String fValue;
-
-       /**
-        * The names (labels) and underlying values to populate the combo widget.  These should be
-        * arranged as: { {name1, value1}, {name2, value2}, ...}
-        */
-       private String[][] fEntryNamesAndValues;
-
-       /**
-        * Create the combo box field editor.
-        *
-     * @param name the name of the preference this field editor works on
-     * @param labelText the label text of the field editor
-        * @param entryNamesAndValues the names (labels) and underlying values to populate the combo widget.  These should be
-        * arranged as: { {name1, value1}, {name2, value2}, ...}
-        * @param parent the parent composite
-        */
-       
-       public DynamicComboFieldEditor(String name, String labelText, Composite parent) {
-           init(name, labelText);
-           createControl(parent);
-       }
-       
-       public DynamicComboFieldEditor(String name, String labelText, String[][] entryNamesAndValues, Composite parent) {
-               init(name, labelText);
-               fEntryNamesAndValues = entryNamesAndValues;
-               createControl(parent);
-       }
-       
-       public void updateCombo(String[][] fEntryNamesAndValues) {
-           this.fEntryNamesAndValues = fEntryNamesAndValues;
-           updateComboBoxControl();
-       }
-
-       /**
-        * Checks whether given <code>String[][]</code> is of "type"
-        * <code>String[][2]</code>.
-        *
-        * @return <code>true</code> if it is ok, and <code>false</code> otherwise
-        */
-       @SuppressWarnings("unused")
-       private boolean checkArray(String[][] table) {
-               if (table == null) {
-                       return false;
-               }
-               for (int i = 0; i < table.length; i++) {
-                       String[] array = table[i];
-                       if (array == null || array.length != 2) {
-                               return false;
-                       }
-               }
-               return true;
-       }
-
-       @Override
-       protected void adjustForNumColumns(int numColumns) {
-               if (numColumns > 1) {
-                       Control control = getLabelControl();
-                       int left = numColumns;
-                       if (control != null) {
-                               ((GridData)control.getLayoutData()).horizontalSpan = 1;
-                               left = left - 1;
-                       }
-                       ((GridData)fCombo.getLayoutData()).horizontalSpan = left;
-               } else {
-                       Control control = getLabelControl();
-                       if (control != null) {
-                               ((GridData)control.getLayoutData()).horizontalSpan = 1;
-                       }
-                       ((GridData)fCombo.getLayoutData()).horizontalSpan = 1;
-               }
-       }
-
-       @Override
-       protected void doFillIntoGrid(Composite parent, int numColumns) {
-               int comboC = 1;
-               if (numColumns > 1) {
-                       comboC = numColumns - 1;
-               }
-               Control control = getLabelControl(parent);
-               GridData gd = new GridData();
-               gd.horizontalSpan = 1;
-               control.setLayoutData(gd);
-               control = getComboBoxControl(parent);
-               gd = new GridData();
-               gd.horizontalSpan = comboC;
-               gd.horizontalAlignment = GridData.FILL;
-               control.setLayoutData(gd);
-               control.setFont(parent.getFont());
-       }
-
-       @Override
-       protected void doLoad() {
-               updateComboForValue(getPreferenceStore().getString(getPreferenceName()));
-       }
-
-       @Override
-       protected void doLoadDefault() {
-               updateComboForValue(getPreferenceStore().getDefaultString(getPreferenceName()));
-       }
-
-       @Override
-       protected void doStore() {
-               if (fValue == null) {
-                       getPreferenceStore().setToDefault(getPreferenceName());
-                       return;
-               }
-               getPreferenceStore().setValue(getPreferenceName(), fValue);
-       }
-
-       @Override
-       public int getNumberOfControls() {
-               return 2;
-       }
-
-       /*
-        * Lazily create and return the Combo control.
-        */
-       private Combo getComboBoxControl(Composite parent) {
-               if (fCombo == null) {
-            fCombo = new Combo(parent, SWT.READ_ONLY);
-            fCombo.setFont(parent.getFont());
-
-            fCombo.addSelectionListener(new SelectionAdapter() {
-                @Override
-                public void widgetSelected(SelectionEvent evt) {
-                    String oldValue = fValue;
-                    String name = fCombo.getText();
-                    fValue = getValueForName(name);
-                    setPresentsDefaultValue(false);
-                    fireValueChanged(VALUE, oldValue, fValue);
-                }
-            });
-               }
-               updateComboBoxControl();
-               return fCombo;
-       }
-       
-       private void updateComboBoxControl() {
-           fCombo.removeAll();
-           if (fEntryNamesAndValues != null) {
-            for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-                fCombo.add(fEntryNamesAndValues[i][0], i);
-            }
-           }
-       }
-
-       /*
-        * Given the name (label) of an entry, return the corresponding value.
-        */
-       private String getValueForName(String name) {
-               for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-                       String[] entry = fEntryNamesAndValues[i];
-                       if (name.equals(entry[0])) {
-                               return entry[1];
-                       }
-               }
-               return fEntryNamesAndValues[0][0];
-       }
-
-       /*
-        * Set the name in the combo widget to match the specified value.
-        */
-       private void updateComboForValue(String value) {
-               fValue = value;
-               for (int i = 0; i < fEntryNamesAndValues.length; i++) {
-                       if (value.equals(fEntryNamesAndValues[i][1])) {
-                               fCombo.setText(fEntryNamesAndValues[i][0]);
-                               return;
-                       }
-               }
-               if (fEntryNamesAndValues.length > 0) {
-                       fValue = fEntryNamesAndValues[0][1];
-                       fCombo.setText(fEntryNamesAndValues[0][0]);
-               }
-       }
-
-       @Override
-       public void setEnabled(boolean enabled, Composite parent) {
-               super.setEnabled(enabled, parent);
-               getComboBoxControl(parent).setEnabled(enabled);
-       }
-
-    public void addComboListener(SelectionListener selectionListener) {
-        fCombo.addSelectionListener(selectionListener);
-    }
-    
-    public String getValue() {
-        return fValue;
-    }
-}