// ============================================================================
//
// 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.designer.core.ui.views.jobsettings;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.Element;
import org.talend.core.model.properties.ProcessItem;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.model.utils.emf.talendfile.ParametersType;
import org.talend.designer.core.ui.editor.cmd.LoadProjectSettingsCommand;
import org.talend.designer.core.ui.editor.cmd.PropertyChangeCommand;
import org.talend.designer.core.ui.editor.process.Process;
import org.talend.designer.core.ui.projectsetting.ElementParameter2ParameterType;
import org.talend.designer.core.ui.projectsetting.ProjectSettingManager;
import org.talend.repository.ProjectManager;
/**
* DOC chuang class global comment. Detailled comment
*/
public class ExtraComposite extends AbstractPreferenceComposite {
boolean isClicked;
private ParametersType pType;
/**
* DOC chuang ExtraComposite constructor comment.
*
* @param parentComposite
* @param styles
* @param section
* @param element
* @param isCompactView
*/
public ExtraComposite(Composite parentComposite, int styles, EComponentCategory section, Element element,
boolean isCompactView) {
super(parentComposite, styles, section, element, isCompactView);
setDialogTitle(Messages.getString("ExtraComposite.ImplicitContextSettings")); //$NON-NLS-1$
Process process = (Process) elem;
ProcessItem pItem = (ProcessItem) process.getProperty().getItem();
pType = pItem.getProcess().getParameters();
// achen modify to fix 0005993
isUsingProjectSetting = true;
// wzhang modified to fixed bug 8218
boolean readOnly = element.isReadOnly();
parentComposite.setEnabled(!readOnly);
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.ui.views.properties.MultipleThreadDynamicComposite#addComponents(boolean)
*/
@Override
public void addComponents(boolean forceRedraw, boolean reInitialize, int height) {
// TODO Auto-generated method stub
super.addComponents(forceRedraw, reInitialize, height);
// achen add to fix 0005991 & 0005993 when reload
Object value = ElementParameter2ParameterType.getParameterValue(elem, EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS
.getName());
if (value != null && value instanceof Boolean) {
Boolean v = (Boolean) value;
useProjectSetting.setSelection(v.booleanValue());
setMainCompositeEnable(!v.booleanValue());
topComposite.setEnabled(true);
if (v.booleanValue()) {
if (elem == null) {
return;
}
// achen modify to fix 0005991& 0005993
ProjectSettingManager.reloadImplicitValuesFromProjectSettings(elem, ProjectManager.getInstance()
.getCurrentProject(), ExtraComposite.this);
refresh();
}
}
if (useProjectSetting != null) {
useProjectSetting.removeSelectionListener(selectionListener);
useProjectSetting.addSelectionListener(selectionListener);
}
}
SelectionAdapter selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
useProjectSettingButtonClick();
}
};
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.ui.views.jobsettings.AbstractPreferenceComposite#useProjectSettingButtonClick()
*/
@Override
protected void useProjectSettingButtonClick() {
boolean flag = useProjectSetting.getSelection();
setMainCompositeEnable(!flag);
topComposite.setEnabled(true);
ElementParameter2ParameterType.setParameterValue(pType, EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS.getName(),
Boolean.valueOf(flag));
PropertyChangeCommand cmd = new PropertyChangeCommand(elem,
EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS.getName(), Boolean.valueOf(flag));
getCommandStack().execute(cmd);
updateContextValue(flag);
if (flag) {
useProjectSetting();
}
}
@Override
protected void onReloadPreference() {
// ImplicitContextLoadHelper.reloadValuesFromPreferencePage(elem, ExtraComposite.this);
// achen modify to fix 0005993
// ProjectSettingManager.reloadImplicitValuesFromProjectSettings(elem,
// ProjectManager.getInstance().getCurrentProject(),
// ExtraComposite.this);
if (elem instanceof Process) {
Process process = (Process) elem;
LoadProjectSettingsCommand command = new LoadProjectSettingsCommand(process,
EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS.getName(), Boolean.TRUE);
process.getCommandStack().execute(command);
}
}
@Override
protected void onSavePreference() {
// ImplicitContextLoadHelper.saveValuesToPreferencePage(elem, ExtraComposite.this);
// achen modify to fix 0005993
ProjectSettingManager.saveImplicitValuesToProjectSettings(elem, ProjectManager.getInstance().getCurrentProject());
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.ui.views.jobsettings.AbstractPreferenceComposite#needApplyToChildren()
*/
@Override
protected boolean needApplyToChildren() {
return false;
}
}