2017 June Release

Productivity features of Fabasoft app.ducx using EclipsePermanent link for this heading

Syntax Highlighting of Enumeration ValuesPermanent link for this heading

When an enumeration value is used within any Fabasoft app.ducx expression, it is highlighted. By default, enumeration values are highlighted in blue and italic font, like in the JDT Java editor.

The reference documentation of the enumeration type is displayed when hovering over an enumeration value.

The syntax highlighting can be configured in Windows Preferences Fabasoft app.ducx Syntax Coloring in Eclipse.

Referenced Form Pages in OutlinePermanent link for this heading

Form pages that are not directly defined, but referenced from a form definition are displayed in the outline as well. For convenience, another symbol is used to make it easier to distinguish between defined and referenced form pages.

Highlighting of the current domain specific language editorPermanent link for this heading

On the bottom right of the current editor, a symbol of the current domain specific language is shown. This feature requires the Eclipse appearance theme "Classic". This can be set in Windows Preferences General Appearance.

Breadcrumb NavigationPermanent link for this heading

All app.ducx editors support Breadcrumb navigation. The Breadcrumb bases on the current selection or cursor position in the editor.

The Breadcrumb is used to navigate to definition of other objects within the current file or to other files in the same project.

Static check of generic assignmentsPermanent link for this heading

Generic assignments are checked in a static way. For example, is a property assigned to a class, it will be checked if the property is implemented on the class.

Example

objmodel DUCXSAMPLE@200.300
{
  import COOSYSTEM@1.1;
  import COODESK@1.1;
  import FSCVAPP@1.1001;

  class<ContentObjectClass> MyClass {

    classinitcont<contcontent, contextension> = { //OK

      { file("test.txt"), "txt" }

    }

  }

}

objmodel DUCXSAMPLE@200.300
{
  import COOSYSTEM@1.1;
  import COODESK@1.1;
  import FSCVAPP@1.1001;

  class<CompoundObjectClass> MyClass {

    classinitcont<contcontent, contextension> = { //NOK: classinitcont is not available on CompoundObjectClass

      { file("test.txt"), "txt" }

    }

  }

}

Data types and assignment are also checked in complex assignments.

The type compatibility of assignment is defined as:

Object class of the attribute

Type of the value

COOSYSTEM@1.1:AttributeIntegerDef

Integer

COOSYSTEM@1.1:AttributeFloatDef

Float

Integer

COOSYSTEM@1.1:AttributeBoolDef

Boolean

COOSYSTEM@1.1:AttributeDateTimeDef

Datetime

COOSYSTEM@1.1:AttributeEnumDef

String constant of the enumeration value (equals the definition of the enumeration type)

Integer

COOSYSTEM@1.1:AttributeStringDef

String

Expression

Integer

Float

COOSYSTEM@1.1:AttributeExpressionDef

String

Expression

COOSYSTEM@1.1:AttributeObjectDef

Object

COOSYSTEM@1.1:AttributeEnumDef

Enum

COOSYSTEM@1.1:AttributeContentDef

Content (“file(…)”)

Expression

String

Navigation between errors and warningsPermanent link for this heading

Following keystroke combinations are supported:

  • "CTRL + ." jumps to the next marker in the current editor
  • "CTRL + ," jumps to the previous marker

The Eclipse configuration of the markers to jump (errors, warnings, information ...) is in Window > Preferences > General > Editors > Text Editors > Annotations.

Linking between Outline and EditorPermanent link for this heading

The Outline of app.ducx editors is extended with the button "Link with Editor". If this button is checked, the selection adapts itself to the cursor position in the editor and vice versa.

Quick OutlinePermanent link for this heading

The keystroke combination "CTRL + O" opens the "Quick Outline" in the current editor. This Outline supports keyboard navigation and contains a quick search for the current source file.

Change references with refactoringPermanent link for this heading

If a reference needs to be renamed, but the address and the multilingual name must not change, refactoring supports this process.

To refactor, select or click into a reference or a Fabasoft expression variable. Open the context menu and click “Rename Element”. Enter the new name and press Enter to refactor the element. To start the refactoring, the shortcut "Alt + Shift + R" can be used, too.

To get a preview of the refactored element, click on the arrow down on the right side of the tooltip and open the preview.

