Sunday, January 31, 2016

Re: Large no of gwt modules

Rajesh, 
  I implemented a large GWT application using turducken pattern, I do not think that GWT need something specific to dynamically load modules, remember that a GWT app is just a JS file, and can be externally charged by a component that is responsible for this, with the particular logic, according to your modular design and dependencies.
  You must have a cross event bus that can receive and send messages, then, every module, GWT or not, can translate addressing scheme, for example, Activities and Places in a GWT module.
  In each module, you can use code splitting, to increase efficiency.

I hope help with this.

Greetings..!!


El miércoles, 27 de enero de 2016, 6:19:29 (UTC-3), Rajesh Gupta escribió:
We have large no of gwt modules.

Code splitting is not option for large no of GWT modules.  See the issues as clearly explained in turducken pattern.
http://www.slideshare.net/RobertKeane1/turducken-divide-and-conquer-large-gwt-apps-with-multiple-teams

Will 2.8 release or 3.0 release fix the full page refresh problem.  Will it have feature to use GWT modules with out full page refresh.
Will 2.8/3.0 have features to dynamically load/unload gwt modules.  

-Rajesh


--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Saturday, January 30, 2016

Re: GWT Desktop-Notification

Hey,

1. Simply use a timer to call close() on the notification. Thats the way it's done in JS.
2. I updated the code for you. The Notification is now available in the event, so you can access the properties you set before.
It is also updated to the latest spec.

I hope it helps you ;)

Am Mittwoch, 13. Januar 2016 02:01:38 UTC+1 schrieb confile:
@Marcel There are two things missing in you GWT project: 

1. How do you set the duration the notification is shown?
2. How do you get the notification id from a click on the notification to make a proper redirect?


Am Freitag, 7. Februar 2014 09:26:29 UTC+1 schrieb Marcel K:
Hey,

after some coding with gwt i want to publish a component that i wrote. It's an api for desktop-notification and should work with Chrome, FF and Safari (according to https://developer.mozilla.org/en-US/docs/Web/API/notification#Browser_compatibility).

I would really appreciate if someone could take a look at it and maybe give me some advices ;) or.. maybe even use :)



Cheers
Marcel

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: erro migrating hibernate

I forgot to tell that my project is in gwt 2.7.0


Em sábado, 30 de janeiro de 2016 12:56:02 UTC-2, claudio sergio Goncalves escreveu:
hi guys

i'm updating hibernate from 3.3 to 5.07 but its freezing.

Hibernate Starting -> 
[INFO ] 2016-01-30 12:49:03.919 [qtp24631344-26] Version - HHH000412: Hibernate Core {5.0.7.Final}
[INFO ] 2016-01-30 12:49:03.922 [qtp24631344-26] Environment - HHH000206: hibernate.properties not found
[INFO ] 2016-01-30 12:49:03.923 [qtp24631344-26] Environment - HHH000021: Bytecode provider name : javassist
[INFO ] 2016-01-30 12:49:04.471 [qtp24631344-26] Version - HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH010002: C3P0 using driver: org.firebirdsql.jdbc.FBDriver at URL: jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH10001001: Connection properties: {user=SYSDBA, password=****, lc_ctype=ISO8859_1}
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH10001003: Autocommit mode: false
[INFO ] 2016-01-30 12:49:04.541 [MLog-Init-Reporter] MLog - MLog clients using slf4j logging.
[INFO ] 2016-01-30 12:49:04.583 [qtp24631344-26] C3P0Registry - Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
[INFO ] 2016-01-30 12:49:04.619 [qtp24631344-26] C3P0ConnectionProvider - HHH10001007: JDBC isolation level: <unknown>
[INFO ] 2016-01-30 12:49:04.635 [qtp24631344-26] AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@80ec5e16 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@d423b0fc [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, identityToken -> 1hge0yr9e14sfh9t3es2nx|1df1dc4, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 5, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 3, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@22e65aac [ description -> null, driverClass -> null, factoryClassLocation -> null, forceUseNamedDriverClass -> false, identityToken -> 1hge0yr9e14sfh9t3es2nx|16a7e52, jdbcUrl -> jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB, properties -> {user=******, password=******, lc_ctype=ISO8859_1} ], preferredTestQuery -> null, privilegeSpawnedThreads -> false, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToken -> 1hge0yr9e14sfh9t3es2nx|7b97f2, numHelperThreads -> 3 ]
[INFO ] 2016-01-30 12:49:04.752 [qtp24631344-26] Dialect - HHH000400: Using dialect: org.hibernate.dialect.FirebirdDialect
[INFO ] 2016-01-30 12:49:05.225 [qtp24631344-26] SchemaValidator - HHH000229: Running schema validator

