Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GWT vs CSS3

1,111 views

Published on

Talk di Luca tozzi alla GWTcon 2014

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

GWT vs CSS3

  1. 1. GWT versus CSS3 Luca Tozzi l.tozzi@hr2o.it it.linkedin.com/in/ltozzi/
  2. 2. Tozzi Luca Software Engineer Consulente/sviluppatore a livello Enterprise, fermo credente dell’importanza d’innovare i processi di sviluppo nelle aziende. Amante delle tecnologie Google, con particolare attenzione a : - GWT - Android - AngularJS (in ordine cronologico di innamoramento!!) Da un anno alle prese di un'avventura imprenditoriale, alla ricerca di dimostrare il suddetto assunto. Fermo partecipante a tutti gli eventi del GDG Firenze Presentazione personale
  3. 3. Presentazione aziendale è una start-up nata dalla pluriennale esperienza nel settore HR (anche detto Risorse Umane) che si sposa con la continua ricerca delle migliori tecnologie disponibili nel settore informatico per semplificarne l’utilizzo. Esempio : gestione Ticketing (Timbrature) tramite SmartPhone/Tablet Mai sazi di ricerca e sviluppo .. mescoliamo Cloud e Mobile .. HTML5 e nativo... alla ricerca di software equilibrato e SEMPLICE... ... meglio se anche economico!! Rimettiamo la nostra ricerca ai nostri clienti non solo in ambito sviluppo software, ma anche consulenziale.
  4. 4. GWT versus CSS3 La prima impressione che spesso si ha aprocciando al GWT base è che i Widget abbiano bisogno di essere graficamente aggiornati. L’istinto di mettere mano ai fogli di stile forniti è forte. Questo spesso è contrario all’approccio dello sviluppatore GWT che tipicamente ha scelto il compilatore GWT in quanto lo astrae da una serie di problematiche : esempio cross-browser. Purtroppo però il successo di un buon applicativo passa anche attraverso alla sua semplicità di utilizzo e quindi attraverso la sua User Interface. Possiamo e sino a che punto “svecchiare” i ns. widget grazie ai CSS? Presentazione talk
  5. 5. CSS (definizione da Wikipedia ) L'introduzione del CSS si è resa necessaria per separare i contenuti dalla formattazione e permettere una programmazione più chiara e facile da utilizzare, sia per gli autori delle pagine HTML che per gli utenti, garantendo contemporaneamente anche il riuso di codice ed una sua più facile manutenibilità. CSS3 Ossia la specifica 3 dello standard continua a perseguire gli scopi del css rendendolo ancora più veloce e più efficiente nel website designing. Dando la possibilità di generare semplici UI con minor conoscenza ed allo stesso tempo possibilità di migliorare le interfaccie più elaborate. CSS3
  6. 6. Novità principale la MODULARIZZAZIONE : - sia a livello di oggetti - sia a livello di standard QUINDI NON ASPETTATEVI un unica specifica W3C PERCHE’ NON ESISTE p.s. Css4 sarà il passaggio al 4°livello di ogni singolo modulo. CSS3 Module Specification title Status, date css3-background CSS Backgrounds and Borders Module Level 3 Candidate Recommendation, September 2014 css3-box CSS basic box model Working Draft, August 2007 css-cascade-3 CSS Cascading and Inheritance Level 3 Candidate Recommendation, October 2013 css3-color CSS Color Module Level 3 Recommendation, June 2011 css3-content CSS3 Generated and Replaced Content Module Working Draft, May 2003 css-fonts-3 CSS Fonts Module Level 3 Candidate Recommendation, October 2013 css3-gcpm CSS Generated Content for Paged Media Module Working Draft, May 2014 css3-layout CSS Template Layout Module Working Draft, November 2011 css3-marquee CSS Marquee Module Level 3 Candidate Recommendation, December 2008 css3-mediaqueries Media Queries Recommendation, June 2012 css3-page CSS Paged Media Module Level 3 Working Draft, March 2013 css3-selectors Selectors Level 3 Recommendation, September 2011 css3-ui CSS Basic User Interface Module Level 3 (CSS3 UI) Working Draft, January 2012
  7. 7. Novità CSS3 Colore (RGBa) da #ffffff a rgba(255,255,255,1); @font-face la possibilità di usare caratteri tipografici non presenti sul computer dell’utente @font-face { font-family: Roboto Bold Condensed; src: url(fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf); } font-family:Roboto Bold Condensed; Ombreggiatura sul testo text-shadow: 2px 2px 2px #ddccb5; Bordi e sfondi (Border-radius, Box-shadow) /* border-radius */ border-radius: 20px; /* box-shadow */ box-shadow: rgba(0,0,0,0.8) 0 0 10px;
  8. 8. CSS3 Media Queries La possibilità di servire fogli di stile ad hoc in base alle caratteristiche dei dispositivi RESPONSIVE!!! @media screen and (min-width: 600px) and (max-width: 900px) { background: #FFF; } Transizioni, trasformazioni, animazioni div { -webkit-transition-property: width; /* Safari */ transition-property: width; } Transform: (scale, rotate, skew) div { -ms-transform: rotate(7deg); /* IE 9 */ -webkit-transform: rotate(7deg); /* Chrome, Safari, Opera */ transform: rotate(7deg); } Funzioni che aumentano performance applicative e riescono spesso a sostituire alla grande jQuery per animazioni, rotazioni, ecc.
  9. 9. Preffissi Vendor CSS3 Prefissi Vendor ● -moz- : Firefox ● -webkit- : Webkit browsers such as Safari and Chrome ● -o- : Opera ● -ms- : Internet Explorer
  10. 10. CSS3
  11. 11. I Pre-processori, estendono il linguaggio CSS aggiungono features che permettano di generare un CSS pulito.. tramite un linguaggio di programmazione al posto di regole statiche. I pre-processori più famosi sono Less e Sass. Less nasce ispirandosi a Sass. Less fornisce i seguenti meccanismi : - variabili, - operatori - funzioni - cicli - mixins Twitter Bootstrap è costruito in Less!! Pre-Processori CSS3
  12. 12. Tra i pre-processori uno è sviluppato da Google in linguaggio java. Closure Stylesheet E’ disponibile il jar closure-stylesheets.jar per utilizzare il compilatore a riga di comando : - legge GSS e compila CSS - ottima compatibilità con il CSS3 - aggiunge variabili.. funzioni... condizioni e mixing - supporto anche la minification, il Linting, RTL flipping ed il renaming Nato nel 2011 internamente a Google Closure Stylesheets sono normalmente chiamati "Google Stylesheets" da cui l’acronimo "GSS," I seguenti esempi sono stati generati tramite l’opzione --pretty-print Closure Style Sheet
  13. 13. Le variabili possono essere definiti tramite l’istruzione @def seguito dal nome variabile e poi il valore. Le variabili possono essere definite anche in termini di altre variabili. @def BG_COLOR rgb(235, 239, 249); @def DIALOG_BORDER_COLOR rgb(107, 144, 218); @def DIALOG_BG_COLOR BG_COLOR; body { background-color: BG_COLOR; } .dialog { background-color: DIALOG_BG_COLOR; border: 1px solid DIALOG_BORDER_COLOR; } Variabili
  14. 14. Una volta compilato in ---pretty-print mode diventa : body { background-color: #ebeff9; } .dialog { background-color: #ebeff9; border: 1px solid #6b90da; } Variabili
  15. 15. Closure Stylesheets fornisce le seguenti funzioni aritmetiche : ● add() ● sub() ● mult() ● divide() ● min() ● max() Attenzione : - i parametri possono essere puri numerici o unità di dimensione in formato CSS (Es: 180px) - solo moltiplicazione e divisione possono avere le unità CSS come primo parametro - il numero dei parametri è libero - i parametri in forma di unità di misura Css devono essere tutti nella stessa forma (Esempio ok per add(3px, 5px) ma errore in caso di add(3px, 5ex) Funzioni
  16. 16. SOURCE @def LEFT_HAND_NAV_WIDTH 180px; @def LEFT_HAND_NAV_PADDING 3px; .left_hand_nav { position: absolute; width: LEFT_HAND_NAV_WIDTH; padding: LEFT_HAND_NAV_PADDING; } .content { position: absolute; margin-left: add(LEFT_HAND_NAV_PADDING, /* padding left */ LEFT_HAND_NAV_WIDTH, LEFT_HAND_NAV_PADDING); /* padding right */ } Funzioni
  17. 17. RISULTATO .left_hand_nav { position: absolute; width: 180px; padding: 3px; } .content { position: absolute; margin-left: 186px; } Funzioni
  18. 18. Inoltre vi sono una serie di funzioni fisse inerenti l’elaborazione dei colori blendColorsHsb(startColor, endColor) blendColorsRgb(startColor, endColor) makeMutedColor(backgroundColor, foregroundColor [, saturationLoss]) addHsbToCssColor(baseColor, hueToAdd, saturationToAdd, brightnessToAdd) makeContrastingColor(color, similarityIndex) adjustBrightness(color, brightness) Oltre alla funzione selectFrom() che funziona come una condizione /* Implies MYDEF = FOO ? BAR : BAZ; */ @def MYDEF selectFrom(FOO, BAR, BAZ); con risultato @def FOO true; ha come effetto @def MYDEF = BAR Funzioni Fisse
  19. 19. Funzioni Personalizzate E’ possibile personalizzare delle funzioni GSS implementando l’interfaccia GssFunctionMapProvider e passare la classe generata al compilatore tramite l’opzione “--gss-function-map-provider com.example.class” public interface GssFunctionMapProvider { /** * Gets the map of custom GSS functions for the given class. * * @param <F> the interface implemented by the GSS functions * @param gssFunctionClass the class of {@code F} * @return a map from each custom function name to its implementation */ <F> Map<String, F> get(Class<F> gssFunctionClass); } Oppure utilizzare la classe DefaultGssFunctionMapProvider in modo di fornire le funzioni personalizzate in aggiunta a quelle standard.
  20. 20. Il compilatore permette di utilizzare delle condizioni tramite l’uso di @if, @else ed @elseif. @if (BROWSER_IE) { @if (BROWSER_IE6) { @def GOOG_INLINE_BLOCK_DISPLAY inline; } @elseif (BROWSER_IE7) { @def GOOG_INLINE_BLOCK_DISPLAY inline; } @else { @def GOOG_INLINE_BLOCK_DISPLAY inline-block; } } @elseif (BROWSER_FF2) { @def GOOG_INLINE_BLOCK_DISPLAY -moz-inline-box; } @else { @def GOOG_INLINE_BLOCK_DISPLAY -inline-block; } .goog-inline-block { position: relative; display: GOOG_INLINE_BLOCK_DISPLAY; } I valori condizionali inerenti al browser dovranno essere passati tramite il flag --define (Es. --define BROWSER_FF2) Condizioni
  21. 21. Tramite la funzione @mixin è possibile utilizzare una lista di valori definiti tramite la funzione @defmixin. @defmixin size(WIDTH, HEIGHT) { width: WIDTH; height: HEIGHT; } .logo { @mixin size(150px, 55px); background-image: url('http://www.google.com/images/logo_sm.gif'); } RISULTATO .logo { width: 150px; height: 55px; background-image: url('http://www.google.com/images/logo_sm.gif'); } Gli argomenti in @defmixin devono essere in formato MAIUSCOLO Variabili definire con @def possono essere utilizzati come valori Mixins
  22. 22. Diventa interessante per astrarsi dalle formule cross-browser @defmixin gradient(POS, HSL1, HSL2, HSL3, COLOR, FALLBACK_COLOR) { background-color: FALLBACK_COLOR; /* fallback color if gradients are not supported */ background-image: -webkit-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* Chrome 10+,Safari 5.1+ */ background-image: -moz-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* FF3.6+ */ background-image: -ms-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* IE10 */ background-image: -o-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* Opera 11.10+ */ } .header { @mixin gradient(top, 0%, 50%, 70%, #cc0000, #f07575); } RISULTATO .header { background-color: #f07575; background-image: -webkit-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000); background-image: -moz-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000); background-image: -ms-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000); background-image: -o-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000); } Mixins - per specifiche Browser
  23. 23. Closure-Stylesheet supporta i comandi left-to-right, come i right-to-left. L’annotazione @noflip permette alla proprietà di mantenere la forma originale .logo { margin-left: 10px; } .shortcut_accelerator { /* Keyboard shortcuts are untranslated; always left-to-right. */ /* @noflip */ direction: ltr; border-right: 2px solid #ccc; padding: 0 2px 0 4px; } Comando : java -jar closure-stylesheets.jar --pretty-print --output-orientation RTL rtl-example.gss, RISULTATO .logo { margin-right: 10px; } .shortcut_accelerator { direction: ltr; border-left: 2px solid #ccc; padding: 0 4px 0 2px; } RTL Flipping
  24. 24. Closure-Stylesheets in fase di compilazione controlla : - errori di sintassi - funzioni inesistenti - doppie dichiarazioni di stile .logo { width: 150px; height: 55px; background-image: urel('http://www.google.com/images/logo_sm.gif'); border-color: #DCDCDC; border-color: rgba(0, 0, 0, 0.1); } In caso di errore di parsing stampa l’errore e ritorna un exit code 1 Unknown function "urel" in linting-example.gss at line 4 column 21: background-image: urel('http://www.google.com/images/logo_sm.gif'); ^ Detected multiple identical, non-alternate declarations in the same ruleset. If this is intentional please use the /* @alternate */ annotation. border-color:[rgba(0,0,0,0.1)] in linting-example.gss at line 7 column 1: } ^ 2 error(s) Linting
  25. 25. Integrazione Closure-Stylesheet con GWT = GSS Closure-StyleSheet e GWT
  26. 26. Perchè utilizzarli? - Closure StyleSheet è un precompilatore - E’ più facile mantenere il CSS - perché GWT necessità di un supporto CSS3 migliore!! Closure-StyleSheet e GWT
  27. 27. Aggiunta dei CSS in GWT!! ● Using a <link> tag in the host HTML page. DEPRECATED ● Using the <stylesheet> element in the module XML file. DEPRECATED ● .getElement().getStyle().setProperty("background", "green"); ESTREMO ● Using a CssResource contained within a ClientBundle. ● Using an inline <ui:style> element in a UiBinder template CSS e GWT
  28. 28. Installazione GSS on GWT GSS può essere installato solo in GWT 2.6.1 o superiori GSS Aggiungere al modulo *.gwt.xml la seguente Inherits <inherits name="com.google.gwt.resources.GssResource"/> Grazie a Julien Dramaix è possibile fare una conversione manuale http://css2gss.appspot.com/ 2.6.1 Maven <repositories> <!-- ... --> <repository> <id>sonatype.snapshots</id> <name>Sonatype snapshot repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <dependencies> <!-- ... --> <dependency> <groupId>com.github.jdramaix</groupId> <artifactId>gssresource</artifactId> <version>1.0-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies> Manual installation Download the following jar files and put them in your compilation classpath : ● The latests snapshot of gssresource.jar ● closure-stylesheet.jar ● guava 12+
  29. 29. Definizione GSS on GWT Definire un foglio di style in formato Closure-Stylesheet con estensione gss oppure css (meglio gss... come vedremo più avanti ) /* Constants*/ @def MY_GRAY #555; @def PADDING_RIGHT 50px; @def PADDING_LEFT 50px; /*mixin */ @defmixin size(WIDTH, HEIGHT) { width: WIDTH; height: HEIGHT; } @defmixin gradient(START_COLOR, END_COLOR) { background-color: START_COLOR; /* fallback color if gradients are not supported */ /* @alternate */ background-image: -moz-linear-gradient(left, START_COLOR 0%, END_COLOR 100%); /* @alternate */ background-image: -webkit-linear-gradient(left, START_COLOR 0%, END_COLOR 100%); /* @alternate */ background-image: -o-linear-gradient(left, START_COLOR 0%, END_COLOR 100%); /* @alternate */ background-image: -ms-linear-gradient(left, START_COLOR 0%, END_COLOR 100%); background-image: linear-gradient(left, START_COLOR 0%, END_COLOR 100%); } 2.6.1
  30. 30. Come per i CssResource definire un’interfaccia che estende com.google.gwt.resources.client.GssResource public interface ApplicationStyle extends GssResource { String MY_GRAY(); String PADDING_RIGHT(); int PADDING_LEFT(); @ClassName("class-name") String className(); String animate(); } Ed includerla in un ClientBundle public interface ApplicationResources extends ClientBundle { @Source("application.gss") public ApplicationStyle style(); } GSS on GWT 2.6.1
  31. 31. Et Voilà! A questo punto non ci resta che usare la risorsa style. ApplicationResources applicationResources = GWT.create(ApplicationResources.class); ApplicationStyle style = applicationResources.style(); style.ensureInjected(); // ... Label l = new Label("My animated label"); l.addStyleName(style.animate());} GSS on GWT 2.6.1
  32. 32. GssResource estende CssResource.. .. per questo può essere usata negli UiBinders Per abilitare GssResource in UiBinder è sucfficiente definire : <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'> <ui:style type="com.google.gwt.resources.client.GssResource"> <!-- you can now use all the features of GssResource --> .. </ui:style> UiBinder GSS on GWT 2.6.1
  33. 33. Installazione GSS on GWT GSS è Incluso in GWT 2.7 - Per abilitarli è sufficiente impostare una configuration property <set-configuration-property name="CssResource.enableGss" value="true" /> - Può essere usato come CssResource.. è sufficiente che il file sia con estensione .gss - Una volta abilitato le interfacce CssResource vengono generate tramite il nuovo GssResourceGenerator - E’ addirittura possibile fare in modo che avvenga una conversione automatica tramite una configuration property <set-configuration-property name="CssResource.legacy" value="true" /> - Il parser 2.7 è più rigido della versione precedente, nel caso di errore in fase di conversione automatica, si può abilitare l’opzione per una conversione più indulgente tramite <set-configuration-property name="CssResource.conversionMode" value="lenient" /> - Una volta abilitato il GSS per utilizzarlo negli <ui:style> dell’Uibinder è sufficiente impostare l’attributo gss="true" 2.7.0
  34. 34. Come per i CssResource definire un’interfaccia che estende com.google.gwt.resources.client.GssResource public interface ApplicationStyle extends CssResource { String MY_GRAY(); String PADDING_RIGHT(); int PADDING_LEFT(); @ClassName("class-name") String className(); String animate(); } Ed includerla in un ClientBundle public interface ApplicationResources extends ClientBundle { @Source("application.gss") public ApplicationStyle style(); } GSS on GWT 2.7.0
  35. 35. Come per i CssResource definire un’interfaccia che estende com.google.gwt.resources.client.GssResource public interface ApplicationStyle extends CssResource { String MY_GRAY(); String PADDING_RIGHT(); int PADDING_LEFT(); @ClassName("class-name") String className(); String animate(); } Ed includerla in un ClientBundle public interface ApplicationResources extends ClientBundle { @Source({“common..gss”, "application.gss"}) public ApplicationStyle style(); } GSS on GWT 2.7.0
  36. 36. Anche per l’UiBinder la semplificazione è evidente <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'> <ui:style gss="true"> <!-- you can now use all the features of Gss Resource --> .. </ui:style> UiBinder GSS on GWT 2.7.0
  37. 37. @Sprite (Image sprite) .addIcon { gwt-sprite: 'addIcon'; } @Eval ( Sostituzione valore a Run-Time) @def BLACK eval(‘mypackage.GssSampleApplication.black()’); .black { color: eval('mypackage.GssSampleApplication.black()'); } Value Function @def ICON_WIDTH value('addIcon.getWidth', 'px'); Funzioni aggiuntive
  38. 38. DEMO
  39. 39. Istruzioni condizionali in base alla permutazione @if user.agent safari { /* ... */ } @if locale en { /* ... */ } Funzioni PERSE
  40. 40. Istruzioni condizionali in base alla permutazione @if user.agent safari { /* ... */ } @if locale en { /* ... */ } Funzioni PERSE
  41. 41. Istruzioni condizionali in base alla permutazione @if (is(“user.agent”, “safari”) { /* ... */ } @if(is(“local”, “en”) { /* ... */ } NON PIU Funzioni PERSE
  42. 42. Anche per i GssResource vale l’annotazione @external, per bloccarne l’offuscamento in fase di compilazione e permetterne l’accesso anche fonti esterne a GWT. Al riguardo valgono le stesse regole dei CssResource : ● non immettere un punto come prefisso di classe ● utilizzare gli apici nel caso di utilizzo della wildcard * /* Don't obfuscate muLegacyClass and all classes starting with gwt- */ @external myLegacyClass 'gwt-*'; GSS richiamo classi Esterne
  43. 43. Entrambi i pre compilatori si assomigliano ..... ma ?!?!? - Commenti GSS non accetta // ed usa al posto /* commento */ - Definizione variabili GSS utilizza @def variable value mentre LESS dichiara le variabili direttamente @variable: value - Utilizzo delle variabili GSS - Operazioni : GSS usa le funzioni (ossia sum(a,b)) mentre less le usa nativamente (ossia a+b) - La forma delle gestione delle sottoclassi è diversa .. - .... Conversione Less to GSS
  44. 44. Siamo alla ricerca di collaborazioni cv@hr2o.it oppure hiring@hr2o.it Hiring

×