Mobility pack
Q-build

News, improvements, noteworthy
20051130

Preprocessor comment prefix changed

There were complains that preprocessor is to aggressive in removing comment starting with "//--". Some users and project use comment lines full of dashes to separate blocks.
Mobility team decided to fix this problem. Preprocessor comment prefix will be "//# " from now. We already use "//#" as start of preprocessor directive. If you use "//########" as special type of comment then it'll be marked as unexisting directive and warning appears. Your code will be still valid.

You don't have to worry that all your unactive preprocessor blocks will be changed. Only changed or new lines in preprocessor block will be converted to new syntax.
20051109_1

API change in SimpleCancellable task

There was method
simpleCancellableTask1.setRunnable(new Runnable() {
        public void run() {
                    try {
                        //some code here
                    } catch (java.io.IOException ioe) {
                        throw new RuntimeException(ioe.getMessage());
                    }
                }
        });
It was changed to
simpleCancellableTask1.setExecutable(new org.netbeans.microedition.util.Executable() {
                public void execute() throws Exception {
                    //your code here
                }
            });
It's more easier to use the SimpleCancellableTask now. You don't have to catch all exceptions and throw them again to fail the task.
If you used previous builds where it was generated/created in old way you don;t have to worry. The code in guarded block will be regenerated automatically after a change in the visual midlet. If you use the SimpleCancellableTask in your own code you will have to rewrite the code by hand. We are sorry for that.
20050914

End to End Support

  • J2ME Web Services Client - enables you generate client for your WS-I compliant webservices. It use JSR172.
  • Wireless Conection Bridge Client - generate client for lot of webservices. Supports primitive types, Date, Vector and Hashtable and their arrays, nested objects. It use effective and fast binary protocol. This approach requires middleware.

Custom Component in Palette

  • TableItem - create table of any number of columns and rows.
  • SplashScreen - simple but usefull in almost any application
  • WaitScreen - this component is very usefull when you need to provide feedback to user when there is an action running on background e.g. transfering data from network


Error Hyperlinks in Output Window

  • You can click on hyperlink from compilation error or exception in output window now. It accelerates your work and bug recognition. You don't have to look for the right line any more

Splitted guarded blocks

  • you don't have to use a Action property editor for your custom code of pre-init, post-init, pre-action and post-action. You can edit it directly in source code now.

Rename, Delete, Copy, Move on project node

  • this actions are available in popup menu on j2me project
20050818

Preprocessor

  • Directives
    • #ifdef identifier The identifier represents a variable of any type (Boolean, String, Integer) and checks whether or not it is defined. If it is then the result is true and the code that follows will be left alone. Any nested blocks will be processed as well. Otherwise code that follows will be commented and any nested blocks will not be evaluated. This commenting behaviour is same for all of the other directives.
    • #ifndef identifier Works as ifdef but returns not boolean of that result.
    • #elifdef identifier Works as a standard else if statement but automatically checks whether or not the identifier is defined. Can only complement inside blocks started by ifdef/ifndef.
    • #elifndef identifier Works as a standard else if statement but automatically checks whether the identifier is not defined. Can only complement inside blocks started by ifdef/ifndef.
    • #if expression Evaluates an expression passed to it and fires the appropriate action. How expressions are evaluated is explained bellow.
    • #elif expression Works as a standard else if statement and can complement only in blocks started by if statement. Will preprocess the code that follows based on the result of the expression.
    • #else Works as a standard else and will only preprocess the code that follows when none of the previous conditions in the defining block were true. Complements inside any block started with if/ifdef/ifndef directive.
    • #endif This directive must be used to close any block started with if/ifdef/ifndef.
    • #condition expression Must be on the first line in a file. This directive determines if the file should be included in the build based on the result of the expression.
    • #debug level Determines if the line following the directive should be commented or uncommented based on the debug level set in project properties. If level is omitted and the debug level is not set to off in the project properties it will automatically debug the line in question. Used for debuging purposes in conjunction with System.out.println for example. Can be nested.
    • #mdebug level Behaves same as #debug but will uncomment/comment a whole block of lines following the line it is on until it reaches #enddebug. Used for debuging purposes in conjunction with System.out.println for example. Can be nested.
    • #enddebug Must terminate #mdebug block.
    • #define identifier or identifier=value or identifier value Adds temporary abilities/variables to the preprocessor memory programatically on the fly. Nested block insensitive. Global variables defined in the configuration customizer override these temporary variables.
    • #undefine identifier Removes temporary abilities/variables from the memory. Can also be used to remove global variables defined in the configuration customizer from the preprocessor memory but will not remove them from the list of project or configuration variables.
  • Operators
    • ! or the not operator - has the highest priority and can be used on variables and expressions, e.g. ! !. For example //#if nokia will check whether nokia is not defined. //#if !(screen_width>100 && screen_height>120) will check if screen size is smaller than 100x120. Expression must be a valid one enclosed in parenthesis as shown. Since the ! operator has the highest priority, expressions such as //#if screen_size=="100x200" is illegal and will yeild syntax errors because a boolean result cannot be compared to a string.
    • The comparison operators - have the second highest priority and perform typical comparison operations. They can compare strings lexically and integers matemathically. Cross-type comparisons are supported. They can be used only in expressions and must compare two variables. They are <=, <, >=, >, == and special "subset" operator "@".
    • The boolean operators - have the lowest priority relative to the rest of the operators but they do have different priorities amongst each other just like in the Java language. They perform typical logical operations such as &&, || and ^ on booleans, expression results or check for variable definitions and then treat those as booleans as well. The && operator has the highest priority from all three boolean operators, while ^ and || have lower priorities respectively.
  • Code completion for preprocessor block (type //# to start preprocessor block)
  • Error stripes for wrong preprocessor block syntax - it will point you to typos and mistakes in pp block definition. The error annotations are really smart ;)
  • Java hints - do you use "old" preprocessor syntax form 4.1, 4.0? It's only one click to convert it to the new syntax.



