/*
* Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton, Member of the Helmholtz Association,
* (DESY), HAMBURG, GERMANY. THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
* WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT,
* THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
* WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SOFTWARE IS AUTHORIZED
* HEREUNDER EXCEPT UNDER THIS DISCLAIMER. DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
* UPDATES, ENHANCEMENTS, OR MODIFICATIONS. THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE
* REDISTRIBUTION, MODIFICATION, USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE
* DISTRIBUTION OF THIS PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY
* FIND A COPY AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
*/
package org.csstudio.sds.components.model;
import org.csstudio.sds.model.AbstractTextTypeWidgetModel;
import org.csstudio.sds.model.AbstractWidgetModel;
import org.csstudio.sds.model.CursorStyleEnum;
import org.csstudio.sds.model.TextAlignmentEnum;
import org.csstudio.sds.model.TextTypeEnum;
import org.csstudio.sds.model.WidgetPropertyCategory;
import org.csstudio.sds.util.ColorAndFontUtil;
/**
* A widget model for text inputs.
*
* @author Alexander Will, Kai Meyer
* @version $Revision: 1.35 $
*/
public class TextInputModel extends AbstractTextTypeWidgetModel {
/**
* The ID of the text input.
*/
public static final String PROP_INPUT_TEXT = "inputText"; //$NON-NLS-1$
/**
* The ID of the font property.
*/
public static final String PROP_FONT = "font"; //$NON-NLS-1$
/**
* The ID of the text alignment property.
*/
public static final String PROP_TEXT_ALIGNMENT = "textAlignment"; //$NON-NLS-1$
/**
* The ID of this widget model.
*/
public static final String ID = "org.csstudio.sds.components.Textinput"; //$NON-NLS-1$
/**
* The default value of the height property.
*/
private static final int DEFAULT_HEIGHT = 20;
/**
* The default value of the width property.
*/
private static final int DEFAULT_WIDTH = 80;
/**
* The ID of the <i>transparent</i> property.
*/
public static final String PROP_TRANSPARENT = "transparent";
/**
* The ID of the <i>double type</i> property.
*/
public static final int TYPE_DOUBLE = 1;
/**
* Standard constructor.
*/
public TextInputModel() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setCursorId(CursorStyleEnum.IBEAM.name());
}
/**
* {@inheritDoc}
*/
@Override
public String getTypeID() {
return ID;
}
/**
* {@inheritDoc}
*/
@Override
protected void configureProperties() {
// Display
addStringProperty(PROP_INPUT_TEXT, "Input Text", WidgetPropertyCategory.DISPLAY, "", true,PROP_TOOLTIP); //$NON-NLS-1$
addArrayOptionProperty(PROP_TEXT_TYPE,
"Value Type",
WidgetPropertyCategory.DISPLAY,
TextTypeEnum.getDisplayNames(),
TextTypeEnum.DOUBLE.getIndex(), false, PROP_INPUT_TEXT);
addIntegerProperty(PROP_PRECISION,
"Decimal places",
WidgetPropertyCategory.DISPLAY,
2,
0,
10, false,PROP_TEXT_TYPE);
// Format
addFontProperty(PROP_FONT,
"Font", WidgetPropertyCategory.FORMAT, ColorAndFontUtil.toFontString("Arial", 8), false, PROP_COLOR_FOREGROUND); //$NON-NLS-1$
addArrayOptionProperty(PROP_TEXT_ALIGNMENT,
"Text Alignment",
WidgetPropertyCategory.FORMAT,
TextAlignmentEnum.getDisplayNames(),
TextAlignmentEnum.CENTER.getIndex(), false, PROP_FONT );
addBooleanProperty(PROP_TRANSPARENT,
"Transparent Background",
WidgetPropertyCategory.FORMAT,
true,
true, AbstractWidgetModel.PROP_COLOR_BACKGROUND);
}
/**
* {@inheritDoc}
*/
@Override
protected String getDefaultToolTip() {
final StringBuffer buffer = new StringBuffer();
buffer.append(createTooltipParameter(PROP_ALIASES) + "\n");
buffer.append("Text:\t");
buffer.append(createTooltipParameter(PROP_INPUT_TEXT));
return buffer.toString();
}
/**
* Gets the input text.
*
* @return the input text
*/
public String getInputText() {
return getStringProperty(PROP_INPUT_TEXT);
}
/**
* Gets, if the marks should be shown or not.
*
* @return int 0 = Center, 1 = Top, 2 = Bottom, 3 = Left, 4 = Right
*/
public int getTextAlignment() {
return getArrayOptionProperty(PROP_TEXT_ALIGNMENT);
}
/**
* Returns, if this widget should have a transparent background.
*
* @return boolean True, if it should have a transparent background, false otherwise
*/
@Override
public boolean getTransparent() {
return getBooleanProperty(PROP_TRANSPARENT);
}
/**
* {@inheritDoc}
*/
@Override
public String getStringValueID() {
return PROP_INPUT_TEXT;
}
}