Version 1 (modified by sena, 3 years ago) (diff)


This page describes the process of accessing the MS Entry and its associated files from a new annotation entry (similar to GELATO).

The following is a sample handler (see method and shows how to get the selected MS Entry (clicked on project explorer pane) from a handler (to create a new annotation entry):

public class OpenGelatoWizard {
	//log4J Logger
	private static final Logger logger = Logger.getLogger(OpenGelatoWizard.class);

	@Inject private static IGritsDataModelService gritsDataModelService = null;
	@Inject static IGritsUIService gritsUIService = null;
	@Inject MApplication application;
	public Object execute(@Named(IServiceConstants.ACTIVE_SELECTION) Object object,
			IEventBroker eventBroker, @Named (IServiceConstants.ACTIVE_SHELL) Shell shell, EPartService partService) {
		try {
			List<Entry> msEntries = getMSEntries(object);

	 * @param object - an Entry or a StructuredSelection item
	 * @return List<Entry> - List of MS Entries to annotation
	private List<Entry> getMSEntries(Object object)  {
		List<Entry> entries = new ArrayList<Entry>();
		StructuredSelection to = null;
		Entry selectedEntry = null;
		if(object instanceof Entry)
			selectedEntry = (Entry) object;
		else if (object instanceof StructuredSelection)
			if(((StructuredSelection) object).getFirstElement() instanceof Entry)
				to = (StructuredSelection) object;
		if (selectedEntry != null) {
			if(selectedEntry.getProperty().getType().equals(MassSpecProperty.TYPE)) {
		// try getting the last selection from the data model
		if(gritsDataModelService.getLastSelection() != null
				&& gritsDataModelService.getLastSelection().getFirstElement() instanceof Entry)
			to = gritsDataModelService.getLastSelection();

		if(to != null) {
			List<Entry> selList = to.toList();
			for(int i=0; i < selList.size(); i++) {		
				Entry msEntry = selList.get(i);
				//if the right property
				if(msEntry.getProperty().getType().equals(MassSpecProperty.TYPE)) {
					if (!entries.contains(msEntry))

		return entries;

getMSEntries method shown above is a typical method for trying to find the selected item. This method specifically looks for MS Entries not just any Entry. This is done with this line:


If there are no selections then the wizard or dialog to be opened for creation of the new annotation entry should provide an option for browsing the current entries and make a selection there. A sample selection dialog (see is shown below:

        ProjectExplorerDialog dlg = new ProjectExplorerDialog(newShell);
        // Set an entry type as a filter
	// Change the title bar text
	dlg.setTitle("Mass Spec Selection");
	// Customizable message displayed in the dialog
	dlg.setMessage("Choose an MS Experiment to add");
	// Calling open() will open and run the dialog.
	if ( == Window.OK) {
		Entry entry = dlg.getEntry();
		if (entry != null) {

This generic ProjectExplorerDialog can be used anywhere to allow users to select a specific type of Entry. It is generally linked to a "Browse" button to let the users choose an Entry.