package org.teiid.designer.transformation.ui.editors.sqleditor.actions; import java.util.EventObject; import org.teiid.core.designer.event.EventObjectListener; import org.teiid.designer.transformation.ui.UiConstants; import org.teiid.designer.transformation.ui.UiPlugin; import org.teiid.designer.transformation.ui.editors.sqleditor.SqlEditorInternalEvent; import org.teiid.designer.transformation.ui.editors.sqleditor.SqlEditorPanel; import org.teiid.designer.ui.common.actions.AbstractAction; public class LaunchCreateFunction extends AbstractAction implements EventObjectListener { /////////////////////////////////////////////////////////////////////////////////////////////// // FIELDS /////////////////////////////////////////////////////////////////////////////////////////////// private SqlEditorPanel panel; /////////////////////////////////////////////////////////////////////////////////////////////// // CONSTRUCTORS /////////////////////////////////////////////////////////////////////////////////////////////// public LaunchCreateFunction(SqlEditorPanel sqlPanel) { super(UiPlugin.getDefault()); setImageDescriptor(UiPlugin.getDefault().getImageDescriptor(UiConstants.Images.EXPRESSION_BUILDER)); this.panel = sqlPanel; setEnabled(false); sqlPanel.addInternalEventListener( this ); } /////////////////////////////////////////////////////////////////////////////////////////////// // METHODS /////////////////////////////////////////////////////////////////////////////////////////////// @Override protected void doRun() { // Tell sqlPanel to show the Expression builder panel.launchCreateFunction(); } @Override public void processEvent(EventObject e) { //------------------------------------------------ // respond to internal events from SqlEditorPanel //------------------------------------------------ if (e instanceof SqlEditorInternalEvent) { int type = ((SqlEditorInternalEvent)e).getType(); if( type==SqlEditorInternalEvent.TEXT_RESET || type==SqlEditorInternalEvent.TEXT_CHANGED || type==SqlEditorInternalEvent.CARET_CHANGED || type==SqlEditorInternalEvent.READONLY_CHANGED) { boolean canCreateFunction = panel.canCreateFunction(); setEnabled(canCreateFunction); } } } }