com.pekinsoft.spi.ModuleInfoProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ServiceProviders Show documentation
Show all versions of ServiceProviders Show documentation
An API that allows for dynamic application features and loose coupling.
The newest version!
/*
* Copyright (C) 2022 PekinSOFT Systems
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* *****************************************************************************
* Project : AppFramework Application API
* Class : ModuleInfoProvider.java
* Author : Sean Carrick
* Created : Nov 21, 2022
* Modified : Nov 21, 2022
*
* Purpose: See class JavaDoc for explanation
*
* Revision History:
*
* WHEN BY REASON
* ------------ ------------------- -----------------------------------------
* Nov 21, 2022 Sean Carrick Initial creation.
* *****************************************************************************
*/
package com.pekinsoft.spi;
import javax.swing.Icon;
/**
* {@code ModuleInfoProvider} is an interface that allows an
* {@code org.jdesktop.application.Application Application} to show information
* about individual modules on its about dialog window.
*
* This interface is provided so that vendors other than the original application
* vendor who provide extension modules to an {@code Application} can have the
* information about their module(s) accredited to their company.
*
* @author Sean Carrick <sean at pekinsoft dot com>
*
* @version 1.3
* @since 1.0
*/
public interface ModuleInfoProvider {
/**
* The copyright notice for the module. This notice is typically in the form:
*
* Copyright© 1980-1999 CompanyName. All rights under copyright reserved.
*
*
* @return the module's copyright notice
*/
public String moduleCopyright();
/**
* The brief description of the features provided by the module. Typically,
* this is simple information, such as:
*
* The XYZ module provides the methodology for performing various numeric
* conversions, such as miles to kilometers, feet/inches to
* meters/centimeters, Fahrenheit to Celsius, etc.
*
*
* @return the module's brief description
*/
public String moduleDescription();
/**
* The homepage of the module project. This could be a web page that just
* provides information about the module/vendor and a download link, or it
* could be a link to the module project's source code repository.
*
* @return the module's homepage web address
*/
public String moduleHomepage();
/**
* The logo icon for the module. Typically, this will be an icon whose
* graphic is a visual summary of the module's features.
* - Note:
* - This logo icon needs to be 48x48 pixels to display correctly.
*
*
* @return the module's logo icon
*/
public Icon moduleLogo();
/**
* The name of the module, which typically describes the module's feature(s)
* in one or two words.
*
* @return the module's name
*/
public String moduleName();
/**
* The module's vendor, which is either the person or the company which
* designed and created the module.
*
* @return the creator of the module
*/
public String moduleVendor();
/**
* The module's version number string. This version should include a major,
* minor, and revision part, and may also include a build number. The version
* string should be returned as either:
*
* major.minor.revision, i.e. 1.3.15
*
* — ***OR*** —
*
* major.minor.revision build buildNumber, i.e., 1.3.15 build 9609
*
*
* @return the modules formatted version number, with or without a build
*/
public String moduleVersion();
}