Click here to Skip to main content
Click here to Skip to main content

A Java Language IDE

By , 13 May 2004
Rate this:
Please Sign up or sign in to vote.

Introduction

<-political_rant>

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!

<-/political_rant>"

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:

classes

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.

ccpopp

Class view for currently loaded project files.

wksp

Editor customization options.

opt

Java SDK Setting utility.

sdk

Here are the other libraries the project uses.

workspace

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.

design

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:

CMainFrame::OnFileOpenworkspace().

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:

  • <CLASS_DECLARATION>|<INTERFACE_DECLARATION>| <SWING_TEXT_EDITOR>
  • <FRAME_APP_WITH_MENU_SWING>|<FRAME_APP_WITH_TOOLBAR_SWING>
  • <FRAME_APP_SWING>|<DIALOG_APP_SWING>| <FRAME_APP_AS_SIMPLE_TEXT_EDITOR_AWT>
  • <FRAME_APP_WITH_MENU_AWT>|<FRAME_APP_WITH_TOOLBAR_AWT>| <FRAME_APP_AWT>
  • <DIALOG_APP_AWT>|<CONSOLE_APP>|<APPLET_APP>

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.

License

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

About the Author

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

Comments and Discussions

 
GeneralDemo don't work Pinmemberjanvb12-Aug-07 15:18 
GeneralThat is i'am looking for long. Pinmemberkuler_CN30-Jul-06 15:38 
Generalmissing file mfc42ud.lib PinmemberPrachi Chitnis30-May-04 22:40 
GeneralRe: missing file mfc42ud.lib Pinmembermystro_AKA_kokie31-May-04 3:02 
GeneralAssert on RButtonDown PinmemberMike Wild23-May-04 21:50 
GeneralAssert in olelink.cpp Pinmemberatali19-May-04 7:02 
GeneralRe: Assert in olelink.cpp Pinmembermystro_AKA_kokie19-May-04 12:50 
QuestionWhat about Eclipse? PinsussAnonymous14-May-04 12:27 
AnswerRe: What about Eclipse? PinmemberJörgen Sigvardsson16-May-04 7:00 
GeneralRe: What about Eclipse? Pinmembermystro_AKA_kokie16-May-04 7:24 
AnswerRe: What about Eclipse? Pinmemberflyingxu28-Apr-07 15:20 
Generalmissing file Pinmemberbitrat14-May-04 7:06 
jvmdi.h, I think is missing. Also, I enjoyed your political stance.
GeneralRe: missing file Pinmembermystro_AKA_kokie14-May-04 7:42 
GeneralFile Missing PinmemberSilentBob?14-May-04 4:30 
GeneralRe: File Missing Pinmembermystro_AKA_kokie14-May-04 5:09 
QuestionFile Missing ? PinmemberHing13-May-04 22:42 
AnswerRe: File Missing ? Pinmembermystro_AKA_kokie14-May-04 1:36 

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.140415.2 | Last Updated 14 May 2004
Article Copyright 2004 by mystro_AKA_kokie
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid