// ============================================================================
//
// 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.subjob;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.talend.commons.ui.utils.image.ColorUtils;
import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.Element;
import org.talend.core.model.utils.DesignerColorUtils;
import org.talend.designer.core.DesignerPlugin;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.ui.editor.subjobcontainer.SubjobContainer;
import org.talend.designer.core.ui.views.jobsettings.AbstractPreferenceComposite;
/**
* ggu class global comment. Detailled comment
*/
public class SubjobBasicComposite extends AbstractPreferenceComposite {
private static final IPreferenceStore PREFERENCE_STORE = DesignerPlugin.getDefault().getPreferenceStore();
public SubjobBasicComposite(Composite parentComposite, int styles, Element element) {
super(parentComposite, styles, EComponentCategory.BASIC, element, true);
setDialogTitle(Messages.getString("SubjobBasicComposite.DialogTitle")); //$NON-NLS-1$
}
@Override
public void addComponents(boolean forceRedraw, boolean reInitialize, int height) {
super.addComponents(forceRedraw, reInitialize, height);
if (reloadBtn != null) {
reloadBtn.setText(Messages.getString("SubjobBasicComposite.RestoreLabel")); //$NON-NLS-1$
reloadBtn.setToolTipText(Messages.getString("SubjobBasicComposite.RestoreTip")); //$NON-NLS-1$
}
if (saveBtn != null) {
saveBtn.setText(Messages.getString("SubjobBasicComposite.SaveLabel")); //$NON-NLS-1$
saveBtn.setToolTipText(Messages.getString("SubjobBasicComposite.SaveTip")); //$NON-NLS-1$
}
}
@Override
protected boolean needApplyToChildren() {
return false;
}
@Override
protected void onReloadButtonClick() {
if (!sameASPreference()) {
super.onReloadButtonClick();
}
}
@Override
protected void onSaveButtonClick() {
if (!sameASPreference()) {
super.onSaveButtonClick();
}
}
private boolean sameASPreference() {
String subjobColor = getPropertyColor();
String pSubjobColor = ColorUtils.transform(getPreferenceColor());
String subjobTitleColor = getPropertyTitleColor();
String pSubjobTitleColor = ColorUtils.transform(getPreferenceTitleColor());
if (pSubjobColor != null && pSubjobColor.equals(subjobColor) && pSubjobTitleColor != null
&& pSubjobTitleColor.equals(subjobTitleColor)) {
return true; // same as preference
}
return false;
}
private String getPreferenceColor() {
return PREFERENCE_STORE.getString(DesignerColorUtils.SUBJOB_COLOR_NAME);
}
private String getPreferenceTitleColor() {
return PREFERENCE_STORE.getString(DesignerColorUtils.SUBJOB_TITLE_COLOR_NAME);
}
private String getPropertyColor() {
if (getElement() == null) {
return null;
}
return (String) getElement().getPropertyValue(EParameterName.SUBJOB_COLOR.getName());
}
private String getPropertyTitleColor() {
if (getElement() == null) {
return null;
}
return (String) getElement().getPropertyValue(EParameterName.SUBJOB_TITLE_COLOR.getName());
}
@Override
protected void onReloadPreference() {
if (getElement() != null) {
String colorStr = getPreferenceColor();
RGB subjobColor = ColorUtils.parseStringToRGB(colorStr, DesignerColorUtils.SUBJOB_COLOR);
getElement().setPropertyValue(EParameterName.SUBJOB_COLOR.getName(), ColorUtils.getRGBValue(subjobColor));
colorStr = getPreferenceTitleColor();
RGB subjobTitleColor = ColorUtils.parseStringToRGB(colorStr, DesignerColorUtils.SUBJOB_TITLE_COLOR);
getElement().setPropertyValue(EParameterName.SUBJOB_TITLE_COLOR.getName(), ColorUtils.getRGBValue(subjobTitleColor));
}
}
@Override
protected void onSavePreference() {
if (getElement() != null) {
RGB subjobColor = ColorUtils.parseStringToRGB(getPropertyColor(), DesignerColorUtils.SUBJOB_COLOR);
PreferenceConverter.setValue(PREFERENCE_STORE, DesignerColorUtils.SUBJOB_COLOR_NAME, subjobColor);
subjobColor = ColorUtils.parseStringToRGB(getPropertyTitleColor(), DesignerColorUtils.SUBJOB_TITLE_COLOR);
PreferenceConverter.setValue(PREFERENCE_STORE, DesignerColorUtils.SUBJOB_TITLE_COLOR_NAME, subjobColor);
}
}
@Override
public void refresh() {
super.refresh();
Element element = getElement();
if (element != null && element instanceof SubjobContainer) {
SubjobContainer process = (SubjobContainer) element;
if (reloadBtn != null && !reloadBtn.isDisposed()) {
reloadBtn.setEnabled(!process.isReadOnly());
}
if (saveBtn != null && !saveBtn.isDisposed()) {
saveBtn.setEnabled(!process.isReadOnly());
}
}
}
}