// ============================================================================
//
// Copyright (C) 2006-2012 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.core.ui.context.model;
import org.eclipse.gef.commands.Command;
import org.eclipse.jface.viewers.ICellModifier;
import org.talend.core.model.context.JobContextManager;
import org.talend.core.model.process.IContextManager;
import org.talend.core.model.process.IContextParameter;
import org.talend.core.ui.context.AbstractContextTabEditComposite;
import org.talend.core.ui.context.IContextModelManager;
/**
* cli class global comment. Detailled comment.
*/
public abstract class AbstractContextCellModifier implements ICellModifier {
protected boolean repositoryFlag = false;
protected AbstractContextTabEditComposite parentMode;
public AbstractContextCellModifier(AbstractContextTabEditComposite parentMode, boolean repositoryFlag) {
super();
this.parentMode = parentMode;
this.repositoryFlag = repositoryFlag;
}
protected AbstractContextTabEditComposite getParentMode() {
return this.parentMode;
}
public boolean isRepositoryMode() {
return this.repositoryFlag;
}
protected IContextModelManager getModelManager() {
return parentMode.getContextModelManager();
}
protected IContextManager getContextManager() {
return parentMode.getContextModelManager().getContextManager();
}
protected void updateRelatedNode(final Object[] objs, final IContextParameter param) {
if (objs != null && objs.length > 0) {
Command command = updateRelatedNodeCommand(objs, null);
getParentMode().runCommand(command);
}
// set updated flag.
if (param != null) {
IContextManager manager = getContextManager();
if (manager != null && manager instanceof JobContextManager) {
JobContextManager jobContextManager = (JobContextManager) manager;
// not added new
if (!getModelManager().isRepositoryContext() || getModelManager().isRepositoryContext()
&& jobContextManager.isOriginalParameter(param.getName())) {
jobContextManager.setModified(true);
manager.fireContextsChangedEvent();
}
}
}
}
private Command updateRelatedNodeCommand(final Object[] objs, final String[] properties) {
return new Command() {
public void execute() {
getParentMode().getViewer().update(objs, properties);
}
};
}
}