my hibernate.cfg
<property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="connection.url">jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB</property>
<property name="connection.lc_ctype">ISO8859_1</property>
<property name="dialect">org.hibernate.dialect.FirebirdDialect </property>
<property name="connection.username">SYSDBA</property>
<property name="connection.password">*********</property>

<property name="show_sql">false</property>
<property name="format_sql">false</property>
<property name="connection.pool_size">10</property>
<property name="current_session_context_class">thread</property>
  <property name="hbm2ddl.auto">validate</property>
<property name="search.indexing_strategy">manual</property> 
<!-- Use the C3P0 connection pool. --> 
<property name="c3p0.min_size">3</property>
<property name="c3p0.max_size">5</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.max_statements">50</property>


can anyone help me

thanks in advance

claudio

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

erro migrating hibernate

hi guys

i'm updating hibernate from 3.3 to 5.07 but its freezing.

Hibernate Starting -> 
[INFO ] 2016-01-30 12:49:03.919 [qtp24631344-26] Version - HHH000412: Hibernate Core {5.0.7.Final}
[INFO ] 2016-01-30 12:49:03.922 [qtp24631344-26] Environment - HHH000206: hibernate.properties not found
[INFO ] 2016-01-30 12:49:03.923 [qtp24631344-26] Environment - HHH000021: Bytecode provider name : javassist
[INFO ] 2016-01-30 12:49:04.471 [qtp24631344-26] Version - HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH010002: C3P0 using driver: org.firebirdsql.jdbc.FBDriver at URL: jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH10001001: Connection properties: {user=SYSDBA, password=****, lc_ctype=ISO8859_1}
[INFO ] 2016-01-30 12:49:04.525 [qtp24631344-26] C3P0ConnectionProvider - HHH10001003: Autocommit mode: false
[INFO ] 2016-01-30 12:49:04.541 [MLog-Init-Reporter] MLog - MLog clients using slf4j logging.
[INFO ] 2016-01-30 12:49:04.583 [qtp24631344-26] C3P0Registry - Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
[INFO ] 2016-01-30 12:49:04.619 [qtp24631344-26] C3P0ConnectionProvider - HHH10001007: JDBC isolation level: <unknown>
[INFO ] 2016-01-30 12:49:04.635 [qtp24631344-26] AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@80ec5e16 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@d423b0fc [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, identityToken -> 1hge0yr9e14sfh9t3es2nx|1df1dc4, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 5, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 3, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@22e65aac [ description -> null, driverClass -> null, factoryClassLocation -> null, forceUseNamedDriverClass -> false, identityToken -> 1hge0yr9e14sfh9t3es2nx|16a7e52, jdbcUrl -> jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB, properties -> {user=******, password=******, lc_ctype=ISO8859_1} ], preferredTestQuery -> null, privilegeSpawnedThreads -> false, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToken -> 1hge0yr9e14sfh9t3es2nx|7b97f2, numHelperThreads -> 3 ]
[INFO ] 2016-01-30 12:49:04.752 [qtp24631344-26] Dialect - HHH000400: Using dialect: org.hibernate.dialect.FirebirdDialect
[INFO ] 2016-01-30 12:49:05.225 [qtp24631344-26] SchemaValidator - HHH000229: Running schema validator

