TotalCross (totally cross-platform) is a mobile development platform for PDA and smartphones. Using the Java language it makes possible to develop portable applications to deploy in a wide range of market smartphones without any adaptation in the source code (“write once run anywhere” concept) since TotalCross virtual machine has been installed. TotalCross has replaced SuperWaba platform, that was discontinued, and applications can be easily converted to run over this new platform using SW2TC tool which is included in the new SDK.

The new TotalCross virtual machine (entirely rebuild) has a better performance due to a new instruction set that eliminates limitations in the existing SuperWaba virtual machine, with enhancements such as unlimited object size, preemptive threads and a new high-performance garbage collector that is 20 times faster than the older one. Additionally, deployed files are now compacted, to achieve a 30% reduction in size over SuperWaba applications.

New features were also added to the TotalCross SDK, including network connectivity management support, component editing with masks, applications without graphical interface, line and bar graphs, preemptive threads, SSL support and native implementation of the most used encryption algorithms, an unlimited sized anti-aliases fonts and support for screen rotation on devices like the Tungsten TX, Qtec, iPhone etc.

· The DEMO version will work during 80 hours of continuous use. After this period, you are allowed to hard-reset the device and install it again.

What's New in This Release:

· fixed the load of TCZ libraries in Android

What's New in 1.52:

· fixed ios 5 support.
· fixed support for dual-sim devices. now the imei is always returned from the first sim.
· changed expiration vm message when activating
· fixed DataStream not throwing EOS exception when the end has reached.
· fixed scanner library sometimes overwritting the end of a memory chunk
· added DataStream.writeSmallString8
· fixed whiteboard not working correctly since some events were being dropped.
· now we disable the click button in Camera after it is clicked to prevent the vm from aborting.
· fixed Edit not opening virtual keyboard on WM6 when mode is CURRENCY
· fixed ToolTip taking the whole screen when the screen is rotated
· added default protected HttpScream constructor and made init protected.
· now ListBox.itemHeightFactor is cached by the ListBox in the constructor. This allows you to change the itemHeightFactor for a single ListBox.
· now FontGenerator does not break when a invalid char is found.
· added sample code for Tree's javadocs
· fixed cursor position of masked Edits using the old font
· fixed Radio in uiVista not changing appearance when state was changed from enabled -> disabled -> enabled
· fixed problem of disabled controls receiving focus_in and focus_out events
· fixed problem of a PRESS on a Button inside a TabbedContainer calling the press listener of the TabbedContainer.
· fixed ComboBox problem of clicking on an open combobox was making it open again
· prevent NPE on onPaint of PushButtonGroup
· avoid npe if MultiEdit is just added to a container but has no size
· now Vm.exec can be used to generate the logcat from within the program. see javadocs.
· fixed GPSView(readInterval) calling the wrong constructor
· fixed AIOOBE in Edit when setting a number bigger than the number of 9's in the mask
· fixed passing the wrong line value for Grid.CellController.isEnabled
· fixed Grid.setItems not correctly setting up the vector that holds the checks.
· the LEFT/RIGHT clicked events were not updating the ListContainer selected item when the clicked control was not an image or a button with an image. must also check if the target of the PenDown event is a ListContainer's item to avoid a ClassCastException. in this case, we'll try to find the item by looking at the target's parent.
· fixed PopupMenu using the default blue color instead of white as background
· added TabbedContainer.tabsBackColor, so you can dinamically change the colors of a tab
· fixed message when creating a file and the path does not exist
· updated Android manifest to include access to sd card
· fixed click in a control with the screen shifted was not working
· now Vm.debug accepts null
· fixed Edit.setDecimalPlaces sample
· fixed Bluetooth support on singleapk deploys.
· added highresaware flag to fix windows mobile pocketpc/arm problems on hiresolution devices
· fixed NPE that could occur on GPSView.
· improved Calculator sample appearance. added menu icon to totalcross.res.Resources

