Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] A couple of questions and a problem with Libs and Log4j import

- I cannot understand the following Eclipse House Rule: "Program To API Contract Rule: Check and program to the Eclipse API contract". Han you explain it a bit more?

Sure; it amounts to a request by the eclipse team to read the javadocs.

An example of this is the View interface; it is not enough to implement all the methods - we also have to consider the order they are going to be called in.

1- class constructor
2- init - to set up any configuration
3- createPartControl - to create the widgets that appear on the screen
4- dispose - to clean up afterwards
 
If you read the javadocs you can learn that if the init method fails; they will call dispose() to clean up anything.

So a common mistake is to do something like

button.dispose();

but you you need to consider if button was never created

if( button != null ){
   button.dispose();
}

A uDig example is the difference between IMap (read-only) and Map (which is read-write).

A common mistake is to do something like:

((Map)tool.getContext().getMap()).setXXX( object );

If you read the javadocs; you can find that the set methods are only supposed to be called from commands. So a good example is:

final Object object = ...
map.sendAsync( new AbstractMapCommand(){
   public void run(){
         getMap().setXXX( object );
   }
});

In this way the map can schedule the set method during a pause in rendering (so we don't get a deadlock).
- Is it possible to have uDig Javadoc available in Eclipse somehow?
It should just show up (as a tooltip or in the javadocs view). There is a chance I screwed up and did not include the information in the SDK. I will test this evening. 
Currently we do not publish the javadocs anywhere; we should include them in the "dropins.zip" so they show up in the eclipse help menu along with our out docs.
- In setting up the target platform "SDK Quickstart.pdf" differs from online documentation. The first suggests to use the "delta-pack" as a target platform (with his 80 plug-ins) while the online uses ${eclipse_home} that contains some ~500 plug-ins. Why?
For General uDig development we use a target platform of:
- eclipse modelling
- delta pack (this includes a copy of SWT for each platform - windows, linux, mac etc…)_
- a few extra things in the dropins folder - mostly the translations of eclipse for different languages

For uDig SDK development (i.e. making your own plugins) we build on a target platform consisting of two things:
- eclipse modelling
- the uDig SDK - containing the udig plugins; and a few extra eclipse plugins that we use that are not part of the minimal eclipse RCP build)
- the delta pack (for cross platform release)
- Note: This is faster when generating your own plugin; since it does not have to compile uDig all the time.
Problem with Admin Documentation

The whole process of importing Libs and Log4j, descrie in:
cannot be performed on 1.3.2-SNAPSHOTS: plugins are not detected.
Any fix / workaround?
We should check that you imported the required plugins; the only reason we did not import everything to start out with - is because it is very slow watching everything recompile every time we touch "libs".

Jody

Back to the top