Close Button in the caption bar of a GWT DialogBox

3

The following code demonstrates how a 'close button' can be placed in the caption bar of a DialogBox . Note that the example uses a HTML object as the close button , it can be replaced by an Image to make it more eye-candy.

/** *PUBLIC SOFTWARE * *This source code has been placed in the public domain. You can use, modify, and distribute *the source code and executable programs based on the source code. * *However, note the following: * *DISCLAIMER OF WARRANTY * * This source code is provided "as is" and without warranties as to performance * or merchantability. The author and/or distributors of this source code may * have made statements about this source code. Any such statements do not constitute * warranties and shall not be relied on by the user in deciding whether to use * this source code.This source code is provided without any express or implied * warranties whatsoever. Because of the diversity of conditions and hardware * under which this source code may be used, no warranty of fitness for a * particular purpose is offered. The user is advised to test the source code * thoroughly before relying on it. The user must assume the entire risk of * using the source code. * */ import com.google.gwt.user.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Event.NativePreviewEvent; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; /** * @author amal * @version 1.0 */ public class MyDialog extends DialogBox { HTML close = new HTML("[X]"); HTML title =new HTML(""); HorizontalPanel captionPanel = new HorizontalPanel(); public MyDialog(boolean autoHide, boolean modal) { super(autoHide, modal); Element td = getCellElement(0, 1); DOM.removeChild(td, (Element) td.getFirstChildElement()); DOM.appendChild(td, captionPanel.getElement()); captionPanel.setStyleName("Caption");//width-100% captionPanel.add(title); close.addStyleName("CloseButton");//float:right captionPanel.add(close); super.setGlassEnabled(true); super.setAnimationEnabled(true); } public MyDialog(boolean autoHide) { this(autoHide, true); } public MyDialog() { this(false); } @Override public String getHTML() { return this.title.getHTML(); } @Override public String getText() { return this.title.getText(); } @Override public void setHTML(String html) { this.title.setHTML(html); } @Override public void setText(String text) { this.title.setText(text); } @Override protected void onPreviewNativeEvent(NativePreviewEvent event) { NativeEvent nativeEvent = event.getNativeEvent(); if (!event.isCanceled() && (event.getTypeInt() == Event.ONCLICK) && isCloseEvent(nativeEvent)) { this.hide(); } super.onPreviewNativeEvent(event); } private boolean isCloseEvent(NativeEvent event) { return event.getEventTarget().equals(close.getElement());//compares equality of the underlying DOM elements } }

Read more »
Labels:

Closing a GWT DialogBox on 'Esc' keypress

0

To have a DialogBox do something on a keyboard event , its onPreviewNativeEvent should be overridden . A DialogBox can be made to hide itself on the 'Esc' key event by overriding it's OnPreviewNativeEvent method as follows

@Override protected void onPreviewNativeEvent(NativePreviewEvent event) { if (!event.isCanceled() && event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) { this.hide(); } super.onPreviewNativeEvent(event); }

Read more »
Labels:

Serializing and De-serializing a Java object to XML

0

A Java object can be serialized as XML using the XMLEncoder

try { XMLEncoder enc= new XMLEncoder(new BufferedOutputStream( new FileOutputStream("<output xml file>"))); enc.writeObject(instance);//instance is the bean object to be serialized enc.close(); } catch (FileNotFoundException e) { }


De-serializing the XML file can be done as follows using the XMLDecoder


try { XMLDecoder dec= new XMLDecoder(new BufferedInputStream( new FileInputStream("<input xml file>"))); MyClass o = (MyClass)dec.readObject(); dec.close(); } catch (FileNotFoundException e) { }

Read more »
Labels: ,

Loading a class using the URLClassLoader

0

The URLClassLoader can be used dynamically load classes from a directory , not necessarily on the classpath. The following code demonstrates how 


File file = new File("<directory path>"); try { URL url = file.toURL(); ClassLoader loader= new URLClassLoader(new URL[]{url}); Class class= loader.loadClass("<class name>"); } catch (MalformedURLException e) { } catch (ClassNotFoundException e) { }

Read more »
Labels: ,

Javascript equality(==) and identity(===) operators

0

The identity operator(===) compares the type and value of the operands , while the equality operator(==) compares just the values .

So , given var i=1

i=='1' will return true , while i==='1' will return false .

Quote from  Javascript : The good parts


JavaScript has two sets of equality operators: === and !==, and their evil twins == and !=. The good ones work the way you would expect. If the two operands are of the same type and have the same value, then === produces true and !== produces false. The evil twins do the right thing when the operands are of the same type, but if they are of different types, they attempt to coerce the values. the rules by which they do that are complicated and unmemorable. 
My advice is to never use the evil twins. Instead, always use === and !==.

Read more »
Labels: ,

Using readResolve method to create a Serializable Singleton

0

The readResolve method allows a class to replace/resolve the object read from the stream before it is returned to the caller. The following code demonstrates how to create a serializable singleton , using the method.



public class Singleton implements Serializable {  static Singleton instance= new Singleton (); private Singleton ()  {  } protected Object readResolve()   {   return instance;  } }

Read more »
Labels: ,

Integer constant pool

0

Java uses a caching mechanism for Integer , similar to the String Pool . It caches the Integer values from -128 to 127 , meaning '==' comparisons for values in this range returns true .

Integer a=127; Integer b=127; System.out.println(a==b);//prints true a=128; b=128; System.out.println(a==b);//prints false

Read more »
Labels: ,
© Zone817. Powered by Blogger.