What's New in 1.51:

· now Scanner.activate sends the SCANNED event when running emulated at desktop
· do not throw IllegalStateException when n is equals to the Image current frameCount.
· added /uistyle Android argument option to totalcross.Launcher
· fixed problem when a combobox with 0 elements was clicked and then it was impossible to open it after filling with items
· disable search if in PopupMenu if there are less than 10 items or if all starts with the same letter
· Fixed DataStream.readBytesInternal to return the number of bytes read before reaching EOS.
· show the classpath for the user during deploy
· fixed palm.pkg not finding some files
· fixed Grid placement not working when Settings.uiAdjustmentsBasedOnFontHeightIsSupported is set

What's New in 1.27:

· now tc.Deploy deletes the original tcz file from the current deployment folder. you can get it at the install/win32 by specifying -win32 as parameter.
· iOS (iPhone) 1.x and 2.x are no longer supported. If you use one of these, upgrade to version 3.
· added ImageList, which can be used with the ComboBox, as a listbox whose items are images (of same size)
· added boolean Settings.disableScreenRotation. works only at desktop, but in the future will be implemented in the devices.
· implemented Settings.romVersion for iPhone 2+.
· fixed problem in Tree control when the number of items just got above the visible items, and the scrollbar was not correctly set to the right value.
· fixed Tree.expand not working correctly when it was previously called on a parent that has no children.
· added Convert.getFileName, getFilePath and getFileNameOnly (which strips the extension).
· fixed FileChooserBox.select throwing an exception when the path doesn't end with /.
· added File.copyTo and moveTo methods.
· now FileChooserBox lists folders before files, and order is now case insensitive.
· now FileChooserBox shows a volume (drive) list so the user can select a drive. All messages are now public so you can localize them (see msgXXX variables).
· implemented File.listRoots for WinCE.
· in HttpStream, created method to setup proxy authorization and fixed some issues with proxy usage.
· in SOAP, created method useProxy to allow the usage of SOAP with a proxy.
· added support for alpha-blending in images. added flag useAlpha (already set when loading png images).
· fixed GPS(readInterval) not actually setting the readInterval.
· fixed crash on android when multiple threads were trying to update the screen and the application went to pause and came back.
· added File.isEmpty; works for files (if has 0 byte) and folders (if contains more than one file/folder). Used to speedup FileChooserBox, specially on win32.
· added File.chmod, to change permission of a file on linux-only systems.
· fixed screen animation not completely updating the screen on resolutions like 800x480 in Android.
· fixed Label.autoSplit not working correctly when a screen rotation was made.
· On BlackBerry, throw FileNotFoundException instead of IOException whenever the root specified is not available. This will also fix a problem creating images on some devices.
· now when a Grid.CellController is used to return the backColor, the selected row is painted using an interpolation of the highlightColor and the returned backColor.
· added SIPBox, which is used in Android when an Edit/MultiEdit is placed below the half of the screen, to show the control inside a window and prevent it from being obscured. You can disable this behaviour using Settings.useSIPBox=false.
· fixed enter on MultiEdit being shown as an empty character
· fixed some problems with vertical Slider.
· now the CameraTest sample lists the possible resolutions that are available in a Windows Mobile device. Fixed selecting the proper resolution natively. Also fixed a problem if an OutOfMemoryError occurs when a picture is being loaded that would lock the file and prevent it from being saved afterwards (in the CameraTest sample). Also fixed problem that would prevent a movie from being recorded after an OutOfMemoryError on this sample.
· added Control.textShadowColor, which provides text shadow to all controls. Deprecated: Button.hightlightColor, Label.setHighlighted, Label.setHighlightedColor, ProgressBar.highlightColor.
· fixed ColorChooserBox not correctly displaying the colormap on the device. also improved performance.
· fixed Intermec barcode driver not activating and deactivating the beam.
· added Button.relativeToText and now textPosition also accepts RIGHT_OF as parameter. This provides a way to create a menu of buttons with images and horizontally center all texts based on the biggest one.
· added /kn option to tc.Deploy. It will create the tcz, exe files but not create the cab files. Now the /k option moves the tcz file created to the wince folder (as the /kn does)
· now Settings.enableWindowTransitionEffects is disabled for all platforms. If you want this back, just set this flag to true.
· fixed Zip crashing when comment was null.
· fixed fullscreen problems on Android. Now Android respects the full screen: if its not set (Settings.isFullScreen/fullScreenPlatforms), the task bar appears correctly. Fixed a strange tile bitmap that appeared at the bottom of the window.
· fixed Grid not correctly computing the preferred height when useHorizontalScrollBar was true and visibleLines was set.
· now Android's camera use the internal camera api and no longer uses the media gallery to take photos and record movies.
· fixed AIOOBE when Label's autosplit is choosen but the control's rect was not already set.
· in HtmlContainer, added support to bgcolor attribute in body tag.
· fixed alignment support for several components in HtmlContainer, also added support for center tag.
· improved Vm.exec implementation to better handle launching the BlackBerry browser. The url no longer needs to be prefixed with "url&" and the url may now contain the character '&'.
· fixed implementation of Settings.platform for iPhone and iPad.
· added support for full screen applications on iPad. Please notice iPad support is still in development and the graphical implementation still needs to be updated.
· added MessageBox/InputBox/ControlBox.buttonKeys to allow you to map a key to a button (e.g.: map ENTER for Ok and ESCAPE for Cancel buttons).
· added overflow and underflow check for longs in Convert.toLong().
· fixed NPE in Tree.remove(node) when the last node was removed.
· added handy static File.copy/move which receive strings.
· added FontGenerator /skipBigChars to skip chars with width above W's width; useful for monospaced fonts.
· added MouseEvent (MOUSE_MOVE, MOUSE_IN, MOUSE_OUT) and MouseListener. used only on devices with a mouse.
· now the demo message is a MessageBox and no longer an alert. This fixes crashing problems during startup in Android and in iPhone. Changed MainClass interface.
· now the manual activation is no longer used at the site. There's a dist/samples/activation/ManualActivation program for windows and linux that can be used to select a tcreq.pdb and write back a tcsuc.pdb (can also be passed at commandline); internet access required.
· fixed ToolTip not correctly being shown in a control inside a Window. ToolTip now works with Mouse events.
· with the exception of WindowsCE and WinMo, the font size is now based on the screen resolution for all platforms to better support small phones and tablets.
· MessageBox may now be created with argument allSameWidth to make its button to have the same size. (the size of the largest button)
· added Label.borderColor, which allows a label to have a border.
· added Grid.getCheckCount (counts the number of checked lines).
· added ListContainer.size.
· Now iphone2 deploy creates Packages.bz2 which allows to create a cydia repository. zip files are now deleted from iphone2+ folder.
· added DataStream.readUnsignedInt, which reads the next 4 bytes from the stream as an unsigned int value.
· added ScrollContainer(enableHorizontalScrollBar, enableVerticalScrollBar), which allows you to select which scrollbar to enable. For example, by disabling the horizontal one, you can use RIGHT/CENTER on X and FILL on width for the controls that were added. Improved UIGadgets to show these new possibilities
· added a way to not build for a platform: use -noXXXX, where XXXX is a platform name. Run tc.Deploy without parameters for more instructions.
· fixed keyboard not being closed when an Edit looses focus and the Edit's type was not NORMAL and the keyboard type was set to the default one.
· now we support text edition directly in TotalCross controls on iPhone/iPad!
· fixed problem in Android 2.2 of application not being closed when MainWindow.exit was called.
· implemented Vm.setTime for Palm OS.
· fixed problem when exiting an application when a Lock object was being collected before and a class tries to use it in the finalize method.
· now if a finalize method throws an Exception, its stack trace is sent to the debug console.
· added Settings.companyContact to be used in iphone deployment.
· fixed tc.Deploy not using the alpha-channel of Android's icon if user created it with such. For better appearance on new devices, you should create the PNG files with alpha-channel. Fixed samples icon not appearing nicely on Android.
· fixed implementation of Vm.getFreeMemory on iPhone.
· in ListContainer, highlight the whole selected container.
· Added support to Swype on Android (default InputMethod on Samsung devices)
· Fixed typing ALT followed by a key on Android (physical keyboard) (now it returns the correct alted character)
· fixed a crash in the vm if a thread tried to call pumpEvents.
· fixed application not starting in Android 2.3.x.
· fixed Slider bar position not being centered when some properties were set.
· added SpecialKeys.F1-F20, which can be used in devices that have those keys. On Windows Mobile, the F1 and F2 are still mapped to MENU/ESCAPE, on Windows CE, they are mapped to F1/F2.
· now /scale can specify a number < 1 to make the image smaller. also, the image is now smooth, which may decrease performance but improve scaling appearance.
· added Settings.iccid, to get the serial number of the gsm chip

