Custom Components : Form « SWT JFace Eclipse « Java






Custom Components

Custom Components

/*******************************************************************************
 * 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(
      "<form>"
        + "<p><img href=\"eclipse\"/> Eclipse Projects: </p>"
        + "<li><b>Platform</b> - Eclipse frameworks</li>"
        + "<li><b>JDT</b> - Java development tools</li>"
        + "<li><b>PDE</b> - Plug-in development environment</li>"
        + "</form>",
      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();
  }

}

           
       








Related examples in the same category

1.Email FormEmail Form
2.Simple Form 1Simple Form 1
3.HTML FormHTML Form