my hibernate.cfg
<property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="connection.url">jdbc:firebirdsql:localhost:D:\projetos\dados\BDFINAN.FDB</property>
<property name="connection.lc_ctype">ISO8859_1</property>
<property name="dialect">org.hibernate.dialect.FirebirdDialect </property>
<property name="connection.username">SYSDBA</property>
<property name="connection.password">*********</property>

<property name="show_sql">false</property>
<property name="format_sql">false</property>
<property name="connection.pool_size">10</property>
<property name="current_session_context_class">thread</property>
  <property name="hbm2ddl.auto">validate</property>
<property name="search.indexing_strategy">manual</property> 
<!-- Use the C3P0 connection pool. --> 
<property name="c3p0.min_size">3</property>
<property name="c3p0.max_size">5</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.max_statements">50</property>


can anyone help me

thanks in advance

claudio

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Friday, January 29, 2016

Re: GWT custom scrollIntoView() implementation



On Friday, January 29, 2016 at 11:47:44 PM UTC+1, Vassilis Virvilis wrote:
Thanks Jens, Thomas for the insight and sorry for the late reply

So should I file a bug report? Or it is somehow taken care and it won't be forgotten?

It's actually already tracked at https://github.com/gwtproject/gwt/issues/8307 (note my comment there, 2½ years ago)

Looks like a good way to start contributing to GWT ;-)

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: GWT custom scrollIntoView() implementation

Thanks Jens, Thomas for the insight and sorry for the late reply

So should I file a bug report? Or it is somehow taken care and it won't be forgotten?

Jens:
I didn't try older versions of chrome (only 47, 48). As I said it works in my simple pages but it fails in a complicated page that is outside my control. Making a minimized version out of it that has the same behavior is not a fun task...

     Vassilis

On Wed, Jan 27, 2016 at 9:19 AM, Thomas Broyer <t.broyer@gmail.com> wrote:
The custom implementation was probably for Safari 3: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView#Browser_compatibility
It's no longer supported in GWT so we could switch to the native implementation nowadays.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--
Vassilis Virvilis

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: GWT generated java code does not compile. No clear explanation given.

Hi Tiago, 

could you please provide an example of how the ListEditorDataProvider works. I have problems moving from my:

ListDataProvider<String> dataProvider;
HasDataEditor<String> dataEditor;

to you ListEditorDataProvider.


Am Montag, 19. November 2012 11:45:49 UTC+1 schrieb Tiago:
Wow, you fixed it right away! Impressive!

Provide me your Bitcoin tip address and I'll send you what I have in my phone as a display of gratitude.

By the way, are you aware of any intentions to make a proper implementation of what I tried to do? A widget that could display a list of items in a table and allow the edition of such list via the Editor framework. I don't think I'd be the only one using it... :-)

Thank you again,
Tiago.

On Monday, November 19, 2012 10:50:18 AM UTC+1, Thomas Broyer wrote:
The problem is that in EditableCellTable your ListEditor is typed with "? extends EditableCellTable.SubEditor<T>". Your EditableCellTable should have an additional parameter type giving the type of SubEditor to use (will be ParamRowEditor in your case):

public class EditableCellTable<T,E extends EditableCellTable.SubEditor<T>> extends CellTable<T> implements IsEditor<ListEditor<T, E>> { … }

And in your view:

@UiField(provided=true) EditableCellTable<OrganizationEntityParamProxy, ParamRowEditor> acceptableParams = …

On Monday, November 19, 2012 10:32:38 AM UTC+1, Tiago wrote:
Hello all,

I'm having a tough issue. GWT is generating a piece of Java code that does not compile. I wonder if any GWT pro here could help me find a workaround or an actual fix to whatever is wrong.

First let me explain what I'm attempting to do. I'm annoyed by the fact that CellTables and the Editor framework don't play well together. So I decided to implement something that could make this two pieces of GWT code interact better.

