Java/SWT JFace Eclipse/Form

Материал из Java эксперт
Версия от 05:56, 1 июня 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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.ruposite;
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.ruposite)
   */
  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();
  }
}





Email Form

/******************************************************************************
 * All Right Reserved. 
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-6-13 18:19:20 by JACK
 * $Id$
 * 
 *****************************************************************************/

import org.eclipse.jface.action.Action;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ruposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
public class EmailForm  extends ApplicationWindow {
  /**
   * @param parentShell
   */
  public EmailForm(Shell parentShell) {
    super(parentShell);
  }

  /* (non-Javadoc)
   * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.ruposite)
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NULL);
    composite.setLayout(new FillLayout());
    
    // Sets up the toolkit.
    FormToolkit toolkit = new FormToolkit(getShell().getDisplay());
    
    // Creates a form instance.
    // Form form = toolkit.createForm(composite);
    ScrolledForm form = toolkit.createScrolledForm(composite);
    form.setLayoutData(new GridData(GridData.FILL_BOTH));
    
    // Sets title.
    form.setText("Composing an Email Message");
    
    // Adds body contents.
    form.getBody().setLayout(new GridLayout(2, false));
    Label label = toolkit.createLabel(form.getBody(), "To: ", SWT.NULL);
    Text textTo = toolkit.createText(form.getBody(), "");
    textTo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    
    label = toolkit.createLabel(form.getBody(), "Subject: ", SWT.NULL);
    Text textSubject = toolkit.createText(form.getBody(), "");
    textSubject.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    
    label = toolkit.createLabel(form.getBody(), "Message: ", SWT.NULL);
    Text textMessage = toolkit.createText(form.getBody(), "");
    textMessage.setLayoutData(new GridData(GridData.FILL_BOTH));
    
    label = toolkit.createLabel(form.getBody(), "Option: ", SWT.NULL);
    Button buttonOption = toolkit.createButton(form.getBody(), "save a copy", SWT.CHECK);
  
    
    Button buttonClose = toolkit.createButton(form.getBody(), "Close", SWT.PUSH);
    GridData gridData = new GridData();
    gridData.horizontalSpan = 2;
    gridData.horizontalAlignment = GridData.END;
    buttonClose.setLayoutData(gridData);
    
    
    // Button button = toolkit.createButton(form.getBody(), "Test", SWT.NULL);  
    
    // Adds tool bar items.
    form.getToolBarManager().add(new Action("Send") {
      public void run() {
        System.out.println("Sending email ...");
      }
    });
    
    form.getToolBarManager().add(new Action("Cancel") {
      public void run() {
        System.out.println("Cancelled.");
      }
    });
    
    form.updateToolBar();
    
    return composite;
  }
  public static void main(String[] args) {
    EmailForm emailForm = new EmailForm(null);
    emailForm.setBlockOnOpen(true);
    emailForm.open();
  }    
  
}





HTML Form

/*******************************************************************************
 * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-6-11 15:12:57 by JACK $Id$
 *  
 ******************************************************************************/
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ruposite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
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.Section;
public class SWTTest {
  private FormToolkit toolkit;
  private Form form;
  private Display display;
  private Shell shell;
  private Hyperlink link;
  private Section section1, section2, section3;
  private FormText rtext;
  private Composite client1, client2, client3;
  private Text text;
  private Button button2;
  private Label label;
  static public void main(String args[]) {
    new SWTTest().run();
  }
  private void run() {
    setupShell();
    setupToolkit();
    createFormStructure();
    addLayout();
    addHooks();
    shell.pack();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
  private void createFormStructure() {
    // form
    form = toolkit.createForm(shell);
    form.setText("Eclipse Forms");
    
    Button button = toolkit.createButton(form.getBody(), "Test", SWT.NULL);
    
    form.getBody().setLayout(new GridLayout());
    //form.setBackgroundImage(new Image(display, "jexp.gif"));
  }
  private String getHTML() {
    StringBuffer buf = new StringBuffer();
    buf.append("<form>");
    buf.append("<p>");
    buf.append("Here is some plain text for the text to render; ");
    buf.append(
      "this text is at  web site.");
    buf.append("</p>");
    buf.append("<p>");
    buf.append(
      "<span color=\"header\" font=\"header\">This text is in header font and color.</span>");
    buf.append("</p>");
    buf.append(
      "<p>This line will contain some <b>bold</b> and some <span font=\"text\">source</span> text. ");
    buf.append("We can also add <img href=\"image\"/> an image. ");
    buf.append("</p>");
    buf.append("<li>A default (bulleted) list item.</li>");
    buf.append("<li>Another bullet list item.</li>");
    buf.append(
      "<li style=\"text\" value=\"1.\">A list item with text.</li>");
    buf.append(
      "<li style=\"text\" value=\"2.\">Another list item with text</li>");
    buf.append(
      "<li style=\"image\" value=\"image\">List item with an image bullet</li>");
    buf.append(
      "<li style=\"text\" bindent=\"20\" indent=\"40\" value=\"3.\">A list item with text.</li>");
    buf.append(
      "<li style=\"text\" bindent=\"20\" indent=\"40\" value=\"4.\">A list item with text.</li>");
    buf.append("</form>");
    return buf.toString();
  }
  private void setupToolkit() {
    toolkit = new FormToolkit(display);
  }
  private void setupShell() {
    display = new Display();
    shell = new Shell(display);
    shell.open();
  }
  private void addLayout() {
    // shell
    shell.setLayout(new FillLayout());
    //form
//    form.getBody().setLayout(new TableWrapLayout());
//
//    section1.setLayoutData(new TableWrapData(TableWrapData.FILL));
//
//    section2.setLayoutData(new TableWrapData(TableWrapData.FILL));
//
//    section3.setLayoutData(new TableWrapData(TableWrapData.FILL));
//
//    // client1
//
//    client1.setLayout(new GridLayout());
//
//    // client2
//
//    client2.setLayout(new GridLayout());
//
//    // // client3
//
//    GridLayout layout = new GridLayout();
//
//    client3.setLayout(layout);
//
//    layout.numColumns = 2;
//
//    // client3->text
//
//    text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//
//    // client3->button2
//
//    GridData gd = new GridData();
//
//    gd.horizontalSpan = 2;
//
//    button2.setLayoutData(gd);
  }
  private void addHooks() {
//    section1.addExpansionListener(new ExpansionAdapter() {
//
//      public void expansionStateChanged(ExpansionEvent e) {
//
//        System.out.println("expansionbutton clicked!");
//
//      }
//
//    });
//
//    link.addHyperlinkListener(new HyperlinkAdapter() {
//
//      public void linkActivated(HyperlinkEvent e) {
//
//        System.out.println("Link active: " + e.getLabel());
//
//      }
//
//    });
  }
}





Simple Form 1

/******************************************************************************
 * All Right Reserved. 
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-6-13 13:32:48 by JACK
 * $Id$
 * 
 *****************************************************************************/

import org.eclipse.jface.action.Action;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ruposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
public class SimpleForm extends ApplicationWindow {
  /**
   * @param parentShell
   */
  public SimpleForm(Shell parentShell) {
    super(parentShell);
  }
  /* (non-Javadoc)
   * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.ruposite)
   */
  protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NULL);
    composite.setLayout(new GridLayout());
    
    // Sets up the toolkit.
    FormToolkit toolkit = new FormToolkit(getShell().getDisplay());
    
    // create a form instance.
    Form form = toolkit.createForm(composite);
    form.setLayoutData(new GridData(GridData.FILL_BOTH));
    
    form.setText("Eclipse Forms");
    
    form.getBody().setLayout(new GridLayout());
    Button button = toolkit.createButton(form.getBody(), "Test", SWT.NULL);  
    
    // tool bar
    form.getToolBarManager().add(new Action("TEST") {
      public void run() {
      }
    });
    
    Menu menu = new Menu(form.getBody());
    MenuItem item = new MenuItem(menu, SWT.NULL);
    item.setText("Testing item");
    form.setMenu(menu);
    
    form.updateToolBar();
    
    return composite;
  }
  public static void main(String[] args) {
    SimpleForm simpleForm = new SimpleForm(null);
    simpleForm.setBlockOnOpen(true);
    simpleForm.open();
  }  
  
}