^1760931991885
@
lth_createTime
1640682297933
sname
WebBrowser
slabel
WebBrowser
sdescriptors
xworker.swt.widgets.Display
  @/@shell
  sname
  shell
  stext
  Web Browser
  sNO_TRIM
  false
  sCLOSE
  true
  sTITLE
  true
  sMIN
  true
  sMAX
  true
  sBORDER
  false
  sRESIZE
  true
  sON_TOP
  false
  sTOOL
  false
  sNO_FOCUS
  false
  swidth
  800
  sheight
  600
  scenterScreen
  true
  spack
  false
  smaximized
  false
  sfullScreen
  false
  sdesign
  true
  sisIde
  false
  sdesignDefaultOpen
  false
  sexitOnDispose
  false
  sH_SCROLL
  false
  sV_SCROLL
  false
  sNO_BACKGROUND
  false
  sNO_MERGE_PAINTS
  false
  sNO_REDRAW_RESIZE
  false
  sNO_RADIO_GROUP
  false
  sEMBEDDED
  false
  sDOUBLE_BUFFERED
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.widgets.Display/@Shell
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registThing
  child|xworker.core.StandaloneApp
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sgroup
  xworker
  sth_mark
  false
  sid
  shell
    @/@shell/@shellFillLayout
    sname
    shellFillLayout
    stype
    SWT.HORIZONTAL
    slabel
    shellFillLayout
    sdescriptors
    xworker.swt.Layouts/@FillLayout
    sid
    shellFillLayout
    @/@shell/@mainComposite
    sname
    mainComposite
    sBORDER
    false
    sH_SCROLL
    false
    sV_SCROLL
    false
    sNO_BACKGROUND
    false
    sNO_FOCUS
    false
    sNO_MERGE_PAINTS
    false
    sNO_REDRAW_RESIZE
    false
    sNO_RADIO_GROUP
    false
    sEMBEDDED
    false
    sDOUBLE_BUFFERED
    false
    slabel
    Web Borwser
    sdescriptors
    xworker.swt.Widgets/@Composite
    sid
    mainComposite
      @/@shell/@mainComposite/@shellGridLayout
      sname
      shellGridLayout
      smakeColumnsEqualWidth
      false
      smarginWidth
      5
      smarginHeight
      5
      smarginLeft
      0
      smarginTop
      0
      smarginRight
      0
      smarginBottom
      0
      shorizontalSpacing
      5
      sverticalSpacing
      5
      slabel
      shellGridLayout
      sdescriptors
      xworker.swt.Layouts/@GridLayout
      sid
      shellGridLayout
      @/@shell/@mainComposite/@addressComposite
      sname
      addressComposite
      sBORDER
      false
      sH_SCROLL
      false
      sV_SCROLL
      false
      sNO_BACKGROUND
      false
      sNO_FOCUS
      false
      sNO_MERGE_PAINTS
      false
      sNO_REDRAW_RESIZE
      false
      sNO_RADIO_GROUP
      false
      sEMBEDDED
      false
      sDOUBLE_BUFFERED
      false
      sdescriptors
      xworker.swt.Widgets/@Composite
      sid
      addressComposite
        @/@shell/@mainComposite/@addressComposite/@addressCompositeGridData
        sname
        addressCompositeGridData
        sstyle
        FILL_HORIZONTAL
        shorizontalIndent
        0
        swidth
        -1
        sheight
        -1
        shorizontalAlignment
        BEGINNING
        sverticalAlignment
        CENTER
        shorizontalSpan
        1
        sverticalSpan
        1
        sgrabExcessHorizontalSpace
        false
        sgrabExcessVerticalSpace
        false
        slabel
        addressCompositeGridData
        sdescriptors
        xworker.swt.Commons/@GridData
        sid
        addressCompositeGridData
        @/@shell/@mainComposite/@addressComposite/@addressCompositeGridLayout
        sname
        addressCompositeGridLayout
        snumColumns
        2
        smakeColumnsEqualWidth
        false
        smarginWidth
        5
        smarginHeight
        5
        smarginLeft
        0
        smarginTop
        0
        smarginRight
        0
        smarginBottom
        0
        shorizontalSpacing
        5
        sverticalSpacing
        5
        slabel
        addressCompositeGridLayout
        sdescriptors
        xworker.swt.Layouts/@GridLayout
        sid
        addressCompositeGridLayout
        @/@shell/@mainComposite/@addressComposite/@buttonToolBar
        sname
        buttonToolBar
        stype
        HORIZONTAL
        sFLAT
        true
        sWRAP
        false
        sBORDER
        false
        sSHADOW_OUT
        false
        sRIGHT
        false
        slabel
        buttonToolBar
        sdescriptors
        xworker.swt.Widgets/@ToolBar
        sid
        buttonToolBar
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@backButton
          sname
          backButton
          stype
          PUSH
          stext
          res:res.w_exp:back:返回
          senabled
          true
          slabel
          backButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sid
          backButton
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@backButton/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@backButton/@listeners/@commonButtonSelection
              sname
              commonButtonSelection
              stype
              Selection
              slabel
              commonButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              commonButtonSelection
                @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@backButton/@listeners/@commonButtonSelection/@script
                sname
                script
                sisSynchronized
                false
                sthrowException
                false
                suseOtherAction
                false
                svarScope
                Local
                sdisableGlobalContext
                false
                Scode