I started by making a merge between ListDataProvider and ListEditor. The result is the class ListEditorDataProvider attached. This class works fine, and it's all I needed when I didn't want to edit the elements of the list, just the list itself (adding or removing elements, for ex.).

I wasn't yet satisfied, because in some cases I did want to edit the elements of the List. For this reason, I wrote the EditableCellTable class attached, which uses ListEditorDataProvider. The goal is to make the integration between Columns and Editors as smooth as I could, and to reduce some of the boilerplate in user code.
This class got quite complicated, with lots of generics. And I guess my problem lies somewhere in there.

Before actually using the class, my project's code compiled fine. It was only after creating my first instance of EditableCellTable, which would specify actual types to all the generic templates, that I started having errors.

Besides the two classes above, I attach to this mail the generated java class that doesn't compile, an example view using this EditableCellTable, a couple EntityProxies used by the view, as well as an enum. I commented out "utility code" in EditableCellTable, and other pieces of code which don't matter. I tried to remove  package declarations and all other references that could contain my employer's name since I'm not 100% sure they are okay with it.

I was using GWT2.4.0, but I verified that the problem remains on 2.5.0 as well. I'm also using kjordan's fix for issue 6912 provided here. I don't think this fix has anything to do with my problem since it deals with ExtraTypes, but I thought I should mention it since it relates to code generation.

Can anybody help me? I'm totally lost on this one.

Thank you very much in advance for any help given,
--
Tiago Rinck Caveden

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: Unable to install GWT Developer Plugin (ver 1.0.11357) on Chrome 48

The plugin is no longer supported. You'll need to use super dev mode. What version of GWT are you using? 2.7 runs SDM by default.

On Friday, January 29, 2016 at 9:11:52 AM UTC-5, Sambodhan Dhammapathee wrote:
Hi All,

I am new to web technology and preferred GWT. 
I have install as follows:
windows 7, Eclipse Mars 4.5.1, 
Plugin for Eclipse 4.3 (Kepler) (Since for Mars 4.4 Luna is not working, Ref- StackOverflow.com)

GWT Developer Plugin

 1.0.11357, Chrome Version 48.0.2564.97 m

However, even after restarting Eclipse and Chrome I am not able to see application but still gets message that: "

Development Mode requires the GWT Developer Plugin"


Hence, please suggest if I missed anything. PFA for your reference.
Please let me know if you need any other information.

Regards
Sambodhan

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Unable to install GWT Developer Plugin (ver 1.0.11357) on Chrome 48

Hi All,

I am new to web technology and preferred GWT. 
I have install as follows:
windows 7, Eclipse Mars 4.5.1, 
Plugin for Eclipse 4.3 (Kepler) (Since for Mars 4.4 Luna is not working, Ref- StackOverflow.com)

GWT Developer Plugin

 1.0.11357, Chrome Version 48.0.2564.97 m

I am also able to generate URL :http://127.0.0.1:8888/StockWatcher.html?gwt.codesvr=127.0.0.1:9997
However, even after restarting Eclipse and Chrome I am not able to see application but still gets message that: "

Development Mode requires the GWT Developer Plugin"


Hence, please suggest if I missed anything. PFA for your reference.
Please let me know if you need any other information.

Regards
Sambodhan

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: SerializationException

Thanks Jen 

i'll see the docs.




Em quarta-feira, 27 de janeiro de 2016 12:47:30 UTC-2, Jens escreveu:
You are trying to send a collection of java.lang.Object which is not allowed by GWT-RPC. 


As you are using JPA you should also read the section about serializing enhanced classes on the linked page.

-- J.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: background image on panel in GWT


.desktopPanel{
    background-image: url("\cti\gwtdemo\client\images\intelview-bkground.jpg");
    background-color: lightgray;

}

Your image url must point to a valid URL when your app is deployed. I am pretty sure that images inside your java src folder are not available to the browser once deployed. You need to put your images either into "Web Pages/images" so they are part of your deployment or create a folder "cti/gwtdemo/public/images" and put them into that folder. GWT will copy all files in the "public" folder to the module output folder and thus should be available when your .war file will be deployed.

