/**
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget;
import com.google.common.collect.Maps;
import org.waveprotocol.wave.model.util.CollectionUtils;
import java.util.Map;
/**
* @author vega113@gmail.com (Yuri Zelikov)
*/
public class SimpleGadgetInfoProviderImpl implements GadgetInfoProvider<GadgetInfoImpl> {
private static final Map<String, GadgetInfoImpl> GADGETS_CACHE = Maps.newTreeMap();
static {
GadgetInfoImpl pollo =
GadgetInfoImpl.of("Pollo", "A polling gadget that allows to perform multi choice polls.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/gAHa8",
"fabian.linz@gmail.com", "", "");
GADGETS_CACHE.put(pollo.getName(), pollo);
GadgetInfoImpl mindMap =
GadgetInfoImpl.of("MindMap", "Collaborate using a hierarchical mind map.",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER, "http://goo.gl/8TqQ5",
"Bruce Cooper", "Jeremy", "");
GADGETS_CACHE.put(mindMap.getName(), mindMap);
GadgetInfoImpl mindMapConceptDraw =
GadgetInfoImpl.of("MindMap ConceptDraw",
"ConceptDraw MINDMAP offers a variety of presentation, input, and output "
+ "solutions that make creating and sharing map content simple and effective.",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.TEAM, "http://goo.gl/m7HXR",
"ConceptDraw", "Yuri", "");
GADGETS_CACHE.put(mindMapConceptDraw.getName(), mindMapConceptDraw);
GadgetInfoImpl map =
GadgetInfoImpl.of("Map",
"Collaborate on a map of placemarks, paths, and shapes with other participants."
+ "Great for planning events and trips.", GadgetCategoryType.MAP,
GadgetCategoryType.OTHER, "http://goo.gl/0YlHY", "Google", "Jeremy", "");
GADGETS_CACHE.put(map.getName(), map);
GadgetInfoImpl mapCluster =
GadgetInfoImpl.of("Map Cluster",
"Add your location to the map, and see where everyone else is from, using a "
+ "cluster visualization.", GadgetCategoryType.MAP, GadgetCategoryType.OTHER,
"http://goo.gl/TE5LJ", "Google", "Jeremy", "");
GADGETS_CACHE.put(mapCluster.getName(), mapCluster);
GadgetInfoImpl yesNoMini =
GadgetInfoImpl.of("Yes/No/Mini", "A miniature version of the Yes/No/Maybe gadget.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/WnAkm",
"Zachary 'Gamer_Z.' Yaro", "Jeremy", "");
GADGETS_CACHE.put(yesNoMini.getName(), yesNoMini);
GadgetInfoImpl yesNoMaybePlus =
GadgetInfoImpl.of("Yes/No/Maybe/+",
"Same as Google's Yes/No/Maybe, only you can edit the titles and add new ones.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/fydAe",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(yesNoMaybePlus.getName(), yesNoMaybePlus);
GadgetInfoImpl yesNoMaybe =
GadgetInfoImpl.of("Yes/No/Maybe",
"Use this to ask friends if they want to join you for a party, to get their "
+ "opinion on a topic, or even to petition their support for a movement.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/24YOf",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(yesNoMaybe.getName(), yesNoMaybe);
GadgetInfoImpl codeSnippet =
GadgetInfoImpl.of("Code Snippet",
"Paste and edit snippets of code within your waves, including syntax highlighting "
+ "for over 20 languages. Uses SyntaxHighlighter by Alex Gorbatchev.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/0cQcc",
" Harry Denholm, Ishani.org", "Jeremy", "");
GADGETS_CACHE.put(codeSnippet.getName(), codeSnippet);
GadgetInfoImpl image =
GadgetInfoImpl.of("Image", "Lets you insert, resize and annotate any image from the web.",
GadgetCategoryType.IMAGE, GadgetCategoryType.UTILITY, "http://goo.gl/wCw4o",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(image.getName(), image);
GadgetInfoImpl waveTube =
GadgetInfoImpl.of("WaveTube", "A collaborative YouTube player for Wave.",
GadgetCategoryType.VIDEO, GadgetCategoryType.OTHER, "http://goo.gl/4k9f3",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(waveTube.getName(), waveTube);
GadgetInfoImpl napkin =
GadgetInfoImpl.of("Napkin",
"The Napkin Gadget is a blank canvas for collaborative doodling.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/FMBPf",
"Marcin Szczepanski", "Jeremy", "");
GADGETS_CACHE.put(napkin.getName(), napkin);
GadgetInfoImpl html =
GadgetInfoImpl.of("HTML", "Insert HTML code directly in to a wave.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/bN5AD",
"MBTE Sweden AB", "Jeremy", "");
GADGETS_CACHE.put(html.getName(), html);
GadgetInfoImpl iFrame =
GadgetInfoImpl.of("iFrame", "Insert IFRAME directly in to a wave.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/jvA7z",
"MBTE Sweden AB", "Jeremy", "");
GADGETS_CACHE.put(iFrame.getName(), iFrame);
GadgetInfoImpl iFrameNoBorders =
GadgetInfoImpl.of("iFrame - no borders", "Insert iFrame DISCRETLY into a wave.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/z46Sg",
"Pooja Srinivas", "Jeremy", "");
GADGETS_CACHE.put(iFrameNoBorders.getName(), iFrameNoBorders);
GadgetInfoImpl noEdit =
GadgetInfoImpl.of("No Edit", "Kindly readers to not edit your blip.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/0gEjd",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(noEdit.getName(), noEdit);
GadgetInfoImpl noEditNoText =
GadgetInfoImpl.of("No Edit - with no text", "DISCRETLY prevent the edition of your blip.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/cNgLA",
"Pooja Srinivas", "Jeremy", "");
GADGETS_CACHE.put(noEditNoText.getName(), noEditNoText);
GadgetInfoImpl wordCloud =
GadgetInfoImpl.of("Word Cloud", "Add words and ideas into a collaborative word cloud.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/juj3U",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(wordCloud.getName(), wordCloud);
GadgetInfoImpl trackerAgent =
GadgetInfoImpl.of("Views tracker",
"A small gadget that when added to a wave tracks wave views. You can display"
+ "the number of views with Views Display gadget.", GadgetCategoryType.UTILITY,
GadgetCategoryType.OTHER, "http://goo.gl/wIQKU", "Yuri Zelikov <yuri@waveinabox.net>",
"Yuri", "");
GADGETS_CACHE.put(trackerAgent.getName(), trackerAgent);
GadgetInfoImpl trackerView =
GadgetInfoImpl.of("Views display",
"A display for the views tracker gadget. When added to a wave with the tracker "
+ "gadget - displays how many times the wave was viewed.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/hPDJD",
"Yuri <yuri@waveinabox.net>", "Yuri", "");
GADGETS_CACHE.put(trackerView.getName(), trackerView);
GadgetInfoImpl remainingTime =
GadgetInfoImpl.of("Remaining Time",
"Create an Event and see how much time remains. Import it in your calendar "
+ "and Share it on twitter, in Blogs and by mail.", GadgetCategoryType.UTILITY,
GadgetCategoryType.OTHER, "http://goo.gl/hwHu5", "time-labs.com", "Jeremy", "");
GADGETS_CACHE.put(remainingTime.getName(), remainingTime);
GadgetInfoImpl likeButton =
GadgetInfoImpl.of("Like Button",
"A like button similar to those in Google Reader, Google Buzz, and other Google "
+ "products.", GadgetCategoryType.VOTING, GadgetCategoryType.OTHER,
"http://goo.gl/7wkly", "Zachary 'Gamer_Z.' Yaro", "Jeremy", "");
GADGETS_CACHE.put(likeButton.getName(), likeButton);
GadgetInfoImpl pinwand =
GadgetInfoImpl.of("Pinwand",
"Collaborate on a virtual pinwand. Add text, images, video, comments and many more.",
GadgetCategoryType.OTHER, GadgetCategoryType.OTHER, "http://goo.gl/0PmBc",
"Michael Hielscher", "Jeremy", "");
GADGETS_CACHE.put(pinwand.getName(), pinwand);
GadgetInfoImpl approver =
GadgetInfoImpl.of("Approver",
"Allow people to approve or disapprove by clicking a thumbs up or thumbs down. "
+ "With 7 different themes.", GadgetCategoryType.VOTING, GadgetCategoryType.OTHER,
"http://goo.gl/qLtYT", "cmdskp", "Jeremy", "");
GADGETS_CACHE.put(approver.getName(), approver);
GadgetInfoImpl iLikeIt =
GadgetInfoImpl.of("I Like It!",
"Adds a favorites button to your wave, so that you and everyone else in the "
+ "wave can indicate that they like the wave - with a cute smiley face!",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/aXybB", "Jaken",
"Jeremy", "");
GADGETS_CACHE.put(iLikeIt.getName(), iLikeIt);
GadgetInfoImpl diagramEditor =
GadgetInfoImpl.of("Diagram Editor",
"Create cool diagrams (UML, BPMN, EPC, FMC, etc.) together with your friends in "
+ "Google Wave!", GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER,
"http://goo.gl/HvuA4", "processWave.org", "Jeremy", "");
GADGETS_CACHE.put(diagramEditor.getName(), diagramEditor);
GadgetInfoImpl wordNetwork =
GadgetInfoImpl.of("Word Network",
"Collaborate on a linking words together and organizing concepts. Double Click on "
+ "any word to link it to another or double click on the background to c...",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER, "http://goo.gl/6vwxY",
"antimatter15", "Jeremy", "");
GADGETS_CACHE.put(wordNetwork.getName(), wordNetwork);
GadgetInfoImpl googleFight =
GadgetInfoImpl.of("Google Fight!",
"Google Fights - the title should explain it all. Another gadget by "
+ "www.processWave.org.", GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER,
"http://goo.gl/Mg26y", "Michael Goderbauer", "Jeremy", "");
GADGETS_CACHE.put(googleFight.getName(), googleFight);
GadgetInfoImpl poll =
GadgetInfoImpl.of("Poll",
"Poll participants for their opinion. Supports both single and multiple selection "
+ "polls, and optionally allows votes to be changed after they're cast.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/0G7qU",
"Eric Williams", "Jeremy", "");
GADGETS_CACHE.put(poll.getName(), poll);
GadgetInfoImpl chart =
GadgetInfoImpl.of("Chart", "Lets you insert various charts into wave.",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER, "http://goo.gl/Tb7Q3",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(chart.getName(), chart);
GadgetInfoImpl retroChat =
GadgetInfoImpl.of("Retro Chat", "Chat room gadget for old-fashioned IMing in Wave.",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER, "http://goo.gl/AW0Vm",
"Charles Lehner", "Jeremy", "");
GADGETS_CACHE.put(retroChat.getName(), retroChat);
GadgetInfoImpl picasa =
GadgetInfoImpl.of("Picasa", "Add a Picasa photo album to a wave.",
GadgetCategoryType.IMAGE, GadgetCategoryType.OTHER, "http://goo.gl/NUYIs",
"Genliang Guan, University of Sydney", "Jeremy", "");
GADGETS_CACHE.put(picasa.getName(), picasa);
GadgetInfoImpl googlUrlShortener =
GadgetInfoImpl.of("Goo.gl URL Shortener",
"Shorten url with goo.gl, the new Google url shortener.(http://goo.gl/)",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/oRonD",
"haru1ban", "Jeremy", "");
GADGETS_CACHE.put(googlUrlShortener.getName(), googlUrlShortener);
GadgetInfoImpl pacMan =
GadgetInfoImpl.of("PacMan", "Play Pacman inside a Wave.", GadgetCategoryType.GAME,
GadgetCategoryType.OTHER, "http://goo.gl/RFzqt", "www.schulz.dk", "Jeremy", "");
GADGETS_CACHE.put(pacMan.getName(), pacMan);
GadgetInfoImpl superMarioBros =
GadgetInfoImpl.of("Super Mario Bros", "Play Super Mario Bros inside a Wave.",
GadgetCategoryType.GAME, GadgetCategoryType.OTHER, "http://goo.gl/Ca6d0",
"www.schulz.dk", "Jeremy", "");
GADGETS_CACHE.put(superMarioBros.getName(), superMarioBros);
GadgetInfoImpl sudoku =
GadgetInfoImpl.of("Sudoku",
"A cool game to share with your friends. Solve challenging Sudoku boards together"
+ "and see who is the best Sudoku player!", GadgetCategoryType.GAME,
GadgetCategoryType.OTHER, "http://goo.gl/FxORa", "LabPixies", "Jeremy", "");
GADGETS_CACHE.put(sudoku.getName(), sudoku);
GadgetInfoImpl searchSharedWaves =
GadgetInfoImpl
.of("Search shared waves",
"\"Google\" the shared waves on waveinabox.net with a customized Google search gadget.",
GadgetCategoryType.SEARCH, GadgetCategoryType.OTHER, "http://goo.gl/1sMZy",
"Yuri Zelikov <yuri@waveinabox.net>", "Yuri", "");
GADGETS_CACHE.put(searchSharedWaves.getName(), searchSharedWaves);
GadgetInfoImpl accuWeather =
GadgetInfoImpl.of("AccuWeather",
"The AccuWeather Wave Gadget is the perfect companion for trip planning. Select a "
+ "location and date, and the gadget will return a forecast.",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/iODX9",
"AccuWeather.com", "Jeremy", "");
GADGETS_CACHE.put(accuWeather.getName(), accuWeather);
GadgetInfoImpl decingGadget =
GadgetInfoImpl.of("Decing",
"Need to make a decision? Arrange a secret vote inside of a wave. Participants' "
+ "votes are not shared to others.", GadgetCategoryType.VOTING,
GadgetCategoryType.TEAM, "http://goo.gl/MghBe", "Decing.com", "Jeremy", "");
GADGETS_CACHE.put(decingGadget.getName(), decingGadget);
GadgetInfoImpl groceryList =
GadgetInfoImpl.of("Grocery List",
"Use this for your grocery list needs - share with your family, sort the list "
+ "automatically, print and take it to the store, and more!",
GadgetCategoryType.UTILITY, GadgetCategoryType.OTHER, "http://goo.gl/kna0V", "Quaker",
"Jeremy", "");
GADGETS_CACHE.put(groceryList.getName(), groceryList);
GadgetInfoImpl likey =
GadgetInfoImpl.of("Likey",
"A simple like/dislike Wave gadget that can be added to a blip for intuitive user"
+ "rating.", GadgetCategoryType.VOTING, GadgetCategoryType.PRODUCTIVITY,
"http://goo.gl/KrlJE", "Ben Griffiths", "Jeremy", "");
GADGETS_CACHE.put(likey.getName(), likey);
GadgetInfoImpl paginatorGadget =
GadgetInfoImpl.of("Paginator",
"The Paginator is a compact reading aid Gadget for Google Wave which paginates"
+ "large amounts of text and bookmarks the wave viewer's current location",
GadgetCategoryType.UTILITY, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/Ol9GW",
"Dan Smith", "Jeremy", "");
GADGETS_CACHE.put(paginatorGadget.getName(), paginatorGadget);
GadgetInfoImpl piano =
GadgetInfoImpl.of("Piano", "A real-time piano gadget.", GadgetCategoryType.MUSIC,
GadgetCategoryType.GAME, "http://goo.gl/x9vHX", "everybodywave", "Jeremy", "");
GADGETS_CACHE.put(piano.getName(), piano);
GadgetInfoImpl team =
GadgetInfoImpl.of("Team ",
"Lets you create a list of wave participants in a particular order.",
GadgetCategoryType.TEAM, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/VJnId",
"everybodywave", "Jeremy", "");
GADGETS_CACHE.put(team.getName(), team);
GadgetInfoImpl vectorEditor =
GadgetInfoImpl.of("Vector Editor",
"This gadget is useful for creating graphics. Shapes can be added, resized, moved,"
+ "and rotated. The application supports Lines, Freeform, Polygons, Rec...",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.OTHER, "http://goo.gl/VSkn5",
"antimatter15", "Jeremy", "");
GADGETS_CACHE.put(vectorEditor.getName(), vectorEditor);
GadgetInfoImpl yourBrainStormer =
GadgetInfoImpl.of("YourBrainStormer",
"Share your ideas more efficiently! Special Thanks to JiWei, Ze Zhou and Lin Myat.",
GadgetCategoryType.TEAM, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/rtnFD",
"WyeMun and KaiLin", "Jeremy", "");
GADGETS_CACHE.put(yourBrainStormer.getName(), yourBrainStormer);
GadgetInfoImpl ratings =
GadgetInfoImpl.of("Ratings",
"Add your vote from 1-5 stars, and see the total votes from others.",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/sC9yb", "Google",
"Jeremy", "");
GADGETS_CACHE.put(ratings.getName(), ratings);
GadgetInfoImpl drawBoard =
GadgetInfoImpl.of("Draw Board", "Draw images collaboratively with other users.",
GadgetCategoryType.UTILITY, GadgetCategoryType.TEAM, "http://goo.gl/uQ9vi",
"Miron Sadziak", "Jeremy", "");
GADGETS_CACHE.put(drawBoard.getName(), drawBoard);
GadgetInfoImpl colcrop =
GadgetInfoImpl.of("Colcrop",
"Cover as many cells as possible, by choosing adjacent colors. Play against"
+ "a participant or the computer. Computer Level 4 is pretty hard to defeat.",
GadgetCategoryType.GAME, GadgetCategoryType.OTHER, "http://goo.gl/Vh9ME",
"Alexis Vuillemin", "Jeremy", "");
GADGETS_CACHE.put(colcrop.getName(), colcrop);
GadgetInfoImpl bones =
GadgetInfoImpl.of("Bones",
"Bones provides graphical dice that any participant in a wave can set up to be"
+ "rolled by themselves or others. Results are shared with everyone.",
GadgetCategoryType.UTILITY, GadgetCategoryType.TEAM, "http://goo.gl/GbhWR",
"10x10 Room", "Jeremy", "");
GADGETS_CACHE.put(bones.getName(), bones);
GadgetInfoImpl lmnowave =
GadgetInfoImpl.of("lmnowave", "Solve crossword puzzles with friends in Google Wave.",
GadgetCategoryType.GAME, GadgetCategoryType.OTHER, "http://goo.gl/heXs7",
"Dan Vanderkam", "Yuri", "");
GADGETS_CACHE.put(lmnowave.getName(), lmnowave);
GadgetInfoImpl flickrWave =
GadgetInfoImpl.of("FlickrWave",
"Display individual Flickr photos or browse photos from a user's stream, "
+ "favorites, a photoset or a group.", GadgetCategoryType.IMAGE,
GadgetCategoryType.VIDEO, "http://goo.gl/OSEZF", "Mark Probst", "Yuri", "");
GADGETS_CACHE.put(flickrWave.getName(), flickrWave);
GadgetInfoImpl verbolVoiceChat =
GadgetInfoImpl.of("Verbol VoiceChat",
"Lets you record any thoughts you have into the wave, listen to what others "
+ "are saying or have said, and reply to them. V3.12.3.", GadgetCategoryType.VOICE,
GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/Iklq2",
"Family Systems and PhoneFromHere", "Yuri", "");
GADGETS_CACHE.put(verbolVoiceChat.getName(), verbolVoiceChat);
GadgetInfoImpl scrumpoker =
GadgetInfoImpl.of("Scrumpoker", "ScrumPoker for consensus-based estimation.",
GadgetCategoryType.PRODUCTIVITY, GadgetCategoryType.TEAM, "http://goo.gl/JuBfO",
"MasteringWave", "Yuri", "");
GADGETS_CACHE.put(scrumpoker.getName(), scrumpoker);
GadgetInfoImpl hostelWithMe =
GadgetInfoImpl.of("Hostel WithMe",
"In partnership with HostelWorld.com. Find the best budget accommodation together"
+ "with your friends.", GadgetCategoryType.TRAVEL, GadgetCategoryType.SEARCH,
"http://goo.gl/pXAkD", "rucksack.com", "Yuri", "");
GADGETS_CACHE.put(hostelWithMe.getName(), hostelWithMe);
GadgetInfoImpl takeOut =
GadgetInfoImpl.of("Take-Out",
"Helps organize take-out orders for a group. Great for coordinating food or coffee"
+ "runs for your office!", GadgetCategoryType.UTILITY, GadgetCategoryType.TEAM,
"http://goo.gl/4yFIQ", "Kip Holcomb", "Yuri", "");
GADGETS_CACHE.put(takeOut.getName(), takeOut);
GadgetInfoImpl travelWithMe =
GadgetInfoImpl.of("Travel WithMe",
"Travel WithMe allows groups of people to plan trips together in real time.",
GadgetCategoryType.TRAVEL, GadgetCategoryType.TEAM, "http://goo.gl/fdpJO",
"rucksack.com", "Yuri", "");
GADGETS_CACHE.put(travelWithMe.getName(), travelWithMe);
GadgetInfoImpl twitterSearch =
GadgetInfoImpl.of("Twitter Search",
"Shows results from Twitter for a given search term. Users can edit to specify"
+ "new term.", GadgetCategoryType.SEARCH, GadgetCategoryType.OTHER,
"http://goo.gl/1U79x", "Google", "Yuri", "");
GADGETS_CACHE.put(twitterSearch.getName(), twitterSearch);
GadgetInfoImpl waffle =
GadgetInfoImpl.of("Waffle",
"The easy way to plan an event. Just add a Waffle to your wave, choose a few dates"
+ "- now, all wave participants can vote immediately!", GadgetCategoryType.SEARCH,
GadgetCategoryType.OTHER, "http://goo.gl/VsXSf", "Mikkel Staunsholm (www.waffle.dk)",
"Yuri", "");
GADGETS_CACHE.put(waffle.getName(), waffle);
GadgetInfoImpl localTime =
GadgetInfoImpl.of("Local Time",
"Share a time on common ground using this simple gadget. It allows anyone to enter"
+ "a time, and everyone else sees it as a time in their time zone.",
GadgetCategoryType.TIME, GadgetCategoryType.UTILITY, "http://goo.gl/V4SjC",
"David Goemans", "Yuri", "");
GADGETS_CACHE.put(localTime.getName(), localTime);
GadgetInfoImpl trippy =
GadgetInfoImpl.of("Trippy",
"Co-create an itinerary: choose points of interest -- including Lonely Planet"
+ "recommendations, organize, share, print, or export to My Maps!",
GadgetCategoryType.TRAVEL, GadgetCategoryType.TEAM, "http://goo.gl/HgDlU",
"Lonely Planet", "Yuri", "");
GADGETS_CACHE.put(trippy.getName(), trippy);
GadgetInfoImpl conference =
GadgetInfoImpl.of("Conference",
"Click to insert a Ribbit Conference gadget to your toolbar.",
GadgetCategoryType.VOICE, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/UVZ4i",
"Ribbit Corporation", "Yuri", "");
GADGETS_CACHE.put(conference.getName(), conference);
GadgetInfoImpl timeBridgeConferencing =
GadgetInfoImpl.of("TimeBridge Conferencing",
"Instantly add phone and web conferencing to your wave with the TimeBridge"
+ "Conferencing Gadget. Just plug the gadget into your wave and go!",
GadgetCategoryType.VOICE, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/FPVh7",
"Ribbit Corporation", "Yuri", "");
GADGETS_CACHE.put(timeBridgeConferencing.getName(), timeBridgeConferencing);
GadgetInfoImpl plusOne =
GadgetInfoImpl.of("Plus One",
"A small, simple gadget to collect votes. Use it to rate anything!",
GadgetCategoryType.VOTING, GadgetCategoryType.OTHER, "http://goo.gl/aDH3v",
"Peter Frost", "Yuri", "");
GADGETS_CACHE.put(plusOne.getName(), plusOne);
GadgetInfoImpl timeMe =
GadgetInfoImpl.of("Time-Me!", "A stopwatch with support for multiple split-times!",
GadgetCategoryType.TIME, GadgetCategoryType.OTHER, "http://goo.gl/Zm3ch", "Owl Order",
"Yuri", "");
GADGETS_CACHE.put(timeMe.getName(), timeMe);
GadgetInfoImpl timemanager =
GadgetInfoImpl.of("Time-manager",
"Insert a small timer into your waves. Click on it to start/stop counting."
+ "Total time will be saved.", GadgetCategoryType.TIME, GadgetCategoryType.OTHER,
"http://goo.gl/48odp", "Fedor Indutny", "Yuri", "");
GADGETS_CACHE.put(timemanager.getName(), timemanager);
GadgetInfoImpl progressbar =
GadgetInfoImpl
.of("Progressbar",
"Insert a progress bar into your waves, and click it to indicate the current progress.",
GadgetCategoryType.UTILITY, GadgetCategoryType.PRODUCTIVITY, "http://goo.gl/qQ7n0",
"Fedor Indutny", "Yuri", "");
GADGETS_CACHE.put(progressbar.getName(), progressbar);
GadgetInfoImpl whenDoWeMeet =
GadgetInfoImpl.of("When do we meet?",
"Find a date for a business meeting, party, or vacation by collaboratively marking"
+ "each participant's free days in a shared calendar.", GadgetCategoryType.TIME,
GadgetCategoryType.TEAM, "http://goo.gl/qQ7n0", "Robert Bamler", "Yuri", "");
GADGETS_CACHE.put(whenDoWeMeet.getName(), whenDoWeMeet);
GadgetInfoImpl list =
GadgetInfoImpl.of("List",
"Insert little tables inside your wavelet. You can extend the columns, make them "
+ "sorted, etc...", GadgetCategoryType.UTILITY, GadgetCategoryType.PRODUCTIVITY,
"http://goo.gl/O6swn", "Teun Duynstee", "Yuri", "");
GADGETS_CACHE.put(list.getName(), list);
GadgetInfoImpl favJumpr =
GadgetInfoImpl.of("FavJumpr",
"A little Flickr game where you have to jump from one's user's favorites to"
+ "another's by selecting the one you like best.", GadgetCategoryType.GAME,
GadgetCategoryType.IMAGE, "http://goo.gl/DVySN", "Mark Probst", "Yuri", "");
GADGETS_CACHE.put(favJumpr.getName(), favJumpr);
GadgetInfoImpl carpool =
GadgetInfoImpl.of("Carpool",
"Lets you setup the details of a car trip, and participants in the wave can select"
+ "seats in the car for themself.", GadgetCategoryType.UTILITY,
GadgetCategoryType.TEAM, "http://goo.gl/FoKiv", "Chris Landgraf and Robert Krawatzeck",
"Yuri", "");
GADGETS_CACHE.put(carpool.getName(), carpool);
GadgetInfoImpl chess =
GadgetInfoImpl.of("Wave Chess", "Play Chess in Google Wave.", GadgetCategoryType.GAME,
GadgetCategoryType.OTHER, "http://wave-chess.appspot.com/wavechess/com.google.wave.chess.client.ChessGadget.gadget.xml", "Google", "Yuri", "");
GADGETS_CACHE.put(chess.getName(), chess);
}
public static SimpleGadgetInfoProviderImpl create() {
return new SimpleGadgetInfoProviderImpl();
}
private SimpleGadgetInfoProviderImpl() {
}
@Override
public Map<String, GadgetInfoImpl> retrieveGadgetInfo(GadgetCategoryType category) {
Map<String, GadgetInfoImpl> gadgetInfoList = null;
if (GadgetCategoryType.ALL.equals(category)) {
gadgetInfoList = CollectionUtils.newHashMap(GADGETS_CACHE);
} else {
gadgetInfoList = CollectionUtils.newHashMap();
for (Map.Entry<String, GadgetInfoImpl> entry : GADGETS_CACHE.entrySet()) {
GadgetInfoImpl info = entry.getValue();
if (info.getPrimaryCategory().equals(category)
|| info.getSecondaryCategory().equals(category)) {
gadgetInfoList.put(info.getName(), info);
}
}
}
return gadgetInfoList;
}
}