#$@text#$@
def item = event.widget;
if (item == backButton) currentBrowser.back(); 
else if (item == forwardButton) currentBrowser.forward();
else if (item == stopButton) currentBrowser.stop();
else if (item == refreshButton) currentBrowser.refresh();
else if (item == goButton) currentBrowser.setUrl(addressText.getText());
else if (item == debugButton){
    currentBrowser.setUrl("javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');");
}
#$@text#$@
                sinterpretationType
                Action
                screateLocalVarScope
                false
                ssaveReturn
                false
                sdescriptors
                xworker.groovy.GroovyAction
                sid
                script
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@fowardButton
          sname
          forwardButton
          stype
          PUSH
          stext
          res:res.w_exp:forward:前进
          senabled
          true
          slabel
          forwardButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sid
          fowardButton
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@fowardButton/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@fowardButton/@listeners/@forwardButtonSelection
              sname
              forwardButtonSelection
              stype
              Selection
              sref
              commonButtonSelection
              slabel
              forwardButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              forwardButtonSelection
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@stopButton
          sname
          stopButton
          stype
          PUSH
          stext
          res:res.w_exp:stop:停止
          senabled
          true
          slabel
          stopButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sid
          stopButton
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@stopButton/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@stopButton/@listeners/@stopButtonSelection
              sname
              stopButtonSelection
              stype
              Selection
              sref
              commonButtonSelection
              slabel
              stopButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              stopButtonSelection
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@refreshButton
          sname
          refreshButton
          stype
          PUSH
          stext
          res:res.w_exp:refresh:刷新
          senabled
          true
          slabel
          refreshButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sid
          refreshButton
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@refreshButton/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@refreshButton/@listeners/@refreshButtonSelection
              sname
              refreshButtonSelection
              stype
              Selection
              sref
              commonButtonSelection
              slabel
              refreshButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              refreshButtonSelection
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton
          sname
          goButton
          stype
          PUSH
          stext
          Go
          senabled
          true
          slabel
          goButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sid
          goButton
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton/@listeners/@goButtonSelection
              sname
              goButtonSelection
              stype
              Selection
              sref
              commonButtonSelection
              slabel
              goButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              goButtonSelection
          @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton1
          sname
          debugButton
          stype
          PUSH
          stext
          Debug
          senabled
          true
          slabel
          debugButton
          sdescriptors
          xworker.swt.widgets.ToolBar/@ToolItem
          sinheritDescription
          false
          sth_createIndex
          false
          sth_registMyChilds
          false
          sth_mark
          false
          sid
          goButton1
            @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton1/@listeners
            sname
            listeners
            slabel
            listeners
            sdescriptors
            xworker.swt.events.Listeners/@listeners
            sid
            listeners
              @/@shell/@mainComposite/@addressComposite/@buttonToolBar/@goButton1/@listeners/@goButtonSelection
              sname
              debugButtonSelection
              stype
              Selection
              sref
              commonButtonSelection
              slabel
              goButtonSelection
              sdescriptors
              xworker.swt.events.Listeners/@listeners/@Listener
              sid
              goButtonSelection
        @/@shell/@mainComposite/@addressComposite/@addressText
        sname
        addressText
        sstyle
        SINGLE
        sH_SCROLL
        false
        sV_SCROLL
        false
        sWRAP
        false
        sREAD_ONLY
        false
        sPASSWORD
        false
        sSEARCH
        false
        sCANCEL
        false
        sBORDER
        true
        salign
        LEFT
        slabel
        addressText
        sdescriptors
        xworker.swt.Widgets/@Text
        sid
        addressText
          @/@shell/@mainComposite/@addressComposite/@addressText/@addressTextGridData
          sname
          addressTextGridData
          sstyle
          FILL_HORIZONTAL
          shorizontalIndent
          0
          swidth
          -1
          sheight
          -1
          shorizontalAlignment
          BEGINNING
          sverticalAlignment
          CENTER
          shorizontalSpan
          1
          sverticalSpan
          1
          sgrabExcessHorizontalSpace
          false
          sgrabExcessVerticalSpace
          false
          slabel
          addressTextGridData
          sdescriptors
          xworker.swt.Commons/@GridData
          sid
          addressTextGridData
          @/@shell/@mainComposite/@addressComposite/@addressText/@listeners
          sname
          listeners
          slabel
          listeners
          sdescriptors
          xworker.swt.events.Listeners/@listeners
          sid
          listeners
            @/@shell/@mainComposite/@addressComposite/@addressText/@listeners/@addressTextDefaultSelection
            sname
            addressTextDefaultSelection
            stype
            DefaultSelection
            slabel
            addressTextDefaultSelection
            sdescriptors
            xworker.swt.events.Listeners/@listeners/@Listener
            sid
            addressTextDefaultSelection
              @/@shell/@mainComposite/@addressComposite/@addressText/@listeners/@addressTextDefaultSelection/@script
              sname
              script
              sisSynchronized
              false
              sthrowException
              false
              Scode