Also with CSS you usually use forward slashes in url().

-- J.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Thursday, January 28, 2016

background image on panel in GWT

Hi all,

I am using Netbeans project,and I have attached image to correct my problem

my problem is in my project I have class extends FlowPanel, I want to add the Image as background on this class. The image from images folder 

I tried css as well as class itself. ie.
the css is
 
.desktopPanel{
    background-image: url("\cti\gwtdemo\client\images\intelview-bkground.jpg");
    background-color: lightgray;

}
 and in the class i have written

public class DesktopPanel extends FlowPanel {

    private final ClientMain cmain;
    Image image = new Image();

    public DesktopPanel(ClientMain cmain) {
        this.cmain = cmain;
        image.setWidth("100%");
        image.setHeight("100%");
        image.setStyleName("backgroundImg");
        image.setUrl("cti\\gwtdemo\\client\\images\\traffic-bkground.jpg");
        addStyleName("desktopPanel");
        // add(new Label("Desktop"));
    }

}

but I could not see the image in Panel. please go through the attached file and correct my problems 

Thanks in advance
Ramanan

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Cell Table keyboard navigation doesn't work in Firefox

The CellTable has a keyboard mode to allow moving around with arrow keys. In Chrome, when moving to an input cell, the cell content is selected (hightlighted), but you can still moving to other cells until you start typeing.

In Firefox, the cell content does not highlight. You have to press enter to start typing.

Is this a known issue? Does anyone know of a work around?

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Wednesday, January 27, 2016

Re: JsInterop and indexed types

Hi Alex, 
really thanks for excellent answers. 

I'm writing portable code. This is the reason why I can not use JS TypedArrays directly.
My code must work in GWT, RoboVM and Android.

I'm looking for writing code in Java once and run it with best possible efficiency on all platforms.

In RoboVM platform we have transparent marshalling of java arrays to native layer 
  int[] -> int *, char [] -> short *, e,t,c  String -> utf8 char *
In Android we use Get\Release PrimitiveArrayCritical for such needs to get underlying pointer in native. No copies. 

We don't have something similar on web. Very unfortunately. 
This is a true reason why I think this is urgent and why I'm asking of it.

As a result, we must implement all computations in two ways
  - in Java for native compilers (RoboVM + Android)
  - in JS for Web

As for avoiding wrapper class. It's nearly impossible in general, since Java arrays are Java objects as well. Consider the following:

This is a goal. And it is nice solve it.
 
Thanks
 -Kirill

    

On Wed, Jan 27, 2016 at 8:43 PM, Alexey Andreev <konsoletyper@gmail.com> wrote:

Sorry for by bad english. 
I meant a different thing.

Oh, now I see. Well, making Java array equal to JavaScript array is not an only solution for passing direct reference to an array. TeaVM could have a method to "unwrap" array, giving a native code reference to `data` field. There is one, but it is like "unsafe" in Oracle JDK: it is not documented and it's not guaranteed to remain its API in future versions. It should look like this:

public static Int8Array unwrapArray(byte[] array) {
    return Platform.getPlatformObject(array);
}
@JSBody(params = "wrapper", script = "return wrapper.data;")
private static native Int8Array doUnwrap(JSObject wrapper);

The magic is in undocumented Platform class, getPlatformObject particulary. It gets a Java object and returns it as JSObject. But do it on your own risk. Also, it's possible to corrupt application by assigning to the array something that does not fit in byte type (a floating point number or a string) or by changing the length of the array.

As for avoiding wrapper class. It's nearly impossible in general, since Java arrays are Java objects as well. Consider the following:

void foo(Object obj) {
    System.out.println(obj.toString());
}
void bar() {
    foo(new int[] { 1, 2, 3 });
}

How could TeaVM implement it without wrapper?

