Jade IDE

The use of specific JADE features and proposals for new feature suggestions
ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:49 am

by vera >> Tue, 24 Sep 2002 0:57:59 GMT

Here is the thought about ability to view and edit whole class in one edit window in more details.
-----------------------------------------------

I would like to see the current limitation of the Jade editor be removed to display and edit all methods for a class in a single editor window. The main benefits of this approach are to allow the developer to browse all code regardless of which method it belongs to. This will ensure that developers are able to look for duplicated code and to perform other refactoring functions as per the Refactoring book by Martin Fowler.

It would be necessary to provide some extra functionality behind the scenes to enable this. I can see the need for an Editor class to represent the screen view of the methods. This class could track the current method and provide notification to a class controller. The class controller is responsible for aggregating the instances of the JadeMethod class mentioned previously.

In the case of an existing method, as the user begins to edit a Jade method, the controller is notified that this method has been changed and the JadeMethod instance is updated. This forces the appropriate lock to ensure another developer doesn't try to edit the same method. Once the user is satisfied with the changes and selects save, the method is updated appropriately and the lock is removed and the "dirty" flag is reset.

If the user creates a new method, as soon as the method name is entered, the controller is notified and a new instance of the JadeMethod class is created with a state of New. The dirty flag is also set and the user continues to edit this method. The changes made on the screen are automatically passed through to the JadeMethod class to ensure it remains synchronised with the editor window.

Selecting save for the editor will notify the controller class to perform a save. The controller is responsible for iterating through each of the JadeMethod instances and performing the appropriate action. If the method has been edited, perform the save and clear the state and dirty flag. If the method is a new method then save it to the db. Ensure that any new or edited methods have the NeedsCompile flag set. This enables a single compile option to be selected for the entire class and all methods that need to be compiled can be compiled by iterating through the instances of JadeMethod(s).

The existing notification mechanism for the JadeMethod class would remain and it would also include a state (Existing, New, Edited, Deleted). If the state was changed to Edited then the appropriate lock would be required for this method from the repository. The JadeMethod would also be notified if another developer has changed the implementation. The developer would be prompted to "refresh" the source in the JadeClass instance and also notify the controller that this method has changed and to reload the source for this method into the editor. This could be an automatic process or provide a prompt to the developer to ensure they are notified of the change.

To support clipboard operations, if an entire method is cut or deleted, the controller notifies the JadeMethod instance it has been deleted by changing the state. If an entire method is pasted into the editor, the controller is notified and an instance of JadeMethod is created. If the method name matches an already existing method, I would suggest adding some form of suffix to the newly pasted method name. Obviously, this depends on where in the editor the cursor is located when the paste operation is executed. The rules of insert vs replace need to be specified to ensure the developer is aware of the impact of the operation.

The editor, controller and JadeMethod classes all send and receive notifications. This enables the appropriate lock to be acquired when the developer makes a change and also that any methods in the editor are refreshed if another developer makes a change to a method. The existing versioning mechanism is retained.

The main area that could provide some discussion is the order of the methods in the editor. I think that the methods should be grouped by scope. It may be an idea to sort alphabetically within the same scope although a tree representation allowing the developer to manually drag and drop the methods to reorder them could be nice. There would need to be some persistence for this order at the developer level as well. The reason for allowing each developer to reorder the methods is that it allows the developer to group related methods together. Obviously, every developer is not going to reorder the methods for every class in the system but it may be useful to allow each developer to carry out this function so that some classes with a lot of methods could be more logically organised.

Some thought also has to given to what constitutes a method block. For example, if a developer places comments prior to the method name then this should be treated as part of the method implementation. A convention of a single blank line between methods would be sufficient to clearly show each method.

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:49 am

by vera >> Tue, 24 Sep 2002 1:19:59 GMT

Sorry, I have no idea why it's duplicating my messages.

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:49 am

by cdshearer >> Tue, 24 Sep 2002 2:15:59 GMT

Hey "Vera"

Is there any reason why you're posting anonymously? If there is, all well and good, but if not, why not let us know who you are.

Regards,

Craig Shearer

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by vera >> Tue, 24 Sep 2002 3:57:57 GMT

No, no reason. Sorry, I didn't think about it. I apologise.
My name is Vera (not "Vera") Jancik and I work as a software engineer for Jade Direct Australasia in Melbourne.

Cheers,
Vera

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by cdshearer >> Wed, 25 Sep 2002 2:03:33 GMT

Hi Vera

Good to know you've identified yourself. There was some private finger-pointing going on, wondering who this Vera person actually was! :-)

Welcome along, anyway - your opinions are valued!