#$@text#$@
String url = addressText.getText();
currentBrowser.setUrl(url);
#$@text#$@
              sdescriptors
              xworker.groovy.GroovyAction
              sid
              script
      @/@shell/@mainComposite/@mainTabFolder
      sname
      mainTabFolder
      sstyle
      TOP
      sBORDER
      true
      sFLAT
      true
      sCLOSE
      false
      sdescriptors
      xworker.swt.Widgets/@CTabFolder
      sid
      mainTabFolder
        @/@shell/@mainComposite/@mainTabFolder/@mainTabFolderGridData
        sname
        mainTabFolderGridData
        sstyle
        FILL_BOTH
        shorizontalIndent
        0
        swidth
        -1
        sheight
        -1
        shorizontalAlignment
        BEGINNING
        sverticalAlignment
        CENTER
        shorizontalSpan
        1
        sverticalSpan
        1
        sgrabExcessHorizontalSpace
        false
        sgrabExcessVerticalSpace
        false
        slabel
        mainTabFolderGridData
        sdescriptors
        xworker.swt.Commons/@GridData
        sid
        mainTabFolderGridData
        @/@shell/@mainComposite/@mainTabFolder/@firstBrowser
        sname
        firstBrowser
        stext
        blank
        sCLOSE
        true
        slabel
        firstBrowser
        sdescriptors
        xworker.swt.custom.CTabFolder/@CTabItem
        sid
        firstBrowser
          @/@shell/@mainComposite/@mainTabFolder/@firstBrowser/@browser
          sname
          browser
          sWEBKIT
          false
          sjavascriptEnabled
          true
          slabel
          browser
          sdescriptors
          xworker.swt.Widgets/@Browser
          sid
          browser
            @/@shell/@mainComposite/@mainTabFolder/@firstBrowser/@browser/@browseGridData
            sname
            browseGridData
            sstyle
            FILL_BOTH
            shorizontalIndent
            0
            swidth
            -1
            sheight
            -1
            shorizontalAlignment
            BEGINNING
            sverticalAlignment
            CENTER
            shorizontalSpan
            1
            sverticalSpan
            1
            sgrabExcessHorizontalSpace
            false
            sgrabExcessVerticalSpace
            false
            slabel
            browseGridData
            sdescriptors
            xworker.swt.Commons/@GridData
            sid
            browseGridData
        @/@shell/@mainComposite/@mainTabFolder/@addNewTabItem
        sname
        addNewTabItem
        stext
        ": "
        sCLOSE
        false
        slabel
        addNewTabItem
        sdescriptors
        xworker.swt.custom.CTabFolder/@CTabItem
        sid
        addNewTabItem
        @/@shell/@mainComposite/@mainTabFolder/@listeners
        sname
        listeners
        slabel
        listeners
        sdescriptors
        xworker.swt.events.Listeners/@listeners
        sid
        listeners
          @/@shell/@mainComposite/@mainTabFolder/@listeners/@mainTabFolderSelection
          sname
          mainTabFolderSelection
          stype
          Selection
          slabel
          mainTabFolderSelection
          sdescriptors
          xworker.swt.events.Listeners/@listeners/@Listener
          sid
          mainTabFolderSelection
            @/@shell/@mainComposite/@mainTabFolder/@listeners/@mainTabFolderSelection/@script
            sname
            script
            sisSynchronized
            false
            sthrowException
            true
            suseOtherAction
            false
            svarScope
            Global
            sdisableGlobalContext
            false
            Scode
