Search in sources :

Example 1 with CtxHelpContext

use of org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext in project dsl-devkit by dsldevkit.

the class CheckContextsGenerator method createContextForCheck.

/**
 * Creates a context for every check.
 *
 * @param factory
 *          the model factory
 * @param check
 *          the check
 * @return the new help context
 */
private CtxHelpContext createContextForCheck(final CtxHelpDocumentFactory factory, final Check check) {
    CtxHelpContext context = factory.createContext();
    context.setID(generatorNaming.getContextId(check));
    CtxHelpTopic topic = factory.createTopic();
    topic.setLabel(check.getLabel());
    Path contextFilePath = new Path("docs/content/" + EcoreUtil2.getContainerOfType(check, CheckCatalog.class).getName() + ".html");
    topic.setXMLAttribute(ICtxHelpConstants.ATTRIBUTE_HREF, contextFilePath.toPortableString() + '#' + generatorNaming.getContextId(check));
    context.addChild(topic);
    return context;
}
Also used : Path(org.eclipse.core.runtime.Path) CtxHelpTopic(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpTopic) CtxHelpContext(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext)

Example 2 with CtxHelpContext

use of org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext in project dsl-devkit by dsldevkit.

the class CheckContextsGenerator method updateContextsFile.

/**
 * Update contexts file.
 *
 * @param uri
 *          the uri to the current catalog
 * @param buildContext
 *          the context
 * @throws CoreException
 *           the core exception
 */
public void updateContextsFile(final URI uri, final IBuildContext buildContext) throws CoreException {
    IFile file = projectHelper.getHelpFile(uri, CheckContextsExtensionHelper.CONTEXTS_FILE_NAME);
    CtxHelpModel model = new CtxHelpModel(CoreUtility.getTextDocument(file.getContents()), false);
    model.setUnderlyingResource(file);
    model.load();
    CtxHelpRoot root = model.getCtxHelpRoot();
    CtxHelpDocumentFactory factory = model.getFactory();
    Iterable<CtxHelpContext> contexts = Iterables.filter(model.getCtxHelpRoot().getChildren(), CtxHelpContext.class);
    // all context ids belonging to the catalog
    Set<String> ids = Sets.newHashSet();
    String contextIdPrefix = projectHelper.getCatalog(buildContext, uri).getName().toLowerCase() + "_";
    for (CtxHelpContext context : contexts) {
        if (context.getId().startsWith(contextIdPrefix)) {
            ids.add(context.getId());
        }
    }
    Set<String> checkIds = Sets.newHashSet();
    // Add context for all checks which have been added
    for (Check check : projectHelper.getCatalog(buildContext, uri).getAllChecks()) {
        if (!ids.contains(generatorNaming.getContextId(check))) {
            root.addChild(createContextForCheck(factory, check));
        }
        // all contextIds constructed of the checks of the catalog
        checkIds.add(generatorNaming.getContextId(check));
    }
    // Remove context for checks which have been deleted.
    for (String id : ids) {
        if (!checkIds.contains(id)) {
            for (CtxHelpContext context : contexts) {
                if (context.getId().equals(id)) {
                    root.removeChild(context);
                }
            }
        }
    }
    sortAllContexts(model);
    model.save();
    model.dispose();
}
Also used : CtxHelpModel(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpModel) IFile(org.eclipse.core.resources.IFile) CtxHelpRoot(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpRoot) Check(com.avaloq.tools.ddk.check.check.Check) CtxHelpContext(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext) CtxHelpDocumentFactory(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpDocumentFactory)

Example 3 with CtxHelpContext

use of org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext in project dsl-devkit by dsldevkit.

the class CheckContextsGenerator method sortAllContexts.

/**
 * This method sorts all contexts alphabetically so that the file always gets generated in the same order.
 *
 * @param model
 *          context model
 */
private void sortAllContexts(final CtxHelpModel model) {
    Ordering<CtxHelpContext> ordering = Ordering.from((a, b) -> ComparisonChain.start().compare(a.getId(), b.getId()).result());
    List<CtxHelpContext> allContexts = Lists.newArrayList(Iterables.filter(model.getCtxHelpRoot().getChildren(), CtxHelpContext.class));
    List<CtxHelpContext> expectedContexts = ordering.sortedCopy(allContexts);
    CtxHelpRoot root = model.getCtxHelpRoot();
    if (!expectedContexts.equals(allContexts)) {
        for (int i = 0; i < expectedContexts.size(); i++) {
            CtxHelpContext expected = expectedContexts.get(i);
            CtxHelpContext actual = allContexts.get(i);
            if (!actual.getId().equals(expected.getId())) {
                root.swap(actual, expected);
                allContexts.set(allContexts.indexOf(expected), actual);
                allContexts.set(i, expected);
            }
        }
    }
}
Also used : CtxHelpRoot(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpRoot) CtxHelpContext(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext)

Example 4 with CtxHelpContext

use of org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext in project dsl-devkit by dsldevkit.

the class CheckContextsGenerator method removeContexts.

/**
 * Removes the contexts for all checks of a deleted catalog.
 *
 * @param delta
 *          the delta
 * @throws CoreException
 *           the core exception
 */
@SuppressWarnings("unchecked")
public void removeContexts(final Delta delta) throws CoreException {
    final IProject project = RuntimeProjectUtil.getProject(delta.getUri(), mapper);
    if (project != null) {
        IFile file = projectHelper.getHelpFile(project, CheckContextsExtensionHelper.CONTEXTS_FILE_NAME);
        CtxHelpModel model = new CtxHelpModel(CoreUtility.getTextDocument(file.getContents()), false);
        model.setUnderlyingResource(file);
        model.load();
        CtxHelpRoot root = model.getCtxHelpRoot();
        Iterable<CtxHelpContext> contexts = Iterables.filter(Lists.newArrayList(root.getChildren()), CtxHelpContext.class);
        for (CtxHelpContext context : contexts) {
            Iterable<IEObjectDescription> catalogs = delta.getOld().getExportedObjectsByType(CheckPackage.Literals.CHECK_CATALOG);
            for (IEObjectDescription catalog : catalogs) {
                if (context.getId().startsWith(catalog.getName().getLastSegment().toLowerCase() + "_")) {
                    root.removeChild(context);
                }
            }
        }
        model.save();
        model.dispose();
    }
}
Also used : CtxHelpModel(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpModel) IFile(org.eclipse.core.resources.IFile) CtxHelpRoot(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpRoot) CtxHelpContext(org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext) IProject(org.eclipse.core.resources.IProject) IEObjectDescription(org.eclipse.xtext.resource.IEObjectDescription)

Aggregations

CtxHelpContext (org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpContext)4 CtxHelpRoot (org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpRoot)3 IFile (org.eclipse.core.resources.IFile)2 CtxHelpModel (org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpModel)2 Check (com.avaloq.tools.ddk.check.check.Check)1 IProject (org.eclipse.core.resources.IProject)1 Path (org.eclipse.core.runtime.Path)1 CtxHelpDocumentFactory (org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpDocumentFactory)1 CtxHelpTopic (org.eclipse.pde.internal.ua.core.ctxhelp.text.CtxHelpTopic)1 IEObjectDescription (org.eclipse.xtext.resource.IEObjectDescription)1