/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.x.impl.swing; import com.eviware.soapui.support.DocumentListenerAdapter; import com.eviware.soapui.support.components.JUndoableTextField; import com.eviware.x.form.XFormTextField; import javax.swing.BorderFactory; import javax.swing.text.Document; import java.awt.Color; public class JTextFieldFormField extends AbstractSwingXFormField<JUndoableTextField> implements XFormTextField { private boolean updating; private String oldValue; public JTextFieldFormField() { super(new JUndoableTextField()); getComponent().getDocument().addDocumentListener(new DocumentListenerAdapter() { @Override public void update(Document document) { String text = getComponent().getText(); if (!updating) { fireValueChanged(text, oldValue); } oldValue = text; } }); } public void setRequired(boolean required, String message) { super.setRequired(required, message); if (required) { getComponent().setBorder( BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.RED), BorderFactory.createEmptyBorder(2, 2, 2, 2))); } else { getComponent().setBorder( BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.GRAY), BorderFactory.createEmptyBorder(2, 2, 2, 2))); } } public void setValue(String value) { updating = true; oldValue = null; getComponent().setText(value); updating = false; } public String getValue() { return getComponent().getText(); } public void setWidth(int columns) { getComponent().setColumns(columns); } }