org.eclipse.gmf.graphdef.editor.sheet.AbstractCustomSectionParent.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.gmf.graphdef.editor.sheet.AbstractCustomSectionParent.java

Source

/*
 *  Copyright (c) 2007 Borland Software Corporation and others.
 * All rights reserved. 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
 *
 * Contributors:
 *     Borland Software Corporation - initial API and implementation
 */
package org.eclipse.gmf.graphdef.editor.sheet;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.diagram.ui.properties.sections.AbstractModelerPropertySection;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.CLabel;
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.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.events.IExpansionListener;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

public abstract class AbstractCustomSectionParent extends AbstractModelerPropertySection {
    public abstract void doCreateControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage);

    public abstract void doDispose();

    protected abstract ModelUpdater createModelUpdater();

    protected static final String EMPTY_STRING = ""; //$NON-NLS-1$

    private TabbedPropertySheetPage myTabbedPropertySheetPage;
    private boolean areControlsCreated;
    private IExpansionListener myExpansionListener;
    private ModelUpdater myListener;
    private Collection mySavedSelection = new ArrayList();

    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
        super.createControls(parent, tabbedPropertySheetPage);
        myTabbedPropertySheetPage = tabbedPropertySheetPage;
        doCreateControls(parent, tabbedPropertySheetPage);
        areControlsCreated = true;
    }

    public void dispose() {
        if (areControlsCreated) {
            doDispose();
            areControlsCreated = false;
        }
        super.dispose();
    }

    public boolean shouldUseExtraSpace() {
        return true;
    }

    // XXX [artem] revisit - what's the reason to save copy of selection when it's available from super?
    protected final Collection getSavedSelection() {
        //StructuredSelection structured = (StructuredSelection) super.getSelection();
        //return structured.toList();
        return mySavedSelection;
    }

    public void setInput(IWorkbenchPart part, ISelection selection) {
        if (selection.isEmpty() || false == selection instanceof StructuredSelection) {
            super.setInput(part, selection);
            return;
        }
        final StructuredSelection structuredSelection = ((StructuredSelection) selection);
        ArrayList transformedSelection = new ArrayList(structuredSelection.size());
        for (Iterator it = structuredSelection.iterator(); it.hasNext();) {
            Object r = transformSelection(it.next());
            if (r != null) {
                transformedSelection.add(r);
            }
        }
        mySavedSelection = transformedSelection;
        super.setInput(part, new StructuredSelection(transformedSelection));
    }

    protected Object transformSelection(Object selected) {
        if (selected instanceof EditPart) {
            Object model = ((EditPart) selected).getModel();
            return model instanceof View ? ((View) model).getElement() : null;
        }
        if (selected instanceof View) {
            return ((View) selected).getElement();
        }
        if (selected instanceof IAdaptable) {
            View view = (View) ((IAdaptable) selected).getAdapter(View.class);
            if (view != null) {
                return view.getElement();
            }
        }
        return selected;
    }

    protected EObject getEObject() {
        if (getSavedSelection() != null && !getSavedSelection().isEmpty()) {
            return (EObject) getSavedSelection().iterator().next();
        }
        return super.getEObject();
    }

    protected ModelUpdater getListener() {
        if (myListener == null) {
            myListener = createModelUpdater();
        }
        return myListener;
    }

    public static abstract class ModelUpdater implements ModifyListener, SelectionListener {
        public abstract void applyChangesFrom(Widget widget);

        private boolean nonUserChange;

        public boolean isNonUserChange() {
            return nonUserChange;
        }

        public void modifyText(ModifyEvent e) {
            if (!isNonUserChange()) {
                applyChangesFrom(e.widget);
            }
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }

        public void widgetSelected(SelectionEvent e) {
            if (!isNonUserChange()) {
                applyChangesFrom(e.widget);
            }
        }

        public void startListeningTo(Spinner spinner) {
            spinner.addModifyListener(this);
            spinner.addSelectionListener(this);
        }

        public void stopListeningTo(Spinner spinner) {
            if (!spinner.isDisposed()) {
                spinner.removeModifyListener(this);
                spinner.removeSelectionListener(this);
            }
        }

        public void startListeningTo(DateTime dateTime) {
            dateTime.addSelectionListener(this);
        }

        public void stopListeningTo(DateTime dateTime) {
            if (!dateTime.isDisposed()) {
                dateTime.removeSelectionListener(this);
            }
        }

        public void startListeningTo(CCombo combo) {
            combo.addSelectionListener(this);
        }

        public void stopListeningTo(CCombo combo) {
            if (!combo.isDisposed()) {
                combo.removeSelectionListener(this);
            }
        }

        public void startListeningTo(Text text) {
            text.addModifyListener(this);
            text.addSelectionListener(this);
        }

        public void stopListeningTo(Text text) {
            if (!text.isDisposed()) {
                text.removeModifyListener(this);
                text.removeSelectionListener(this);
            }
        }

        public void startListeningTo(Button button) {
            button.addSelectionListener(this);
        }

        public void stopListeningTo(Button button) {
            if (!button.isDisposed()) {
                button.removeSelectionListener(this);
            }
        }

        public void startNonUserChange() {
            nonUserChange = true;
        }

        public void finishNonUserChange() {
            nonUserChange = false;
        }
    }

    protected IExpansionListener getExpansionListener(final Composite parent) {
        if (myExpansionListener == null) {
            myExpansionListener = new IExpansionListener() {

                public void expansionStateChanged(ExpansionEvent e) {
                    relayoutExpandBar(parent);
                }

                public void expansionStateChanging(ExpansionEvent e) {
                }
            };
        }
        return myExpansionListener;
    }

    protected void relayoutExpandBar(Composite expandBar) {
        Control control = myTabbedPropertySheetPage.getControl();
        Point size = control.getSize();
        control.setSize(size.x - 1, size.y - 1);
        control.setSize(size.x, size.y);
    }

    // helpers used by old handwritten custom sections

    protected Layout createStandardFormLayout() {
        FormLayout layout = new FormLayout();
        layout.marginWidth = ITabbedPropertyConstants.HSPACE + 2;
        layout.marginHeight = ITabbedPropertyConstants.VSPACE;
        layout.spacing = ITabbedPropertyConstants.VMARGIN + 1;
        return layout;
    }

    protected static FormData createFormData(Control leftControl, Control topControl, boolean lowermost) {
        return createFormData(leftControl, topControl, null, lowermost);
    }

    protected static FormData createFormData(Control leftControl, Control topControl, Control rightControl,
            boolean lowermost) {
        return createFormData(leftControl, topControl, rightControl, null, true, true, lowermost, false);
    }

    protected static FormData createFormData(Control leftControl, Control topControl, Control rightControl,
            Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop, boolean lowermost,
            boolean rightmost) {
        FormData data = new FormData();
        if (leftControl != null) {
            data.left = new FormAttachment(leftControl);
        } else if (defaultIsLeft) {
            data.left = new FormAttachment(0);
        }
        if (leftControl == null && topControl != null && !defaultIsLeft) {
            Object sd = topControl.getLayoutData();
            if (sd instanceof FormData) {
                FormData topData = (FormData) sd;
                FormAttachment topLeft = topData.left;
                if (topLeft != null && !(topLeft.control instanceof CLabel
                        && (topControl instanceof Spinner || topControl instanceof Text))) {
                    data.left = topLeft;
                }
            }
        }
        if (topControl != null) {
            data.top = new FormAttachment(topControl);
            if (topControl instanceof Spinner || topControl instanceof Text) {
                Object sd = topControl.getLayoutData();
                if (sd instanceof FormData) {
                    FormData topData = (FormData) sd;
                    FormAttachment topLeft = topData.left;
                    if (topLeft != null && topLeft.control instanceof CLabel) {
                        data.top = topLeft;
                    }
                }
            }
        } else if (defaultIsTop) {
            data.top = new FormAttachment(0);
        }
        if (topControl == null && leftControl != null && !defaultIsTop) {
            Object sd = leftControl.getLayoutData();
            if (sd instanceof FormData) {
                FormData topData = (FormData) sd;
                FormAttachment leftTop = topData.top;
                if (leftTop != null) {
                    data.top = leftTop;
                    if (leftTop.control instanceof Spinner || leftTop.control instanceof Text) {
                        Object sd2 = leftTop.control.getLayoutData();
                        if (sd2 instanceof FormData) {
                            FormData topDataLeftTop = (FormData) sd2;
                            FormAttachment topLeft = topDataLeftTop.left;
                            if (topLeft != null && topLeft.control instanceof CLabel) {
                                data.top = topLeft;
                            }
                        }
                    }
                }
            }
        }
        if (rightControl != null) {
            data.right = new FormAttachment(rightControl);
        } else if (rightmost) {
            data.right = new FormAttachment(100);
        }
        if (bottomControl != null) {
            data.bottom = new FormAttachment(bottomControl);
        } else if (lowermost) {
            data.bottom = new FormAttachment(100);
        }
        return data;
    }

    protected static FormData createFillFormData(Control leftControl, Control topControl, Control rightControl,
            Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop, boolean lowermost,
            boolean rightmost, boolean fillHorizonral, boolean fillVertical) {
        FormData data = new FormData();
        data.left = new FormAttachment(0);
        data.right = new FormAttachment(100);
        data.top = new FormAttachment(0);
        data.bottom = new FormAttachment(100);
        return data;
    }

    protected Composite createFlatFormComposite(Composite parent, int leftPosition) {
        return createFlatFormComposite(parent, leftPosition, false);
    }

    protected Composite createFlatFormComposite(Composite parent, int leftPosition, boolean noData) {
        return createFlatFormComposite(parent, null, null, null, null, false, true, false, true, leftPosition,
                noData);
    }

    protected Composite createFlatFormComposite(Composite parent, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost, int leftPosition, boolean noData) {
        Composite pane = getWidgetFactory().createFlatFormComposite(parent);
        if (!noData) {
            FormData data = createFormData(leftControl, topControl, rightControl, bottomControl, defaultIsLeft,
                    defaultIsTop, lowermost, rightmost);
            if (leftPosition != SWT.DEFAULT) {
                data.left = new FormAttachment(leftPosition);
            }
            pane.setLayoutData(data);
        }
        return pane;
    }

    protected ExpandableComposite createLayoutParamsExpandableComposite(Composite parent, String label,
            Control topControl, boolean rightmost) {
        return createExpandableComposite(parent, label, null, topControl, false, rightmost);
    }

    protected ExpandableComposite createExpandableComposite(Composite parent, String label, Control leftControl,
            Control topControl, boolean lowermost, boolean rightmost) {
        ExpandableComposite expandable = getWidgetFactory().createExpandableComposite(parent,
                ExpandableComposite.TWISTIE | ExpandableComposite.CLIENT_INDENT | ExpandableComposite.TITLE_BAR);
        expandable.setText(label);
        expandable.setBackground(getWidgetFactory().getHyperlinkGroup().getBackground());
        expandable.setActiveToggleColor(getWidgetFactory().getHyperlinkGroup().getActiveForeground());
        expandable.setTitleBarForeground(getWidgetFactory().getHyperlinkGroup().getForeground());
        FormData data = createFormData(leftControl, topControl, null, null, true, true, lowermost, rightmost);
        expandable.setLayoutData(data);
        return expandable;
    }

    protected Group createGroup(Composite parent, String label) {
        return createGroup(parent, label, false);
    }

    protected Group createGroup(Composite parent, String label, boolean noData) {
        return createGroup(parent, label, null, null, noData);
    }

    protected Group createGroup(Composite parent, String label, Control leftComposite, Control topComposite) {
        return createGroup(parent, label, leftComposite, topComposite, false);
    }

    protected Group createGroup(Composite parent, String label, Control leftComposite, Control topComposite,
            boolean noData) {
        return createGroup(parent, label, leftComposite, topComposite, true, true, false, false, noData);
    }

    protected Group createGroup(Composite parent, String label, Control leftComposite, Control topComposite,
            boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost, boolean noData) {
        Group group = getWidgetFactory().createGroup(parent, label);
        if (!noData) {
            FormData data = createFormData(leftComposite, topComposite, null, null, defaultIsLeft, defaultIsTop,
                    lowermost, rightmost);
            group.setLayoutData(data);
        }
        group.setLayout(createStandardFormLayout());
        return group;
    }

    protected Button createRadio(Composite parent, Control topControl, boolean lowermost, Image image) {
        return createRadio(parent, image, EMPTY_STRING, 0, SWT.DEFAULT, topControl, 0, lowermost);
    }

    protected Button createRadio(Composite parent, String label, Control topControl, int rightAlignment) {
        return createRadio(parent, null, label, 0, rightAlignment, topControl, SWT.DEFAULT, false);
    }

    protected Button createRadio(Composite parent, String label, Control topControl, boolean lowermost) {
        return createRadio(parent, null, label, 0, SWT.DEFAULT, topControl, SWT.DEFAULT, lowermost);
    }

    protected Button createRadio(Composite parent, Image image, String label, int leftAlignment, int rightAlignment,
            int topAlignment, boolean lowermost) {
        return createRadio(parent, image, label, leftAlignment, rightAlignment, null, topAlignment, lowermost);
    }

    protected Button createRadio(Composite parent, Image image, String label, int leftAlignment, int rightAlignment,
            Control topControl, int topAlignment, boolean lowermost) {
        return createRadio(parent, image, label, null, leftAlignment, topControl, topAlignment, null,
                rightAlignment, true, true, lowermost, false);
    }

    protected Button createRadio(Composite parent, Image image, String label, Control leftControl,
            int leftAlignment, Control topControl, int topAlignment, Control rightControl, int rightAlignment,
            boolean defaultIsLeft, boolean defaultIsTop, boolean lowermost, boolean rightmost) {
        Button radio = getWidgetFactory().createButton(parent, label == null ? EMPTY_STRING : label, SWT.RADIO);
        if (image != null) {
            radio.setImage(image);
        }
        FormData data = createFormData(leftControl, topControl, rightControl, null, defaultIsLeft, defaultIsTop,
                lowermost, rightmost);
        if (leftControl == null && SWT.DEFAULT != leftAlignment) {
            data.left = new FormAttachment(leftAlignment);
        }
        if (rightControl == null && SWT.DEFAULT != rightAlignment) {
            data.right = new FormAttachment(rightAlignment);
        }
        if (topControl == null && SWT.DEFAULT != topAlignment) {
            data.top = new FormAttachment(topAlignment);
        }
        radio.setLayoutData(data);
        return radio;
    }

    protected Button createCheckbox(Composite parent, String label, Control topControl, Control leftControl) {
        return createCheckbox(parent, label, topControl, leftControl, false);
    }

    protected Button createCheckbox(Composite parent, String label, Control topControl, Control leftControl,
            boolean lowermost) {
        return createCheckbox(parent, label, topControl, leftControl, true, true, lowermost, SWT.DEFAULT);
    }

    protected Button createCheckbox(Composite parent, String label, Control topControl, Control leftControl,
            boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, int leftAlignment) {
        Button checkbox = getWidgetFactory().createButton(parent, label, SWT.CHECK);
        FormData data = createFormData(leftControl, topControl, null, null, defaultIsLeft, defaultIsTop, lowermost,
                false);
        if (leftAlignment != SWT.DEFAULT) {
            data.left = new FormAttachment(leftAlignment);
        }
        checkbox.setLayoutData(data);
        return checkbox;
    }

    protected Spinner createSpinnerWidget(Composite parent, String label, Control leftWidget) {
        return createSpinnerWidget(parent, label, leftWidget, null, false, false);
    }

    protected Spinner createSpinnerWidget(Composite parent, String label, Control leftWidget, Control topWidget,
            boolean rightlast, boolean horizontalNotVertical) {
        return createSpinnerWidget(parent, label, leftWidget, topWidget, false, rightlast, horizontalNotVertical, 1,
                999, 1, 100);
    }

    protected Spinner createSpinnerWidget(Composite parent, String label, Control leftControl, Control topControl,
            boolean lowermost, boolean rightmost, boolean horizontalNotVertical, int min, int max, int inc,
            int pageInc) {
        Spinner spinner = new Spinner(parent, SWT.BORDER | (horizontalNotVertical ? SWT.H_SCROLL : SWT.V_SCROLL));
        spinner.setMinimum(min);
        spinner.setMaximum(max);
        spinner.setIncrement(inc);
        spinner.setPageIncrement(pageInc);
        spinner.setBackground(parent.getBackground());
        spinner.setForeground(parent.getForeground());
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        FormData data = createFormData(leftWidget, topControl, null, null, true, true, lowermost, rightmost);
        spinner.setLayoutData(data);
        return spinner;
    }

    protected Text createText(Composite parent, String label, Control leftWidget, Control topWidget,
            String initialText) {
        return createText(parent, label, leftWidget, topWidget, initialText, true, true, false, true);
    }

    protected Text createText(Composite parent, String label, Control leftControl, Control topControl,
            String initialText, boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost) {
        Text text = getWidgetFactory().createText(parent, initialText, SWT.BORDER);
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        FormData data = createFormData(leftWidget, topControl, null, null, defaultIsLeft, defaultIsTop, lowermost,
                rightmost);
        text.setLayoutData(data);
        return text;
    }

    protected Text createExtendedText(Composite parent, String label, Control leftControl, Control topControl,
            String initialText, boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost) {
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        Text text = getWidgetFactory().createText(parent, initialText,
                SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP);
        FormData data = createFormData(leftWidget, topControl, null, null, true, true, true, true);
        text.setLayoutData(data);
        return text;
    }

    protected CLabel createLabelWidget(Composite parent, String labelText, Control leftWidget) {
        return createLabelWidget(parent, labelText, leftWidget, null);
    }

    protected CLabel createLabelWidget(Composite parent, String labelText, Control leftWidget, Control topWidget) {
        CLabel label = getWidgetFactory().createCLabel(parent, labelText);
        FormData data = createFormData(leftWidget, topWidget, null, false);
        label.setLayoutData(data);
        return label;
    }

    private DateTime createDate(Composite parent, String label, Control leftControl, Control topControl,
            boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost) {
        DateTime date = new DateTime(parent, SWT.DATE);
        date.setBackground(parent.getBackground());
        date.setForeground(parent.getForeground());
        getWidgetFactory().adapt(date);
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        FormData data = createFormData(leftWidget, topControl, null, null, defaultIsLeft, defaultIsTop, lowermost,
                rightmost);
        date.setLayoutData(data);
        return date;
    }

    private DateTime createTime(Composite parent, String label, Control leftControl, Control topControl,
            boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost) {
        DateTime time = new DateTime(parent, SWT.TIME);
        time.setBackground(parent.getBackground());
        time.setForeground(parent.getForeground());
        getWidgetFactory().adapt(time);
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        FormData data = createFormData(leftWidget, topControl, null, null, defaultIsLeft, defaultIsTop, lowermost,
                rightmost);
        time.setLayoutData(data);
        return time;
    }

    private CCombo createCombo(Composite parent, String label, Control leftControl, Control topControl,
            boolean defaultIsTop, boolean defaultIsLeft, boolean lowermost, boolean rightmost) {
        CCombo combo = getWidgetFactory().createCCombo(parent, SWT.NONE);
        Control leftWidget = leftControl;
        if (label != null && label.length() != 0) {
            leftWidget = createLabelWidget(parent, label, leftControl, topControl);
        }
        FormData data = createFormData(leftWidget, topControl, null, null, defaultIsLeft, defaultIsTop, lowermost,
                rightmost);
        combo.setLayoutData(data);
        return combo;
    }

    // these ones are used in model customization example templates!

    public Composite createMainWidget(Composite parent) {
        return createFlatFormComposite(parent, 0, true);
    }

    public Composite createCompositeWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createFlatFormComposite(parent, leftControl, topControl, rightControl, bottomControl, defaultIsLeft,
                defaultIsTop, lowermost, rightmost, SWT.DEFAULT, false);
    }

    public ExpandableComposite createExpandableComposite(Composite parent, String label, Control leftControl,
            Control topControl, Control rightControl, Control bottomControl, boolean defaultIsLeft,
            boolean defaultIsTop, boolean lowermost, boolean rightmost) {
        return createExpandableComposite(parent, label, leftControl, topControl, lowermost, rightmost);
    }

    public Group createGroupWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        Group group = createGroup(parent, label, leftControl, topControl, defaultIsTop, defaultIsLeft, lowermost,
                rightmost, false);
        return group;
    }

    public Button createRadioButton(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createRadio(parent, null, label, leftControl, SWT.DEFAULT, topControl, SWT.DEFAULT, rightControl,
                SWT.DEFAULT, defaultIsLeft, defaultIsTop, lowermost, rightmost);
    }

    public Button createCheckboxButton(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createCheckbox(parent, label, topControl, leftControl, defaultIsTop, defaultIsLeft, lowermost,
                SWT.DEFAULT);
    }

    public Spinner createSpinnerWidget(Composite parent, String label, int min, int max, int inc, int pageInc,
            Control leftControl, Control topControl, Control rightControl, Control bottomControl,
            boolean defaultIsLeft, boolean defaultIsTop, boolean lowermost, boolean rightmost) {
        return createSpinnerWidget(parent, label, leftControl, topControl, lowermost, rightmost, false, min, max,
                inc, pageInc);
    }

    public Text createTextWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createText(parent, label, leftControl, topControl, EMPTY_STRING, defaultIsTop, defaultIsLeft,
                lowermost, rightmost);
    }

    public Text createExtendedTextWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        Text extendedText = createExtendedText(parent, label, leftControl, topControl, EMPTY_STRING, defaultIsTop,
                defaultIsLeft, lowermost, rightmost);
        return extendedText;
    }

    public CLabel createLabelWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createLabelWidget(parent, label, leftControl, topControl);
    }

    public DateTime createDateWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createDate(parent, label, leftControl, topControl, defaultIsTop, defaultIsLeft, lowermost,
                rightmost);
    }

    public DateTime createTimeWidget(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createTime(parent, label, leftControl, topControl, defaultIsTop, defaultIsLeft, lowermost,
                rightmost);
    }

    public CCombo createComboBox(Composite parent, String label, Control leftControl, Control topControl,
            Control rightControl, Control bottomControl, boolean defaultIsLeft, boolean defaultIsTop,
            boolean lowermost, boolean rightmost) {
        return createCombo(parent, label, leftControl, topControl, defaultIsTop, defaultIsLeft, lowermost,
                rightmost);
    }

}