What's New in 1.25:

· important: Vm.getFreeMemory now returns the amount of memory allocated by the vm, not the real device free memory. This amount can increase and decrease during program execution. So, when the program starts, it may display 200Kb free, but as the program runs more memory is allocated and this free memory can be increased.
· improved Android graphics performance in 30%, and iphone in 5%.
· added field Settings.activationId, which is a unique identifier available for registered applications after the TotalCross VM is activated.
· on iPhone 2+, manual installation of applications (using the deb file) should now automatically change the permission to allow the application to be executed.
· fixed android getting out of resources on some operations, like creating lots of files on sdcard.
· added AlignedLabelsContainer.childrenFont to set the font of the controls that are added to it. This can be handy if you want to set the labels in bold and the other controls in normal font.
· Vm.getStackTrace at desktop now returns in the same format of device, without "at" prefix
· fixed title font of MainWindow not being set when setDefaultFont is called.
· fixed File.setPos native implementation not matching the java's implementation. Trying to set pos beyond file size was throwing an exception; now the file grows to the desired position.
· made changes in the bytecode converter to fix try / finally code blocks.
· made native some methods of the Convert class to improve performance: zeroPad (both versions), numberOf, dup, spacePad.
· Grid.aligns is now public, as requested by users.
· fixed Convert.normalizePath to correctly remove unnecessary consecutive slashes (directory separators).
· fixed multiple connectivity issues on BlackBerry, especially when using SSL, and implemented connection fall back to always try to establish a network connection automatically.
· in Properties, created the method dumpKeysValues, which works exactly like the Hashtable implementation, writing the values as strings.
· implemented the methods hashCode and equals for subclasses of Properties.Value (Str, Int, Double, Boolean and Long).
· fixed iPhone 2+ deployment on Windows 7.
· added Settings.debugEvents, which can be used to dump all events received by Window._postEvent.
· now Vm.alert in Android uses a native dialog box.
· fixed HttpStream.readLine, which was loosing information that was stored inside the buffer used to fetch the Http headers. Now using LineReader for faster access. Added delimiter field and also readTokens so you can directly read the line into tokens.
· added -winmo option to tc.Deploy to create an install file only for Windows Mobile, bypassing the legacy platforms.
· fixed highlight not being undrawn from ComboBox in penless mode when the combo dropdown was closed.
· added setEndless, which makes a ProgressBar endless (when you don't know the maximum value and want to let the user that you're processing something).
· now Tree.setSelectedIndex centers the selected item on screen instead of moving it to the top. it also now only changes the offset if the item is not visible.
· added FileChooserBox.initialPath, which can be used to open a folder when the box is popped.
· fixed FileChooserBox adding a new node to a wrong location if there's a path with the same name before it.
· added support for double-click in a FileChooserBox. Just set the defaultButton to index of the button that should be selected when this happens.
· fixed FileChooserBox x position of collapse/expand button not being correctly computed.
· added XmlTokenizer.hashCode, to compute the hashcode without having to create a string.
· now pressing the tab key on MultiEdit moves the focus to another editable (only if Settings.geographicalFocus is false).
· File.listFiles should now throw a FileNotFoundException if the given path is not found. Some platforms currently throw an IOException in this case.
· fixed CompressedStream at desktop not returning all bytes you requested.
· added Tree.useFullWidthOnSelection.
· added Node.userInt.
· fixed an issue on iPhone 3.2+ that would cause the VM abort during the application startup.
· added Button.isSticky, to make the button sticky when pressed (have to click again to depress it). Added Button.isPressed.
· added ColorChooserBox, with several ways to select a color.
· fixed Edit not accepting the first key pressed when the text was pre-selected.
· fixed ComboBox not drawing the selected ColorList item before the listbox was shown.
· in Multipart, added support for the content type "form-data" with chunked transfer encoding when used by HttpStream.
· in HttpStream.Options, created the method setContent which receives a MIME multipart to be used as the HTTP POST data.