#$@text#$@
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.browser.Browser;
import xworker.swt.util.SwtUtils;
//import org.xmeta.plugin.view.swt.SwtUtil;

if(mainTabFolder.getSelection() == addNewTabItem){
    CTabItem item = new CTabItem(mainTabFolder, SWT.CLOSE, mainTabFolder.getItemCount() - 1);
    item.setText("blank");
    
    Browser browser = new Browser(mainTabFolder, SWT.NONE);
    item.setControl(browser);
    item.setData(browser);
    browser.setData(item);

    if(actionContext.get("utilBrowser") != null){
        utilBrowser.attach(browser);
    }
    
    mainTabFolder.setSelection(item);
    
    if(SwtUtils.isRWT() == false){
        browser.addProgressListener(progressListener);
        browser.addTitleListener(titleListener);
        browser.addOpenWindowListener(openWindowListener);
        browser.addCloseWindowListener(closeWindowListener);
        browser.addVisibilityWindowListener(visibilityWindowListener);
        browser.addStatusTextListener(statusTextListener);
        
        backButton.setEnabled(currentBrowser.isBackEnabled());
    	   forwardButton.setEnabled(currentBrowser.isForwardEnabled());
    }
    
    browser.addLocationListener(locationListener);	
    
    //SwtUtil.addDisposeViewer(browser, "a browser");
    
    currentBrowser = browser;
    binding.setVariable("currentBrowser", currentBrowser);
    addressText.setText(currentBrowser.getUrl());
   
}else{    
    currentBrowser = mainTabFolder.getSelection().getData();
    if(currentBrowser == null){
        return;
    }
    binding.setVariable("currentBrowser", currentBrowser);
    addressText.setText(currentBrowser.getUrl());
    if(SwtUtils.isRWT() == false){
        backButton.setEnabled(currentBrowser.isBackEnabled());
        forwardButton.setEnabled(currentBrowser.isForwardEnabled());
    }
}
#$@text#$@
            sinterpretationType
            Action
            screateLocalVarScope
            false
            ssaveReturn
            false
            sdebugLog
            false
            sdescriptors
            xworker.groovy.GroovyAction
            sid
            script
      @/@shell/@mainComposite/@statusComposite
      sname
      statusComposite
      sBORDER
      false
      sH_SCROLL
      false
      sV_SCROLL
      false
      sNO_BACKGROUND
      false
      sNO_FOCUS
      false
      sNO_MERGE_PAINTS
      false
      sNO_REDRAW_RESIZE
      false
      sNO_RADIO_GROUP
      false
      sEMBEDDED
      false
      sDOUBLE_BUFFERED
      false
      sdescriptors
      xworker.swt.Widgets/@Composite
      sid
      statusComposite
        @/@shell/@mainComposite/@statusComposite/@statusCompositeGridLayout
        sname
        statusCompositeGridLayout
        snumColumns
        2
        smakeColumnsEqualWidth
        false
        smarginWidth
        5
        smarginHeight
        0
        smarginLeft
        0
        smarginTop
        0
        smarginRight
        0
        smarginBottom
        0
        shorizontalSpacing
        5
        sverticalSpacing
        5
        slabel
        statusCompositeGridLayout
        sdescriptors
        xworker.swt.Layouts/@GridLayout
        sid
        statusCompositeGridLayout
        @/@shell/@mainComposite/@statusComposite/@statusCompositeGridData
        sname
        statusCompositeGridData
        sstyle
        FILL_HORIZONTAL
        shorizontalIndent
        0
        swidth
        -1
        sheight
        -1
        shorizontalAlignment
        BEGINNING
        sverticalAlignment
        CENTER
        shorizontalSpan
        1
        sverticalSpan
        1
        sgrabExcessHorizontalSpace
        false
        sgrabExcessVerticalSpace
        false
        slabel
        statusCompositeGridData
        sdescriptors
        xworker.swt.Commons/@GridData
        sid
        statusCompositeGridData
        @/@shell/@mainComposite/@statusComposite/@statusLabel
        sname
        statusLabel
        sBORDER
        false
        stype
        HORIZONTAL
        sshadow
        SHADOW_OUT
        salignment
        LEFT
        stext
        "                               "
        slabel
        statusLabel
        sdescriptors
        xworker.swt.Widgets/@Label
        sid
        statusLabel
          @/@shell/@mainComposite/@statusComposite/@statusLabel/@statusLabelGridData
          sname
          statusLabelGridData
          sstyle
          FILL_HORIZONTAL
          shorizontalIndent
          0
          swidth
          -1
          sheight
          -1
          shorizontalAlignment
          BEGINNING
          sverticalAlignment
          CENTER
          shorizontalSpan
          1
          sverticalSpan
          1
          sgrabExcessHorizontalSpace
          false
          sgrabExcessVerticalSpace
          false
          slabel
          statusLabelGridData
          sdescriptors
          xworker.swt.Commons/@GridData
          sid
          statusLabelGridData
        @/@shell/@mainComposite/@statusComposite/@progressBar
        sname
        progressBar
        sstyle
        HORIZONTAL
        sSMOOTH
        false
        sINDETERMINATE
        false
        sBORDER
        false
        slabel
        progressBar
        sdescriptors
        xworker.swt.Widgets/@ProgressBar
        sid
        progressBar
      @/@shell/@mainComposite/@Init
      sname
      Init
      sisSynchronized
      false
      sthrowException
      false
      suseOtherAction
      false
      svarScope
      Global
      sdisableGlobalContext
      false
      Scode
