| /******************************************************************************* |
| * Copyright (c) 2000, 2010 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| |
| |
| package org.eclipse.ui.texteditor; |
| |
| |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.custom.ScrolledComposite; |
| import org.eclipse.swt.custom.StyledText; |
| import org.eclipse.swt.events.DisposeEvent; |
| import org.eclipse.swt.events.DisposeListener; |
| import org.eclipse.swt.graphics.Color; |
| 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.Display; |
| import org.eclipse.swt.widgets.Label; |
| |
| import org.eclipse.jface.resource.JFaceResources; |
| import org.eclipse.jface.util.IPropertyChangeListener; |
| import org.eclipse.jface.util.PropertyChangeEvent; |
| |
| |
| /** |
| * A form consisting of a title, a banner, and an info text. Banner and info text are |
| * separated by a separator line. This form must be handled like an SWT widget. |
| * |
| * @since 2.0 |
| * @deprecated since 3.0. there is no replacement, use org.eclipse.ui.forms to define a component with a similar look and function. |
| */ |
| public class InfoForm { |
| |
| /** The form's root widget */ |
| private ScrolledComposite fScrolledComposite; |
| /** The background color */ |
| private Color fBackgroundColor; |
| /** The foreground color */ |
| private Color fForegroundColor; |
| /** The separator's color */ |
| private Color fSeparatorColor; |
| /** The form header */ |
| private Label fHeader; |
| /** The form banner */ |
| private Label fBanner; |
| /** The form text */ |
| private StyledText fText; |
| /** The preference change listener */ |
| private IPropertyChangeListener fPropertyChangeListener; |
| |
| /** |
| * Creates a new info form. |
| * @param parent the parent composite |
| */ |
| public InfoForm(Composite parent) { |
| |
| Display display= parent.getDisplay(); |
| fBackgroundColor= display.getSystemColor(SWT.COLOR_LIST_BACKGROUND); |
| fForegroundColor= display.getSystemColor(SWT.COLOR_LIST_FOREGROUND); |
| fSeparatorColor= new Color(display, 152, 170, 203); |
| |
| fPropertyChangeListener= new IPropertyChangeListener() { |
| public void propertyChange(PropertyChangeEvent event) { |
| handlePropertyChange(event); |
| } |
| }; |
| JFaceResources.getFontRegistry().addListener(fPropertyChangeListener); |
| |
| fScrolledComposite= new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); |
| fScrolledComposite.setAlwaysShowScrollBars(false); |
| fScrolledComposite.setExpandHorizontal(true); |
| fScrolledComposite.setExpandVertical(true); |
| fScrolledComposite.addDisposeListener(new DisposeListener() { |
| public void widgetDisposed(DisposeEvent e) { |
| JFaceResources.getFontRegistry().removeListener(fPropertyChangeListener); |
| fScrolledComposite= null; |
| fSeparatorColor.dispose(); |
| fSeparatorColor= null; |
| fHeader= null; |
| fBanner= null; |
| fText= null; |
| } |
| }); |
| |
| Composite composite= createComposite(fScrolledComposite); |
| composite.setLayout(new GridLayout()); |
| |
| fHeader= createHeader(composite, null); |
| createLabel(composite, null); |
| createLabel(composite, null); |
| |
| fBanner= createBanner(composite, null); |
| |
| Composite separator= createCompositeSeparator(composite); |
| GridData data= new GridData(GridData.FILL_HORIZONTAL); |
| data.heightHint= 2; |
| separator.setLayoutData(data); |
| |
| fText= createText(composite, null); |
| createLabel(composite, null); |
| |
| fScrolledComposite.setContent(composite); |
| fScrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); |
| |
| createActionControls(composite); |
| } |
| |
| /** |
| * Hook method for creating an appropriate action control. |
| * @param parent the action control's parent control |
| */ |
| protected void createActionControls(Composite parent) { |
| } |
| |
| /** |
| * Returns the control of this form. |
| * @return the root control of this form |
| */ |
| public Control getControl() { |
| return fScrolledComposite; |
| } |
| |
| /** |
| * Sets the header text of this info form. |
| * @param header the header text |
| */ |
| public void setHeaderText(String header) { |
| fHeader.setText(header); |
| } |
| |
| /** |
| * Sets the banner text of this info form. |
| * @param banner the banner text |
| */ |
| public void setBannerText(String banner) { |
| fBanner.setText(banner); |
| } |
| |
| /** |
| * Sets the info of this info form |
| * @param info the info text |
| */ |
| public void setInfo(String info) { |
| fText.setText(info); |
| } |
| |
| /** |
| * Handles the property change. |
| * |
| * @param event the property change event object describing which property changed and how |
| */ |
| protected void handlePropertyChange(PropertyChangeEvent event) { |
| |
| if (fHeader != null) |
| fHeader.setFont(JFaceResources.getHeaderFont()); |
| |
| if (fBanner != null) |
| fBanner.setFont(JFaceResources.getBannerFont()); |
| |
| Control control= fScrolledComposite.getContent(); |
| fScrolledComposite.setMinSize(control.computeSize(SWT.DEFAULT, SWT.DEFAULT)); |
| fScrolledComposite.setContent(control); |
| |
| fScrolledComposite.layout(true); |
| fScrolledComposite.redraw(); |
| } |
| |
| /* |
| * @see org.eclipse.update.ui.forms.internal.FormWidgetFactory#createComposite(Composite) |
| */ |
| private Composite createComposite(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NONE); |
| composite.setBackground(fBackgroundColor); |
| return composite; |
| } |
| |
| /* |
| * @see org.eclipse.update.ui.forms.internal.FormWidgetFactory#createCompositeSeparator(Composite) |
| */ |
| private Composite createCompositeSeparator(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NO_FOCUS); |
| composite.setBackground(fSeparatorColor); |
| return composite; |
| } |
| |
| /* |
| * @see org.eclipse.update.ui.forms.internal.FormWidgetFactory#createLabel(Composite, String) |
| */ |
| private Label createLabel(Composite parent, String text) { |
| Label label = new Label(parent, SWT.NONE); |
| GridData data= new GridData(GridData.FILL_HORIZONTAL); |
| label.setLayoutData(data); |
| |
| if (text != null) |
| label.setText(text); |
| label.setBackground(fBackgroundColor); |
| label.setForeground(fForegroundColor); |
| return label; |
| } |
| |
| private StyledText createText(Composite parent, String text) { |
| StyledText widget = new StyledText(parent, SWT.READ_ONLY | SWT.MULTI); |
| GridData data= new GridData(GridData.FILL_HORIZONTAL); |
| widget.setLayoutData(data); |
| |
| if (text != null) |
| widget.setText(text); |
| widget.setBackground(fBackgroundColor); |
| widget.setForeground(fForegroundColor); |
| widget.setCaret(null); |
| return widget; |
| } |
| |
| /* |
| * @see org.eclipse.update.ui.forms.internal.FormWidgetFactory#createHeader(Composite, String) |
| */ |
| private Label createHeader(Composite parent, String text) { |
| Label label = new Label(parent, SWT.NONE); |
| GridData data= new GridData(GridData.FILL_HORIZONTAL); |
| label.setLayoutData(data); |
| |
| if (text != null) |
| label.setText(text); |
| label.setBackground(fBackgroundColor); |
| label.setForeground(fForegroundColor); |
| label.setFont(JFaceResources.getHeaderFont()); |
| return label; |
| } |
| |
| /* |
| * @see org.eclipse.update.ui.forms.internal.FormWidgetFactory#createBanner(Composite, String) |
| */ |
| private Label createBanner(Composite parent, String text) { |
| Label label = new Label(parent, SWT.NONE); |
| if (text != null) |
| label.setText(text); |
| label.setBackground(fBackgroundColor); |
| label.setForeground(fForegroundColor); |
| label.setFont(JFaceResources.getBannerFont()); |
| return label; |
| } |
| } |