Linkki Application Framework

A data binding framework for web based user interfaces with Vaadin.

License

License

GroupId

GroupId

org.linkki-framework
ArtifactId

ArtifactId

linkki-application-framework
Last Version

Last Version

0.9.20190205.1
Release Date

Release Date

Type

Type

jar
Description

Description

Linkki Application Framework
A data binding framework for web based user interfaces with Vaadin.

Download linkki-application-framework

How to add to project

<!-- https://jarcasting.com/artifacts/org.linkki-framework/linkki-application-framework/ -->
<dependency>
    <groupId>org.linkki-framework</groupId>
    <artifactId>linkki-application-framework</artifactId>
    <version>0.9.20190205.1</version>
</dependency>
// https://jarcasting.com/artifacts/org.linkki-framework/linkki-application-framework/
implementation 'org.linkki-framework:linkki-application-framework:0.9.20190205.1'
// https://jarcasting.com/artifacts/org.linkki-framework/linkki-application-framework/
implementation ("org.linkki-framework:linkki-application-framework:0.9.20190205.1")
'org.linkki-framework:linkki-application-framework:jar:0.9.20190205.1'
<dependency org="org.linkki-framework" name="linkki-application-framework" rev="0.9.20190205.1">
  <artifact name="linkki-application-framework" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.linkki-framework', module='linkki-application-framework', version='0.9.20190205.1')
)
libraryDependencies += "org.linkki-framework" % "linkki-application-framework" % "0.9.20190205.1"
[org.linkki-framework/linkki-application-framework "0.9.20190205.1"]

Dependencies

compile (5)

Group / Artifact Type Version
org.linkki-framework : linkki-utils jar 0.9.20190205.1
org.linkki-framework : linkki-core jar 0.9.20190205.1
com.vaadin : vaadin-server jar 7.7.13
com.vaadin : vaadin-client-compiled jar 7.7.13
com.vaadin : vaadin-themes jar 7.7.13

provided (3)

Group / Artifact Type Version
com.vaadin : vaadin-client jar 7.7.13
org.eclipse.jdt : org.eclipse.jdt.annotation jar 2.2.0
com.github.spotbugs : spotbugs-annotations jar 3.1.10

test (4)

Group / Artifact Type Version
org.linkki-framework : linkki-test jar 0.9.20190205.1
junit : junit jar 4.12
org.mockito : mockito-core jar 2.23.4
org.hamcrest : hamcrest-junit jar 2.0.0.0

Project Modules

There are no modules declared in this project.

linkki

License Maven Central

linkki is a data binding framework that makes building UI in vaadin applications easier and faster.

Features

Applications often consist of a variety of input elements that closely mirror objects and properties of a domain model. Creating such user interfaces and implementing the synchronization with the domain model is often a repetitive task. linkki automates most of the data binding tasks, enabling developers to focus on the domain and UI logic.

  • Fast UI development

  • Declarative UI definition (with annotations)

  • UI logic implementation using the presentation model pattern (PMO)

  • Automatic data binding between (P)MO and UI elements

  • Dynamic binding of other UI properties, including

    • Visibility

    • Enabled-state

    • List of available values

Examples

Model Binding
    @ModelObject
    public Report getReport() {
        return report;
    }
Textfield/Textarea
    @UITextArea(position = 10, label = "Description", modelAttribute = "description", required = RequiredType.REQUIRED, rows = 5, width = "50em")
    public void description() {
        /* Use description from report (model object) directly */
    }
ComboBox
    @UIComboBox(position = 20, label = "Type", modelAttribute = "type", required = RequiredType.REQUIRED)
    public void type() {
        /*
         * - bind value to the property "type" from report - use enum constants from ReportType as
         * available values
         */
    }
Button
    @UIButton(position = 30, caption = "Send", icon = VaadinIcons.SEND, showIcon = true, enabled = EnabledType.DYNAMIC)
    public void send() {
        report.save();
        Notification.show(
                          String.format("Report with id %d filed!", report.getId()),
                          "Thank you for reporting!",
                          Notification.Type.TRAY_NOTIFICATION);
    }

    /**
     * Enable button only if description and type is present.
     *
     * @return {@code true} if button is enabled otherwise {@code false}
     */
    public boolean isSendEnabled() {
        String description = report.getDescription();
        return description != null && !description.isEmpty()
                && report.getType() != null;
    }
}
report disabled
Figure 1. Report with disabled send button
report enabled
Figure 2. Report with enabled send button
Note
The complete example can be found at Getting Started - 'Error report' tutorial.

Installation

linkki is available from Maven Central and can be included via Maven/Gradle:

Maven dependency
<dependency>
  <groupId>org.linkki-framework</groupId>
  <artifactId>linkki-core-vaadin8</artifactId>
  <version>${linkki.version}</version>
</dependency>

Contribution

  • Bug reports, new ideas and improvements can be created in the GitHub issue tracker

  • Collaboration on issues/tasks via pull requests

Documentation

Documentation for linkki can be found at doc.linkki-framework.org.

License

Copyright Faktor Zehn GmbH.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

org.linkki-framework

Versions

Version
0.9.20190205.1
0.9.20190205
0.9.20181210
0.9.20181129
0.9.20181119
0.9.20181103
0.9.20181029
0.9.20180806
0.9.20180704
0.9.20180613
0.9.20180605
0.9.20180424
0.9.20180411
0.9.20180327
0.9.20180302
0.9.20180125
0.9.20180118
0.9.20171221
0.9.20171218
0.9.20171215
0.9.20171123
0.9.20171114
0.9.20171023
0.9.20171020
0.9.20170112