/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.utils.incubator; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * * Factory for creating several widgets in one step for given composites. * * @author Sascha Zur * @author Jascha Riedel (#14005) */ public final class WidgetGroupFactory { /** * Option if there shall be no restriction. */ public static final int NONE = 0; /** * Option if a textfield should only allow float inputs (e.g. no letters). */ public static final int ONLY_FLOAT = 1; /** * Option if a textfield should only allow integer inputs (e.g. no letters). */ public static final int ONLY_INTEGER = 2; /** * Option if a textfield should only allow inputs >= 0. */ public static final int GREATER_OR_EQUAL_ZERO = 4; /** * Option if a textfield should only allow inputs > 0. */ public static final int GREATER_ZERO = 16; /** * Option if a textfield should align the text in the (standard is left). */ public static final int ALIGN_CENTER = 16777216; private static final String CONTROL_PROPERTY_KEY = "property.control"; private WidgetGroupFactory() { } /** * Creates at first a new {@link Label} and then a new {@link Text } field in the given * composite. The Text will be linked with the given property and have the given width. * * @param composite in which the widgets will be created in * @param propertyMessage message for the label * @param property which will be linked in the Text widget * @param textWidth for the Text widget * @param function some options for the text field, see constants in {@link WidgetGroupFactory} * @return the generated text widget for further use (e.g. adding listener) */ public static LabelAndTextForProperty addLabelAndTextfieldForPropertyToComposite(Composite composite, String propertyMessage, String property, int textWidth, final int function) { Label propertyLabel = new Label(composite, SWT.NONE); propertyLabel.setText(propertyMessage); final Text propertyText = new Text(composite, SWT.BORDER | (SWT.CENTER & function)); propertyText.setData(CONTROL_PROPERTY_KEY, property); GridData gridData = new GridData(); gridData.widthHint = textWidth; propertyText.setLayoutData(gridData); if (function != WidgetGroupFactory.NONE) { propertyText.addVerifyListener(new NumericalTextConstraintListener(propertyText, function)); } LabelAndTextForProperty labelAndText = new LabelAndTextForProperty(); labelAndText.text = propertyText; labelAndText.label = propertyLabel; return labelAndText; } /** * Container for {@link Text} and {@link Label}. * * @author Doreen Seider */ public static class LabelAndTextForProperty { /** * Text field for property. */ public Text text = null; /** * Label for property. */ public Label label = null; } }