Android Tutorial [B4X] B4A, B4i, B4J and B4r API documentation - B4X Object Browser

Status
Not open for further replies.
API documentation - B4a, B4i, B4J and B4R (i.e. B4X) Object Browser (which also includes Code Snippet Management)

Hi everyone,

As you may or may not be aware, I have embarked on a project to bring better documentation to us all.

The first problem I have had is that the official and semi-official documentation tools aren't what I was hoping for. Not saying they aren't good, they just aren't what I need.

My first thankyou was called the B4a Object Browser. This version was for B4Android only. It is my own version of the XML file loader. I call it the B4a Object Browser.

The second thankyou is an updated version that supports B4A, B4I and B4J. This is called the B4X Object Browser.

If you know the Visual Studio Object Browser, you should have a good idea of what I am trying to emulate.

To run it you must have .NET Framework 3.5 SP1 installed, and you must install it from my setup.

I have only tested it on Windows, and not with Mono.
I am assuming that everyone that wants to use it, will be on Windows.

Here are some screenshots:

B4AObjectBrowser3.1.4.0.png


upload_2014-12-18_21-26-19.png


Download the appropriate zip, unzip it and run the setup. I suggest you scan it for viruses before you run it of course.

B4A Object Browser:
When it runs the first time, it will need to know where the B4a Library XML files are, so ensure you go into the Options and configure them.
If you are upgrading, you can Import your old settings, and in fact are prompted to do so if you have a blank configuration.

If you are asked to find the B4A Library XML files, browse to your B4a Library folder (usually C:\Program Files\Anywhere Software\Basic4android\Libraries, or if you are using 64 bit Windows, it is C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries)

From this point, it will remember the path, so you will not have to enter it again.

B4X Object Browser:
The paths to your B4A, B4I and B4J installations (and the Libraries folders under them) will be determined automatically.

In the Options screen you can set multiple paths, with the ability to modify them.

It has multi-language support, and will detect your PC's language and apply the changes automatically. If you want to over-ride this, you may do so from the Options screen.

In B4A Object Browser, the following languages are supported:

Afrikaans
Arabic
Bulgarian
Chinese
Czech
Danish
Dutch
English
French
German
Hebrew
Indonesian
Italian
Japanese
Norwegian
Persian
Polish
Portuguese
Romanian
Russian
Spanish
Swedish
Thai
Ukrainian
Vietnamese

B4X Object Browser adds support for:
Catalan
Greek


I suggest everyone that uses this tool subscribe to the thread so you are informed of changes.

Have fun!

Dave

Change history:
B4A Object Browser
2.0.0.0 - First public release.
2.0.1.0 - Minor GUI update, remove the need to click Reload button during initial setup.
2.1.0.0 - See post #8
2.2.0.0 - See post #23
2.3.0.0 - see post #31
2.3.0.0 - see post #35
2.4.0.0 - see post #60
2.5.0.0 - see post #63
2.6.0.0 - see post #70
2.6.1.0 - see post #75
2.7.0.0 - see post #79
3.0.0.0 - (Pre-release)
3.0.1.0 - Major GUI updates
3.0.1.1 - Minor fixes to correct some "Copy" functionality that had been removed
3.1.0.0 - All known bugs fixed, plus multiple language support added. Separate link provided below. See post 112 for full info.
3.1.1.0 - Additional languages, ability to override GUI language, Chinese language fixed. See post 122 for more info.
3.1.2.0 - Fixes to French, German and Italian language translations. 15 languages now provided. Search history added.
3.1.3.0 - Portuguese language added, making this language number 16
3.1.4.0 - Updated ru and ja translations, Moved Options to View menu, Added support for DesignerName attribute. See post 128 for full details.
3.1.5.0 - Corrected some logic problems around Version Number and DependsOn. Fixed URL Links. See post 147 for full details.
3.1.6.0 - Increased search options, fixed some search bugs, added Hebrew. Full details in post 156.
3.2.0.0 - AutoUpdate, new language, a couple of minor bugfixes. Full details in post 157.
3.2.1.0 - New languages, a few bugfixes. Full details in post 164.
3.2.2.0 - Updated Thai translation.
3.2.3.0 - Fixed further Thai translation strings, arabic and Thai language settings, memory corruption error when switching from R-L and L-R languages and more
3.2.4.0 - Added the ability to override language settings.* See "How to override language setting.txt" in the installation directory.
3.2.4.1 - Fixed bug when overriding language settings.
3.2.4.2 - Fixed bug when selecting the following languages: Arabic, Bulgarian, Hebrew, Thai
3.2.4.3 - Fixed bug when showing empty parentheses, Search and Clear Search buttons, bug where Clear Search button forced library reload even if no search text was entered
3.2.4.4 - Fixed bug where installer did not remove previous version
3.2.5.0 - Added ability to select viewing of Class_Globals and Property Get / Property Set
3.2.5.1 - Added ability to select viewing of DesignerCreateView
3.2.5.2 - Added Romanian language
3.2.5.3 - Fixed problem when selecting Romanian
3.2.5.4 - Fixed 2nd problem when selecting Romanian
3.2.5.5 - Added Vietnamese language
3.2.5.6 - Added preliminary support for B4a 3.0 (Beta)
3.2.5.7 - Added ability to show duplicate Library Short Names
3.2.5.8 - Forced GUI to always show Full type name when showing Class and Library annotations
3.2.5.9 - Fixed a bug when reloading libraries after performing a search. Also added Donate form.
3.2.5.10 - Set XML Reader to null after closing the file, plus set properties to remove flickering when displaying file data.
3.2.5.11 - Corrected an issue where a blank History would cause an application error
3.2.5.12 - Added Czech, Danish and Persian languages
3.2.5.13 - Persian language updated
3.2.5.14 - Added "Always on top" setting (under "Always on top" menu setting) and modified each Form to follow this setting
----------- Note: No further updates will be performed to B4a Object Browser