It is possible though to avoid negative effects of wrappers in certains cases, first, as I said, by eliminating unwrap operations when possible, and, second, performing some kind of escape analysis.

Note that the reverse operation (converting JavaScript array to Java array) is impossible in TeaVM by design. TeaVM performs global analysis of your code and for each variable (in terms of SSA) determines its possible types. It's impossible in general case to predict in compile time what actual type method like this may return:

Object wrapPlatformObject(JSObject obj);

I'm not sure how GWT actually works, but I suppose it does something similar, therefore it most likely you will fail with GWT as well. However, it's possible to hardcode additional methods to Platform class that convert JSArray to primitive arrays. You can open an issue if you really are going to use TeaVM for such purpose.

There are JSO wrappers in TeaVM and JSNI wrappers in GWT for TypedArrays. Why don't you use them directly to boost performance?

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/YOWINYAoCrI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: JsInterop and indexed types


Sorry for by bad english. 
I meant a different thing.

Oh, now I see. Well, making Java array equal to JavaScript array is not an only solution for passing direct reference to an array. TeaVM could have a method to "unwrap" array, giving a native code reference to `data` field. There is one, but it is like "unsafe" in Oracle JDK: it is not documented and it's not guaranteed to remain its API in future versions. It should look like this:

public static Int8Array unwrapArray(byte[] array) {
    return Platform.getPlatformObject(array);
}
@JSBody(params = "wrapper", script = "return wrapper.data;")
private static native Int8Array doUnwrap(JSObject wrapper);

The magic is in undocumented Platform class, getPlatformObject particulary. It gets a Java object and returns it as JSObject. But do it on your own risk. Also, it's possible to corrupt application by assigning to the array something that does not fit in byte type (a floating point number or a string) or by changing the length of the array.

As for avoiding wrapper class. It's nearly impossible in general, since Java arrays are Java objects as well. Consider the following:

void foo(Object obj) {
    System.out.println(obj.toString());
}
void bar() {
    foo(new int[] { 1, 2, 3 });
}

How could TeaVM implement it without wrapper?

It is possible though to avoid negative effects of wrappers in certains cases, first, as I said, by eliminating unwrap operations when possible, and, second, performing some kind of escape analysis.

Note that the reverse operation (converting JavaScript array to Java array) is impossible in TeaVM by design. TeaVM performs global analysis of your code and for each variable (in terms of SSA) determines its possible types. It's impossible in general case to predict in compile time what actual type method like this may return:

Object wrapPlatformObject(JSObject obj);

I'm not sure how GWT actually works, but I suppose it does something similar, therefore it most likely you will fail with GWT as well. However, it's possible to hardcode additional methods to Platform class that convert JSArray to primitive arrays. You can open an issue if you really are going to use TeaVM for such purpose.

There are JSO wrappers in TeaVM and JSNI wrappers in GWT for TypedArrays. Why don't you use them directly to boost performance?

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: SerializationException

You are trying to send a collection of java.lang.Object which is not allowed by GWT-RPC. 

See documentation http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html#DevGuideSerializableTypes

As you are using JPA you should also read the section about serializing enhanced classes on the linked page.

-- J.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

SerializationException

hi guys 

i'd received this message

[WARN ] 2016-01-27 11:34:27.291 [qtp26882648-29] / - Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type '[Ljava.lang.Object;' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = [Ljava.lang.Object;@ddf831
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize(Collection_CustomFieldSerializerBase.java:44) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize(ArrayList_CustomFieldSerializer.java:39) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serializeInstance(ArrayList_CustomFieldSerializer.java:51) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serializeInstance(ArrayList_CustomFieldSerializer.java:28) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:789) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:669) ~[gwt-servlet.jar:?]
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:631) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:497) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:589) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373) ~[gwt-servlet.jar:?]
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) [gwt-servlet.jar:?]

