...
The goal of this quickstart is to introduce you to the the context menu api, so you will be able to add context menu extensions in your IGB Apps.
Getting Started
- Clone the quickstart project
What is a context menu?
Info | ||
---|---|---|
| ||
"A context menu (also called contextual, shortcut, and popup or pop-up menu) is a menu in a graphical user interface (GUI) that appears upon user interaction, such as a right-click mouse operation. A context menu offers a limited set of choices that are available in the current state, or context, of the operating system or application. Usually the available choices are actions related to the selected object." |
Example Context Menu on OS X 10.9
IGB Context Menu
...
Code Block | ||
---|---|---|
| ||
package org.lorainelab.igb.menu.api; import java.util.List; import java.util.Optional; import org.lorainelab.igb.menu.api.model.AnnotationContextEvent; import org.lorainelab.igb.menu.api.model.ContextMenuItem; /** * @author dcnorris * @module.info context-menu-api */ public interface AnnotationContextMenuProvider { /** * * This method will be called when the the annotation * context popup menu is being constructed. * * @param event an event object containing selection info * @return a list of MenuItem objects to be added to the annotation * context popup menu. It is possible an implementor will chose not to * append any MenuItems to the context menu, and in this case should * return Optional.empty() or an empty list. * */.menu.api.model.ContextMenuItem; public interface AnnotationContextMenuProvider { public Optional<List<ContextMenuItem>> buildMenuItem(AnnotationContextEvent event); } |
Data Model
AnnotationContextEvent
...
Code Block | ||
---|---|---|
| ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com<groupId>org.lorainelab.affymetrix<igb</groupId> <artifactId>igb-project</artifactId> <version>9.0.0</version> </parent> <groupId>org.lorainelab.igb</groupId> <artifactId>org.lorainelab.igb.menu.api.quickstart</artifactId> <version>1.0.0</version> <packaging>bundle</packaging> <name>Context Menu Extension Quickstart</name> <dependencies> <dependency> <groupId>biz.aQute.bnd</groupId> <artifactId>bndlib</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com<groupId>org.lorainelab.affymetrix<igb</groupId> <artifactId>genometry</artifactId> <scope>provided</scope> </dependency> <!--Start of logging dependencies--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <scope>provided</scope> </dependency> <!--End of logging dependencies--> <dependency> <groupId>org.lorainelab.igb</groupId> <artifactId>org.lorainelab.igb.menu.api</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <executions> <execution> <id>build plugin repository</id> <goals> <goal> index </goal> </goals> <phase>package</phase> <configuration> <obrRepository>${project.build.directory}</obrRepository> <mavenRepository>${project.build.directory}</mavenRepository> </configuration> </execution> </executions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Import-Package>*</Import-Package> <Export-Package/> <Service-Component>*</Service-Component> <Bundle-Description>${bundleDescription}</Bundle-Description> </instructions> </configuration> </plugin> <plugin> <groupId>org.lorainelab</groupId> <artifactId>bundle-markdown-encoder</artifactId> <executions> <execution> <goals> <goal>encodeMarkdown</goal> </goals> </execution> </executions> <configuration> <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </configuration> </plugin> </plugins> </build> </project> |
...
- Navigate to the root of the project (e.g. the cloned repository https://bitbucket.org/lorainelab/context-menu-api-quickstart.git)
- use maven to build the project
...