Automatic Mobile Platforms Detection

  • Open Tools > Install Mobile Platforms... and select directory or disc that you want to scan. All SDKs will be found and you can select which you want to add to Platform Manager.


Custom Platforms definition

  • Open Tools > Install Custom Mobile Platform... and create your own platform by specifing Preverify, Execution, Debug Command and and selection of jars for classpath construction.
20050803

Visual Mobile Designer

  • Palette and Inspector are moved. There is more space for designer area.
  • Press of CTRL in Flow design switch to mode when you can redesign layout of transitions and ports
  • Algorithm for transition path was improved
  • Properties names with non default values are in bold



Preprocessor

  • Code completion for preprocessor block (type //# to start preprocessor block)
  • Context menu for preprocessor actions is back
20050720

Wireless Connection Wizard improvement

  • inheritance of complex types
20050615_2

Wireless Connection Wizard improvement

  • you can use complex types now

Preprocessor enhancement

  • block definition is visible now, for preprocessor block imported from 4.1 you'll see something like


  • the preprocessor uses CPP like syntax but is still a commenting preprocessor to fulfill the requierements set forth by Java editor integration and the Java language itself.
  • start preprocessor block with //#ifdef identifier, //#ifndef identifier, //#if expression
  • you can use even //#elifdef identifier, //#elifndef identifier, //#elif expression and //#else works as standart
  • nested blocks are allowed TOO
  • end block with //#endif
  • identifier can be either ability or configuration name
  • you don't have to check only if an ability/configuration exist but it's allowed to check for values too. The //#if expression is designed right for that. Assign a value to ability in Project Properties and then check for its value.
  • expression is evaluated left to right and can consist of identifier, brackets and operators


Platform (emulator) installation is smarter

  • it checks for and displays all JSRs on your classpath
  • you can un/check which JSR you want use
  • if there is more JSRs placed in one jar the check is disabled

Automatic generation of configuration templates

  • there's one more panel (the last one) in 'New Project' wizard
  • IDE offers you list of templates created from list of devices available in your emulator platform
  • either you can selected what templates you want to use or you can select all by one click

Automatic detection of abilities

  • it creates abilities for you in dependency on used platform/emulator
  • see the huge list of abilities created for WTk2.2 bundled with Mobility Pack

    SonyEricsson deployment

    • connect your SonyEricsson to computer and deploy to it directly from IDE
    JSR184WMAJSR172JSR75CLDCMIDPMMAPIJSR82
    1.02.01.01.01.12.01.11.0