#$@text#$@
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.ProgressListener;


import org.eclipse.swt.custom.CTabFolder2Listener;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;

import xworker.swt.util.UtilBrowser;
import xworker.swt.util.SwtUtils;

import xworker.swt.ActionContainer;

ubStatusListener = new UtilBrowser(mainComposite.getDisplay(), actionContext);// (ActionContainer) actionContext.get("explorerActions"));
actionContext.getScope(0).put("utilBrowser", ubStatusListener);
mainTabFolder.setSelection(firstBrowser);
firstBrowser.setData(browser);
firstBrowser.setData("name", "default");
browser.setData(firstBrowser);
currentBrowser = browser;
if(actionContext.get("utilBrowser") != null){
    utilBrowser.attach(browser);
    actionContext.getScope(0).put("utilBrowser", utilBrowser);
}

if(!SwtUtils.isRWT()){
    initBrowser(actionContext);
}
    
progressListener = [
    changed : {event ->
        if(event.widget != currentBrowser) return;
        
        if (event.total == 0) return;                            
		int ratio = event.current * 100 / event.total;
		if (progressBar != null) progressBar.setSelection(ratio);		
    },
    completed : {event ->
        if(event.widget != currentBrowser) return;
        if (progressBar != null) progressBar.setSelection(0);
        
     if(!SwtUtils.isRWT()){
		    backButton.setEnabled(currentBrowser.isBackEnabled());
    		forwardButton.setEnabled(currentBrowser.isForwardEnabled());
		}
    }] as ProgressListener;    
