2010-08-20 8 views
8

में ऐप-वाईड सीएसएस स्थिरांक की आवश्यकता है, मैं कुछ रंगों को जीडब्ल्यूटी सीएसएस रिसोर्स में स्थिरांक के रूप में परिभाषित करना चाहता हूं, और अपने पूरे एप्लिकेशन में उन स्थिरांक का उपयोग करना चाहता हूं; लेकिन मुझे नहीं पता कि यह कैसे करना है।जीडब्ल्यूटी

मैं आपको बताऊंगा कि मैंने क्या प्रयास किया है। इस प्रकार मैं एक ClientBundle और एक CssResource बना लिया है:

public interface Resources extends ClientBundle { 
    public interface MyStyle extends CssResource { 
    String JUNGLEGREEN(); 
    String example(); 
    ... 
    } 
    @Source("Resources.css") 
    MyStyle css(); 
} 

मैं कुछ constants परिभाषित किया है Resources.css में:

@def JUNGLEGREEN #1F3D0A; 

Resources.css के भीतर, मैं तो जैसे उन स्थिरांक का उपयोग करें:

.example { color:JUNGLEGREEN; } 

मुझे अन्य सीएसएस फ़ाइलों और यूआईबिंडर टेम्पलेट्स में उन स्थिरांक का पुन: उपयोग करने के तरीके से अवगत नहीं है। मैं कुछ अन्य UiBinder फ़ाइल में ऐसा करना चाहते हैं, कहते हैं कि LoginView.ui.xml:

<ui:with field='resources' type='com.example.Resources' /> 
<ui:style> 
    .mainPanel { 
    background:{resources.css.JUNGLEGREEN}; 
    ... 
    } 
</ui:style> 

... लेकिन यह संकलन करने प्रतीत नहीं होता। क्या आप जानते हैं कि मैं अपना उद्देश्य कैसे प्राप्त कर सकता हूं?

+0

विभिन्न धागे में यह उत्तर सहायक हो सकता है: [http://stackoverflow.com/a/10035774/490369 ](httpoverflow.com/a/10035774/490369) – alshan

उत्तर

0

आप

<ui:style> 
    @IMPORT url("../../../global.css"); 
    .mainPanel { 
    background:{resources.css.JUNGLEGREEN}; 
    ... 
    } 
</ui:style> 
+0

धन्यवाद सुधीर। अफसोस की बात है, यह काम नहीं करेगा। डॉको (http://code.google.com/p/google-web-toolkit/wiki/CssResource#Compile-time_import) कहता है, "@import कथन केवल अन्य CssResources के लिए काम करेगा, न कि रनटाइम पर यूआरएल के लिए, क्योंकि उन मामलों में .gwt.xml या StyleInjector का उपयोग किया जा सकता है। " – David

+0

संसाधन.css एक cssResource नहीं है? एक संकलन समय आयात मैं किस बारे में बात कर रहा हूं ... –

4

उपयोग करने के लिए इस तरह हम यह कर रहा है सक्षम होना चाहिए:

  • हम एक constant.css फ़ाइल
@def black #241b15; /* text color */ 
@def orange #ff4f00; /* links */
    में हमारे सभी निरंतर विशेषताओं जगह प्रत्येक ui.xml फ़ाइल वाई में
<ui:style src="../../resources/css/constants.css"> 
    .myStyle { 
     color: orange; 
    } 
</ui:style>

आशा है कि मदद करता है: कहां उन स्थिरांक को निम्नलिखित तरीके से संदर्भित कर सकते हैं।

संपादित करें:

  • एक सीएसएस फ़ाइल में फिर से अपने स्थिरांक को परिभाषित (माना constants.css)
@def junglegreen #1f3d0a;
:

रिश्तेदार पथ <ui:style> तत्व में आप निम्न कार्य कर सकता है से बचने के लिए

  • ClientBundle औरबनाएंसीएसएस फ़ाइल स्वयं के संदर्भ के बिना लगातार

    <ui:style> 
        @eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen(); 
    
        .someClass { 
         color: green; 
        } 
    </ui:style>

    एक ही रास्ता मैं कैसे स्थिरांक से निपटने के लिए के बारे में पता तक पहुँचने के लिए प्रयोग @eval एनोटेशन परिभाषित स्थिरांक

public interface MyResources extends ClientBundle { 

    public static final MyResources INSTANCE = GWT.create(MyResources.class); 

    public interface Constants extends CssResource { 

     String junglegreen(); 
    } 

    Constants constants(); 
}

पुनः प्राप्त करने के।

+0

धन्यवाद, चिड़ियाघर। आपका समाधान वहां भाग-मार्ग है, लेकिन मुझे यह पसंद नहीं है कि सीएसएस फ़ाइल का पथ ui.xml फ़ाइल से संबंधित है। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। ' – David

+0

एक दूसरा दृष्टिकोण जोड़ा गया। मेरा प्रारंभिक उत्तर देखें। – z00bs

+0

दूसरे दृष्टिकोण के लिए धन्यवाद z00bs। मैं लगभग वहां था, लेकिन मैंने कुछ ऐसा इस्तेमाल किया ... MyResources.INSTANCE.Constants.junglegreen() इसके बजाय, काफी गुप्त त्रुटि संदेशों की ओर अग्रसर ... – PhiLho

1

मुझे पता है कि यह उत्तर देर हो सकता है लेकिन किसी की मदद कर सकता है।मैं एक ही समस्या हो रही थी और निम्न को जोड़कर इसे हल करने में सक्षम था:।

Resources.css() ensureInjected()

मैं अपने कारखाने में यह जोड़ा है, लेकिन स्थानों और के एक जोड़े में इसे करने की कोशिश नहीं मामला जहां मैंने इसे रखा, यह काम किया।