/* * 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.ICompareCriteria; import org.teiid.designer.query.sql.lang.IExpression; import org.teiid.designer.query.sql.lang.ILanguageObject; import org.teiid.query.ui.builder.model.CompareCriteriaEditorModel; import org.teiid.query.ui.builder.model.ILanguageObjectEditorModelListener; import org.teiid.query.ui.builder.model.LanguageObjectEditorModelEvent; /** * CompareCriteriaEditor * * @since 8.0 */ public class CompareCriteriaEditor extends AbstractPredicateCriteriaTypeEditor { private final static String PREFIX = I18nUtil.getPropertyPrefix(CompareCriteriaEditor.class); private CriteriaExpressionEditor leftEditor; private CriteriaExpressionEditor rightEditor; private Control rightComponent; private Control leftComponent; private ViewController viewController; CompareCriteriaEditorModel theModel; public CompareCriteriaEditor( Composite parent, CompareCriteriaEditorModel model ) { super(parent, ICompareCriteria.class, model); this.theModel = model; viewController = new ViewController(); model.addModelListener(viewController); viewController.initialize(); } @Override public String getToolTipText() { String toolTip = ""; //$NON-NLS-1$ String curOperator = theModel.getCurrentOperator(); if (curOperator.equals(CompareCriteriaEditorModel.EQ)) { toolTip = Util.getString(PREFIX + "equalsToolTipText"); //$NON-NLS-1$ } else if (curOperator.equals(CompareCriteriaEditorModel.NE)) { toolTip = Util.getString(PREFIX + "notEqualToolTipText"); //$NON-NLS-1$ } else if (curOperator.equals(CompareCriteriaEditorModel.GT)) { toolTip = Util.getString(PREFIX + "greaterThanToolTipText"); //$NON-NLS-1$ } else if (curOperator.equals(CompareCriteriaEditorModel.LT)) { toolTip = Util.getString(PREFIX + "lessThanToolTipText"); //$NON-NLS-1$ } else if (curOperator.equals(CompareCriteriaEditorModel.GE)) { toolTip = Util.getString(PREFIX + "greaterEqualToolTipText"); //$NON-NLS-1$ } else if (curOperator.equals(CompareCriteriaEditorModel.LE)) { toolTip = Util.getString(PREFIX + "lessEqualToolTipText"); //$NON-NLS-1$ } return toolTip; } @Override public String getTitle() { String title = Util.getString(PREFIX + "title"); //$NON-NLS-1$ return title; } @Override public Control createLeftComponent( Composite parent ) { leftEditor = new CriteriaExpressionEditor(parent, theModel.getLeftExpressionModel()); leftComponent = leftEditor.getUi(); return leftComponent; } @Override public Control createRightComponent( Composite parent ) { rightEditor = new CriteriaExpressionEditor(parent, theModel.getRightExpressionModel()); rightComponent = rightEditor.getUi(); return rightComponent; } @Override public IExpression getLeftExpression() { IExpression leftExpression = theModel.getLeftExpression(); return leftExpression; } @Override public IExpression getRightExpression() { IExpression rightExpression = theModel.getRightExpression(); return rightExpression; } @Override public void setLanguageObject( ILanguageObject obj ) { CoreArgCheck.isInstanceOf(ICompareCriteria.class, obj); theModel.setLanguageObject(obj); } @Override public String[] getOperators() { return theModel.getOperators(); } @Override public void acceptFocus() { leftEditor.acceptFocus(); } @Override public void setOperator( String op ) { theModel.setCurrentOperator(op); } @Override public String getCurrentOperator() { return theModel.getCurrentOperator(); } void displayLanguageObjectChange() { displayLeftExpression(); displayRightExpression(); } void displayLeftExpression() { leftEditor.setLanguageObject(theModel.getLeftExpression()); } void displayRightExpression() { rightEditor.setLanguageObject(theModel.getRightExpression()); } /** * 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(CompareCriteriaEditorModel.LEFT_EXPRESSION)) { displayLeftExpression(); } else if (type.equals(CompareCriteriaEditorModel.RIGHT_EXPRESSION)) { displayRightExpression(); } else if (type.equals(LanguageObjectEditorModelEvent.SAVED)) { displayLanguageObjectChange(); } } } }