my object is

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "SP_OBTEMGRAFICOFINANCEIRO")
public class SpGrafFinanAnual implements Serializable {


private static final long serialVersionUID = 1L;
private int mes;
private int ano;
@Column(name = "RECEITA", nullable = true, columnDefinition="NUMERIC")
private float receita;
@Column(name = "DESPESA", nullable = true, columnDefinition="NUMERIC")
private float despesa;
@Column(name = "FATURAMENTO", nullable = true, columnDefinition="NUMERIC")
private float faturamento;
public SpGrafFinanAnual(){
}
.... getters and setters

i cound't find any solutions around web

the solutions that i found is
  1. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1. 1 - Verify that the class has a default constructor (without arguments)
  2. 2 - Verify that the class implements Serializable or IsSerializable or implements an Interface that extends Serializable or extends a class that implement Serializable
  3. 3 - Verify that the class is in a client.* package or …
  4. 4 - Verify, if the class is not in client.* package, that is compiled in your GWT xml module definition. By default is present. If your class is in another package you have to add it to source. For example if your class is under domain.* you should add it to xml as . Be aware that the class cannot belong to server package! More details on GWT page:http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml
  5. 5 - If you are including the class from another GWT project you have to add the inherits to your xml module definition. For example if your class Foo is in the package com.dummy.domain you have to add to the module definition. More details here:http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideInheritingModules
  6. 6 - If you are including the class from another GWT project released as a jar verify that the jar contains also the source code because GWT recompile also the Java source for the classes passed to the Client.
  7. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
And my object is ok for all of then. somebody can help me

Thanks a lot ! 

Best regards,
Claudio

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: Is there any GWT library to be used in client side that does the same thing as Scalr (scale and reduze image file sizes)?

The fileupload widget can control what kind of files can be uploaded.
There you can restrict the files only to images.

On 25 January 2016 at 18:16, Julio Heitor Nobrega <juliohnobrega@gmail.com> wrote:
Is there a way to see what format the file has? If it isn't an image i'll have to warn the user.

2016-01-25 14:58 GMT-02:00 Julio Heitor Nobrega <juliohnobrega@gmail.com>:
Hi Alain,

nice code! I am going to do this but in a java version code. I just didn't know i could get the image path from a 'value' of the
document.getElementById("fileUpload")
I could even show a image preview to the user before send it to the server!

Or maybe convert the base64 String to byte array, scale it and then send to the server :)

Thanks!

2016-01-25 14:22 GMT-02:00 Alain Ekambi <jazzmatadazz@gmail.com>:
I think what you should to is get the base64  representation of the image from the canvas. Something like 

var p;var canvas = document.createElement("canvas");  var img1=document.createElement("img");     function getBase64Image(){           p=document.getElementById("fileUpload").value;      img1.setAttribute('src', p);       canvas.width = img1.width;       canvas.height = img1.height;       var ctx = canvas.getContext("2d");       ctx.drawImage(img1, 0, 0);       var dataURL = canvas.toDataURL("image/png");alert("from getbase64 function"+dataURL );          return dataURL;  } 
Then send the base64 to the server and corvert it to byterarry or whatever format you need there to save it to disc,



On 25 January 2016 at 17:11, Julio Heitor Nobrega <juliohnobrega@gmail.com> wrote:
Hi Alain,

i am doing exactly that. I am sending the byte array to the server, saving it as a file in a directory and storing the path in a DB column.

My problem is to get the byte array from the file (is it possible to get the byte array using FileUpoad?) and work on it before send to the server.

2016-01-25 13:39 GMT-02:00 Alain Ekambi <jazzmatadazz@gmail.com>:
Would it be a better designer to save the image on disc and just save the link to the image to the DB ? 

On 25 January 2016 at 15:59, Julio Heitor Nobrega <juliohnobrega@gmail.com> wrote:
As a matter of fact, i am beginning to think that its more wise to send the whole image to the server, scale it using Scalr and store it into the DB.

I want to have the control of the image size, test levels of quality. The Scalr has a mode called 'Automatic' that fits your image to the dimensions you pass to it.