Java source code will not be changed automatically.

Open DeclarationPermanent link for this heading

The keystroke combination "F3" is used to open the declaration of the selected object.

Find ReferencesPermanent link for this heading

The keystroke combination "CTRL + Shift + G" is used to find references to the selected object. The search result is displayed in the Eclipse "Search" view.

Mark OccurrencesPermanent link for this heading

"Mark Occurrences" is used to highlight references to the currently selected object. This feature is activated via the following button in the menu bar.

Code FormattingPermanent link for this heading

All app.ducx editors support code formatting via "CTRL + Shift + F". This formats indents and line breaks in the current editor.

The line length for inserting line breaks is configured on the editor page in the global preferences.

Color picker in the Content Assist of the UI EditorPermanent link for this heading

In the layout block of form pages, the content assist can be used to assign a color value. After the syntax fontcolor = the content assist via "CTRL + Space" provides a color picker for the favored color.

Expression information in complex assignmentsPermanent link for this heading

The information about available scopes and parameters of the current expression is also shown if the mouse pointer is placed on the expression keyword. This feature enables the scope and parameter information of expressions in complex assignment.

Information about variables in ExpressionsPermanent link for this heading

The type and the scope of a variable are displayed in the tooltip of variables in expressions. The type is only displayed if resolvable.

Goto definition for all objectsPermanent link for this heading

The feature "Goto definition" is available for all objects in all DSLs. Pressing F3 on a name will jump to the definition of this object.

Copy a reference from the Project ExplorerPermanent link for this heading

The Project Explorer is extended with a context menu "Copy Reference" on the elements to copy the reference of the selected object to the clipboard.

Outline in the Business Process EditorPermanent link for this heading

The Outline of the Business Process Editor is improved with a concrete structure of complex process definitions. Process elements like conditions, loops, parallel or sequential blocks are shown within the process definition.

Warning for missing user interface binding at object class declarationsPermanent link for this heading

If an object class has no user interface binding, a warning is shown.

Additionally, a Quick Fix is provided to create the binding either in an existing or in a new file.

Error for mismatching component and modelPermanent link for this heading

If the software component of the source file differs to the software component of the project, an error is shown.

Quick fix to add a reference to the projectPermanent link for this heading

If a software component is imported in a source file and it is not in the references of the current project, a Quick Fix to add the software component to the project is provided.

If this software component is not available in the configured web service or the web service itself is not available, an error message is shown.

Content AssistPermanent link for this heading

Fabasoft app.ducx provides Content Assist support within expression blocks and domain specific languages. Content Assist may be triggered manually with Ctrl + Space. In several situations Content Assist gets triggered automatically:

  • ::
    accesses the global scope
  • :>
    accesses the local scope
  • @
    accesses the temporary scope
  • #
    retrieves a component object
  • .
    may be followed by a Fabasoft Folio Kernel Interface Method, a property, an action or a use case

Quick Fix for ambigious elementsPermanent link for this heading

If short references are ambiguous within the Fabasoft app.ducx project, a “Quick Fix” is provided. You can choose between possible fully qualified references and replace the short reference with the desired fully qualified reference.

If an unknown identifier has been found during the code validation and a corresponding app.ducx construct could be determinated app.ducx offers a quick fix to create such an entity.

FoldingPermanent link for this heading

Source code blocks starting with defined keywords like class or enum can be folded to get a better overview of the source code.

Automatically close bracketsPermanent link for this heading

