// ============================================================================
//
// 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 com.amalto.workbench.detailtabs.sections.composites;
import java.util.ArrayList;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import com.amalto.workbench.detailtabs.sections.BasePropertySection;
import com.amalto.workbench.detailtabs.sections.model.annotationinfo.relationship.ForeignKeyFilterAnnoInfo;
import com.amalto.workbench.detailtabs.sections.model.annotationinfo.relationship.ForeignKeyFilterAnnoInfoDefUnit;
import com.amalto.workbench.detailtabs.sections.providers.ForeignKeyFilterCellModifier;
import com.amalto.workbench.i18n.Messages;
import com.amalto.workbench.models.infoextractor.IAllDataModelHolder;
import com.amalto.workbench.providers.ColumnTextExtractor;
import com.amalto.workbench.providers.CommonTableLabelProvider;
import com.amalto.workbench.utils.IConstants;
import com.amalto.workbench.widgets.celleditor.XPathCellEditor;
import com.amalto.workbench.widgets.composites.ComplexAnnotaionInfoComposite;
public class ForeignKeyFilterComposite extends ComplexAnnotaionInfoComposite<ForeignKeyFilterAnnoInfoDefUnit> {
private IAllDataModelHolder dataModelHolder;
public ForeignKeyFilterComposite(Composite parent, int style, IAllDataModelHolder dataModelHolder,BasePropertySection section) {
super(parent,style,new Object[] { dataModelHolder },section);
}
public ForeignKeyFilterComposite(Composite parent, int style, IAllDataModelHolder dataModelHolder) {
super(parent, style, new Object[] { dataModelHolder },null);
}
@SuppressWarnings("unchecked")
@Override
protected ITableLabelProvider getLabelProviderForViewer() {
return new CommonTableLabelProvider<ForeignKeyFilterAnnoInfoDefUnit>(new ColumnTextExtractor[] {
new ColumnTextExtractor<ForeignKeyFilterAnnoInfoDefUnit>("getXpath"),//$NON-NLS-1$
new ColumnTextExtractor<ForeignKeyFilterAnnoInfoDefUnit>("getOperator"),//$NON-NLS-1$
new ColumnTextExtractor<ForeignKeyFilterAnnoInfoDefUnit>("getValue"),//$NON-NLS-1$
new ColumnTextExtractor<ForeignKeyFilterAnnoInfoDefUnit>("getPredicate") });//$NON-NLS-1$
}
@Override
protected void createExtentArea() {
}
@Override
protected void fillColumnsInTree(Tree tree) {
final TreeColumn colXPath = new TreeColumn(tree, SWT.NONE);
colXPath.setWidth(200);
colXPath.setText(Messages.ForeignKeyFilterComposite_XPath);
colXPath.setImage(nillableColImage);
final TreeColumn colOperator = new TreeColumn(tree, SWT.NONE);
colOperator.setWidth(100);
colOperator.setText(Messages.ForeignKeyFilterComposite_Operator);
colOperator.setImage(nillableColImage);
final TreeColumn colValue = new TreeColumn(tree, SWT.NONE);
colValue.setWidth(200);
colValue.setText(Messages.ForeignKeyFilterComposite_Value);
colValue.setImage(nillableColImage);
final TreeColumn colPredicate = new TreeColumn(tree, SWT.NONE);
colPredicate.setWidth(100);
colPredicate.setText(Messages.ForeignKeyFilterComposite_Predicate);
}
@Override
protected ForeignKeyFilterAnnoInfoDefUnit createDefaultInfoObj() {
return new ForeignKeyFilterAnnoInfoDefUnit("newXPath", IConstants.VIEW_CONDITION_OPERATORS[0], "",//$NON-NLS-1$//$NON-NLS-2$
IConstants.PREDICATES[0]);
}
@Override
protected boolean validateBeforePaste(ForeignKeyFilterAnnoInfoDefUnit copyedObj) {
return true;
}
@Override
protected ForeignKeyFilterAnnoInfoDefUnit cloneCopyedObj(ForeignKeyFilterAnnoInfoDefUnit copyedObj) {
return new ForeignKeyFilterAnnoInfoDefUnit(copyedObj.getXpath(), copyedObj.getOperator(), copyedObj.getValue(),
copyedObj.getPredicate());
}
@Override
protected String[] getColumnProperties() {
return ForeignKeyFilterCellModifier.COLPROPS;
}
@Override
protected CellEditor[] getCellEditors() {
return new CellEditor[] { new XPathCellEditor(tvInfos.getTree(), dataModelHolder),
new ComboBoxCellEditor(tvInfos.getTree(), IConstants.VIEW_CONDITION_OPERATORS, SWT.READ_ONLY),
new TextCellEditor(tvInfos.getTree()),
new ComboBoxCellEditor(tvInfos.getTree(), IConstants.PREDICATES, SWT.READ_ONLY) };
}
@Override
protected ICellModifier getCellModifier() {
ForeignKeyFilterCellModifier modifier=new ForeignKeyFilterCellModifier(tvInfos);
modifier.setSection(section);
return modifier;
}
@Override
protected void initParameters(Object[] parameters) {
infos = new ArrayList<ForeignKeyFilterAnnoInfoDefUnit>();
for (Object eachPara : parameters) {
if (eachPara instanceof IAllDataModelHolder) {
dataModelHolder = (IAllDataModelHolder) eachPara;
}
}
}
public String getFilterExpression() {
return ForeignKeyFilterAnnoInfo.getFKFilterByFKFilterCfgInfos(infos.toArray(new ForeignKeyFilterAnnoInfoDefUnit[0]));
}
public void setFilter(String filterExpression) {
setInfos(ForeignKeyFilterAnnoInfo.getFKFilterCfgInfos(filterExpression));
}
@Override
protected void createTopExtentArea() {
}
}