/*=============================================================================#
# Copyright (c) 2014-2016 Stephan Wahlbrink (WalWare.de) 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:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.docmlet.wikitext.internal.ui;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.SortedMap;
import org.eclipse.mylyn.internal.wikitext.ui.WikiTextUiPlugin;
import org.eclipse.mylyn.internal.wikitext.ui.editor.help.HelpContent;
import org.eclipse.mylyn.wikitext.core.parser.markup.MarkupLanguage;
import org.eclipse.mylyn.wikitext.ui.WikiText;
import de.walware.docmlet.base.ui.markuphelp.IMarkupHelpContentProvider;
import de.walware.docmlet.base.ui.markuphelp.MarkupHelpContent;
@SuppressWarnings("restriction")
public class WikitextMarkupHelpProvider implements IMarkupHelpContentProvider {
public static final String NS= "wikitext"; //$NON-NLS-1$
private static final String NS_= NS + ':';
private static class WikitextHelpTopic extends MarkupHelpContent {
private HelpContent mylynHelp;
private String content;
public WikitextHelpTopic(final HelpContent mylynHelp) {
super(NS_ + mylynHelp.getMarkupLanguageName(), mylynHelp.getMarkupLanguageName());
this.mylynHelp= mylynHelp;
}
@Override
public String getContent() throws IOException {
if (this.mylynHelp != null) {
try {
this.content= this.mylynHelp.getContent();
}
finally {
this.mylynHelp= null;
}
}
return this.content;
}
}
public static String getContentIdFor(MarkupLanguage markupLanguage) {
final SortedMap<String, HelpContent> mylynHelps= WikiTextUiPlugin.getDefault().getCheatSheets();
while (markupLanguage != null
&& !mylynHelps.containsKey(markupLanguage.getName()) ) {
markupLanguage= WikiText.getMarkupLanguage(markupLanguage.getExtendsLanguage());
}
return (markupLanguage != null) ? (NS_ + markupLanguage.getName()) : null;
}
public WikitextMarkupHelpProvider() {
}
@Override
public synchronized Collection<MarkupHelpContent> getHelpTopics() {
final SortedMap<String, HelpContent> mylynHelps= WikiTextUiPlugin.getDefault().getCheatSheets();
final List<MarkupHelpContent> topics= new ArrayList<>(mylynHelps.size());
for (final HelpContent mylynHelp : mylynHelps.values()) {
topics.add(new WikitextHelpTopic(mylynHelp));
}
return topics;
}
}