Sep 29

Check out the interesting article at Joel’s website:  http://www.joelonsoftware.com/items/2009/09/23.html

 

  • Share/Bookmark
Sep 28

Have you heard that Java support scripting engine? Try the source code below:

  1.  
  2. import javax.script.ScriptEngine;
  3. import javax.script.ScriptEngineManager;
  4. import javax.script.ScriptException;
  5.  
  6.  
  7. public class TestScript {
  8.         public static void main(String[] args) {
  9.                 String script = "println(’Hello, world’);";
  10.                 script += "s=0;";
  11.                 script += "for(var i=1; i<=100; i++)";
  12.                 script += "s += i;";
  13.                 script += "println(’s=’+s);";   
  14.                
  15.                 ScriptEngineManager factory = new ScriptEngineManager();
  16.                 ScriptEngine engine = factory.getEngineByName("JavaScript");
  17.                 try {
  18.                         engine.eval(script);
  19.                 } catch (ScriptException e) {
  20.                         e.printStackTrace();
  21.                 }
  22.         }
  23. }
  24.  
  • Share/Bookmark
Sep 25

Let’s say you need to dynamically adjust a widget size, and then update scroll bar information. Things are pretty simple, if we understand how eclipse layout works.

I have a PageBook widget, and wish to resize the form page as selection changes. Here is the important part:

  1.  
  2. // other code
  3. pageBook.showPage(parent);
  4. Point computeSize = pageBook.computeSize(SWT.DEFAULT, SWT.DEFAULT);
  5.  
  6. // the following two statements are very important, because they will tell swt/jface how to layout.
  7. GridDataFactory.defaultsFor(pageBook).align(SWT.FILL, SWT.TOP).span(2, 1).hint(SWT.DEFAULT, computeSize.y + 20).applyTo(pageBook);
  8.  
  9. pageBook.layout(true, true);
  10.  
  11. // reflow the form
  12. form.reflow(true);
  13.  
  • Share/Bookmark
Sep 24

Below is very straightforward code snippet to use PageBook. It is used together with eclipse form. Therefore you will see widgets are created via the FormToolkit class.

  1.  
  2. toolkit = new FormToolkit(container.getDisplay());
  3. form = toolkit.createScrolledForm(container);
  4.  
  5. Composite parent = form.getBody();
  6. GridLayoutFactory.fillDefaults().numColumns(1).applyTo(parent);
  7.  
  8. // create a table as selection provider
  9. final Table table = toolkit.createTable(parent, SWT.BORDER | SWT.VIRTUAL);
  10. table.setHeaderVisible(true);
  11. table.setLinesVisible(true);
  12. for(int i=1; i<=12; i++){
  13.         TableItem item = new TableItem(table, 0);
  14.         item.setText("Item " + i);
  15. }                              
  16.  
  17. toolkit.createLabel(parent, "Selected pagebook:");
  18.  
  19. // create a PageBook
  20. final ScrolledPageBook pageBook = toolkit.createPageBook(parent, SWT.NONE);
  21. GridDataFactory.defaultsFor(pageBook).grab(true, true).applyTo(pageBook);
  22.  
  23. // create PageBook controls
  24. for(int i=0; i<table.getItemCount(); i++){
  25.         TableItem item = table.getItem(i);
  26.         Composite pageContainer = pageBook.createPage(item.getText());
  27.         GridLayoutFactory.fillDefaults().numColumns(1).applyTo(pageContainer);
  28.        
  29.         toolkit.createLabel(pageContainer, item.getText());
  30.         toolkit.createText(pageContainer, "to be edited");
  31.        
  32.         pageBook.showPage(item.getText());
  33. }
  34.  
  35. pageBook.showEmptyPage();
  36.  
  37. // add selection listener, and show relative PageBook on selection
  38. table.addSelectionListener(new SelectionAdapter(){
  39.         public void widgetSelected(SelectionEvent e) {
  40.                 TableItem item = (TableItem) e.item;
  41.                 pageBook.showPage(item.getText());
  42.         }                      
  43. });
  44.  
  • Share/Bookmark