Child pages
  • Browsing the Source, Where to Start

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Project

...

Overview

The following projects are located in the SVN repository: 

Project name

Description

com.servoy.eclipse.appserver

Eclipse plugin to start the application server in developer Servoy Application Server in Servoy Developer

com.servoy.eclipse.core

Core eclipse classes that together make up developer Servoy Developer

com.servoy.eclipse.debug

Classes that revolve arround around debugging, connectors to DLTK

com.servoy.eclipse.designer

All Form designer code

com.servoy.eclipse.exporter

The workspace exporter

com.servoy.eclipse.feature

Holds the definition to makeup the eclipse Eclipse Servoy Developer

com.servoy.eclipse.jsunit

JSunit <-> Junit bridge and command line JS unit test/suite runner

com.servoy.eclipse.model

The workspace model

com.servoy.eclipse.profiler

The profiler (view) which is present in Servoy developer Developer

com.servoy.eclipse.team

The servoy team providerServoy Team Provider, used against the server/repository interfaces

com.servoy.eclipse.ui

GUI helper classes, some default dialogs, abstract GUI elements

com.servoy.extensions

Contains the default shipped client plugins and beans, shipped in installer

servoy_debug

client side debug classes and connectors

servoy_headless_client

The headless Headless and webclient Web Client code

servoy_smart_client

The Smart client Client (webstart)

servoy_shared

The shared code / libs between web and smart client

Some entry point hints when looking at the code:

...

Web, Headless and Smart Client (and server interfaces)

org.eclipse.dltk.javascript.rhino

The Rhino engine, contains couple of small modifications for DLTK/Debug hooks and some improvements

eclipse_target

Holds all the needed eclipse dependency jars

High Level Overview of Client Code

Tip
titleType Hierarchy view

By selecting a class in the Package Explorer in Eclipse, the Type Hierachy of that class can be shown by pressing F4.

Tip
titleLocating Types

By pressing Control-Shift-T, a dialog pops up that allows quick lookup of classes based on their name

Tip
titleCall Hierargy

By pressing Control-Alt-H on a function shows where in the code the function is used 

The entry point for all Clients  is the ClientState class. The ClientState class is in fact the most top level class containing logic. From it, from which all other "'client" ' applications are derived (tip view class hierarchy in eclipse)

...

. It holds many object managers (all implementing the IManager interface ),

...

for example:

  • Foundset manager, FoundsetManager: class managing all IFoundset instances (datahandling layer)which has multiple implentations from which Foundset.java . IFoundSet has multiple implementations from which the FoundSet class is the main one, which . It contains records (IRecord .javaclass) and a Record.java contains a Row.java objectFoundSetManager keeps track also track records contains rows (Row class). The FoundSetManager also keeps track of the RowManagers for each database table to handle Row objectsPlugin manager .
  • PluginManager: class managing all plugins (a plugin is an external piece of code which has to satisfy to the IPlugin.java interface ) and can be used from in scripting)
  • FormManager: class managing all IFormController FormController instances, subclasses . Subclasses are WebFormManger and SwingFormManager
  • LAFManager mainly used in smart client only to control appierence
  • CMD managerer for binding all GUI actions
  • Mode manager ModeManager: class to control the mode the application is in like: , for example edit, find ,printthen it also holds a refernece and print
  • BeanManager: class to create/control the beans and their lifecycle
  • A reference to the script engine (rhinoRhino)

We have a MVC for Servoy formsThe MVC pattern is used in Servoy when it comes to Forms:

  • Model: IFoundSet .java (class - defines the db data in form, by the select SQL it contains)
  • View: SwingForm class for Smart Client or WebForm .java (class for Web Client - handles the UI)
  • Controller: FormController .java (class - binds model and view and controls them)

Smart Client

The J2DBClient .java class is the webstart Java Webstart client, generates interfaces via . It generates the Swing user interface through the ComponentFactory and ItemFactory classes. WebClient.java

  • Contains a Java main method in the J2DBClient class
  • LAFManager: class mainly used in Smart Client only to control appearance
  • CmdManager: class for binding all GUI actions

Headless Client

The SessionClient class is the Headless Client

Web Client

The WebClient class is the apache-wicket browser client, generates interfaces via ComponentFactory/ItemFactory and TemplateGenerator (produces templates in html)-based client. It extends SessionClient. It generates the user interface through the ComponentFactory and ItemFactory classes, coupled via TemplateGenerator to produces plain html templates.

  • Is created via the SolutionLoader class