browser.addProgressListener(progressListener);

locationListener = [
    changed : {event ->
        if(event.widget != currentBrowser) return;
        if (event.top) addressText.setText(event.location);
    },
    
    changing : {event ->
    }
] as LocationListener;
browser.addLocationListener(locationListener);

//TabFolder的事件
def tabListener = [
    close : {event ->
        def tabFolder = event.item.parent;
        if(tabFolder.getItems().length == 2){
            event.doit = false;
        }else{
            event.item.getControl().dispose();
            event.item.dispose();
        }
    },
    
    maximize : {event ->
    },
    
    minimize : {event ->
    },
    
    restore : {event ->
    },
    
    showList : {event ->
    }
] as CTabFolder2Listener;
mainTabFolder.addCTabFolder2Listener(tabListener);
#$@text#$@
      sai_needGenerate
      false
      sai_rootThingXml
      true
      sai_promptContainsVars
      true
      sinterpretationType
      Action
      screateLocalVarScope
      false
      ssaveReturn
      false
      sswitchResult
      false
      sdebugLog
      false
      sdescriptors
      xworker.swt.Widgets/@Code
      sid
      Init
        @/@shell/@mainComposite/@Init/@ActionDefined
        sname
        ActionDefined
        sdescriptors
        xworker.lang.actions.Inout/@ActionDefined
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_mark
        false
        sid
        ActionDefined
          @/@shell/@mainComposite/@Init/@ActionDefined/@initBrowsre
          sname
          initBrowser
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.TitleListener;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.CloseWindowListener;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.custom.CTabFolder2Listener;
import org.eclipse.swt.custom.CTabItem;

openWindowListener = [
    open : {event ->
        //if (!event.required) return;
        CTabItem item = new CTabItem(mainTabFolder, SWT.CLOSE, mainTabFolder.getItemCount() - 1);
        item.setText("blank");
    
        Browser browser = new Browser(mainTabFolder, SWT.NONE);
        if(actionContext.get("utilBrowser") != null){
            utilBrowser.attach(browser);
        }
        
        item.setControl(browser);
        item.setData(browser);
        browser.setData(item);
    
        browser.addProgressListener(progressListener);
        browser.addStatusTextListener(statusTextListener);
        browser.addStatusTextListener(ubStatusListener);
        browser.addLocationListener(locationListener);	
        browser.addTitleListener(titleListener);
        browser.addOpenWindowListener(openWindowListener);
        browser.addCloseWindowListener(closeWindowListener);
        browser.addVisibilityWindowListener(visibilityWindowListener);
        
        event.browser = browser;
    }
] as OpenWindowListener;
browser.addOpenWindowListener(openWindowListener);

closeWindowListener = [
    close : {event ->
        event.widget.getData().dispose();
    }
] as CloseWindowListener;
browser.addCloseWindowListener(closeWindowListener);

visibilityWindowListener = [
    hide : {event ->
    },
    
    show : {event ->
        mainTabFolder.setSelection(event.widget.getData());
        mainTabFolderSelection.handleEvent(null);
    }
] as VisibilityWindowListener;
browser.addVisibilityWindowListener(visibilityWindowListener);

titleListener = [
    changed : {event ->
        event.widget.getData().setText(event.title);
    }
] as TitleListener;   
browser.addTitleListener(titleListener);