Full list of changes here (before 3.2.5.1): http://www.b4x.com/android/forum/th...n-b4a-object-browser.25682/page-9#post-172076

B4X Object Browser
1.0.0.0 - First public release
4.0.0.1 - Minor changes - mainly updating graphics to reflect Anywhere Software changes.
4.0.0.2 - Bug fixes, Desktop icon.
4.1.0.0 - Code Snippet Management added.
4.1.1.1 - Spanish language updates
4.1.1.2 - Modified the Method / Property / Field Copy function appropriately to copy either the selected text or all text
4.1.1.3 - Performed multiple bug-fixes to correct issues with right-click commands
4.1.1.4 - Performed another bug-fix to the right-click menu (for Events list)
4.1.1.5 - Performed another bug-fix to the right-click menu (for copying Fullname)
4.1.2.0 - Added support for B4R
4.1.3.0 - Changed auto-update download to .msi (instead of .exe)

I have put together a pdf to understand how to use it. It is included in the setup, but you can get it separately here (559 Kb).
Grab the setup and unzip and install it. This must be done this way because of the file size being too big for the forum. (>2 MB)...

B4a Object Browser
Version 3.2.0.0 (NOT AutoUpdate) is available here.
Version 3.2.1.0 (AutoUpdate enabled) is available here.
All newer versions (from Version 3.2.2.0 onwards) are available through AutoUpdate, and will not be provided here (other than the link below).
The latest version is always available from here.

B4X Object Browser
The latest B4x Version is available from here. AutoUpdate will take over from that point.
 

Attachments

  • upload_2014-12-11_22-32-46.png
    upload_2014-12-11_22-32-46.png
    106.1 KB · Views: 2,536
Last edited:

Vader

Well-Known Member
Licensed User
Longtime User
Does Object Browser hold the xml files open after reading them? If have it open while I try to regenerate a library jar and its xml I get a "process cannot access the file because it is being used by another process" error and have to close Object Browser and reopen it after generating the xml file. This is a bit inconvenient while I am trying to tidy up the comments in a library. Ideally I would like to be able to keep it open and just refresh it like I do in the IDE Libs tab.

EDIT:- Sorry, forget this. For some reason it's working OK today. I'm baffled why it didn't yesterday :confused:

