/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.xsd.ui.editor; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.TableWrapData; import org.teiid.designer.ui.forms.ComponentSetEvent; import org.teiid.designer.ui.forms.ComponentSetMonitor; import org.teiid.designer.ui.forms.DialogProvider; import org.teiid.designer.ui.forms.FormTextObjectEditor; import org.teiid.designer.ui.forms.FormUtil; /** * @since 8.0 */ public class FormTextFacetSet extends AbstractFacetSet { FormTextObjectEditor fText; private final String addText; private final boolean valueClickable; private final DialogProvider dlp; public FormTextFacetSet( String id, String labelName, String addText, boolean valueClickable, final DialogProvider provider ) { super(id, labelName, true, false); this.addText = addText; this.valueClickable = valueClickable; this.dlp = provider; } @Override protected void addMainControl( Composite parent, FormToolkit ftk, ComponentSetMonitor mon ) { fText = new DlgFTObjectEditor(addText, dlp.getLaunchButtonText(), valueClickable, dlp, mon); Control c = fText.addControl(FormUtil.getScrolledForm(parent), parent, ftk); TableWrapData twd = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP); c.setLayoutData(twd); } @Override protected void setMainValue( Object value ) { if (fText != null) { fText.setValue(value); } // endif } /** * What to do when the value has been clicked. This implementation does nothing. * * @param value */ protected void valueClicked( Object value ) { } @Override public void setEditible( boolean enabled ) { super.setEditible(enabled); fText.getFormText().setEnabled(true); fText.setEditible(enabled); } private final class DlgFTObjectEditor extends FormTextObjectEditor { private final DialogProvider provider; private final ComponentSetMonitor mon; DlgFTObjectEditor( String addText, String changeText, boolean valueClickable, DialogProvider provider, ComponentSetMonitor mon ) { super(addText, changeText, valueClickable); this.provider = provider; this.mon = mon; } @Override protected Object changeValue( Object startingValue ) { provider.showDialog(fText.getFormText().getShell(), startingValue); if (!provider.wasCancelled()) { // not cancelled... Object newVal = provider.getValue(); if (!FormUtil.safeEquals(newVal, startingValue)) { // not same, fire updates: if (mon != null) { mon.update(new ComponentSetEvent(FormTextFacetSet.this, newVal == null, newVal)); } // endif return newVal; } // endif } // endif return startingValue; } @Override protected void valueClicked( Object value ) { FormTextFacetSet.this.valueClicked(value); } } }