statusTextListener = [
    changed : {event ->
        if(event.widget != currentBrowser) return;
        statusLabel.setText(event.text);
        statusLabel.pack();
    }
] as StatusTextListener;
browser.addStatusTextListener(statusTextListener);
browser.addStatusTextListener(ubStatusListener);
#$@text#$@
          sinterpretationType
          Action
          screateLocalVarScope
          false
          ssaveReturn
          false
          sdebugLog
          false
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sinheritDescription
          false
          sth_createIndex
          false
          sth_registMyChilds
          false
          sth_registDisabled
          false
          sth_mark
          false
          sid
          initBrowsre
      @/@shell/@mainComposite/@scripts
      sname
      scripts
      slabel
      scripts
      slog
      false
      sdescription
      <p>这里的name（scripts)不要随意改动，如改成actions，因为其它模型已经在用这个名字了。</p>
      sdescriptors
      xworker.swt.Widgets/@actions
      sid
      scripts
        @/@shell/@mainComposite/@scripts/@openUrl
        sname
        openUrl
        sisSynchronized
        false
        sthrowException
        false
        suseOtherAction
        false
        svarScope
        Global
        sdisableGlobalContext
        false
        Scode
#$@text#$@
def newTab = true;
def tabItem = null;
for(item in mainTabFolder.getItems()){
    if(name != null && name == item.getData("name")){
        newTab = false;
        tabItem = item;
        break;
    }
}

if(newTab && name != null){
    mainTabFolder.setSelection(addNewTabItem);
    mainTabFolderSelection.handleEvent(null);
    currentBrowser.getData().setData("name", name);
}else{
    mainTabFolder.setSelection(tabItem);
    mainTabFolderSelection.handleEvent(null);
    currentBrowser.getData().setData("name", name);
}

currentBrowser.setUrl(url);
#$@text#$@
        sinterpretationType
        Action
        screateLocalVarScope
        false
        ssaveReturn
        false
        sdebugLog
        false
        sdescriptors
        xworker.groovy.GroovyAction
        sid
        openUrl
          @/@shell/@mainComposite/@scripts/@openUrl/@ins
          sisValidate
          false
          sname
          ins
          sdescriptors
          xworker.lang.actions.Inout/@ins
          sinheritDescription
          false
          sth_createIndex
          false
          sth_registMyChilds
          false
          sth_registDisabled
          false
          sth_noThingRegistViewer
          false
          sth_fileMonitor
          false
          sth_mark
          false
          sth_registQueryOnlySelf
          false
          sid
          ins
            @/@shell/@mainComposite/@scripts/@openUrl/@ins/@name
            sname
            name
            stype
            java.lang.String
            stypeCheck
            false
            soptional
            true
            scheck
            false
            scheckLevel
            exception
            sdescriptors
            xworker.lang.actions.Inout/@ins/@param
            sinheritDescription
            false
            sth_createIndex
            false
            sth_registMyChilds
            false
            sth_registDisabled
            false
            sth_noThingRegistViewer
            false
            sth_fileMonitor
            false
            sth_mark
            false
            sth_registQueryOnlySelf
            false
            sid
            name
            @/@shell/@mainComposite/@scripts/@openUrl/@ins/@url
            sname
            url
            stype
            java.lang.String
            stypeCheck
            false
            soptional
            true
            scheck
            false
            scheckLevel
            exception
            sdescriptors
            xworker.lang.actions.Inout/@ins/@param
            sinheritDescription
            false
            sth_createIndex
            false
            sth_registMyChilds
            false
            sth_registDisabled
            false
            sth_noThingRegistViewer
            false
            sth_fileMonitor
            false
            sth_mark
            false
            sth_registQueryOnlySelf
            false
            sid
            url
        @/@shell/@mainComposite/@scripts/@getControl
        sname
        getControl
        svarName
        mainComposite
        sinterpretationType
        Self
        sattributeTemplate
        false
        schildsAttributeTemplate
        false
        svarScope
        Local
        sisSynchronized
        false
        sthrowException
        true
        screateLocalVarScope
        false
        ssaveReturn
        false
        sswitchResult
        false
        sdisableGlobalContext
        false
        sdebugLog
        false
        sdescriptors
        xworker.lang.actions.Actions/@GetVariable1
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        sid
        getControl