After typing {, [, ( in the source code the corresponding .close bracket is automatically created.

Find the matching bracketPermanent link for this heading

If the cursor is behind an opening or closing bracket its counterpart is highlighted. This option can be enabled or disabled on the “Fabasoft app.ducx” > ”Preferences” > ”Editor” preference page.

To jump to the counter part of a bracket, put the cursor behind the opening or closing bracket and press Ctrl + Shift + P. The shortcut key options can be changed in the Eclipse preferences (“Window” > “Preferences” > “General” > “Keys” > “Go to matching bracket”).

TooltipsPermanent link for this heading

If you point to a short reference, the corresponding fully qualified reference is displayed as tooltip. A hyperlink allows viewing the properties of the component object with the Fabasoft Folio Web Client.

Tooltips for use cases, actions, functions and kernel interfaces contain the result types.

Edit component object instances utilizing the Fabasoft Folio Web ClientPermanent link for this heading

Instances of component objects like

  • ACL (COOSYSTEM@1.1:AccessControlList),
  • Data Import (Component Object) (FSCCOLD@1.1001:DataImportComponentObject),
  • Active Report (Text) (COOAR@1.1:ActiveReport_Text),
  • Relational Report Definition (Component Object) (FSCRELREP@1.1001:RelRepDefComponentObject) and
  • Web Service Definition (FSCOWS@1.1001:WebServiceDefinition)

can be edited utilizing the Fabasoft Folio Web Client. The instance gets transformed to Fabasoft app.ducx source code that is inserted in your project. Thus complex compound properties can be edited very efficiently using a graphical user interface.

In the project explorer navigate to the desired instance and execute the context menu command “Edit”. The default web browser is opened and the instance can be edited. Click ”Next” to transform the instance to Fabasoft app.ducx source code or “Cancel” to discard the changes. The context menu command “Synchronize” can be used to transform the current instance of the Fabasoft Folio Domain to Fabasoft app.ducx source code.

Note:

  • While editing the component object in the Fabasoft Folio Web Client no editing in Eclipse is possible.
  • Only changes of the opened instance are considered. Changes of objects that are referenced in object pointer properties of the opened instance are not transformed to Fabasoft app.ducx source code.

TemplatesPermanent link for this heading

We have provided code snippets, so called templates, for most places in all project files. These are available via the Content Assist.

Templates are marked in the Content Assist with a green dot.

Spell checkerPermanent link for this heading

For comments a spell checker is provided. The dictionary can be defined in the Eclipse preferences (“Window” > “Preferences” > “General” > “Editors” > “Text Editors” > “Spelling”). Additionally a user defined dictionary can be provided to be able to add unknown words to this dictionary.

Right-click on a misspelled word denoted by a red underline and click “Quick Fix” (shortcut: Ctrl + 1). You can select a suggestion, add the word to the user dictionary, ignore the word during the current session or disable spell checking.

Fabasoft reference documentationPermanent link for this heading

The object model of Fabasoft products is subsumed in the Fabasoft Reference Documentation http://help.appducx.com/?topic=doc/Reference-Documentation/index.htm.

The Fabasoft Reference Documentation is also displayed context-sensitively as tooltip in the Eclipse environment.

The manual description is taken from source code comments e.g. for enumeration types, object classes, use cases or properties. When typing /** and pressing Enter parameters of the following use case are inserted automatically for easier documentation.

If a component reference should be displayed in the “See also” block, the full reference has to be used after the @see tag. Useful references (e.g. type of the parameters, members of an object class…) are generated implicitly.

It is possible to embed code snippets in the comment. These snippets should be surrounded by the tags <expr> and </expr>.

A description for a software component itself may be defined in the properties of a project (“Properties” > “Fabasoft app.ducx” > “Description file”). The text file for the description may contain XHTML tags for structuring the text (e.g. <p></p>, <ul></ul>, <br/>).

Note: For a complete description of the syntax for writing reference documentation comments refer to http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html.

Highlighting obsolete symbolsPermanent link for this heading

All obsolete Symbols are highlighted with strikethrough, this is the same way as deprecated symbols in java. Please note that using obsolete symbols from other software components results in a compiler warning.

Quickfix for type warnings or errorsPermanent link for this heading

Due to the increased occurrence of invalid type warnings quick fixes for these types of error are supplied. There are two corrections implemented:

  • Use first item: [0]: fixes a single/multiple value warning
  • Add cast to <type>: inserts the required type cast

Quickfix for missing parametersPermanent link for this heading

A quick fix for missing parameters in action and application calls is provided.

Kernel interfacesPermanent link for this heading

All Kernel Interfaces are known to the compiler and handling is as easy as possible. This includes consideration of parameters and result types in expressions, tooltips, content assist and highlighting.

Customization projectsPermanent link for this heading

By simply checking a checkbox the app.ducx project is turned into a customization project. Such projects do not create software components and component objects. Instead they contain only subtle changes or additions to existing software components.