/******************************************************************************* * Copyright (c) 2004, 2005 Sybase, Inc. and others. * * 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.jsf.common.ui.internal.guiutils; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.eclipse.help.HelpSystem; import org.eclipse.help.IContext; import org.eclipse.help.IHelpResource; import org.eclipse.jface.action.IAction; import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.SectionPart; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormText; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.forms.widgets.ImageHyperlink; import org.eclipse.ui.forms.widgets.Section; /** * @author jchoi * @version */ public class OverviewSection extends SectionPart { private static final String HELP_IMAGE_FILE = "help.gif"; //$NON-NLS-1$ private static Logger log = JSFUICommonPlugin.getLogger(OverviewSection.class); private String editorId; private FormToolkit toolkit; private ImageHyperlink helpImage; private Composite textClient; private String helpContextId; private String helpTooltip; /** * @param editorId * @param managedForm * @param toolkit */ public OverviewSection(String editorId, IManagedForm managedForm, FormToolkit toolkit) { this(editorId, managedForm, toolkit, null, null); } /** * Constructor with help option. * * @param editorId * id of the editor this page is for. * @param managedForm * @param toolkit * @param helpContextId * @param helpTooltip */ public OverviewSection(String editorId, IManagedForm managedForm, FormToolkit toolkit, String helpContextId, String helpTooltip) { super(managedForm.getForm().getBody(), toolkit, ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); super.initialize(managedForm); this.editorId = editorId; this.toolkit = toolkit; this.helpContextId = helpContextId; this.helpTooltip = helpTooltip; this.textClient = this.toolkit.createComposite(getSection(), SWT.NONE); this.textClient.setSize(32, 16); init(); Composite client = this.toolkit.createComposite(getSection()); //createClient(client, this.toolkit); getSection().setClient(client); } /** * @param editor * @param managedForm * @param toolkit * @param style */ public OverviewSection(FormEditor editor, IManagedForm managedForm, FormToolkit toolkit, int style) { super(managedForm.getForm().getBody(), toolkit, ExpandableComposite.TITLE_BAR | style); super.initialize(managedForm); this.toolkit = toolkit; this.textClient = this.toolkit.createComposite(getSection(), SWT.NONE); this.textClient.setSize(32, 16); init(); } /** * @param editor * @param managedForm * @param toolkit * @param style * @param helpContextId * @param helpTooltip */ public OverviewSection(FormEditor editor, IManagedForm managedForm, FormToolkit toolkit, int style, String helpContextId, String helpTooltip) { super(managedForm.getForm().getBody(), toolkit, ExpandableComposite.TITLE_BAR | style); super.initialize(managedForm); this.toolkit = toolkit; this.textClient = toolkit.createComposite(getSection(), SWT.NONE); this.textClient.setSize(32, 16); this.helpContextId = helpContextId; this.helpTooltip = helpTooltip; init(); } /** * */ public void initialize() { Composite client = toolkit.createComposite(getSection()); //createClient(client, toolkit); getSection().setClient(client); } private void init() { RowLayout rowLayout = new RowLayout(); rowLayout.wrap = false; rowLayout.pack = false; rowLayout.justify = true; rowLayout.type = SWT.HORIZONTAL; rowLayout.marginLeft = 0; rowLayout.marginTop = 0; rowLayout.marginRight = 0; rowLayout.marginBottom = 0; rowLayout.spacing = 0; textClient.setLayout(rowLayout); helpImage = new ImageHyperlink(textClient, SWT.NONE); toolkit.adapt(helpImage, true, true); toolkit.adapt(textClient, true, true); helpImage.setImage(JSFUICommonPlugin.getDefault().getImage(HELP_IMAGE_FILE)); getSection().setTextClient(textClient); if (helpTooltip != null) { helpImage.setToolTipText(helpTooltip); } helpImage.setBackground(getSection().getTitleBarGradientBackground()); helpImage.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { IContext context = HelpSystem.getContext(helpContextId); if (context != null) { IHelpResource[] topics = context.getRelatedTopics(); if (topics != null && topics.length == 1) { PlatformUI.getWorkbench().getHelpSystem().displayHelpResource(topics[0].getHref()); } else { PlatformUI.getWorkbench().getHelpSystem().displayHelp(helpContextId); } } } }); /* * Composite client = _toolkit.createComposite(getSection()); * createClient(client, _toolkit); getSection().setClient(client); */ } /** * set the page details from the extensionpoint * * @param element */ protected void setPageDetails(IConfigurationElement element) { setText(element.getAttribute("name")); //$NON-NLS-1$ setDescription(element.getAttribute("description")); //$NON-NLS-1$ } /** * add the extension elements to the page * * @param parent * @param toolkit_ * @param element */ public void processItems(Composite parent, FormToolkit toolkit_, IConfigurationElement element) { String hyperlink = element.getAttribute("hyperlink"); //$NON-NLS-1$ String text = element.getAttribute("text"); //$NON-NLS-1$ String action = element.getAttribute("hyperlinkaction"); //$NON-NLS-1$ //String actionparameters = element.getAttribute("actionparameters"); //$NON-NLS-1$ if (hyperlink != null && hyperlink.length() > 0) { Hyperlink hypr = toolkit_.createHyperlink(parent, hyperlink, SWT.NONE); if (action != null && action.length() > 0) { try { final IAction thisAction = (IAction) element .createExecutableExtension("hyperlinkaction"); //$NON-NLS-1$ hypr.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { thisAction.run(); } }); } catch (Exception ee) { // log.IntroductionSection.action.error=Failed to launch the // link {0}. log .error("log.OverviewSection.action.error", //$NON-NLS-1$ hyperlink, ee); JSFUICommonPlugin.getAlerts().detailError(hyperlink, "log.OverviewSection.action.error", hyperlink, ee); //$NON-NLS-1$ } } } if (text != null && text.length() > 0) { FormText form = toolkit_.createFormText(parent, false); form.setText(text, false, false); } } /** * Get the extension elements for the Introduction pages * @param extensionPoint * @return the configuration element */ public IConfigurationElement getExtensions(String extensionPoint) { // find all service editor page extensions IConfigurationElement element = null; // find all service editor parameter dialog extensions IConfigurationElement[] elements = Platform.getExtensionRegistry() .getConfigurationElementsFor(extensionPoint); if (elements.length > 0) { for (int ii = 0; ii < elements.length; ii++) { // get extensions for this dialog // String extPluginId = // elements[ii].getDeclaringExtension().getNamespace(); String anEditorId = elements[ii].getDeclaringExtension() .getSimpleIdentifier(); // see if we have any contributuins of dialogs if (this.editorId.equals(anEditorId)) { element = elements[ii]; break; } } } return element; } private void setText(String text) { getSection().setText(text); } private void setDescription(String text) { getSection().setDescription(text); } }