This notebook is a collection of code snippets and technical "how to" instructions.
Search This Blog
Using the gwt KeyHandler instead of KeyboardListener
by: Phil{
searchBox.addKeyDownHandler(new KeyDownHandler()
{
public void onKeyDown(KeyDownEvent event)
{
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
{
search(searchBox);
}
}
});
}
Using the gwt ClickHandler instead of TableListener
by: Phil{
return new ClickHandler()
{
public void onClick(ClickEvent event)
{
//instead of casting the former sender as a FlexTable, use the original table
Cell cell = table.getCellForEvent(event);
int row = cell.getRowIndex();
int col = cell.getCellIndex();
//original code here
}
}
iPhone and other mobile devices hacked via SMS
by: PhilAppEngine Date field editing
by: Uki D. LucasWhen you have a Java Date field in the AppEngine JDO and try to enter the new value using Google Web interface:
Using the appengine database
by: TrevorMouse Button Click
by: Jordan Beckif(event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT)
{
GWT.log("Right Click", null);
}
else
{
GWT.log("Left Click", null);
}
smartclient.com GWT
by: Uki D. LucasGWT 1.6: "removeClickHandler" solution
by: Jordan BeckFocusPanel focus = new FocusPanel();
HandlerRegistration registration = focus.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent event)
{
// Panel has been clicked
}
});
registration.removeHandler();
KeyPressEvent: Getting the key code
by: Jordan BeckTextBox box = new TextBox();
box.addKeyPressHandler(new KeyPressHandler()
{
public void onKeyPress(KeyPressEvent event)
{
// Listen to key event
}
});
You can use event.getCharCode() to get the character that was pressed, but in order to get the key code (int) that was pressed you need to use the following method:
event.getNativeEvent().getKeyCode()
So here is code to listen to when the "Enter" key is pressed:
TextBox box = new TextBox();
box.addKeyPressHandler(new KeyPressHandler()
{
public void onKeyPress(KeyPressEvent event)
{
if (KeyCodes.KEY_ENTER == event.getNativeEvent().getKeyCode())
{
System.out.println("Enter key has been pressed");
}
}
});
Apple Tablet
by: Uki D. Lucashttp://mashable.com/2009/07/27/apple-tablet/
Name: Touch Book Pro?
Alerting Visitors when JavaScript is Disabled
by: David WolvertonThe web site we're developing is JavaScript based, so we need to warn users if they come to our site with JavaScript disabled. The easiest way to do this is to use the HTML <noscript> tag (http://www.w3schools.com/TAGS/tag_noscript.asp).
For example:
<head>
<script ...
</script>
</head>
<body>
<script ...></script>
<noscript>
<div class="noscript-warning">
<h1>Please turn on JavaScript to use this site.</h1>
<p>
It seems that you have JavaScript turned off. You will need
to turn it on in order to use this site.
</p>
</div>
</noscript>
</body>
The contents of the <noscript> tag will only be displayed when JavaScript is disabled. When JavaScript is enabled, the tag and its contents will not be displayed at all.
Google Wave beyond the sandbox
by: Uki D. LucasJavaScript: browser type and version detection
by: Zainab Aziz<script>if (navigator.userAgent.toLowerCase().match("safari") && navigator.userAgent.toLowerCase().match("version/4")) {window.alert("Detected Safari 4 browser!!");}</script>
Re: [gtug-managers] Gain potential members...
by: Uki D. Lucasit is really not difficult to get a LOT of people attending your GTUG....
Create Event Brite account:
http://chicago-gtug.eventbrite.com/
Create a Meetup.com account:
http://www.meetup.com/chicago-google/
Create a Facebook account:
http://www.facebook.com/group.php?gid=57657640517
Have people following you on Twitter using your specific hashtag (our is #ChiGTUG):
http://twitter.com/#search?q=ChiGTUG
respectfully,
Uki Dominque Lucas
principal @ The Revere Group, an NTT Data Company (Nippon Telegraph &
Telephone Corp.)
Hi.
I have a little problem... well, I don't know a lot of people and I don't know a good way to reach people for the club. Yeap... sounds stupid because I created the group, but that's my initiative I mean I have to motivate people to join the group.
So any idea ? ... little advice ? ... anything it's really appreciated and well... this is the best place to ask
ales
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "gtug-managers" group.
On Jul 21, 2009, at 11:36 PM, ales wrote:
>
> Hi.
>
> I have a little problem... well, I don't know a lot of people and I
> don't know a good way to reach people for the club. Yeap... sounds
> stupid because I created the group, but that's my initiative I mean I
> have to motivate people to join the group.
>
> So any idea ? ... little advice ? ... anything it's really appreciated
> and well... this is the best place to ask
>
> ales
Terminal: RSA host key verification error
by: Zainab AzizEntrepreneurial Thought Leaders
by: Uki D. Lucashttp://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80867514
few valuable lessons out of this one:
GWT 1.7 using ChangeHandler on ListBox (drop-down)
by: Uki D. LucasFlexible USB keyboard
by: Uki D. LucasThis keyboard is incredibly flexible and the buttons have a real "press down" feeling to them, but as with any new keyboard there is much getting used to be overcome.
The seller advertised it as indestructible, so if you work in the chemical lab, or eat a lot of pizza while typing, that may be a good choice.
I like it because it is super light, flexible and lays down on the table which is good for my wrists. There are only blue and black versions available.
Works both with Mac and Windows.
After using it for few days I have the following problems:
- pressing buttons is a little harder than normal keyboard
- you have to be more precise
- space bar does not get pressed way too often and I end up with words stuck together
- arrows placement is terrible
- Windows/Apple special button is too small for as often as I use it
- backspace is too small
Ant: TAR and GZIP task
by: Zainab Aziz<tar destfile="${dist}/manual.tar" basedir="htdocs/manual"/><gzip destfile="${dist}/manual.tar.gz" src="${dist}/manual.tar"/>
Maven, GWT, and Eclipse round 2
by: TrevorPrerequisites:
Eclipse 3.4
Google Eclipse Plugin
m2eclipse plugin
Create your gwt project:
Create a pom for your project:
Edit the pom to look like this (profiles and resource filtering are definitely not needed and can be removed) and add any other jars you may need for your project:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.application</groupId>
<artifactId>Application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<outputDirectory>war/WEB-INF/classes</outputDirectory>
<testSourceDirectory>test</testSourceDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>src</directory>
<includes>
<!--
This will include all files in the root source like
log4j.properties or applicationContext.xml
-->
<include>*.*</include>
<!--
This will include all files in client: 1. so this project can be
inherited by another project (needs java files) 2. will include
image files for image bundles
-->
<include>**/client/**</include>
<!-- This will include any css and image files in the public folder -->
<include>**/public/**</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
</resources>
<filters>
<!--
This tells which file to use for filtering, ${target} gets replaced
by the target property specified in your profile
-->
<filter>src/${target}.properties</filter>
</filters>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<!--
This plugin will copy dependencies into the right outputDirectory
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<outputDirectory>war/WEB-INF/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>google-maven-repository</id>
<name>Google Maven Repository</name>
<url>http://google-maven-repository.googlecode.com/svn/repository/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>1.0.2.final</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>transaction-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-jpa</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_3.0_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo2-api</artifactId>
<version>2.3-ea</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>transaction-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>local</id>
<properties>
<target>local</target>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<target>prod</target>
</properties>
</profile>
</profiles>
</project>
You'll have to install some of the jars into maven manually, they aren't really keeping up to date with these things. For the datanucleus-appengine-1.0.2.final.jar you have to use the one that was placed in the lib folder and run this command
mvn install:install-file -DgroupId=com.google.appengine.orm -DartifactId=datanucleus-appengine -Dversion=1.0.2.final -Dpackaging=jar -Dfile=/path/to/file
At this time I would enable maven (I got some error message but just hit ok):
If you are using profiles (you probably have an error in your project at this point) tell maven which active profile to use:
You'll get a message if you want maven to update your project, hit ok.
You're done, just ignore the warning about the missing gwt-servlet.jar, it will be there, just named differently.
now we just need to make an ant build.xml to make compiling, and deploying easy.
<project name="Application" default="java_compile" basedir=".">
<property file="./src/local.properties" />
<target name="java_compile" description="Java compile, filter resources, copy jars">
<echo>Make sure you have set up Maven Executable in ./src/local.properties</echo>
<echo>Your mvn exe is set to ${MAVEN_EXEC}</echo>
<!-- process-resources filters the files in the resources directory and copies them to target/classes -->
<!-- dependency:copy-dependencies copies the dependencies to the target/dependency folder -->
<delete dir="war/WEB-INF/lib" />
<exec taskname="compile project" dir="${basedir}" executable="${MAVEN_EXEC}">
<arg line="clean process-resources compile dependency:copy-dependencies -P local" />
</exec>
</target>
<path id="project.class.path">
<pathelement location="war/WEB-INF/classes" />
<pathelement location="${gwt.sdk}/gwt-user.jar" />
<fileset dir="${gwt.sdk}" includes="gwt-dev*.jar" />
<!-- Add any additional non-server libs (such as JUnit) -->
<fileset dir="war/WEB-INF/lib" includes="**/*.jar" />
</path>
<target name="gwt_compile" description="GWT compile to JavaScript" depends="java_compile">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="src" />
<path refid="project.class.path" />
</classpath>
<!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
<jvmarg line="-Xmx512M" />
<!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
<arg value="com.demo.application.Application" />
</java>
</target>
<target name="create_war" depends="gwt_compile">
<echo>Creating the war file in target/Application.war</echo>
<zip destfile="target/Application.war" basedir="war" encoding="UTF8"/>
</target>
</project>
then our local.properties file needs to look something like this
gwt.sdk=/path/to/gwt-os-1.7.0
MAVEN_EXEC=/path/to/mvn.exe
Once that is done you need to run "ant java_compile" to copy the jars into the war/WEB-INF/lib folder. And every time you change the dependencies you'd want to run "ant java_compile"
Now if you ever want to simply create a war file without using eclipse you can just run "ant create_war"
Eclipse not showing code errors (in red)
by: Uki D. LucasGoogle Web Toolkit 1.7 (GWT) in Eclipse 3.4
by: Uki D. LucasYouTube.com warns Internet Explorer (IE6) users
by: Uki D. LucasThis market pull was previously demonstrated with Flash plugin -- lot people downloaded the Flash plug in just to view movies on YouTube.com
Now users are asked to download Google Chrome, IE8, or Firefox 3.5 (Opera and Safari are not listed).
Our hats off to YouTube.com!
Installing GWT 1.7 with Maven2
by: Uki D. Lucas
GWT 1.7 is released
by: Uki D. LucasiPhone presentation
by: Philif you have any questions let me know: philip.wodarczyk@gmail.com
App Engine Presentation
by: Jordan Beckhttp://code.google.com/appengine/
The video on that page was the first video I watch on App Engine and goes over the exact same thing I went over in my talk. It was a great first meeting. I'm looking forward to meeting more people and exchanging more ideas. Enjoy!
Facebook and OpenSocial presentations
by: David WolvertonFacebook Connect
- Facebook Connect: http://developers.facebook.com/connect.php
- Facebook4GWT: http://code.google.com/p/facebook4gwt/
- Facebook4GWT Article: http://ukitech.blogspot.com/2009/06/integrate-your-gwt-app-with-facebook-in.html
OpenSocial
- Home page - http://www.opensocial.org/
- Developers site - http://code.google.com/apis/opensocial/
- List of social networks - http://wiki.opensocial.org/index.php?title=Containers
- List of apps - http://directory.opensocial.org/gadgets/directory?synd=cad
- Gmail integration video - http://www.youtube.com/watch?v=OSmZnWv0Dus
Maven and GWT
by: TrevorI also hope I didn't bore everyone too much since I got really technical. I will post later with updates and better comments on how everything works together. Next time we definitely need to have fewer presenters and more time for talking / mingling.
Google Technology (to jump-start your next big idea)
by: Uki D. Lucas- Introduction
5:30 PM - Gregory Kick (Google.com)
- GData, Guice, Google collections
5:45 PM - Jordan Beck (Revere Group)
- hosting on Google Code
- GWT and Google AppEngine
- Photo Carousel example Widget
6:05 PM - David Wolverton (Revere Group)
- Facebook for Google Web Toolkit
6:30 PM - Trevor Skaife (Revere Group)
- Maven2 dependencies with Google Web Toolkit
6:45 PM - David Wolverton (Revere Group)
- OpenSocial
- Google Friend Connect for Google Web Toolkit
7:00 PM - David Lo (Revere Group)
- Building mobile applications with Android
7:15 PM - Phil Wodarczyk (Revere Group)
- Building application with iPhone (cool bonus presentation)
7:30 PM - 8:00 PM
- Questions and Answers
------------------------------------------------
Purpose of these meetings:
- think tank
- open source project support
- new idea/start-up incubator
New generation of websites using social networking:
Twitter Search URLs
by: David WolvertonHere are some examples of searches you can do and the link that Twitter uses:
Search for fireworks:
enter: fireworks
link: http://twitter.com/#search?q=fireworks
Search for tweets with "fireworks" and "Chicago"
enter: fireworks Chicago
link: http://twitter.com/#search?q=fireworks chicago
Search for tweets with the exact phrase "Chicago fireworks":
enter: "Chicago fireworks"
link http://twitter.com/#search?q="Chicago fireworks"
Search for tweets with the exact phrase "Chicago fireworks" and "3rd of July":
enter: "Chicago fireworks" "3rd of July"
link http://twitter.com/#search?q="Chicago fireworks" "3rd of July"
What is a browser?
by: Uki D. Lucas"OpenSocial is a set of common APIs that is implemented by... yada, yada"
hmm.. maybe not...
"Nobody likes to sign up to yet another new website, in fact is costs companies millions in marketing of dollars. However, joining by clicking a familiar Google Friend Connect icon seems to pose no obstacle..."
Adding Twitter feed widget to your Website
by: Uki D. Lucas<script language="javascript">
Google announces "Chrome OS"
by: Uki D. LucasGetting GWT working from SVN
by: Uki D. Lucas2) run ant to download the Maven2 dependencies locally and copy them
to the war/WEB-INF/lib
3) refresh Eclipse project so it knows that new jars are there
4) remove jars from Project -> Properties -> Java Build Path
5) add all jars from the war/WEB-INF/lib to make sure Eclipse knows
the exact set of jars the pom.xml had