// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataprofiler.core.ui.editor.analysis; import java.util.HashMap; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.editor.FormEditor; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.cwm.helper.SwitchHelpers; import org.talend.dataprofiler.core.ui.editor.preview.model.ChartTableFactory; import org.talend.dataprofiler.core.ui.editor.preview.model.ChartTableMenuGenerator; import org.talend.dataprofiler.core.ui.editor.preview.model.MenuItemEntity; import org.talend.dataprofiler.core.ui.utils.TOPChartUtils; import org.talend.dataquality.analysis.Analysis; import org.talend.dataquality.indicators.Indicator; import org.talend.dq.analysis.explore.DataExplorer; import org.talend.dq.analysis.explore.IDataExplorer; import org.talend.dq.helper.SqlExplorerUtils; import org.talend.dq.indicators.preview.table.ChartDataEntity; /** * created by yyin on 2014-12-11 Detailled comment * */ public abstract class AbstractAnalysisResultPageWithChart extends AbstractAnalysisResultPage { public AbstractAnalysisResultPageWithChart(FormEditor editor, String id, String title) { super(editor, id, title); } protected void addMenuToChartComp(Object chartComp, DataExplorer dataExplorer, Analysis analysis, ChartDataEntity[] chartDataEntities) { Map<String, Object> menuMap = createMenuForAllDataEntity(((Composite) chartComp).getShell(), dataExplorer, analysis, chartDataEntities); // call chart service to create related mouse listener TOPChartUtils.getInstance().addMouseListenerForChart(chartComp, menuMap, true); } protected Map<String, Object> createMenuForAllDataEntity(Shell shell, DataExplorer dataExplorer, Analysis analysis, ChartDataEntity[] chartDataEntities) { Map<String, Object> menuMap = new HashMap<String, Object>(); if (!analysis.getParameters().isStoreData()) { return menuMap; } for (ChartDataEntity oneDataEntity : chartDataEntities) { Indicator indicator = oneDataEntity.getIndicator(); Menu menu = createMenu(shell, dataExplorer, analysis, oneDataEntity, getEditorName(indicator)); ChartTableFactory.addJobGenerationMenu(menu, analysis, indicator); menuMap.put(oneDataEntity.getLabel(), menu); } return menuMap; } protected String getEditorName(Indicator indicator) { return indicator.getName(); } /** * DOC yyin Comment method "createMenu". * * @param shell * @param explorer * @param analysis * @param currentEngine * @param currentDataEntity * @param currentIndicator * @return */ private Menu createMenu(final Shell shell, final IDataExplorer explorer, final Analysis analysis, final ChartDataEntity currentDataEntity, final String editorName1) { Menu menu = new Menu(shell, SWT.POP_UP); MenuItemEntity[] itemEntities = ChartTableMenuGenerator.generate(explorer, analysis, currentDataEntity); for (final MenuItemEntity itemEntity : itemEntities) { MenuItem item = new MenuItem(menu, SWT.PUSH); item.setText(itemEntity.geti18nLabel()); item.setImage(itemEntity.getIcon()); item.addSelectionListener(createSelectionAdapter(analysis, editorName1, itemEntity)); } return menu; } protected Image getItemImage(MenuItemEntity menuItem) { return menuItem.getIcon(); } /** * DOC yyin Comment method "createSelectionAdapter". * * @param analysis1 * @param currentEngine * @param currentDataEntity * @param currentIndicator * @param itemEntity * @return */ private SelectionAdapter createSelectionAdapter(final Analysis analysis1, final String editorName1, final MenuItemEntity itemEntity) { return new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Display.getDefault().asyncExec(new Runnable() { public void run() { Connection tdDataProvider = SwitchHelpers.CONNECTION_SWITCH.doSwitch(analysis1.getContext() .getConnection()); String query = itemEntity.getQuery(); String editorName = editorName1; SqlExplorerUtils.getDefault().runInDQViewer(tdDataProvider, query, editorName); } }); } }; } }