Changelog

J2ME Polish 2.0.6

J2ME Polish 2.0.6 provides following improvements:

  • - RMI: primitive array return types are now handled correctly.
  • - MIDP1: MIDP 1 compatibility is restored
  • + RedirectHttpConnection: connection errors are now forwarded to the application
  • + Device DB: Improved device definitions, added new BlackBerry groups.
  • + TabbedForm: TabbedForm now allows cycling of items when reaching the last or first item.
  • + Middle Commands: When you activate middle commands, item default commands are now automatically being used as middle commands, no matter what type and priority they have.
  • + RSS: Feeburner links are now not displayed anymore.

J2ME Polish 2.0.5

J2ME Polish 2.0.5 is a bugfix release with following improvements:

  • - Screen Change Animations: Screen Change Animations work fine when not using a fullscreen mode
  • - TableItem: Allows to add interactive elements.
  • - Generic/AnyPhone: works now reliable over more devices.
  • - Many more fixes: there are a lot of more fixes - information follows soon.`

J2ME Polish 2.0.4

J2ME Polish 2.0.4 is a bugfix release with following important improvements:

  • - MIDP 1.0 Support: MIDP 1.0 devices are supported again.
  • - null RMI Parameters: Sending null as a method parameter to a remote server using RMI now works.
  • - TextFields in FramedForms: text input in frames of a FramedForm works again.
  • + Dynamic Tabs in TabbedForm: Thanks to Craig Newton we now have dynamic tabs - use addNewTab(String, Image) to add, and removeTab(int) to remove a tab.

J2ME Polish 2.0.3

Generic/AnyPhone

The biggest news is that you can now build applications that run on any MIDP based handset byt targeting the Generic/AnyPhone in your build.xml script. Use following code snippet to achieve this:

<deviceRequirements>
	<requirement name="Identifier" value="Generic/AnyPhone" />
</deviceRequirements>

Free OTA Service for Developers

Visit http://ota.j2mepolish.org for uploading your builds to our free OTA service. You can upload both private and public content. More documentation can be found on ota.j2mepolish.org.

Further 2.0.3 Changes

Furthermore following changes have been done since J2ME Polish 2.0.2:

  • - Memory Leak: The item command handling contained a now fixed memory leak.
  • - Clear Key: Clear key does not delete several characters in one go anymore.
  • - Form.set(int, Item): Setting an item did not adjust scrolling of the form.
  • - Password TextField Caret: The caret position of a password TextField was calculated wrongly.
  • - Phonenumber TextField: A phonenumber input now allows to enter a plus for international country codes by pressing '0' for a long time.
  • - RGB handling: now the new DrawUtil.drawRgb(...) method is used for the J2ME Polish internal RGB handling, so it now works on Samsung devices as well under all circumstances.
  • + Browser back command: You can now call browser.setBackCommand(Command cmd) on any HtmlBrowser and RssBrowser. The back command will now be dynamically added and removed depending on the history size of the browser.
  • + Browser FormListener: Use a FormListener to change and check form inputs before they are shown or send.
  • + TableItem: Use the TableItem to display dynamic tabular data.
  • + Lots of new UI Features: Browse the visual guides and you will find a lot of new UI features like using a specific layout for the first and/or last item of a container/List/menu/etc, using new backgrounds or new TextEffects like the split text-effect, and so on.

J2ME Polish 2.0.2

Following changes have been done since J2ME Polish 2.0.1:

  • - Builds for MIDP 1.0 without J2ME Polish UI: Building projects for MIDP 1.0 devices compile again when the J2ME Polish UI is deactivated.
  • - FilteredList: in some circumstances an invalid filtered list entry was returned in FilteredList.getSelectedIndex()
  • - Series 60 E2 FP3: fixed screen size detection for Series 60, second edition, feature pack 3 devices.
  • - Sony Ericsson Platform 8: Added bug definitions for Sony Ericsson Java Platform 8 devices, setting middle soft key commands correctly.
  • + BigInteger: Added de.enough.polish.math.BigInteger for applications relying on java.lang.BigInteger which is not available on MIDP/CLDC handsets.
  • + TextField caret position: Jumping to the last character when a textfield is being focused
  • + Left To Right Languages: Added experimental support for left-to-right languages. Set the polish.i18n.rightToLeft preprocessing variable to enable this support.
  • + Logging: user defined logging levels that are used within //#debug preprocessing directives now have a lower priority than the debug level. You can activate all applicable user defined levels using the levels attribute of the <debug> element:
    <debug verbose="true" level="warn" levels="timing, memory" />
    
  • + Content Distribution: added support for content deployment using the mea archive type - we will be launching an accompanying free OTA service for developers soon:
    <lifeCycleManager name="mea" />
    

J2ME Polish 2.0.1

Following changes have been done since J2ME Polish 2.0:

  • - Builds without J2ME Polish UI: Building projects that do not use the J2ME Polish UI do compile again.
  • - Builds for MIDP 1.0: Building projects for MIDP 1.0 devices compile again.
  • - SGH-E900: added ignoreTitleCall bug for correct rendering of the title
  • - Invocation of Command with FIRE: OK commands are now invoked after releasing the FIRE key, not when pressing the FIRE key. This caused problems in some situations.
  • - IDE Integration: Classpaths are now resolved and named correctly on Windows systems
  • - Screen.getCommandItem(): Fixed NullPointerException when there were no commands available on a screen
  • + POPUP ChoiceGroup: You can cycle through all items of a POPUP ChoiceGroup after you have reached the last item when setting popup-roundtrip to true in the ChoiceGroup's style.
  • + Content Types of HTML and RSS pages: The content types of remote pages are now honored by the HtmlBrowser and RssBrowser.
  • + ThreadedItemCommandListener: added de.enough.polish.event.ThreadedItemCommandListener.
  • + ChoiceGroup Items: you can now deactivate the painting of ChoiceGroup check and radioboxes for the selected elements as well by specifying radiobox-selected: none; or checkbox-selected: none;.
  • + horizontal-gradient background: Added the horizontal-gradient background as a design option.
  • + visible CSS attribute: You can now toggle the visibility of items using the visible CSS attribute. You can change the style using UiAccess.setStyle( screen/item ) or using the change-styles CSS attribute (see below).
    .invisible {
    	visible: false;
    }
    
    .visible {
    	visible: true;
    }
    
  • + change-styles CSS attribute: You can now change styles of child items of a Container/Screen/ChoiceGroup using the change-styles CSS attribute without doing any programming:
    .result {
    	always-include: true;
    	margin: 2;
    	background-color: silver;
    	view-type: midp2;
    	view-type-sequential-traversal: true;
    	layout: expand;
    	change-styles: visible > invisible;
    }
    
    .result:hover {
    	margin: 0;
    	border-color: #222;
    	border-width: 2;
    	change-styles: invisible > visible;
    	background {
    		type: horizontal-gradient;
    		left-color: white;
    		right-color: #ccc;
    	}
    }
    

J2ME Polish 2.0

Following changes have been done since J2ME Polish 2.0 RC4:

  • - RMI: Remote methods without parameters are supported now. Server side exceptions are handled better. Re-enabled obfuscation support. Fixed handling of Nokia Series 40 3rd edition phones. Handled synchronization for cases in which a remote call is triggered immediately after calling RemoteClient.open() on Sony Ericsson phones. Used connections are cleaned up correctly on Motorola devices. Added support for switching between obfuscated and normal builds.
  • - Gauge: fixed setValue() when there is a view-type attached to a gauge.
  • - Floater: fixes for Math.toRadians(), Math.toDegrees() and DataInput.readFloat() and handling of float and double arrays.
  • - Bytecode Extensions: classloading fix
  • - ScrollIndicator: Foxed positioning of default scroll-indicators.
  • - Browser: busy indicator is removed correctly now every time, navigation works correctly after an invalid URL has been selected.
  • - Scrolling: when there is static text at the beginning of a Form and the first interactive element is selected automatically, the Form will not scroll automatically.
  • - MenuBar: fixed menubar layout for screens with margins
  • - Alert: alerts that are placed without specifying the next screen do always return to the previous shown screen.
  • - popup: background of popup screens is painted correctly on Sony devices when repaint-previous-screen has been specified.
  • - BlackBerry: the focus between textfields is now handled correctly on devices with trackballs. The correct JDE is now used for building devices with or without trackballs when blackberry.home points to the directory containing various JDEs. Icons are now supported for JDEs before the JDE 4.2, too.
  • - SnapshotScreen: snapshots are now also possible on Series 40 devices.
  • - FramedForm: fixed handling of key events and positioning of top/bottom frames, added deleteAll() and delete() methods
  • - Utils: fixed classpath in the batch files of the FontEditor and the BinaryEditor
  • - POPUP ChoiceGroups: lists that are longer than a page are painted and scrolled correctly.
  • + ThreadedCommandListener: added de.enough.polish.event.ThreadedCommandListener and AysnchronousCommandListener
  • + AysnchronousItemCommandListener: added de.enough.polish.event.AysnchronousItemCommandListener
  • + screen change animations: added fade, particle, gradient, zoomBoth and diagonal animations.
  • + ImageUtil: the scale() methods can now scale down images as well.
  • + RssBrowser: the RssBrowser displays RSS 2.0 content
  • + WYSIWYG Designer: the WYSIWYG designer in ${polish.home}/bin allows you to design existing applications without needing to know CSS and with direct visual feedback to the designer. Note that this is merely a preview to the full designer.
  • + Ticker: you can now add several tickers to a Form by calling UiAccess.append( ticker, form ).
  • + Build List: You can generate the list of devices as well as the list of generated JAD and JAR files using the buildlist finalizer:
    	<finalizer name="buildlist" />
    
  • + HTML and WML Export: You can generate simple HTML and WML pages that contain links to the JAD files for all generated applications:
    	<taskdef name="buildlist" XXX TBD XXX />
    
  • + Programmatic Styles: It's now much easier to change and generate styles programmatically, e.g. by calling style.setAttribute(short id,Object value).
  • + menubar-style, leftcommand-style, rightcommand-style, middlecommand-style, menu-style: You can now use these CSS attributes for using screen specific menu/menubarstyles when using the extended menubar:
    .mainScreenMenu  {
    	margin-right: 10;
    	margin-left: 10;
    	padding: 4;
    	layout: right | bottom | horizontal-shrink | vertical-shrink;
    	repaint-previous-screen: true;
    	background {
    		type: round-rect;
    		color: #8ff0;
    	}
    	menubar-style: .mainScreenMenuMenuBar;
    }
    
    .mainScreenMenuMenuBar extends menubar {
    	background {
    		type: round-rect;
    		color: #8ff0;
    	}
    	background-type: simple;
    	leftcommand-style: .mainScreenMenuLeftCommand;
    	rightcommand-style: .mainScreenMenuRightCommand;
    }
    
    .mainScreenMenuLeftCommand {
    	font-color: black;
    	font-style: bold;
    	text-effect: outline;
    }
    
    .mainScreenMenuRightCommand {
    	layout: right;
    	font-color: green;
    	font-style: bold;
    }
    
  • + Item Commands: When using the extended menubar and targeting devices that have a defined polish.key.MiddleSoftKey capability, the item command with the highest priority will be placed in the middle of the menubar. You can force item commands for other devices as well, by setting the preprocessing variable polish.MenuBar.useMiddleCommand to true. It can be designed using the middlesoftkey CSS style:
    leftcommand
    {
    	margin: 0;
        margin-horizontal: 10;
    	padding-top: 5;
    	padding-bottom: 0;
    	font-color: black;
    	font-style: bold;
    	text-effect: shadow;
    	text-shadow-color: #ff0;
    }
    
    rightcommand extends leftcommand
    {
    	layout: right;
    }
    
    middlecommand extends leftcommand {
    	layout: center;
    	/* lifting the center command by moving it upwards relative 
    	 * to the left and right command (which have a padding-top of 5): 
    	 */
    	padding-top: 1;
    }
    
  • + TextField/info: The info element that displays the current input mode for TextFields can now be moved into TextFields as well by specifying the polish.TextField.includeInputInfo preprocessing variable in your build.xml script:
    <variable name="polish.TextField.includeInputInfo" value="true" />
    
  • + Libraries: You can now use variables within paths to binary libraries, e.g.
    <libraries>
    	<library file="libs/${polish.vendor}/external.jar" />
    </libraries>
    
  • + QWERTY Support: now supporting qwerty style keyboards on Nokia E70, E61, communicator devices
  • + Screen Orientation Change: Devices that can change their screen orientation are now supported
  • + Right Aligned Menubar: On Nokia communicator the menubar is positioned on the right side of the screen
  • + FilteredList/FilteredChoiceGroup: the FilteredList and FilteredChoiceGroup allows you to narrow down searches by entering input
  • + Animations: improved animation handling, now only animated parts are refreshed in the next paint cycle
  • + Predictive Text Input: You can use predictive text input when setting both polish.TextField.useDirectInput and polish.TextField.usePredictiveInput to true in your build.xml:
    <variables>
    	<variable name="polish.TextField.useDirectInput" value=="true"/>
    	<variable name="polish.TextField.usePredictiveInput" value=="true"/>
    </variables>
    
  • + String[] Based Predictive Input: When activating predictive input you can even limit input to a specified String array by using UiAccess:
    TextField field = new TextField("What do you target", null, 30, TextField.ANY);
    String[] allowedWords = new String[]{ "J2ME", "Java", "Windows Mobile", "Linux", "OS X" };
    UiAccess.setPredictiveDictionary( field, allowedWords)
    
  • + Smiley Support: you can now use the "smiley" text effect for showing smileys within StringItems and TextFields (more information to follow).
  • + Various View Types: added new view-types like fisheye for Lists or Containers, gauge-cycling-spheres for Gauges, verticalfixed for Forms and Lists and so on.
  • + Resource Assembling: you can now choose to include all subfolders but not the root directory itself. It's also possible to exclude files:
    <resources
    	dir="resources"
    	excludes="readme.txt"
    >
    	<root dir="resources/templates" includeSubDirs="true" includeBaseDir="false" exclude="CVS" />
    </resources>
    
  • + 'combined' Background: combine any number of backgrounds using the combined background:
    
    backgrounds {
    	titleForeground {
    		type: polygon;
    		points: 10,50 50,10 90,50 50,90;
    		color: #00f;
    		scale-mode: proportional;
    		anchor: right | vcenter;
    	}
    	titleBackground {
    		type: combined;
    		foreground: titlePolygonLeft;
    		background: titleGradient;
    	}
    	
    	titlePolygonLeft {
    		type: polygon;
    		points: 10,50 50,10 90,50 50,90;
    		color: #00f;
    		scale-mode: proportional;
    		anchor: left | vcenter;
    	}
    	titleGradient {
    		type: vertical-gradient;
    		top-color: white;
    		bottom-color: blue;
    	}
    }
    
    title {
    	padding: 2;
    	margin-top: 0;
    	margin-bottom: 5;
    	margin-left: 0;
    	margin-right: 0;
    	font-face: proportional;
    	font-size: large;
    	font-style: bold;
    	font-color: brightFontColor;
    	border: none;
    	layout: horizontal-center | horizontal-expand;
    	
    	background {
    		type: combined;
    		foreground: titleForeground;
    		background: titleBackground;
    	}
    }
    
    
  • 'mask' Background: You can bring any background in any shape and optionally make it translucent by using the mask background:
    
    backgrounds {
    	
    	maskBackground {
    		type: polygon;
    		points: 5,90 55,0 105,90 155,0 205,90;
    		reference-width: 210;
    		reference-height: 100;
    		scale-mode: scale;
    		color: maskColor;
    	}
    	
    	gradientBackground {
    		type: vertical-gradient;
    		top-color: white;
    		bottom-color: blue;
    	}
    	
    }
    menubar {
    	margin: 0;
    	padding-top: 3;
    	padding: 2;
    	background {
    		type: mask;
    		mask: maskBackground;
    		mask-color: maskColor;
    		background: gradientBackground;
    		opacity: 150;
    	}
    }
    

J2ME Polish 2.0 RC4

Following changes have been done since J2ME Polish 2.0 RC3:

  • + CSS Calculations: You can use simple arithmetic calculations within numerical CSS attributes now:
    .myMenuElement {
    	padding: 2;
    	padding-left: 2 + imagewidth( before.png );
    	min-height:2 + imageheight( before.png ) + 2; /* padding-top + content + padding-bottom */
    }
    .myMenuElement:hover {
    	padding-left: 2;
    	before: url( before.png );
    }
    
  • + TabbedForm Control: You can control the TabbedForm better by registering a TabbedFormListener.
  • + Improved NetBeans: In the NetBeans module you can now select target devices by API support
  • + ScreenInfo Animation: ScreenInfo is now also being animated
  • + Motorola: Improved Motorola emulator support
  • + Commands: Added methods for deactivating commands via UiAccess.setAccessible().
  • + BlackBerry trackball: TrackBall navigation is now supported on BlackBerry (thanks to the nice folks of Earthcomber)
  • + BlackBerry password: Password TextFields are now supported on BlackBerry
  • + ScreenHistory: ScreenHistory provides a navigation history for typical mobile applications.
  • + Emulator transient mode: UEI emulators can now be started in the transient mode (install, run and deinstall) by specifying transient="true" in the <emulator> section.
  • - Device Database: Fixed wrong Samsung definitions
  • - Pointer Events: Fixed handling of pointer events for FramedForm
  • - Installer: Installer on Mac OS X with Java 1.4 now allows correct selection of folders
  • - Decimal TextField: Decimal TextFields now work correctly and allow the input of dot separated numbers.
  • - Commands on S60: Commands are now supported on S60 phones without activating the "menu" fullscreen mode.
  • - RMI Security Exception: a SecurityException now results in a RemoteException
  • - CustomItem.invalidate: massive size changes are now detected and handled in CustomItem.invalidate().
  • - Scrolling: Jumping from the last to the first item now works as expected.
  • - PullParser: Renamed PullParser to SimplePullParser for limiting name clashes with KXML when the useDefaultPackage option is used for the <obfuscator> element.
  • + Documentation: Improved documentation.