/*******************************************************************************
* Copyright (c) 2012 OpenLegacy Inc.
* 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:
* OpenLegacy Inc. - initial API and implementation
*******************************************************************************/
package org.openlegacy.terminal.definitions;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.openlegacy.FieldType;
import org.openlegacy.definitions.support.AbstractFieldDefinition;
import org.openlegacy.terminal.TerminalField;
import org.openlegacy.terminal.TerminalPosition;
import org.openlegacy.terminal.support.SnapshotUtils;
import java.io.Serializable;
/**
* Defines a mapping between a screenEntity java field name and it's screen position and length
*
*/
public class SimpleScreenFieldDefinition extends AbstractFieldDefinition<ScreenFieldDefinition> implements ScreenFieldDefinition, Serializable {
private static final long serialVersionUID = 1L;
private TerminalPosition position = null;
private int length;
private boolean editable;
private String sampleValue;
private Class<?> javaType;
private TerminalPosition labelPosition;
private boolean password;
private TerminalField terminalField;
private TerminalField terminalLabelfield;
// Used for design-time to set a class name which doesn't exists during generation
private String javaTypeName;
private boolean rectangle;
private TerminalPosition endPosition;
private boolean rightToLeft;
public SimpleScreenFieldDefinition() {
super();
}
public SimpleScreenFieldDefinition(String name, Class<? extends FieldType> fieldType) {
super(name, fieldType);
}
public TerminalPosition getPosition() {
return position;
}
public void setPosition(TerminalPosition position) {
this.position = position;
}
public void setLength(int length) {
this.length = length;
}
public int getLength() {
return length;
}
public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
public String getSampleValue() {
return sampleValue;
}
public void setSampleValue(String sampleValue) {
this.sampleValue = sampleValue;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
public int compareTo(ScreenFieldDefinition o) {
return SnapshotUtils.comparePositions(this.getPosition(), o.getPosition());
}
public TerminalPosition getEndPosition() {
if (endPosition != null) {
return endPosition;
}
return SnapshotUtils.getEndPosition(getPosition(), getLength());
}
public void setEndPosition(TerminalPosition endPosition) {
this.endPosition = endPosition;
}
public Class<?> getJavaType() {
if (javaType == null) {
javaType = String.class;
}
return javaType;
}
public String getJavaTypeName() {
if (javaTypeName != null) {
return javaTypeName;
}
return getJavaType().getSimpleName();
}
public void setJavaType(Class<?> javaType) {
this.javaType = javaType;
}
/*
* Used for design-time to set a class name which doesn't exists during generation
*/
public void setJavaTypeName(String javaTypeName) {
this.javaTypeName = javaTypeName;
}
public TerminalPosition getLabelPosition() {
return labelPosition;
}
public void setLabelPosition(TerminalPosition labelPosition) {
this.labelPosition = labelPosition;
}
public boolean isPassword() {
return password;
}
public void setPassword(boolean password) {
this.password = password;
}
public void setTerminalField(TerminalField terminalField) {
this.terminalField = terminalField;
}
public TerminalField getTerminalField() {
return terminalField;
}
public TerminalField getTerminalLabelField() {
return terminalLabelfield;
}
public void setTerminalLabelField(TerminalField terminalLabelfield) {
this.terminalLabelfield = terminalLabelfield;
}
public boolean isRectangle() {
return rectangle;
}
public void setRectangle(boolean rectangle) {
this.rectangle = rectangle;
}
public boolean isMultyLine() {
return getEndPosition().getRow() != getPosition().getRow();
}
public boolean isRightToLeft() {
return rightToLeft;
}
public void setRightToLeft(boolean rightToLeft) {
this.rightToLeft = rightToLeft;
}
}