Package org.vietspider.ui.widget

Source Code of org.vietspider.ui.widget.ApplicationFactory

/***************************************************************************
* Copyright 2001-2005 VietSpider         All rights reserved.  *
* Please look at license.txt in info directory for more license detail.   *
**************************************************************************/
package org.vietspider.ui.widget;

import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressAdapter;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.events.ArmListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionListener;
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.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.mozilla.interfaces.nsIDOMEvent;
import org.mozilla.interfaces.nsIDOMEventListener;
import org.mozilla.interfaces.nsIDOMEventTarget;
import org.mozilla.interfaces.nsIDOMWindow;
import org.mozilla.interfaces.nsISupports;
import org.mozilla.interfaces.nsIWebBrowser;
import org.sf.feeling.swt.win32.extension.widgets.CButton;
import org.sf.feeling.swt.win32.extension.widgets.CMenu;
import org.sf.feeling.swt.win32.extension.widgets.CMenuItem;
import org.sf.feeling.swt.win32.extension.widgets.PopupMenu;
import org.vietspider.ui.XPWidgetTheme;
import org.vietspider.ui.services.ClientLog;
import org.vietspider.ui.services.ClientRM;
import org.vietspider.ui.widget.action.IHyperlinkListener;
import org.vietspider.ui.widget.vtab.impl.VTab;
import org.vietspider.ui.widget.vtab.outlookbar.OutlookBarPane;

/**
* @by thuannd (nhudinhthuan@yahoo.com)
* @since Jul 13, 2005
*/
public class ApplicationFactory extends UIFactory {

  private String CLASS_NAME ;

  public ApplicationFactory(Composite composite, String source, String name) {
    resources = new ClientRM(source);
    CLASS_NAME = name;   
    this.composite = composite;   
  }

  public ApplicationFactory(String source, Class<?> cl, int w, int h) {   
    resources = new ClientRM(source);
    CLASS_NAME = cl.getName();
    if(XPWidgetTheme.isPlatform()) {
      composite = createShell(UIDATA.DISPLAY, cl, resources.getLabel(CLASS_NAME+".title"), "VietSpider.png", w, h);
    } else {
      composite = createShell(UIDATA.DISPLAY, cl, resources.getLabel(CLASS_NAME+".title"), "VietSpider2.ico", w, h)
    }
  }

  public ClientRM getResources() { return resources; }

  public void setClassName( String name){ CLASS_NAME = name; }

  public String getClassName(){ return CLASS_NAME; }

  public Button createButton(String name){
    return super.createButton(composite, SWT.PUSH, resources.getLabel(CLASS_NAME+"."+name));  
  }

  public Button createButton(String name,SelectionListener listener, Image image){
    Button button = createButton(name, listener);
    button.setImage(image);
    return button;
  }

