/******************************************************************************* * Copyright (c) 2011, 2016 EclipseSource and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.rap.examples.internal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.rap.examples.IExampleContribution; public final class Examples { private static final List<ExampleCategory> EXAMPLE_CATEGORIES = createCategories(); private Examples() { } public static Examples getInstance() { return new Examples(); } public List<ExampleCategory> getCategories() { return Collections.unmodifiableList( EXAMPLE_CATEGORIES ); } public IExampleContribution getContribution( String id ) { return getContributionsTracker().getContribution( id ); } public IExampleContribution findInitialContribution() { IExampleContribution contribution = null; List<ExampleCategory> categories = getInstance().getCategories(); if( !categories.isEmpty() ) { contribution = Examples.getFirstContribution( categories.get( 0 ) ); } return contribution; } private static IExampleContribution getFirstContribution( ExampleCategory category ) { IExampleContribution contribution = null; List<String> contributionIds = category.getContributionIds(); if( !contributionIds.isEmpty() ) { contribution = getInstance().getContribution( contributionIds.get( 0 ) ); } return contribution; } private static ExampleContributionsTracker getContributionsTracker() { return Activator.getDefault().getExampleContributions(); } // TODO [rst] Read from configuration file private static List<ExampleCategory> createCategories() { List<ExampleCategory> exampleCategories = new ArrayList<ExampleCategory>(); exampleCategories.add( createCategory( "Basic Widgets", "input", "button", "canvas", "dialog" ) ); exampleCategories.add( createCategory( "Trees & Tables", "tableviewer", "treeviewer", "table-markup", "table-template" ) ); exampleCategories.add( createCategory( "Key Features", "complex-data", "rich-label", "validation", "drag-and-drop", "file-upload", "nls" ) ); exampleCategories.add( createCategory( "Layouts", "grid-layout", "row-layout", "fill-layout" ) ); exampleCategories.add( createCategory( "Custom Widgets", "gmaps", "richtext", "oscilloscope", "carousel", "chart", "nebula-grid", "drop-down" ) ); return exampleCategories; } private static ExampleCategory createCategory( String name, String... contributions ) { ExampleCategory exampleCategory = new ExampleCategory( name ); for( String contribution : contributions ) { exampleCategory.addContributionId( contribution ); } return exampleCategory; } }