// ============================================================================ // // Copyright (C) 2006-2016 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 com.amalto.workbench.dialogs; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Text; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.utils.FontUtils; public class PluginDetailsDialog extends Dialog { private static Log log = LogFactory.getLog(PluginDetailsDialog.class); protected TabFolder tabFolder; private String description; private String documentation; // private String parametersSchema; private Collection<Listener> listeners = new ArrayList<Listener>(); private String templetName; public PluginDetailsDialog(Shell parentShell, String description, String documentation, String parametersSchema, String templetName) { super(parentShell); this.description = description; this.documentation = documentation; this.templetName = templetName; // this.parametersSchema = parametersSchema; setShellStyle(getShellStyle() | SWT.RESIZE | SWT.MAX); } protected Control createDialogArea(Composite parent) { try { // Should not really be here but well,.... parent.getShell().setText(Messages.PluginDetailsDialog_PluginDetails); Composite composite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); composite.setLayout(layout); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); applyDialogFont(composite); tabFolder = new TabFolder(composite, SWT.TOP); tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); tabFolder.setLayout(new GridLayout(1, true)); ((GridData) tabFolder.getLayoutData()).heightHint = 600; ((GridData) tabFolder.getLayoutData()).widthHint = 600; TabItem descriptionTI = new TabItem(tabFolder, SWT.NULL); descriptionTI.setText(Messages.PluginDetailsDialog_Description); descriptionTI.setToolTipText(Messages.PluginDetailsDialog_DescriptionTip); Composite descriptionC = new Composite(tabFolder, SWT.NULL); descriptionC.setLayout(new GridLayout(1, true)); descriptionC.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); /* * Label descriptionLabel = new Label(descriptionC, SWT.LEFT); descriptionLabel.setLayoutData( new * GridData(SWT.LEFT,SWT.CENTER,false,false,1,1) ); FontData fd = * descriptionLabel.getFont().getFontData()[0]; fd.setStyle(SWT.BOLD); descriptionLabel.setFont(new * Font(Display.getDefault(),fd)); descriptionLabel.setText("Description"); */ Label descValue = new Label(descriptionC, SWT.WRAP); descValue.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); descValue.setText(description + "\n");//$NON-NLS-1$ Label documentationLabel = new Label(descriptionC, SWT.LEFT); documentationLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1)); documentationLabel.setFont(FontUtils.getBoldFont(documentationLabel.getFont())); documentationLabel.setText(templetName); Text docValue = new Text(descriptionC, SWT.WRAP | SWT.READ_ONLY | SWT.V_SCROLL); docValue.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); docValue.setBackground(documentationLabel.getBackground()); docValue.setText(documentation); descriptionTI.setControl(descriptionC); /* * TabItem parametersTI = new TabItem(tabFolder,SWT.NULL); parametersTI.setText("Parameters"); * parametersTI.setToolTipText("Display the plugin description and documentation"); * * Composite parametersC = new Composite(tabFolder,SWT.NULL); parametersC.setLayout(new GridLayout(1,true)); * * Label paramsValue = new Label(parametersC, SWT.WRAP); paramsValue.setLayoutData( new * GridData(SWT.FILL,SWT.CENTER,true,false,1,1) ); paramsValue.setText(parametersSchema); * * parametersTI.setControl(parametersC); */ tabFolder.setSelection(0); return composite; } catch (Exception e) { log.error(e.getMessage(), e); MessageDialog.openError(this.getShell(), Messages._Error, Messages.bind(Messages.PluginDetailsDialog_ErrorMsg, e.getLocalizedMessage())); return null; } } protected void createButtonsForButtonBar(Composite parent) { createButton(parent, 0, Messages.PluginDetailsDialog_Close, true); } protected void buttonPressed(int buttonId) { Event e = new Event(); e.button = buttonId; notifyListeners(e); } public void addListener(Listener listener) { listeners.add(listener); } public void notifyListeners(Event e) { for (Iterator<Listener> iter = listeners.iterator(); iter.hasNext();) { Listener listener = iter.next(); listener.handleEvent(e); } } }