// ============================================================================
//
// 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;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PartInitException;
import org.talend.commons.ui.runtime.image.ECoreImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.PluginChecker;
import org.talend.core.model.process.IProcess2;
import org.talend.core.model.properties.InformationLevel;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.JobletProcessItem;
import org.talend.core.ui.ISVNProviderService;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.core.ui.images.OverlayImageProvider;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.ui.editor.AbstractTalendEditor;
import org.talend.designer.core.ui.editor.ProcessEditorInput;
import org.talend.designer.core.ui.editor.TalendEditor;
/**
* This class is the main editor, the differents pages in it are: <br/>
* <b>1)</b> {@link TalendEditor} <br/>
* <b>2)</b> {@link Text Editor on the generated code} <br/>
* <br/>
* This class uses the interface ISelectionListener, it allows to propage the Delete evenement to the designer. <br/>
*
* $Id: MultiPageTalendEditor.java 82729 2012-05-02 09:49:22Z hwang $
*
*/
public class MultiPageTalendEditor extends AbstractMultiPageTalendEditor {
public static final String ID = "org.talend.designer.core.ui.MultiPageTalendEditor"; //$NON-NLS-1$
public MultiPageTalendEditor() {
super();
designerEditor = new TalendEditor();
}
/**
* Getter for designerEditor.
*
* @return the designerEditor
*/
public AbstractTalendEditor getDesignerEditor() {
return this.designerEditor;
}
/**
* Creates the pages of the multi-page editor.
*/
@Override
protected void createPages() {
super.createPages();
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.ui.AbstractMultiPageTalendEditor#updateTitleImage()
*/
public void updateTitleImage() {
Display.getDefault().syncExec(new Runnable() {
public void run() {
Image image = null;
if (getProcess() == null) {
return;
}
InformationLevel level = getProcess().getProperty().getMaxInformationLevel();
if (level.equals(InformationLevel.ERROR_LITERAL)) {
image = OverlayImageProvider.getImageWithError(ImageProvider.getImage(ECoreImage.PROCESS_ICON)).createImage();
} else {
image = ImageProvider.getImage(ECoreImage.PROCESS_ICON);
}
setTitleImage(image);
}
});
}
/**
* The <code>MultiPageEditorExample</code> implementation of this method checks that the input is an instance of
* <code>IFileEditorInput</code>.
*/
@Override
public void init(final IEditorSite site, final IEditorInput editorInput) throws PartInitException {
if (!(editorInput instanceof IFileEditorInput) && !(editorInput instanceof ProcessEditorInput)) {
throw new PartInitException(Messages.getString("MultiPageTalendEditor.InvalidInput")); //$NON-NLS-1$
}
super.init(site, editorInput);
}
/**
* DOC smallet Comment method "setName".
*
* @param label
*/
public void setName() {
if (getEditorInput() == null) {
return;
}
super.setName();
String label = getEditorInput().getName();
IProcess2 process2 = this.getProcess();
String jobVersion = "0.1";
if (process2 != null)
jobVersion = process2.getVersion();
// if (getActivePage() == 1) {
ISVNProviderService service = null;
if (PluginChecker.isSVNProviderPluginLoaded()) {
service = (ISVNProviderService) GlobalServiceRegister.getDefault().getService(ISVNProviderService.class);
if (revisionChanged && service.isProjectInSvnMode()) {
revisionNumStr = service.getCurrentSVNRevision(process2);
revisionChanged = false;
if (revisionNumStr != null) {
revisionNumStr = ".r" + revisionNumStr;
}
}
}
String title = "MultiPageTalendEditor.Job";//$NON-NLS-1$
if (process2 != null) {
Item item = process2.getProperty().getItem();
if (item instanceof JobletProcessItem) {
title = "MultiPageTalendEditor.Joblet";//$NON-NLS-1$
}
}
IBrandingService brandingService = (IBrandingService) GlobalServiceRegister.getDefault().getService(
IBrandingService.class);
boolean allowVerchange = brandingService.getBrandingConfiguration().isAllowChengeVersion();
if (allowVerchange) {
if (revisionNumStr != null) {
setPartName(Messages.getString(title, label, jobVersion) + revisionNumStr);
} else {
setPartName(Messages.getString(title, label, jobVersion)); //$NON-NLS-1$
}
} else {
if (revisionNumStr != null) {
setPartName(Messages.getString(title, label, "") + revisionNumStr);//$NON-NLS-1$
} else {
setPartName(Messages.getString(title, label, "")); //$NON-NLS-1$
}
}
}
public void setName(String RevisionNumStr) {
super.setName();
String label = getEditorInput().getName();
String jobVersion = this.getProcess().getVersion();
setPartName(Messages.getString("MultiPageTalendEditor.Job", label, jobVersion) + RevisionNumStr); //$NON-NLS-1$
revisionNumStr = RevisionNumStr;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.ui.AbstractMultiPageTalendEditor#getEditorId()
*/
@Override
public String getEditorId() {
return ID;
}
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
super.doSave(monitor);
this.setName();
}
}