// ============================================================================
//
// 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.mdm.repository.ui.wizards.exports.viewers;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.mdm.repository.core.IServerObjectRepositoryType;
import org.talend.mdm.repository.ui.navigator.MDMRepositoryContentProvider;
import org.talend.mdm.repository.ui.navigator.MDMRepositoryLabelProvider;
import org.talend.mdm.repository.ui.widgets.AbstractNodeCheckTreeViewer;
import org.talend.mdm.repository.utils.RepositoryResourceUtil;
import com.amalto.workbench.exadapter.ExAdapterManager;
import com.amalto.workbench.widgets.FilteredCheckboxTree;
/**
* DOC hbhong class global comment. Detailled comment
*/
public class ExportRepObjCheckTreeViewer extends AbstractNodeCheckTreeViewer {
/**
* DOC hbhong RepositoryObjectCheckTreeViewer constructor comment.
*
* @param selection
*/
IRepositoryViewObject[] categoryViewObjects;
private IExportRepObjCheckTreeViewerExAdapter exAdapter;
public ExportRepObjCheckTreeViewer(IStructuredSelection selection) {
super(selection);
this.exAdapter = ExAdapterManager.getAdapter(this, IExportRepObjCheckTreeViewerExAdapter.class);
}
@Override
protected void createTreeViewer(Composite itemComposite) {
filteredCheckboxTree = new FilteredCheckboxTree(itemComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI) {
ContainerCheckedTreeViewer treeViewer;
@Override
protected CheckboxTreeViewer doCreateTreeViewer(Composite parent, int style) {
categoryViewObjects = RepositoryResourceUtil.getCategoryViewObjects();
IRepositoryViewObject[] viewObjs = getSortedViewObjects(categoryViewObjects);
treeViewer = new ContainerCheckedTreeViewer(parent);
treeViewer.setLabelProvider(new MDMRepositoryLabelProvider());
treeViewer.setContentProvider(new MDMRepositoryContentProvider());
treeViewer.setInput(viewObjs);
return treeViewer;
}
@Override
protected void refreshCompleted() {
treeViewer.expandToLevel(3);
restoreCheckedElements();
}
@Override
protected boolean isNodeCollectable(TreeItem item) {
return false;
}
};
}
private IRepositoryViewObject[] getSortedViewObjects(IRepositoryViewObject[] categoryViewObjects) {
List<IRepositoryViewObject> sortedViewObjs = new ArrayList<IRepositoryViewObject>();
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_DATACLUSTER));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_DATAMODEL));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_EVENTMANAGER));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_MENU));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_SERVICECONFIGURATION));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_STOREPROCEDURE));
sortedViewObjs.add(getViewObjectByType(IServerObjectRepositoryType.TYPE_VIEW));
if (exAdapter != null) {
exAdapter.addSortedViewObjects(sortedViewObjs);
}
return sortedViewObjs.toArray(new IRepositoryViewObject[0]);
}
public IRepositoryViewObject getViewObjectByType(ERepositoryObjectType type) {
if (categoryViewObjects == null || type == null) {
return null;
}
for (IRepositoryViewObject viewObj : categoryViewObjects) {
if (viewObj.getRepositoryObjectType().equals(type)) {
return viewObj;
}
}
return null;
}
@Override
protected void filterCheckedObjects(Object[] selected, List<Object> ret) {
for (Object obj : selected) {
ret.add(obj);
}
}
@Override
protected Composite createSelectionButton(Composite itemComposite) {
Composite container = super.createSelectionButton(itemComposite);
if (exAdapter != null) {
exAdapter.createSelectionButton(container);
}
return container;
}
@Override
protected void createOtherControl(Composite itemComposite) {
super.createOtherControl(itemComposite);
if (exAdapter != null) {
exAdapter.createOtherControl(itemComposite);
}
}
@Override
public void updateCountStatus() {
if (exAdapter != null) {
exAdapter.updateCountStatus();
}
}
}