2013-03-13 31 views
1

我想從代碼在運行時改變我的SmartGWT的應用程序的主題如何改變在運行時GWT/SmartGWT的主題

我可以在功能上SmartGWT的櫥窗看到這一點,但我看不到任何代碼爲此在SmartGWT展示。

我在做什麼,現在是

這是我的XML類

<?xml version="1.0" encoding="UTF-8"?> 
     <inherits name="com.smartgwt.SmartGwtNoTheme"/> 
     <inherits name="com.smartclient.theme.graphite.Graphite"/> 
     <inherits name="com.smartclient.theme.blackops.BlackOps"/> 
     <inherits name="com.smartclient.theme.enterprise.Enterprise"/> 
     <inherits name="com.smartclient.theme.enterpriseblue.EnterpriseBlue"/> 

這是我的HTML類片段

   <title>My Web</title> 


       <script> 
      function readCookie(name) { 
     var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') 
      c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) == 0) 
      return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
} 

// Determine what skin file to load 
var currentSkin = readCookie('skin'); 
if (currentSkin == null){ 
    currentSkin = "Enterprise"; 
} 
alert(currentSkin); 
     </script> 
      <script type="text/javascript"> 
     document.write("<" + "script src=testtheme/sc/skins/" 
     + currentSkin + "/load_skin.js><"+"/script>"); 
      </script>  

這是我的Java類

 SelectItem selectItem = new SelectItem("skin", "Choose Skin"); 
    DynamicForm df = new DynamicForm(); 
    hpnlMain.add(df); 
    df.setItems(selectItem); 
    selectItem.setWidth(130); 
    java.util.LinkedHashMap<String, String> valueMap = new java.util.LinkedHashMap<String, String>(); 
    valueMap.put("Enterprise", "Enterprise"); 
    valueMap.put("EnterpriseBlue", "EnterpriseBlue"); 
    valueMap.put("TreeFrog", "TreeFrog"); 
    valueMap.put("BlackOps", "BlackOps"); 
    valueMap.put("Graphite", "Graphite"); 


    selectItem.setValueMap(valueMap); 

    String currentSkin = Cookies.getCookie("skin"); 

    if (currentSkin == null) { 
     currentSkin = "Enterprise"; 
    } 
    selectItem.setDefaultValue(currentSkin); 
    selectItem.addChangedHandler(new ChangedHandler() { 

     @Override 
     public void onChanged(ChangedEvent event) { 
      // TODO Auto-generated method stub 
      Cookies.setCookie("skin", event.getValue().toString()); 
      Window.Location.reload(); 
     } 
    }); 

預期的結果是,當我選擇任何皮膚形式我的SelectItem,皮膚應該應用,但我沒有效果。

請看看這條線在我的HTML文件

  <script type="text/javascript"> 
document.write("<" + "script src=testtheme/sc/skins/" 
     + currentSkin + "/load_skin.js><"+"/script>"); 

在這裏我不知道會是怎樣的確切路徑, 我有smatgwt-skins.jar在我的類路徑

謝謝

回答

0

也許這可以幫助:Here

檢查的SmartClient論壇,針對這種情況,還有它豐富的信息。