  public Button createButton(String name, SelectionListener listener){
    if(resources.getLabel(CLASS_NAME+"."+name+"Tip") != null){
      return super.createButton(composite, SWT.PUSH,
          resources.getLabel(CLASS_NAME+"."+name),resources.getLabel(CLASS_NAME+"."+name+"Tip"), listener);  
    }
    return super.createButton(composite, SWT.PUSH, resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public CButton createCButton(String name, SelectionListener listener){
    if(resources.getLabel(CLASS_NAME+"."+name+"Tip") != null){
      return super.createCButton(composite, SWT.PUSH,
          resources.getLabel(CLASS_NAME+"."+name),resources.getLabel(CLASS_NAME+"."+name+"Tip"), listener);  
    }
    return super.createCButton(composite, SWT.PUSH, resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public Button createButton(String name, int style, SelectionListener listener){
    if( resources.getLabel(CLASS_NAME+"."+name+"Tip") != null){
      return super.createButton(composite, style,
          resources.getLabel(CLASS_NAME+"."+name),resources.getLabel(CLASS_NAME+"."+name+"Tip"), listener);  
    }
    return super.createButton( this.composite, style,
        resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public RButton createIcon(String name, int t, MouseListener listener){
    Image img = loadJarImage(name);
    return super.createIcon(img, resources.getLabel(CLASS_NAME+"."+name+"Tip"), t, listener);  
  }

  public ImageHyperlink createIcon(String name, IHyperlinkListener listener){
    Image img = loadJarImage(name);
    return super.createIcon(img, resources.getLabel(CLASS_NAME+"."+name+"Tip"), listener);  
  }

  public org.eclipse.ui.forms.widgets.Hyperlink createLink(
      String name, org.eclipse.ui.forms.events.IHyperlinkListener listener) { 
    return super.createLink(resources.getLabel(CLASS_NAME+"."+name), listener);
  }

  public org.eclipse.ui.forms.widgets.Hyperlink createMenuLink(
      String name, HyperlinkAdapter...adapters) {
    return super.createMenuLink(resources.getLabel(CLASS_NAME+"."+name), adapters);  
  }


  public Label createLabel(String name){  
    return super.createLabel(resources.getLabel(this.CLASS_NAME+"."+name));
 

  public Label createLabel(int style, String name){
    return super.createLabel(style, resources.getLabel( this.CLASS_NAME+"."+name));
 

  public Group createGroup(String name, Object layoutData, Layout layout){
    if(name.length() > 0) name  = resources.getLabel( this.CLASS_NAME+"."+name);
    return super.createGroup(name, layoutData, layout);
  }

  public Group createGroup(Object layoutData, Layout layout){
    return super.createGroup("", layoutData, layout);
  }

  public Table createTable(String name, SelectionListener listener){
    return createTable(name, listener, -1);
  }

  public Spinner createSpinner(String name, int style){
    Spinner spinner = super.createSpinner(style);
    String value = resources.getLabel(CLASS_NAME+"."+name+"Tip");
    spinner.setToolTipText(value);
    return spinner;
  }

  public Table createTable(String name, SelectionListener listener, int style){
    String value = resources.getLabel(CLASS_NAME+"."+name+"Columns");
    String [] cols = value.split(",");
    value = resources.getLabel(CLASS_NAME+"."+name+"ColumnWidths");
    String [] split = value.split(",");
    int [] w = new int[ split.length];
    for( int i=0; i<w.length; i++){
      w[i] = Integer.parseInt(split[i]);
    }
    if(style < 0) return super.createTable(cols, w, listener);
    return super.createTableWithStyle(cols, w, listener, style);
  }

  public Combo createCombo(SelectionListener listener){
    Combo combo = super.createCombo( SWT.READ_ONLY);
    combo.addSelectionListener( listener);
    return combo;
  }

  public Menu createMenu(Menu menu, String name){
    return super.createMenu( menu, resources.getLabel(CLASS_NAME+"."+name));   
  }

  public MenuItem createMenuItem( Menu menu, String name){
    return super.createMenuItem( menu, resources.getLabel(CLASS_NAME+"."+name));   
  }

  public MenuItem createMenuItem(Menu menu, String name, SelectionListener listener) {
    if(name == null) return super.createMenuItem(menu, null, listener);
    return super.createMenuItem(menu, resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public void createStyleMenuItem(Object parent, int style){
    if(parent instanceof Menu) {
      Menu menu = (Menu) parent;
      new MenuItem(menu, style);
      return;
    }

    if(parent instanceof CMenu) {
      CMenu cMenu = (CMenu) parent;

      CMenuItem item = new CMenuItem(style);
      cMenu.addItem(item);
    }
  }

  public void createStyleMenuItem(Object parent, String name, String img, SelectionListener listener){
    if(parent instanceof Menu) {
      Menu menu = (Menu) parent;
      if(name == null) {
        MenuItem item = super.createMenuItem(menu, null, listener);
        item.setImage(imageLoader.load(composite.getDisplay(), img));
      } else {
        MenuItem item = super.createMenuItem(menu, resources.getLabel(CLASS_NAME+"."+name), listener);
        item.setImage(imageLoader.load(composite.getDisplay(), img));
      }
      return;
    }

    if(parent instanceof CMenu) {
      CMenu cMenu = (CMenu) parent;
      if(name == null) {
        CMenuItem item = new CMenuItem(SWT.NONE);
        item.addSelectionListener(listener);
        item.setImage(imageLoader.load(composite.getDisplay(), img));
        cMenu.addItem(item);
      } else {
        CMenuItem item = new CMenuItem(resources.getLabel(CLASS_NAME+"."+name), SWT.NONE);
        item.addSelectionListener(listener);
        item.setImage(imageLoader.load(composite.getDisplay(), img));
        cMenu.addItem(item);
      }
    }
  }

  public void createStyleMenuItem(Object parent, String name, SelectionListener listener) {
    if(parent instanceof Menu) {
      Menu menu = (Menu) parent;
      if(name == null) {
        super.createMenuItem(menu, null, listener);
      } else {
        if(!Character.isUpperCase(name.charAt(0))) {
          name = resources.getLabel(CLASS_NAME+"."+name);
        }
        super.createMenuItem(menu, name, listener);
      }
      return;
    }

    if(parent instanceof CMenu) {
      CMenu cMenu = (CMenu) parent;
      if(name == null) {
        CMenuItem item = new CMenuItem(SWT.NONE);
        item.addSelectionListener(listener);
        cMenu.addItem(item);
      } else {
        if(!Character.isUpperCase(name.charAt(0))) {
          name = resources.getLabel(CLASS_NAME+"."+name);
        }
        CMenuItem item = new CMenuItem(name, SWT.NONE);
        item.addSelectionListener(listener);
        cMenu.addItem(item);
      }
    }
  }

  public static void createStyleMenuItem2(Object parent, String name, SelectionListener listener) {
    if(parent instanceof Menu) {
      Menu menu = (Menu) parent;
      MenuItem item = new MenuItem(menu, SWT.NONE);
      if(name != null) item.setText(name);
      if(listener != null) item.addSelectionListener(listener);
      return;
    }

    if(parent instanceof PopupMenu) {
      parent = ((PopupMenu)parent).getMenu();
    }

    if(parent instanceof CMenu) {
      CMenu cMenu = (CMenu) parent;
      if(name == null) {
        CMenuItem item = new CMenuItem(SWT.NONE);
        if(listener != null) item.addSelectionListener(listener);
        cMenu.addItem(item);
      } else {
        CMenuItem item = new CMenuItem(name, SWT.NONE);
        if(listener != null) item.addSelectionListener(listener);
        cMenu.addItem(item);
      }
    }
  }

  public MenuItem createMenuItem(Menu menu, int style, String name, SelectionListener listener){
    if(name == null) return super.createMenuItem(menu, style, null, listener);
    return super.createMenuItem( menu, style, resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public MenuItem createMenuItem(Menu menu, String name, ArmListener  listener){
    return super.createMenuItem( menu, SWT.CASCADE, resources.getLabel(CLASS_NAME+"."+name), listener);  
  }

  public MenuItem createMenuItem(Menu menu, String name, String img, SelectionListener listener){
    MenuItem  item =
      super.createMenuItem( menu, resources.getLabel(CLASS_NAME+"."+name), listener);
    item.setImage(imageLoader.load(composite.getDisplay(), img));
    return item;
  }

  public MenuItem createMenuItem(Menu menu, int style, String name, String img, SelectionListener listener){
    MenuItem  item =
      super.createMenuItem( menu, style, resources.getLabel(CLASS_NAME+"."+name), listener);
    item.setImage(imageLoader.load( this.composite.getDisplay(), img));
    return item; 
  }

  public Menu createToolItem( final ToolBar bar, String img ){
    return super.createToolItem( bar, imageLoader.load( bar.getDisplay(), img));
  }

  public String getLabel(String key){ 
    return resources.getLabel(this.CLASS_NAME+"."+key);
  }

  public Image loadJarImage(String name){
    return imageLoader.load(composite.getDisplay(), resources.getLabel(CLASS_NAME+"."+name+"Image"));
  }

  public Image loadImage(String name){
    return imageLoader.load(composite.getDisplay(), name);
  }

  public String getTip(String name){
    return resources.getLabel(CLASS_NAME+"."+name+"Tip");
  }

  public VTab createVTab(Composite com) {
    return createVTab(com, SWT.NONE);
  }

  public Tree createVTabTreeItem(VTab tab, String name) {
    name = getLabel(name);
    Tree tree = createTree(tab.getGroup(name))
    tab.addItem(name, tree);  
    return tree;
  }

  public ExpandMenu createExpandMenu(VTab tab, String name) {
    name = getLabel(name);
    ExpandMenu menu = createExpandMenu(tab.getGroup(name), SWT.NONE)
    tab.addItem(name, menu);  
    return menu;
  }

  public OutlookBarPane createOutlookBarItem(VTab tab, String name) {
    name = getLabel(name);   
    Composite parent  = tab.getGroup(name);
    parent.setLayout(new FillLayout());
    OutlookBarPane comp = new OutlookBarPane(parent);
    tab.addItem(name, comp);
    return comp;
  }

  public Combo createVTabComboItem(VTab tab, String name) {
    name = getLabel(name);
    Composite comp = new Composite(tab.getGroup(name), SWT.NONE);
    comp.setBackground(tab.getBackground());
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;   
    composite.setLayout(gridLayout);

    Combo cbo = new Combo(comp, SWT.READ_ONLY);
    cbo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Spinner spinPage = new Spinner(comp, SWT.BORDER);
    spinPage.setIncrement(1);
    spinPage.addModifyListener(new ModifyListener() {
      @SuppressWarnings("unused")
      public void modifyText(ModifyEvent event) {
      }
    });

    tab.addItem(name, comp);  
    return cbo;
 

  public Composite createVTabCompositeItem(VTab tab, String name) {
    name = getLabel(name);
    Composite comp = new Composite(tab.getGroup(name), SWT.NONE);
    comp.setBackground(tab.getBackground());
    tab.addItem(name, comp)
    return comp;
  }

  private static boolean mozilla  = false;

  public static boolean isMozillaBrowser() { return mozilla; }

  public static Browser createBrowser(Composite parent, final Class<?> clazz) {
    try {
      String xulPath = System.getProperty("org.eclipse.swt.browser.XULRunnerPath");
      if(xulPath != null && xulPath.trim().length() > 0) {
        File file = new File(xulPath);
        System.setProperty("org.eclipse.swt.browser.XULRunnerPath", file.getAbsolutePath());
        mozilla = true;
        final Browser browser = new Browser(parent, SWT.MOZILLA | SWT.BORDER);
        if(clazz == null) return browser;
        browser.addProgressListener (new ProgressAdapter () {
          @SuppressWarnings("unused")
          public void completed (ProgressEvent event) {
            nsIWebBrowser webBrowser = (nsIWebBrowser)browser.getWebBrowser ();
            nsIDOMWindow domWindow = webBrowser.getContentDOMWindow ();
            nsIDOMEventTarget target = (nsIDOMEventTarget)domWindow.queryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID);
            nsIDOMEventListener listener = new nsIDOMEventListener () {
              public nsISupports queryInterface (String uuid) {
                if (uuid.equals (nsIDOMEventListener.NS_IDOMEVENTLISTENER_IID) ||
                    uuid.equals (nsIDOMEventListener.NS_ISUPPORTS_IID)) {
                  return this;
                }
                return null;
              }

              public void handleEvent (nsIDOMEvent event2) {
                Menu menu = browser.getMenu();
                if(menu != null) menu.dispose();
                try {
                  BrowserMenu browserMenu = (BrowserMenu)clazz.newInstance();
                  browser.setMenu(browserMenu.createMenu(browser, event2));
                } catch (Exception e) {
                  ClientLog.getInstance().setMessage(browser.getShell(), e);
                }
              }
            };
            target.addEventListener ("contextmenu", listener, false);
          }
        });
        return browser;
      }

    } catch (Throwable e) {
      if(Shell.class.isInstance(parent)) {
        ClientLog.getInstance().setMessage(parent, new Exception(e.toString()));
      } else {
        ClientLog.getInstance().setMessage(parent.getShell(), new Exception(e.toString()));
      }
    }
    return new Browser(parent, SWT.NONE);
  }

}
TOP

Related Classes of org.vietspider.ui.widget.ApplicationFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.