// ============================================================================ // // 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.wizard.analysis; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.dataprofiler.core.ui.dialog.provider.DBTablesViewLabelProvider; import org.talend.dataprofiler.core.ui.filters.DQFolderFilter; import org.talend.dataprofiler.core.ui.filters.EMFObjFilter; import org.talend.dataprofiler.core.ui.filters.HadoopCLusterFolderNodeFilter; import org.talend.dataprofiler.core.ui.filters.RecycleBinFilter; import org.talend.dataprofiler.core.ui.filters.TDQEEConnectionFolderFilter; import org.talend.dataprofiler.core.ui.views.provider.ResourceViewContentProvider; import org.talend.dq.helper.RepositoryNodeHelper; /** * DOC mzhao class global comment. This class provide abstract methods for client to add different filter and listener. */ public abstract class AnalysisDPSelectionPage extends AbstractAnalysisWizardPage { private TreeViewer fViewer; protected ILabelProvider fLabelProvider; protected ITreeContentProvider fContentProvider; private String nameLabTxt = null; private boolean multiSelect; public AnalysisDPSelectionPage(String labText, ResourceViewContentProvider contentProvider) { init("", "", contentProvider, labText); //$NON-NLS-1$ //$NON-NLS-2$ } public AnalysisDPSelectionPage(String title, String message, String labText, ResourceViewContentProvider contentProvider) { init(title, message, contentProvider, labText); } public AnalysisDPSelectionPage(String title, String message, String labText, ResourceViewContentProvider contentProvider, boolean multiSelect) { init(title, message, contentProvider, labText); this.multiSelect = multiSelect; } private void init(String title, String message, ResourceViewContentProvider contentProvider, String labText) { setTitle(title); setMessage(message); setPageComplete(false); nameLabTxt = labText; fLabelProvider = new DBTablesViewLabelProvider(); fContentProvider = contentProvider; } public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); container.setLayout(layout); Label nameLabel = new Label(container, SWT.NONE); nameLabel.setText(nameLabTxt); createMetaDataTree(container); setControl(container); addFilters(new EMFObjFilter(), new DQFolderFilter(true), new TDQEEConnectionFolderFilter(), new RecycleBinFilter(), new HadoopCLusterFolderNodeFilter()); addListeners(); } private void createMetaDataTree(Composite parent) { Composite treeContainer = new Composite(parent, SWT.NONE); treeContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); treeContainer.setLayout(new FillLayout()); int style = this.multiSelect ? SWT.BORDER | SWT.MULTI : SWT.BORDER; fViewer = new TreeViewer(treeContainer, style); fViewer.setContentProvider(fContentProvider); fViewer.setLabelProvider(fLabelProvider); fViewer.setInput(RepositoryNodeHelper.getRootNode(ERepositoryObjectType.METADATA, true)); // MOD gdbu 2011-7-25 bug : 23220 ((ResourceViewContentProvider) fContentProvider).setTreeViewer(fViewer); // ~23220 } protected abstract void addListeners(); protected void addFilters(ViewerFilter... filters) { for (ViewerFilter filter : filters) { fViewer.addFilter(filter); } } protected void addListener(IDoubleClickListener doubleClickListener) { fViewer.addDoubleClickListener(doubleClickListener); } protected void addListener(ISelectionChangedListener selectionChangedListener) { fViewer.addSelectionChangedListener(selectionChangedListener); } }