Craig

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by torrie >> Fri, 27 Sep 2002 12:02:02 GMT

Is there any advantage in having one code window containing all methods for a given class other than most other editors (VB, C++, Delphi etc) to do it? After 6 months solid Jade I returned to Delphi and found that the one code window per class was harder to navigate and find methods than the Jade interface is.

It seems that people would like the interface changed so it is easier to view code in all the methods of a class and move the code between these.

Another suggestion would be to make the class list, method list, constant list etc dockable within the Schema browser window. You could then move these windows to the left hand side, allowing more lines of code to be displayed in each method. By simply scrolling down the list of methods you could see the code in all the methods and get a better idea of what code exists (An option to include event methods in the main list would be nice).

As to creating methods my main annoyance is the popup window that asks for a method name. Could a new method not just be given a default name eg “newMethod1” and when you save the method Jade could parse your code and get the method name directly from the code? The same would go for changing method names.

As to adding new properties etc adding these in a table with columns Name, type, Access, Length, Scale Factor, Virtual, etc would allow attributes to be easily added and changed. Rather than committing the changes to each field, storing the changes to all the fields and committing at the end of the change process would make it easier as well.

Torrie

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by cnwdad1 >> Sat, 28 Sep 2002 1:07:05 GMT

If you want a list of all of a class's methods, as well as seeing more lines of code at once, why don't you use the Methods Browser window ? Just select your class in the class hirerarchy, right mouse-click, and select the "Methods Browser". On the left, you get a list of all of the class's methods, including those inherited from superschemas (but not those from superclasses), and lots of room on the right for your code.

regards,
darrell.

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by johnmunro >> Mon, 30 Sep 2002 13:07:31 GMT

Personally I think that the method windows are fine the way they are. I am working on a project in my spare time in VB.NET, where all methods and everything is one huge lump of code, and it can be very difficult trying to find the method you want - they've had to introduce outlining (naming and hiding chunks of code) to try and make it more usable. Also if all of the methods in a class were in one lump of text, it would make it more difficult to compile methods individually the way Jade does now (which I like).

I think that the ultimate solution might be to let us extend the Development Environment. In that way we could write extensions, give/sell them to other Jade developers, and use the ones we feel most comforable with. Someone could write a third party method editor which puts all of the methods in one text box, and only the people who liked working that way would use it. It saves Cardinal from having to try and please everyone - we could please ourselves :)

John Munro

---
Synergist Limited - Home of FileVisionT
The Bioscience Innovation Centre
Cowley Road, Cambridge, UK
CB4 0DS

Telephone: +44 (0) 1223 478200
Fax: +44 (0) 1223 477969
Email: john.munro@filevision.com
Web: http://www.filevision.com

The contents of this communication are confidential and are only intended to be read by the addressee. We apologize if you receive this communication in error and ask that you contact Synergist Limited immediately to arrange for its return. The use of any information contained in this communication by an unauthorized person is strictly prohibited. Synergist Limited cannot accept responsibility for the accuracy or completeness of this communication as it is being transmitted over a public network. If you suspect this message may have been intercepted or amended, please inform Synergist Limited.

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by allistar >> Mon, 30 Sep 2002 23:00:47 GMT

But imagine what an extra burden that would be on Jade support, having all sorts of non standard IDE enhancements out there.

Allistar.

------------------------------------------------------------------
Allistar Melville
Software Developer
Auckland, NEW ZEALAND

Greentree International,
Developer of Greentree Financial Software. ------------------------------------------------------------------

ConvertFromOldNGs
Posts: 5321
Joined: Wed Aug 05, 2009 5:19 pm

Re: Jade IDE

Postby ConvertFromOldNGs » Fri Aug 07, 2009 10:50 am

by cdshearer >> Mon, 30 Sep 2002 23:53:32 GMT

<snip>
But imagine what an extra burden that would be on Jade support, having all sorts of non standard IDE enhancements out there.

But virtually every other development tool allows plug-ins. What makes JADE any different?

Why should third-party add-ons burden Jade Support? I can imagine that this might be the case if third-party tools had to use some interface that wasn't entirely clean - for example:

To add a new method, you must call this, then set this property, then call this and then this, etc.

Then third-party tools might get it wrong, but surely, if JADE provided a clean interface, for example:

vars
ide : JadeIDE;begin

create ide transient;
return ide.addMethod(class, newMethodName, options, source);
epilog
delete ide;
end;

then anything that goes wrong is either inside of JADE, which IS Jade Support's worry, or the responsibility of the tool provider. If you're using a tool, then surely the first recourse for support is the tool provider!

Craig


Return to “Feature Discussions”

Who is online

Users browsing this forum: No registered users and 7 guests