/* * 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.query.ui.builder.model; import org.teiid.designer.query.sql.lang.ILanguageObject; import org.teiid.designer.query.sql.symbol.IElementSymbol; /** * The <code>ElementEditorModel</code> class is used as a model for the * org.teiid.designer.transformation.ui.builder.expression.ElementEditor. * * @since 8.0 */ public class ElementEditorModel extends AbstractLanguageObjectEditorModel { // ///////////////////////////////////////////////////////////////////////////////////////////// // FIELDS // ///////////////////////////////////////////////////////////////////////////////////////////// /** * The currently selected <code>ElementSymbol</code>. */ private IElementSymbol selectedElement; // ///////////////////////////////////////////////////////////////////////////////////////////// // CONSTRUCTORS // ///////////////////////////////////////////////////////////////////////////////////////////// /** * Constructs an <code>ElementEditorModel</code> with an incomplete state. */ public ElementEditorModel() { super(IElementSymbol.class); } // ///////////////////////////////////////////////////////////////////////////////////////////// // METHODS // ///////////////////////////////////////////////////////////////////////////////////////////// /* (non-Javadoc) * @see org.teiid.query.ui.builder.model.AbstractLanguageObjectEditorModel#clear() */ @Override public void clear() { selectedElement = null; super.clear(); } /** * Gets the current value. * * @return the currently selected <code>ElementSymbol</code> * @throws IllegalStateException if the current value is not complete */ public IElementSymbol getElementSymbol() { return (IElementSymbol)getLanguageObject(); } /* (non-Javadoc) * @see org.teiid.query.ui.builder.model.AbstractLanguageObjectEditorModel#getLanguageObject() */ @Override public ILanguageObject getLanguageObject() { return selectedElement; } /* (non-Javadoc) * @see org.teiid.query.ui.builder.model.AbstractLanguageObjectEditorModel#isComplete() */ @Override public boolean isComplete() { return (selectedElement != null); } /** * Sets the selected or current value. * * @param theElement the element becoming the current value * @return <code>true</code> if selected element has changed; <code>false</code> otherwise. */ public boolean selectElementSymbol( IElementSymbol theElement ) { boolean changed = false; if (selectedElement == null) { changed = (theElement != null); } else { changed = (theElement == null) ? true : !selectedElement.equals(theElement); } if (changed) { selectedElement = theElement; fireModelChanged(LanguageObjectEditorModelEvent.STATE_CHANGE); } return changed; } /** * Sets the saved value. * * @param theElement the element being saved */ private void setElementSymbol( IElementSymbol theElement ) { if (theElement == null) { clear(); } else { // turn firing of event off for the selectElementSymbol method since we want the // event type to be SAVED. notifyListeners = false; if (selectElementSymbol(theElement)) { notifyListeners = true; fireModelChanged(LanguageObjectEditorModelEvent.SAVED); } notifyListeners = true; } } /* (non-Javadoc) * @see org.teiid.query.ui.builder.model.AbstractLanguageObjectEditorModel#setLanguageObject(org.teiid.query.sql.LanguageObject) */ @Override public void setLanguageObject( ILanguageObject theLangObj ) { super.setLanguageObject(theLangObj); setElementSymbol((IElementSymbol)theLangObj); } }