package org.archstudio.xadl.swt; import org.archstudio.xarchadt.IXArchADT; import org.archstudio.xarchadt.ObjRef; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Text; public class XadlTextUtils { public static Text createXadlTextField(final IXArchADT xarch, final ObjRef ref, final String fieldName, final Composite parent, Object layoutData) { Object currentDataObject = xarch.get(ref, fieldName); String currentDataString = currentDataObject == null ? "" : currentDataObject.toString(); final Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); text.setEditable(true); text.setText(currentDataString); if (layoutData != null) { text.setLayoutData(layoutData); } text.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } @Override public void widgetSelected(SelectionEvent e) { String input = text.getText(); try { xarch.set(ref, fieldName, input); } catch (IllegalArgumentException iae) { MessageBox messageBox = new MessageBox(parent.getShell(), SWT.OK | SWT.ICON_ERROR); messageBox.setMessage(iae.getMessage()); messageBox.setText("Error"); messageBox.open(); } } }); return text; } }