/******************************************************************************
* Copyright (c) 2011-2013, Linagora
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Linagora - initial API and implementation
*******************************************************************************/
package com.ebmwebsourcing.petals.services.su.editor.extensibility.defaultpages;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormText;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.ebmwebsourcing.petals.common.internal.provisional.formeditor.ISharedEdition;
import com.ebmwebsourcing.petals.common.internal.provisional.swt.OpenSourceEditorHyperlinkListener;
import com.ebmwebsourcing.petals.services.PetalsServicesPlugin;
import com.ebmwebsourcing.petals.services.su.editor.extensibility.JbiEditorDetailsContribution;
import com.ebmwebsourcing.petals.services.su.editor.su.JBIEndpointUIHelpers;
import com.sun.java.xml.ns.jbi.AbstractEndpoint;
/**
* This class generates default contributions.
* <p>
* It is parameterized by the {@link EClass}es to introspect to generate widgets.
* The main tab is made of default JBI stuff, advanced tab is made of generated widgets
* </p>
*
* @author Mickael Istria - EBM WebSourcing
*/
public class DefaultJbiEditorContribution extends JbiEditorDetailsContribution {
private final EClass[] extensionClasses;
/**
* Constructor.
* @param extensionEClasses
*/
public DefaultJbiEditorContribution( EClass... extensionEClasses ) {
this.extensionClasses = extensionEClasses;
}
/*
* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.editor.extensibility.JbiEditorDetailsContribution
* #addMainSUContent(com.sun.java.xml.ns.jbi.AbstractEndpoint, org.eclipse.ui.forms.widgets.FormToolkit,
* org.eclipse.swt.widgets.Composite, com.ebmwebsourcing.petals.common.internal.provisional.formeditor.ISharedEdition)
*/
@Override
public void addMainSUContent( AbstractEndpoint endpoint, FormToolkit toolkit, Composite generalDetails, ISharedEdition ise ) {
Composite composite = createCommonProvideSection( generalDetails, toolkit );
JBIEndpointUIHelpers.createCommonEndpointUI( endpoint, toolkit, composite, ise );
// Add a warning message
final Image noticeImage = PetalsServicesPlugin.loadImage( "icons/obj16/smartmode_co.gif" );
FormText ft = new FormText( composite, SWT.BORDER | SWT.WRAP ) {
@Override
public void dispose() {
super.dispose();
if( noticeImage != null && ! noticeImage.isDisposed())
noticeImage.dispose();
}
};
ft.marginWidth = 7;
ft.marginHeight = 7;
GridData layoutData = new GridData( GridData.FILL_HORIZONTAL );
layoutData.horizontalSpan = 2;
layoutData.verticalIndent = 30;
layoutData.widthHint = 380;
layoutData.heightHint = 100;
ft.setLayoutData( layoutData );
ft.setImage( "tip", noticeImage );
StringBuilder sb = new StringBuilder();
sb.append( "<form>" );
sb.append( "<p><img href=\"tip\" /> <b>Notice</b></p>" );
sb.append( "<p>This a default edition view. This component or this component version is not supported by the current Petals tooling.</p>" );
sb.append( "<p vspace=\"false\">It is also possible that this component does not support <b>provides</b> or <b>consumes</b> blocks.</p>" );
sb.append( "<p>You may prefer to edit the sources directly. In this case, please use the <a>Petals Source Editor</a>.</p>" );
sb.append( "</form>" );
ft.addHyperlinkListener( new OpenSourceEditorHyperlinkListener( ise.getEditedFile(), false ));
ft.setText( sb.toString(), true, false );
}
/*
* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.editor.extensibility.JbiEditorDetailsContribution
* #addAdvancedSUContent(com.sun.java.xml.ns.jbi.AbstractEndpoint, org.eclipse.ui.forms.widgets.FormToolkit,
* org.eclipse.swt.widgets.Composite, com.ebmwebsourcing.petals.common.internal.provisional.formeditor.ISharedEdition)
*/
@Override
public void addAdvancedSUContent( AbstractEndpoint endpoint, FormToolkit toolkit, Composite advancedDetails, ISharedEdition ise ) {
if( this.extensionClasses != null && this.extensionClasses.length > 0 )
JBIEndpointUIHelpers.createDefaultWidgetsByEIntrospection(endpoint, toolkit, advancedDetails, ise, this.extensionClasses);
else
toolkit.createLabel( advancedDetails, "Advanced settings are not available." );
}
}