Click here to Skip to main content
15,121,963 members
Articles / Desktop Programming / MFC
Posted 13 May 2004


40 bookmarked

A Java Language IDE

Rate me:
Please Sign up or sign in to vote.
4.33/5 (26 votes)
13 May 2004CPOL3 min read
This is a partially implemented IDE for the Java platform.



The decision to share this software isn't so much in the spirit of open source as it is a humble protest against not being able to find a job as a programmer. If they won't hire us, then we'll flood the market with free software. SOLIDARITY!


With that said, let's get going. This a functional yet incomplete Java IDE. I have had the code on my PC for the last 3 years or so. Initially, I thought I could turn it into a commercially viable product, but that isn't happening. Below is a list of the classes contained in the project:


The following features have been implemented to some extent:

Code completion. Code can be completed after the invocation of '.'. The invocation of a method doesn't yet support code completion.


Class view for currently loaded project files.


Editor customization options.


Java SDK Setting utility.


Here are the other libraries the project uses.


The editlib is for the text editor, the bcglib (don't know if it's still publicly available) is for the UI.

This is the basic design of how the editor window interacts with the backend parser.


When a file is loaded, a map of the parser thread and the file associated with it is made. This allows the text editor to send EDIT notification messages to the global map, which locates the thread associated with the provided file name. As you can see, this provides for a very flexible interaction between the parser and the text editor. The text editor can be opened and closed without any further interaction with the parser. As in the diagram above, whenever an edit event occurs, the global map is accessed via the CVisualJavaApp::SendEditMsg() function. This function locates the thread ID, and posts the necessary message.

When a project is loaded

The project is loaded from:


From there, a series of calls lead to the next important point in the code, the call to: CProjectFile::CProjectFile().

From the above function, a new thread is spawn, that thread represents the parser. The above function is an ideal place to start learning about the project. If you're interested in adding code, check out the CVisualJavaAppp::InitInstance method. You'll also want to download the standard edition of the Java SDK. Set the path of the API and the tools bin from the SDK Tool setting windows shown above.

Running the Executable

Download the JAVA SDK standard edition.

For those who want to try out the app, you'll need to put the codetemplates_1.txt file in the My Documents folder. I hard coded that path in the app. Secondly, you'll have to create a new project as follows:

File->New->("type project name")->Choose Swing as App Type, Click the next button->Click the Frame button->Choose Simple Text editor.

Following the above steps should allow you to create a new Java project. Assuming the codetemplate is where it should be, you should have a simple editor code generated. The simple text editor is the only option that has template code, you can add more template codes to the file.

The format for the codetemplate file is "<TEMPLATE_NAME>" followed by template code. Below is a list of valid template names:


When you insert template code, the only thing that should be replaced is the class name. That is accomplished by replacing every occurrence of the class name with "<CLASS_NAME>".

For more information on codetemplates, see the CCodeTemplate class. A word of caution about the SDK: first of all, you can't put the Java project in the My Documents folder. Put it in your C: directory. The "javac" tool for some reason doesn't know how to read paths containing My Documents (and probably any folders with names containing white spaces). You must also set the tool paths from the SDK window above. For limited code completion support, you must also set the API path.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Web Developer
United States United States
biography? I am not that old yet.

Comments and Discussions

GeneralDemo don't work Pin
janvb12-Aug-07 16:18
Memberjanvb12-Aug-07 16:18 
GeneralThat is i'am looking for long. Pin
kuler_CN30-Jul-06 16:38
Memberkuler_CN30-Jul-06 16:38 
Generalmissing file mfc42ud.lib Pin
Prachi Chitnis30-May-04 23:40
MemberPrachi Chitnis30-May-04 23:40 
GeneralRe: missing file mfc42ud.lib Pin
mystro_AKA_kokie31-May-04 4:02
Membermystro_AKA_kokie31-May-04 4:02 
GeneralAssert on RButtonDown Pin
Mike Wild23-May-04 22:50
MemberMike Wild23-May-04 22:50 
GeneralAssert in olelink.cpp Pin
atali19-May-04 8:02
Memberatali19-May-04 8:02 
GeneralRe: Assert in olelink.cpp Pin
mystro_AKA_kokie19-May-04 13:50
Membermystro_AKA_kokie19-May-04 13:50 
QuestionWhat about Eclipse? Pin
Anonymous14-May-04 13:27
MemberAnonymous14-May-04 13:27 
AnswerRe: What about Eclipse? Pin
Jörgen Sigvardsson16-May-04 8:00
MemberJörgen Sigvardsson16-May-04 8:00 
GeneralRe: What about Eclipse? Pin
mystro_AKA_kokie16-May-04 8:24
Membermystro_AKA_kokie16-May-04 8:24 
AnswerRe: What about Eclipse? Pin
flyingxu28-Apr-07 16:20
Memberflyingxu28-Apr-07 16:20 
Generalmissing file Pin
bitrat14-May-04 8:06
Memberbitrat14-May-04 8:06 
GeneralRe: missing file Pin
mystro_AKA_kokie14-May-04 8:42
Membermystro_AKA_kokie14-May-04 8:42 
GeneralFile Missing Pin
SilentBob?14-May-04 5:30
MemberSilentBob?14-May-04 5:30 
GeneralRe: File Missing Pin
mystro_AKA_kokie14-May-04 6:09
Membermystro_AKA_kokie14-May-04 6:09 
QuestionFile Missing ? Pin
Hing13-May-04 23:42
MemberHing13-May-04 23:42 
AnswerRe: File Missing ? Pin
mystro_AKA_kokie14-May-04 2:36
Membermystro_AKA_kokie14-May-04 2:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.