/* * 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.advisor.ui.views.status; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.widgets.Display; import org.teiid.designer.advisor.ui.AdvisorUiConstants; import org.teiid.designer.advisor.ui.AdvisorUiConstants.COMMAND_IDS; import org.teiid.designer.advisor.ui.AdvisorUiPlugin; import org.teiid.designer.advisor.ui.Messages; import org.teiid.designer.advisor.ui.actions.AdvisorActionFactory; import org.teiid.designer.advisor.ui.actions.NewModelAction; import org.teiid.designer.advisor.ui.actions.ToggleAutoBuildAction; import org.teiid.designer.advisor.ui.core.IAdvisorActionHandler; import org.teiid.designer.advisor.ui.core.InfoPopAction; import org.teiid.designer.advisor.ui.core.status.AdvisorStatus; import org.teiid.designer.advisor.ui.util.DSPPluginImageHelper; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.metamodels.core.ModelType; import org.teiid.designer.ui.common.util.UiUtil; import org.teiid.designer.ui.viewsupport.ModelerUiViewUtils; /** * */ public class StatusActionHandler implements IAdvisorActionHandler, AdvisorUiConstants.Groups { final DSPPluginImageHelper imageHelper = AdvisorUiPlugin.getImageHelper(); private static final String RELATIONAL_ID = "Relational"; //$NON-NLS-1$ NewModelAction newRelationalSourceModelAction; NewModelAction newRelationalViewModelAction; // InfoPopAction's private InfoPopAction showProblemsViewIPAction; private InfoPopAction importJdbcIPAction; private InfoPopAction importSalesforceIPAction; private InfoPopAction importDdlIPAction; private InfoPopAction importFlatFileIPAction; private InfoPopAction importXmlFileIPAction; private InfoPopAction openDSEIPAction; private InfoPopAction newJdbcCPIPAction; private InfoPopAction newSFCPIPAction; private InfoPopAction newWSSoapIPAction; private InfoPopAction importXsdIPAction; private InfoPopAction newRelationalSourceModelIPAction; private InfoPopAction newRelationalViewModelIPAction; private InfoPopAction toggleAutoBuildIPAction; private InfoPopAction previewDataIPAction; private InfoPopAction newVdbIPAction; private InfoPopAction editVdbIPAction; private InfoPopAction executeVdbIPAction; private ModelProjectStatus status; /** * */ public StatusActionHandler() { super(); try { createActions(); } catch (CoreException e) { AdvisorUiConstants.UTIL.log(e); } } @SuppressWarnings("unused") private void createActions() throws CoreException { // -------------------------------------------------------------------------- // autobuildAction: Action toggleAutoBuildAction = new ToggleAutoBuildAction(AdvisorUiPlugin.getDefault().getCurrentWorkbenchWindow()); toggleAutoBuildAction.setText(Messages.ToggleAutoBuild); this.toggleAutoBuildIPAction = new InfoPopAction(toggleAutoBuildAction,InfoPopAction.TYPE_DO, Messages.ToggleAutoBuild, imageHelper.BUILD_IMAGE); CONNECTION_ACTIONS : { IAction openDSEAction = new Action() { @Override public void run() { UiUtil.showView(AdvisorUiConstants.VIEW_IDS.DATA_SOURCE_EXPLORER); } }; openDSEAction.setText(Messages.OpenDatatoolsDataSourceExplorer); openDSEAction.setToolTipText(Messages.OpenDatatoolsDataSourceExplorer_tooltip); openDSEAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.DATA_SOURCE_EXPLORER_VIEW)); this.openDSEIPAction = new InfoPopAction(openDSEAction, InfoPopAction.TYPE_DO, Messages.Options_Action_OpenDSEAction_description, imageHelper.OPEN_DATA_SOURCE_EXPLORER_IMAGE); IAction newJdbcCPAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.CREATE_CONNECTION_JDBC, true); } }; newJdbcCPAction.setText(Messages.CreateJdbcConnection); newJdbcCPAction.setToolTipText(Messages.CreateJdbcConnection); this.newJdbcCPIPAction = new InfoPopAction(newJdbcCPAction, InfoPopAction.TYPE_DO, Messages.CreateJdbcConnection, imageHelper.NEW_CONNECTION_PROFILE_IMAGE); IAction newSalesforceCPAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.CREATE_CONNECTION_SALESFORCE, true); } }; newSalesforceCPAction.setText(Messages.CreateSalesforceConnection); newSalesforceCPAction.setToolTipText(Messages.CreateSalesforceConnection); this.newSFCPIPAction = new InfoPopAction(newSalesforceCPAction, InfoPopAction.TYPE_DO, Messages.CreateSalesforceConnection, imageHelper.NEW_CONNECTION_PROFILE_IMAGE); IAction newWSSoapCPAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.CREATE_CONNECTION_WEB_SERVICE_ODA, true); } }; newWSSoapCPAction.setText(Messages.CreateOdaWebServicesConnection); newWSSoapCPAction.setToolTipText(Messages.CreateOdaWebServicesConnection); this.newWSSoapIPAction = new InfoPopAction(newWSSoapCPAction, InfoPopAction.TYPE_DO, Messages.CreateOdaWebServicesConnection, imageHelper.NEW_CONNECTION_PROFILE_IMAGE); } // -------------------------------------------------------------------------- // show problems: IAction delegateOpenProblemsViewAction = new Action() { @Override public void run() { UiUtil.showView(AdvisorUiConstants.VIEW_IDS.PROBLEMS_VIEW); } }; delegateOpenProblemsViewAction.setText(Messages.Options_Action_OpenProblemsView_description); delegateOpenProblemsViewAction.setToolTipText(Messages.Options_Action_OpenProblemsView_description); delegateOpenProblemsViewAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.CONFIGURATION_MANAGER_VIEW)); this.showProblemsViewIPAction = new InfoPopAction(delegateOpenProblemsViewAction, InfoPopAction.TYPE_FIX, Messages.Options_Action_OpenProblemsView_description, imageHelper.PROBLEMS_VIEW_IMAGE); IMPORT_ACTIONS : { // // =========>>>> JDBC // IAction delegateImportJdbcAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.IMPORT_JDBC, true); } }; delegateImportJdbcAction.setText(Messages.Action_ImportJdbc_text); delegateImportJdbcAction.setToolTipText(Messages.Action_ImportJdbc_tooltip); delegateImportJdbcAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_JDBC)); importJdbcIPAction = new InfoPopAction(delegateImportJdbcAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportJDBC_description, imageHelper.IMPORT_JDBC_IMAGE); // // =========>>>> DDL // IAction delegateImportDdlAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.IMPORT_DDL, true); } }; delegateImportDdlAction.setText(Messages.Action_ImportDdl_text); delegateImportDdlAction.setToolTipText(Messages.Action_ImportDdl_tooltip); delegateImportDdlAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_JDBC)); importDdlIPAction = new InfoPopAction(delegateImportDdlAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportDdl_description, imageHelper.IMPORT_JDBC_IMAGE); // // =========>>>> FLAT FILE // IAction delegateImportFlatFileAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.IMPORT_FLAT_FILE, true); } }; delegateImportFlatFileAction.setText(Messages.Action_ImportFlatFile_text); delegateImportFlatFileAction.setToolTipText(Messages.Action_ImportFlatFile_tooltip); delegateImportFlatFileAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_JDBC)); importFlatFileIPAction = new InfoPopAction(delegateImportFlatFileAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportFlatFile_description, imageHelper.IMPORT_JDBC_IMAGE); // // =========>>>> FLAT FILE // IAction delegateImportXmlFileAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.IMPORT_XML_FILE, true); } }; delegateImportXmlFileAction.setText(Messages.Action_ImportXmlFile_text); delegateImportXmlFileAction.setToolTipText(Messages.Action_ImportXmlFile_tooltip); delegateImportXmlFileAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_JDBC)); importXmlFileIPAction = new InfoPopAction(delegateImportXmlFileAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportXmlFile_description, imageHelper.IMPORT_JDBC_IMAGE); // // =========>>>> Salesforce // IAction delegateImportSalesforceAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.IMPORT_SALESFORCE, true); } }; delegateImportSalesforceAction.setText(Messages.Action_ImportSalesforce_text); delegateImportSalesforceAction.setToolTipText(Messages.Action_ImportSalesforce_tooltip); delegateImportSalesforceAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_JDBC)); importSalesforceIPAction = new InfoPopAction(delegateImportSalesforceAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportSalesforce_description, imageHelper.IMPORT_JDBC_IMAGE); } // -------------------------------------------------------------------------- // XSD import: IAction delegateImportXsdAction = new Action() { @Override public void run() { ModelerUiViewUtils.launchWizard("xsdFileSystemImportWizard", new StructuredSelection(), true); //$NON-NLS-1$ } }; delegateImportXsdAction.setText(Messages.Action_ImportXsd_text); delegateImportXsdAction.setToolTipText(Messages.Action_ImportXsd_tooltip); delegateImportXsdAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.IMPORT_XSD)); importXsdIPAction = new InfoPopAction(delegateImportXsdAction, InfoPopAction.TYPE_DO, Messages.Options_Action_ImportXsd_description, imageHelper.IMPORT_XSD_IMAGE); VDB_AND_EXECUTION : { // -------------------------------------------------------------------------- // New VDB // -------------------------------------------------------------------------- IAction delegateNewVdbAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.CREATE_VDB, true); } }; delegateNewVdbAction.setText(Messages.Action_NewVdb_text); delegateNewVdbAction.setToolTipText(Messages.Action_NewVdb_tooltip); delegateNewVdbAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.NEW_VDB)); newVdbIPAction = new InfoPopAction(delegateNewVdbAction, InfoPopAction.TYPE_DO, Messages.Options_Action_NewVdb_description, imageHelper.NEW_VDB_IMAGE); // -------------------------------------------------------------------------- // Edit VDB // -------------------------------------------------------------------------- IAction delegateEditVdbAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.EDIT_VDB, true); } }; delegateEditVdbAction.setText(Messages.Action_EditVdb_text); delegateEditVdbAction.setToolTipText(Messages.Action_EditVdb_tooltip); delegateEditVdbAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.EDIT_VDB_ACTION)); editVdbIPAction = new InfoPopAction(delegateEditVdbAction, InfoPopAction.TYPE_DO, Messages.Options_Action_EditVdb_description, imageHelper.EDIT_VDB_IMAGE); // -------------------------------------------------------------------------- // Execute VDB // -------------------------------------------------------------------------- IAction delegateExecuteVdbAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.EXECUTE_VDB, true); } }; delegateExecuteVdbAction.setText(Messages.Action_ExecuteVdb_text); delegateExecuteVdbAction.setToolTipText(Messages.Action_ExecuteVdb_tooltip); delegateExecuteVdbAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.EXECUTE_VDB_ACTION)); executeVdbIPAction = new InfoPopAction(delegateExecuteVdbAction, InfoPopAction.TYPE_FIX, Messages.Options_Action_ExecuteVdb_description, imageHelper.EXECUTE_VDB_IMAGE); // -------------------------------------------------------------------------- // Execute VDB // -------------------------------------------------------------------------- IAction delegatePreviewDataAction = new Action() { @Override public void run() { AdvisorActionFactory.executeAction(COMMAND_IDS.PREVIEW_DATA, true); } }; delegatePreviewDataAction.setText(Messages.Action_PreviewData_text); delegatePreviewDataAction.setToolTipText(Messages.Action_PreviewData_tooltip); delegatePreviewDataAction.setImageDescriptor(AdvisorUiPlugin.getDefault().getImageDescriptor(AdvisorUiConstants.Images.PREVIEW_DATA)); previewDataIPAction = new InfoPopAction(delegatePreviewDataAction, InfoPopAction.TYPE_OTHER, Messages.Options_Action_PreviewData_description, imageHelper.PREVIEW_DATA_IMAGE); } // -------------------------------------------------------------------------- // New Relational Source Model // -------------------------------------------------------------------------- newRelationalSourceModelAction = new NewModelAction(); IAction delegateNewRelationalSourceModelAction = new Action() { @Override public void run() { Display.getDefault().syncExec(new Runnable() { @Override public void run() { newRelationalSourceModelAction.setModelType(ModelType.PHYSICAL_LITERAL); newRelationalSourceModelAction.setMetamodelClass(RELATIONAL_ID); newRelationalSourceModelAction.run(); } }); } }; delegateNewRelationalSourceModelAction.setText(Messages.Action_NewSourceModel_text); delegateNewRelationalSourceModelAction.setToolTipText(Messages.Action_NewSourceModel_tooltip); newRelationalSourceModelIPAction = new InfoPopAction(delegateNewRelationalSourceModelAction, InfoPopAction.TYPE_DO, Messages.Options_Action_NewRelationalSourceModel_description, imageHelper.NEW_MODEL_IMAGE); // -------------------------------------------------------------------------- // New Relational View Model // -------------------------------------------------------------------------- newRelationalViewModelAction = new NewModelAction(); IAction delegateNewRelationalViewModelAction = new Action() { @Override public void run() { Display.getDefault().syncExec(new Runnable() { @Override public void run() { newRelationalViewModelAction.setModelType(ModelType.VIRTUAL_LITERAL); newRelationalViewModelAction.setMetamodelClass(RELATIONAL_ID); newRelationalViewModelAction.run(); } }); } }; delegateNewRelationalViewModelAction.setText(Messages.Action_NewViewModel_text); delegateNewRelationalViewModelAction.setToolTipText(Messages.Action_NewViewModel_tooltip); newRelationalViewModelIPAction = new InfoPopAction(delegateNewRelationalViewModelAction, InfoPopAction.TYPE_DO, Messages.Options_Action_NewRelationalViewModel_description, imageHelper.NEW_MODEL_IMAGE); } @Override public InfoPopAction[] getActions( int groupType ) { Collection actions = new ArrayList(); boolean hasErrors = false; switch (groupType) { case GROUP_VDBS: { actions.add(newVdbIPAction); actions.add(editVdbIPAction); actions.add(executeVdbIPAction); } break; case GROUP_MODEL_VALIDATION: { // For the model validation category, only include "problems" view action. if (getStatus() != null && getModelProjectStatus().getModelStatus() != null) { hasErrors = getModelProjectStatus().getModelStatus().getSeverity() == IStatus.ERROR; } // if (hasErrors) { actions.add(showProblemsViewIPAction); // } String desc = Messages.Options_Action_TurnAutobiuldOn_description; if (ModelerCore.getWorkspace().isAutoBuilding()) { desc = Messages.Options_Action_TurnAutobiuldOff_description; } toggleAutoBuildIPAction.setDescription(desc); actions.add(toggleAutoBuildIPAction); } break; case GROUP_SOURCES: { // For the source models category. if (getStatus() != null && getModelProjectStatus().getSourceModelsStatus() != null) { hasErrors = getModelProjectStatus().getSourceModelsStatus().getSeverity() == IStatus.ERROR; } if (hasErrors) { actions.add(showProblemsViewIPAction); } actions.add(importJdbcIPAction); actions.add(importDdlIPAction); actions.add(importSalesforceIPAction); actions.add(newRelationalSourceModelIPAction); actions.add(previewDataIPAction); } break; case GROUP_VIEWS: { // For the source models category. if (getStatus() != null && getModelProjectStatus().getViewModelsStatus() != null) { hasErrors = getModelProjectStatus().getViewModelsStatus().getSeverity() == IStatus.ERROR; } if (hasErrors) { actions.add(showProblemsViewIPAction); } actions.add(newRelationalViewModelIPAction); actions.add(importFlatFileIPAction); actions.add(importXmlFileIPAction); actions.add(previewDataIPAction); } break; case GROUP_CONNECTIONS: { actions.add(openDSEIPAction); actions.add(newJdbcCPIPAction); actions.add(newSFCPIPAction); actions.add(newWSSoapIPAction); } break; case GROUP_XML_SCHEMAS: { // For the xml schema (xsd) models category if (getStatus() != null && getModelProjectStatus().getXmlSchemaFilesStatus() != null) { hasErrors = getModelProjectStatus().getXmlSchemaFilesStatus().getSeverity() == IStatus.ERROR; } if (hasErrors) { actions.add(showProblemsViewIPAction); } actions.add(importXsdIPAction); } break; case GROUP_TEST: { actions.add(previewDataIPAction); actions.add(executeVdbIPAction); } break; default: { } break; } InfoPopAction[] ipArray = new InfoPopAction[actions.size()]; int iCount = 0; for (Iterator iter = actions.iterator(); iter.hasNext();) { ipArray[iCount++] = (InfoPopAction)iter.next(); } return ipArray; } /** * @return status */ @Override public AdvisorStatus getStatus() { return null; } private ModelProjectStatus getModelProjectStatus() { return this.status; } /** * @param status Sets status to the specified value. */ public void setStatus( ModelProjectStatus status ) { this.status = status; } /** * {@inheritDoc} * * @see IAdvisorActionHandler#setStatus(AdvisorStatus) */ @Override public void setStatus( AdvisorStatus status ) { } }