None of it i will have with GWT Canvas.

The only drawback i would get using Scalr is that i will consume more bandwidth DigitalOcean  gives me monthly because i will have to send the whole image to the server.

2016-01-25 12:52 GMT-02:00 Julio Heitor Nobrega <juliohnobrega@gmail.com>:
Thanks for your answer Greg!

Actually, i really need a byte array because i will store it in a BLOB database column.

Regards!

2016-01-25 12:43 GMT-02:00 Greg <grz3gorz.nowak@gmail.com>:
Just use context.getCanvas().toDataUrl(); which will return data uri with the contents of the canvas. You can use it directly in <img src=""> element or send it to server.

On Monday, January 25, 2016 at 3:19:03 PM UTC+1, Julio Heitor Nobrega wrote:
I have just found an example (http://c.gwt-examples.com/home/ui/canvas).

The only problem is to convert ImageData to an byte array :)

Regards!



2016-01-25 12:08 GMT-02:00 Julio Heitor Nobrega <julioh...@gmail.com>:
Does anyone have some examples regarding the Canvas class?

I've seen the java doc API but the only methods i think that could be useful was:

Context2d getContext2d()
          Returns a 2D rendering context.
 void setCoordinateSpaceHeight(int height)
          Sets the height of the internal canvas coordinate space. 
void
setCoordinateSpaceWidth(int width)
          Sets the width of the internal canvas coordinate space. 

2016-01-14 16:36 GMT-02:00 Kirill Prazdnikov <pki...@gmail.com>:
Canvas is an DOM Element.
It can render Image Elements to itself in any resolution.
However it may produce not nice results.

It depends on what you need.

On Thursday, January 14, 2016 at 9:17:36 PM UTC+3, Julio Heitor Nobrega wrote:
Hi guys,

thanks everyone for the answers!

Greg,  is Canvas a GWT framework or its a class that belong to GWT itself?

Do you have any example of use?

Regards



Em quinta-feira, 14 de janeiro de 2016 11:25:29 UTC-2, Julio Heitor Nobrega escreveu:
Hi guys,

i am trying to upload images with 2mb size but i don't want to send the whole original image to the server.

What i would like to do is reduce the image dimensions from, for example, 1000x1000 to 50x50 and reduce the file size
from 2mb to ~25kb as well and at the end send the ~25kb image to the server.

I know there is the Scalr framework that does that in java, but its no compatible with GWT clients.

Is there any client side GWT library that does the same thing as Scalr?

Best Regards!


--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/8OfazCLtcLA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-we...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/8OfazCLtcLA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--

Alain Ekambi

Co-Founder

Ahomé Innovation Technologies

http://www.ahome-it.com/

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/8OfazCLtcLA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--

Alain Ekambi

Co-Founder

Ahomé Innovation Technologies

http://www.ahome-it.com/

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/8OfazCLtcLA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--

Alain Ekambi

Co-Founder

Ahomé Innovation Technologies

http://www.ahome-it.com/

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Re: JsInterop and indexed types



On Saturday, January 23, 2016 at 11:09:50 AM UTC+3, Alexey Andreev wrote:

Famous TeaVM also can`t do that, unfortunately. 
 You are wrong. You can do that via @JSIndexer annotation. 

Sorry for by bad english. 
I meant a different thing.

Consider

class A { 
  int [] computeInJava() {...};
}

class B {
  native void aJsMethod(int data[]) /*-   expect reference to original Int32Array in the argument   -*/;
 }

b.aJsMethod(a.computeInJava());

It is not possible to do such things neither in GWT, nor in TeaVM. 
Not TeaVM, not GWT does not allow passing java arrays as native arrays to native JS code without making a copy.

Also, did you try to write benchmarks before claiming that wrapper slows down performance? V8 performs sophisticated performance optimizations. 

You are very right, there is no point talking about performance without real numbers.
I will reply when I write a test and have a results.

Thanks 
 

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.