SWT Jface Eclipse Java

/*******************************************************************************
 * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-6-14 10:55:42 by JACK $Id$
 *  
 ******************************************************************************/
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
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.Shell;
import org.eclipse.ui.forms.HyperlinkGroup;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.Form;
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;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class CustomWidgets extends ApplicationWindow {
  FormToolkit toolkit;
  Form form;
  /**
   * @param parentShell
   */
  public CustomWidgets(Shell parentShell) {
    super(parentShell);
  }
  
  private void demoSections() {
    form.getBody().setLayout(new TableWrapLayout());
    
    Section section = toolkit.createSection(form.getBody(), Section.DESCRIPTION | 
        Section.TREE_NODE | Section.EXPANDED);
    
    section.setText("This is the title");
    toolkit.createCompositeSeparator(section);
    section.setDescription("-= This is a description -=");
    
    FormText text = toolkit.createFormText(section, false);
    text.setText(
      "This is a long text. The user can show or hide this text "
        + "by expanding or collapsing the expandable composite.",
      false,
      false);
    section.setClient(text);
  }
 
  private void demoExpandableComposite() {
    form.getBody().setLayout(new TableWrapLayout());
    ExpandableComposite ec1 =
      toolkit.createExpandableComposite(
        form.getBody(),
        ExpandableComposite.TREE_NODE | ExpandableComposite.EXPANDED);
    ec1.setText("This is the title");
    FormText text = toolkit.createFormText(ec1, false);
    text.setText(
      "This is a long text. The user can show or hide this text "
        + "by expanding or collapsing the expandable composite.",
      false,
      false);
    ec1.setClient(text);
    ec1.addExpansionListener(new ExpansionAdapter() {
      public void expansionStateChanged(ExpansionEvent e) {
        // resizes the application window.
        getShell().pack(true);
      }
    });
  }
  private void demoFormTextXML() {
    form.getBody().setLayout(new TableWrapLayout());
    FormText text = toolkit.createFormText(form.getBody(), true);
    Image image = new Image(form.getDisplay(), "icons/eclipse0.gif");
    text.setImage("eclipse", image);
    text.setText(
      "
"
        + "

 Eclipse Projects: 

"
        + "
  • Platform - Eclipse frameworks
  • "
            + "
  • JDT - Java development tools
  • "
            + "
  • PDE - Plug-in development environment
  • "
            + "
    ",
          true,
          false);
      }
      private void demoFormTextNormal() {
        form.getBody().setLayout(new TableWrapLayout());
        FormText text = toolkit.createFormText(form.getBody(), true);
        // text.setLayoutData(new TableWrapData(TableWrapData.FILL));
        text.setText(
          "Eclipse is a kind of universal tool platform - an open extensible "
            + "IDE for anything and nothing in particular. For more details, please "
            + "visit http://www.eclipse.org for more details.",
          false,
          false);
      }
      private void demoFormTextURL() {
        form.getBody().setLayout(new TableWrapLayout());
        FormText text = toolkit.createFormText(form.getBody(), true);
        HyperlinkGroup group = new HyperlinkGroup(form.getDisplay());
        group.setForeground(form.getDisplay().getSystemColor(SWT.COLOR_BLUE));
        group.setActiveForeground(
          form.getDisplay().getSystemColor(SWT.COLOR_BLUE));
        text.setHyperlinkSettings(group);
        text.setText(
          "Eclipse is a kind of universal tool platform - an open extensible "
            + "IDE for anything and nothing in particular. For more details, please "
            + "visit http://www.eclipse.org web site.",
          false,
          true);
        text.addHyperlinkListener(new HyperlinkAdapter() {
          public void linkActivated(HyperlinkEvent e) {
            System.out.println("Link activated: " + e.getHref());
          }
        });
      }
      private void demoHyperlinks() {
        form.getBody().setLayout(new GridLayout());
        Hyperlink hyperlink =
          toolkit.createHyperlink(
            form.getBody(),
            "This is a hyperlink to Eclipse.org",
            SWT.NULL);
        hyperlink.setHref("http://www.eclipse.org");
        hyperlink.setForeground(
          getShell().getDisplay().getSystemColor(SWT.COLOR_BLUE));
        hyperlink.addHyperlinkListener(new IHyperlinkListener() {
          public void linkEntered(HyperlinkEvent e) {
            System.out.println("Mouse entered.");
          }
          public void linkExited(HyperlinkEvent e) {
            System.out.println("Mouse left.");
          }
          public void linkActivated(HyperlinkEvent e) {
            System.out.println("Hyperlink activated.");
            System.out.println("HREF = " + e.getHref());
          }
        });
        ImageHyperlink imageHyperlink =
          toolkit.createImageHyperlink(form.getBody(), SWT.NULL);
        imageHyperlink.setText("This is an image hyperlink.");
        imageHyperlink.setForeground(
          getShell().getDisplay().getSystemColor(SWT.COLOR_BLUE));
        imageHyperlink.setImage(
          new Image(getShell().getDisplay(), "icons/eclipse0.gif"));
        imageHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
          public void linkActivated(HyperlinkEvent e) {
            System.out.println("Image hyperlink activated.");
          }
        });
        HyperlinkGroup group = new HyperlinkGroup(getShell().getDisplay());
        group.add(hyperlink);
        group.add(imageHyperlink);
        group.setActiveBackground(
          getShell().getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        group.setActiveForeground(
          getShell().getDisplay().getSystemColor(SWT.COLOR_RED));
        group.setForeground(
          getShell().getDisplay().getSystemColor(SWT.COLOR_BLUE));
      }
      /*
       * (non-Javadoc)
       * 
       * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
       */
      protected Control createContents(Composite parent) {
        Composite composite = new Composite(parent, SWT.NULL);
        composite.setLayout(new FillLayout());
        // Sets up the toolkit.
        toolkit = new FormToolkit(getShell().getDisplay());
        // Creates a form instance.
        form = toolkit.createForm(composite);
        form.setLayoutData(new GridData(GridData.FILL_BOTH));
        // Sets title.
        form.setText("Custom Form Widgets Demo");
        // demoHyperlinks();
        
        // demoFormTextNormal();
        // demoFormTextURL();
        // demoFormTextXML();
        // demoExpandableComposite();
        demoSections();
        return composite;
      }
      public static void main(String[] args) {
        CustomWidgets win = new CustomWidgets(null);
        win.setBlockOnOpen(true);
        win.open();
      }
    }