EDIT AGAIN :- The problem has just come back :( After being able to edit and regenerate the jar and xml with Object Browser open and then just refresh it it has now given the error and I had to close Object Browser to allow the compiler to regenerate the xml. Very strange!
I didn't think I was keeping it open as I load all the nodes into memory at the beginning or upon demand (if that is the option selected), so there is no reason to keep it open. I was going to leave it to the weekend, but I'll take a look now.
 

Vader

Well-Known Member
Licensed User
Longtime User
Updated. Let me know if that fixes it.
(I set a couple of objects to null after they were closed. Neither implements IDisposable)
 

Yafuhenk

Active Member
Licensed User
Longtime User
This version works great. Wonderful tool. As already said by some one it can be used for the B4J libraries as well.
Would it be possible to have a extra menu item where you can choose between B4A or B4J. This to to avoid deleting and loading the other libraries every time you want to switch.

Thanks
 

Vader

Well-Known Member
Licensed User
Longtime User
This version works great. Wonderful tool. As already said by some one it can be used for the B4J libraries as well.
Would it be possible to have a extra menu item where you can choose between B4A or B4J. This to to avoid deleting and loading the other libraries every time you want to switch.

Thanks
You will have to explain further, as I don't use B4J and don't understand your use-case.
 

agraham

Expert
Licensed User
Longtime User
Updated. Let me know if that fixes it.
Unfoturtunately not, but it looks like it may be a Windows/.NET problem. I couldn't see any pattern while using it with the Eclipse so I looked at Object Browser with Process Explorer.

http://technet.microsoft.com/en-us/sysinternals/bb896653

You can see which files Windows thinks a process has open in the lower window, or in this case it is easier to use Find -> Handle or DLL and search for something reasonably unique to the xml files path like "Libraries" or ".xml". I then find that after loading and after each refresh Windows thinks that Object Browser still has some files open. However the number of files, and the particular files still open, varies apparently randomly between refreshes.
 

Vader

Well-Known Member
Licensed User
Longtime User
Unfoturtunately not, but it looks like it may be a Windows/.NET problem. I couldn't see any pattern while using it with the Eclipse so I looked at Object Browser with Process Explorer.

http://technet.microsoft.com/en-us/sysinternals/bb896653

You can see which files Windows thinks a process has open in the lower window, or in this case it is easier to use Find -> Handle or DLL and search for something reasonably unique to the xml files path like "Libraries" or ".xml". I then find that after loading and after each refresh Windows thinks that Object Browser still has some files open. However the number of files, and the particular files still open, varies apparently randomly between refreshes.
I will look into it further. I looked into it last night whilst sitting on the couch, so maybe if I add some logging it may help show what's happening.
 

Vader

Well-Known Member
Licensed User
Longtime User
Ok, so spent about half an hour playing with Process Monitor excluding every other process and IO type until I saw only the Browser.exe entries. I can confirm there is nothing happening to the XML files after they are loaded.

This is as I thought as I am using LINQ to do the hard work, and as I said before, the objects would have been garbage collected pretty soon afterwards.
Basically, open - read - close - dispose [rinse and repeat]
 

dilettante

Active Member
Licensed User
Longtime User
A downside is that in Windows Vista and beyond .Net Frameworks get preinstalled as proteced system resources. This means once they break (and they do) there is no way to repair them unless you (a.) reinstall Windows from scratch, or (b.) possibly via a "repair install" but that requires Windows setup media with all Service packs slipstreamed, not an easy thing to do anymore.

See How to repair the .NET Framework 2.0 and 3.0 on Windows Vista which only addresses some trivial cases and leaves most users with an "oh well, reinstall Windows."

So for many people this will be useless. Typically the systems I've seen have Frameworks 3.0 and above irreparably broken, and two of these are my own systems (one Vista and One Win7). I've only been lucky that Basic4Android and B4J work here at all (maybe these target 2.0?).
 

agraham

Expert
Licensed User
Longtime User
I didn't see your posts as the forum doesn't seem to send me all the emails it should. I get some, but not all, notifications from the threads I am subscribed to.
Do you have the option to load on demand turned on? If so, turn that off.
No, its always off. I'll just have to live with it.
 

jamesnz

Active Member
Licensed User
Longtime User
Been playing with B4A for a week, just found this, excellent work, the visual structure makes it easy to understand the libraries.
Really well done ! :)
 

G4HFQ

New Member
Licensed User
Longtime User
New to B4A and just found your Object Browser. It will help enormously in getting to grips with things.

My eyesight is getting worse and today's HD screens are not helping much - is there any way of choosing a font style and size?

Thanks
 

Vader

Well-Known Member
Licensed User
Longtime User
No, sorry, I didn't add that feature. It would be a bit of work, but definitely possible. Easy if was just the library info I guess.
 

G4HFQ

New Member
Licensed User
Longtime User
Thank you for your quick response. It is just the library information I am interested in, not the menu system nor any part of the framework of the program.

Thanks
 

warwound

Expert
Licensed User
Longtime User
@G4HFQ

An alternative would be to use my xml2bb script.
You'd upload the library .xml file to my script, choose HTML output and then copy/paste the HTML output into a text document with an .html file extension.
Now you can use a browser to view the library methods, comments etc.
The attached file shows the output of my script when i uploaded the GoogleMaps.xml file.

My script currently has a bug where it doesn't correctly parse Event data.
I created a fix last weekend and hope to have the fix uploaded within a few days.
If you look in the attached file at the MapFragment MarkerClick Event you'll see the bug - the Event's return value is missing.

Martin.
 

Attachments

  • GoogleMaps.html.zip
    2.7 KB · Views: 216

enowinner

New Member
Licensed User
Longtime User
when i click,it show "(exception from HRESULT:0x8007007A)"
 
Last edited:

b4a123

New Member
Licensed User
Longtime User
when i using it, "Exception from HRESULT:0x8007007A" error occurs, my OS is win7, thanks
 

shy7878

New Member
Licensed User
Longtime User
when i using it, "Exception from HRESULT:0x8007007A" error occurs, my OS is win7 x64, thanks
 

Vader

Well-Known Member
Licensed User
Longtime User
All those people that are getting errors, please ensure you have .NET Framework 3.5 SP1 installed. It must be SP1.
 
Status
Not open for further replies.
Top