What's New in 1.24
· fixed problem in Logger.dispose that resulted in the Log file not being closed when it was a PDBFile; then if you tried to delete it, an error would be thrown.
· fixed problem when deploying a tcz file with spaces for Palm target.
· fixed problem when deploying a file for Android when the deploy was in a drive different of the TotalCross SDK' one.
· now Graphics.drawRoundGradient draw antialiased round borders.
· added Time.inc(hours, minutes, seconds).
· added Hashtable.allowDuplicateKeys.
· fixed StringBuffer.capacity not returning the correct size.
· added Vector.addElementsNotNull, which skips null array items.
· added Date.set, to change the date fields.
· optimized Date.set(String), now computing value on the fly.
· fixed GPS for Windows Mobile - the GPS Intermediate Driver doesn't like threads, so timer event is back.
· added support to String.lastIndexOf(String) and String.lastIndexOf(String, int) on BlackBerry.
· fixed exception handling when thrown during the application initialization.
· added support to alternative debugging on BlackBerry through the use of Vm.debug(Vm.ALTERNATIVE_DEBUG); this will alternate between the default debugging method (DebugConsole.txt file) and the alternative debugging method (BlackBerry Event Log).
· changed Logger.throwing() to write the whole stack trace instead of just calling Exception.toString().
· added Node.equals to allow the usage of indexOf to find a Node on a Tree.
· fixed "The parameter is incorrect" error 87 that occurs in some (but not all) Windows Mobile 6.x devices. The error was occuring when a memory block was spanned over two consecutive allocated memory chunks. Most devices allow this, but some not.
· fixed memory overwrite problem when loading Settings.appSettings on linux/android.
· fixed bug in Socket when running on BlackBerry 8350i (NEXTEL): It would often throw an IOException when the remote connection was closed, instead of returning -1. This bug wasn't observed in any other device, so it isn't clear if this affects only the said device (it may even be related to the iDEN network used by Nextel). If you had any Socket or FTP problems with a BlackBerry device and this change fixes your issue, please let us know.
· fixed bug in ZLibStream for BlackBerry - method close should not close the underlying stream.
· added ComboBox/ListBox.addWrapping to add and split a big line.
· fixed bug in iPhone activation.
· fixed Edit.getTextWithoutMask not returning the correct String when it was fully filled.
· fixed a problem of an Edit incorrectly being drawn inside a window that does not belong to.
· added Hashtable.getString, which returns a String instead of an Object.
· Part.getContent will now always return the enclosing content, regardless of its type.
· fixed bug in DataContentHandler: method writeTo must be public.

Like it? Share with your friends!

If you got an error while installing Themes, Software or Games, please, read FAQ.