/* * 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.transformation.ui.builder.criteria; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.core.designer.util.I18nUtil; import org.teiid.designer.query.sql.lang.IExpression; import org.teiid.designer.query.sql.lang.IIsNullCriteria; import org.teiid.designer.query.sql.lang.ILanguageObject; import org.teiid.query.ui.builder.model.ILanguageObjectEditorModelListener; import org.teiid.query.ui.builder.model.IsNullCriteriaEditorModel; import org.teiid.query.ui.builder.model.LanguageObjectEditorModelEvent; /** * @since 8.0 */ public class IsNullCriteriaEditor extends AbstractPredicateCriteriaTypeEditor { private final static String PREFIX = I18nUtil.getPropertyPrefix(IsNullCriteriaEditor.class); private CriteriaExpressionEditor editor; private Control component; private ViewController viewController; IsNullCriteriaEditorModel theModel; public IsNullCriteriaEditor( Composite parent, IsNullCriteriaEditorModel model ) { super(parent, IIsNullCriteria.class, model); this.theModel = model; viewController = new ViewController(); theModel.addModelListener(viewController); viewController.initialize(); } @Override public String getToolTipText() { String tip = Util.getString(PREFIX + "toolTipText"); //$NON-NLS-1$ return tip; } @Override public String getTitle() { String title = Util.getString(PREFIX + "title"); //$NON-NLS-1$ return title; } @Override public Control createLeftComponent( Composite parent ) { editor = new CriteriaExpressionEditor(parent, theModel.getExpressionModel()); component = editor.getUi(); return component; } @Override public Control createRightComponent( Composite parent ) { // Unused return null; } @Override public IExpression getLeftExpression() { IExpression leftExpression = theModel.getLeftExpression(); return leftExpression; } @Override public IExpression getRightExpression() { // Unused return null; } @Override public void setLanguageObject( ILanguageObject obj ) { CoreArgCheck.isInstanceOf(IIsNullCriteria.class, obj); theModel.setLanguageObject(obj); } @Override public String[] getOperators() { return theModel.getOperators(); } @Override public void acceptFocus() { editor.acceptFocus(); } @Override public void setOperator( String op ) { theModel.setCurrentOperator(op); } @Override public String getCurrentOperator() { return theModel.getCurrentOperator(); } void displayExpression() { ILanguageObject langObj = theModel.getLeftExpression(); editor.setLanguageObject(langObj); } void displayLanguageObjectChange() { displayExpression(); } /** * The <code>ViewController</code> class is a view controller for the <code>FunctionEditor</code>. */ private class ViewController implements ILanguageObjectEditorModelListener { public ViewController() { super(); } public void initialize() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { modelChanged(new LanguageObjectEditorModelEvent(theModel, LanguageObjectEditorModelEvent.SAVED)); } }); } /** * @see org.teiid.query.ui.builder.model.ILanguageObjectEditorModelListener#modelChanged(org.teiid.query.ui.builder.model.LanguageObjectEditorModelEvent) */ @Override public void modelChanged( LanguageObjectEditorModelEvent theEvent ) { String type = theEvent.getType(); if (type.equals(IsNullCriteriaEditorModel.EXPRESSION)) { displayExpression(); } else if (type.equals(LanguageObjectEditorModelEvent.SAVED)) { displayLanguageObjectChange(); } } } }