Eclipse Passage Operator
is an RCP application
licensed with Passage
.

Operator uses Passage GUI facilities to address UX demands.

Employ Passage runtime

Basic steps are described in the example made of Floating License Server.

Operator implements 4 internal features and also demands license protection for the product itself.

Main product licensing feature org.eclipse.passage.loc.operator.product is declared for protection in the branding plug-in.

Product key and Access Cycle configuration are located in Operator Seal plug-in.

Licensing requirements for 4 internal features reside in the Operator API plug-in as a part of API contract.

Forbid unlicensed launching of the product

The most common task is to stop product launching if it is not licensed properly.

Operator itself allows unlicensed launching (declares org.eclipse.passage.loc.operator.product feature with warn restriction level), but pauses execution and draws user's attention to the fact of license absence.

E4LicensingAddon is the key actor which is invoked on the workbench startup and prevents unlicensed launching.

To employ E4LicensingAddon on your product startup you should plug it as an add-on to your workbench model application. You can do so, for example, by declaring extension for org.eclipse.e4.workbench.model point.

Passage Operator declares such an extension in its branding plug-in.

Notify a user there is no proper license

If a feature is somehow triggered or controlled from GUI, we can use LicensedRunnableUI or EquinoxPassageUI directly to empower license check for the feature and, if the check gets negative diagnose, notify a user and block the feature execution (if required).

Two internal features cover basic Operator functionality: license issuing. The issuing itself happens after Issue Personal/Floating License wizard completes. Thus, if there is no proper license coverage for the corresponding feature, the wizard start is the perfect time to notify a user about that.

Have a look how Issue Personal License trigger exploits LicensedRunnableUI: if conveys the feature name and its implementation.

Prior the implementation is executed, license coverage for the feature is checked. If it appears to be insufficient, then LicenseStatusDialog is exposed to the user.

This dialog offers a user to import a proper license. Unless license status is changed, the implementation execution is blocked (for feature declared for license protection with error restriction level).