blob: 4654c40f30f8013648ba2f26e7dad4089edda876 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}