diff options
| author | Pierre-Charles David | 2017-02-24 09:22:07 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2017-08-08 15:36:13 +0000 |
| commit | 81fa98edefcc5f2441b4c342cf0a60a13fe22137 (patch) | |
| tree | cc1aee17f89187cca523f634ac62bde826d860ba | |
| parent | b314dac1423b93fcd7060c64c41e787fda320491 (diff) | |
| download | org.eclipse.amalgam-81fa98edefcc5f2441b4c342cf0a60a13fe22137.tar.gz org.eclipse.amalgam-81fa98edefcc5f2441b4c342cf0a60a13fe22137.tar.xz org.eclipse.amalgam-81fa98edefcc5f2441b4c342cf0a60a13fe22137.zip | |
[509735] Move extension-point parsing into ActivityExplorerExtensionManager
Bug: 509735
Change-Id: I77256a1a994ebfc427f78978d1e6d303862d19dc
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
6 files changed, 701 insertions, 701 deletions
diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java index bebcf4ab..51d826b0 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java @@ -14,10 +14,8 @@ import org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.ActivityConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.FormHelper; import org.eclipse.amalgam.explorer.activity.ui.api.editor.predicates.IPredicate; -import org.eclipse.amalgam.explorer.activity.ui.internal.extension.point.manager.ActivityExplorerExtensionManager; import org.eclipse.amalgam.explorer.activity.ui.internal.intf.IOrdered; import org.eclipse.amalgam.explorer.activity.ui.internal.intf.IVisibility; -import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -29,20 +27,8 @@ public class ExplorerActivity implements IVisibility, IOrdered { private ActivityConfiguration config; private ImageHyperlink widget; - private static ActivityConfiguration parseConfiguration(IConfigurationElement element_p) { - ActivityConfiguration config = new ActivityConfiguration(); - config.setName(ActivityExplorerExtensionManager.getName(element_p)); - config.setDescription(ActivityExplorerExtensionManager.getDescription(element_p)); - config.setIndex(Integer.parseInt(ActivityExplorerExtensionManager.getIndex(element_p))); - config.setListener(ActivityExplorerExtensionManager.getActivityAdapter(element_p)); - config.setImage(ActivityExplorerExtensionManager.getImage(element_p)); - config.setId(ActivityExplorerExtensionManager.getId(element_p)); - config.setPredicate(ActivityExplorerExtensionManager.getPredicate(element_p)); - return config; - } - - public ExplorerActivity(IConfigurationElement element_p) { - this.config = parseConfiguration(element_p); + public ExplorerActivity(ActivityConfiguration cfg) { + this.config = cfg; } public ExplorerActivity(String id, String name, IHyperlinkListener listener, IPredicate predicate, int index) { diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java index 55412ac9..8b9fec9e 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java @@ -19,6 +19,7 @@ import org.eclipse.amalgam.explorer.activity.ui.api.actions.AbstractDescriptionA import org.eclipse.amalgam.explorer.activity.ui.api.actions.DescriptionAction; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.ActivityExplorerPageConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.CommonActivityExplorerPageConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.SectionConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.editor.ActivityExplorerEditor; import org.eclipse.amalgam.explorer.activity.ui.api.editor.input.ActivityExplorerEditorInput; import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.FormHelper.LayoutType; @@ -398,9 +399,9 @@ public class ActivityExplorerPage extends CommonActivityExplorerPage implements * @param contributor */ protected void handleContributedSectionsFor(IConfigurationElement contributor) { - // create a Activity Explorer section - ActivityExplorerSection section = new ActivityExplorerSection(contributor) { + SectionConfiguration cfg = ActivityExplorerExtensionManager.parseSectionConfiguration(contributor); + ActivityExplorerSection section = new ActivityExplorerSection(cfg) { @Override protected IAction[] getToolBarActions() { ActivityExplorerPage page = ActivityExplorerPage.this; @@ -469,37 +470,8 @@ public class ActivityExplorerPage extends CommonActivityExplorerPage implements @Override public void setInitializationData(IConfigurationElement cfig, String propertyName, Object data) { super.setInitializationData(cfig, propertyName, data); - - String title = ActivityExplorerExtensionManager.getTitle(cfig); - setHeaderTitle(title); - - Image image = ActivityExplorerExtensionManager.getImageOff(cfig); - if (image != null) { - setHeaderImageOff(image); - - } - - image = ActivityExplorerExtensionManager.getImageOn(cfig); - if (image != null) { - setHeaderImageOn(image); - - } - - String description = ActivityExplorerExtensionManager.getDescription(cfig); - if (null != description) { - setPageDescription(HTMLHelper.formWrapper(description)); - } - - } - - /** - * Set the page description. - * - * @param description - */ - - private void setPageDescription(String description) { - getConfiguration().setDescription(description); + // Complete the page's configuration with ActivityExplorerPage-specific elements + ActivityExplorerExtensionManager.parseActivityExplorerPageConfiguration(cfig, getConfiguration()); } /** diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java index 41e43374..45e1576a 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java @@ -19,6 +19,7 @@ import org.eclipse.amalgam.explorer.activity.ui.api.actions.OpenActivityExplorer import org.eclipse.amalgam.explorer.activity.ui.api.actions.ViewerFilteringAction; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.BasicSessionActivityExplorerPageConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.CommonActivityExplorerPageConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.SectionConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.editor.activities.ExplorerActivity; import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.FormHelper; import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.FormHelper.LayoutType; @@ -247,7 +248,8 @@ public class BasicSessionActivityExplorerPage extends ActivityExplorerPage { protected void handleContributedSectionsFor(IConfigurationElement contributor_p) { // create the session - ActivityExplorerSection newSection = new ActivityExplorerSection(contributor_p) { + SectionConfiguration cfg = ActivityExplorerExtensionManager.parseSectionConfiguration(contributor_p); + ActivityExplorerSection newSection = new ActivityExplorerSection(cfg) { @Override protected IAction[] getToolBarActions() { @@ -349,7 +351,8 @@ public class BasicSessionActivityExplorerPage extends ActivityExplorerPage { @Override public void setInitializationData(IConfigurationElement cfig, String propertyName, Object data) { super.setInitializationData(cfig, propertyName, data); - getConfiguration().setDisplayViewer(ActivityExplorerExtensionManager.getIsDisplayViewerInPage(cfig)); + // Complete the page's configuration with BasicSessionActivityExplorerPage-specific elements + ActivityExplorerExtensionManager.parseBasicSessionActivityExplorerPageConfiguration(cfig, getConfiguration()); } /** diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java index d52c1546..f5dc5711 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java @@ -10,8 +10,6 @@ *******************************************************************************/ package org.eclipse.amalgam.explorer.activity.ui.api.editor.pages; -import java.text.MessageFormat; - import org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator; import org.eclipse.amalgam.explorer.activity.ui.IImageKeys; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.CommonActivityExplorerPageConfiguration; @@ -79,10 +77,9 @@ public class CommonActivityExplorerPage extends FormPage implements IExecutableE @Override public void setInitializationData(IConfigurationElement cfg, String propertyName, Object data) { super.setInitializationData(cfg, propertyName, data); - - parseConfiguration(cfg); + ActivityExplorerExtensionManager.parseCommonActivityExplorerPageConfiguration(cfg, this.config); + setPartName(config.getTabName()); - String plugin_id = config.getPluginId(); if (config.getOverviewImageOffPath().equals(IImageKeys.IMAGE_DEFAULT_OVERVIEW_OFF)) { plugin_id = ActivityExplorerActivator.ID; @@ -92,37 +89,9 @@ public class CommonActivityExplorerPage extends FormPage implements IExecutableE plugin_id = ActivityExplorerActivator.ID; } overviewImageOn = ActivityExplorerActivator.getDefault().getImage(plugin_id, config.getOverviewImageOnPath()); - setIndex(config.getIndex()); } - private void parseConfiguration(IConfigurationElement cfig) { - config.setTitle(ActivityExplorerExtensionManager.getTitle(cfig)); - config.setTabName(ActivityExplorerExtensionManager.getTabName(cfig)); - if (config.getTabName() == null) { - config.setTabName(config.getTitle()); - } - config.setOverview(ActivityExplorerExtensionManager.getOverviewElement(cfig) != null); - config.setPluginId(ActivityExplorerExtensionManager.getPluginId(cfig)); - if (config.isOverview()) { - config.setOverviewImageOffPath(ActivityExplorerExtensionManager.getOverviewImageOff(cfig)); - config.setOverviewImageOnPath(ActivityExplorerExtensionManager.getOverviewImageOn(cfig)); - config.setOverviewText(ActivityExplorerExtensionManager.getOverviewDescription(cfig)); - } else { - config.setOverviewImageOffPath(IImageKeys.IMAGE_DEFAULT_OVERVIEW_OFF); - config.setOverviewImageOnPath(IImageKeys.IMAGE_DEFAULT_OVERVIEW_ON); - } - config.setPredicate(ActivityExplorerExtensionManager.getPredicate(cfig)); - - String indice = ActivityExplorerExtensionManager.getIndex(cfig); - try { - this.config.setIndex(Integer.parseInt(indice)); - } catch (NumberFormatException e) { - throw new IllegalArgumentException(MessageFormat.format("Attribute ''{0}'' of page {1} must be an int, but was ''{2}''", ActivityExplorerExtensionManager.ATT_INDEX, - ActivityExplorerExtensionManager.getId(cfig), indice)); - } - } - public String getOverViewImageOnPath() { return config.getOverviewImageOnPath(); } diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java index c0138028..413a6854 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java @@ -10,27 +10,21 @@ *******************************************************************************/ package org.eclipse.amalgam.explorer.activity.ui.api.editor.sections; -import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.TreeSet; -import java.util.regex.Pattern; import org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator; import org.eclipse.amalgam.explorer.activity.ui.api.configuration.SectionConfiguration; import org.eclipse.amalgam.explorer.activity.ui.api.editor.activities.ExplorerActivity; import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.FormHelper; -import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.HTMLHelper; import org.eclipse.amalgam.explorer.activity.ui.api.manager.ActivityExplorerManager; import org.eclipse.amalgam.explorer.activity.ui.internal.Couple; import org.eclipse.amalgam.explorer.activity.ui.internal.extension.point.manager.ActivityExplorerExtensionManager; import org.eclipse.amalgam.explorer.activity.ui.internal.intf.IOrdered; import org.eclipse.amalgam.explorer.activity.ui.internal.intf.IVisibility; -import org.eclipse.amalgam.explorer.activity.ui.internal.util.ActivityExplorerLoggerService; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.action.IAction; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -48,7 +42,6 @@ import org.eclipse.ui.forms.widgets.Section; */ public class ActivityExplorerSection implements IVisibility, IOrdered, IPropertyChangeListener { private SectionConfiguration config; - private static final Pattern P_PATTERN = Pattern.compile("<p>.*</p>"); //$NON-NLS-1$ private IAction[] toolbarActions; private Section widget; private FormToolkit toolkit; @@ -56,59 +49,14 @@ public class ActivityExplorerSection implements IVisibility, IOrdered, IProperty private IFormPage page; - private static SectionConfiguration parseConfiguration(IConfigurationElement contributor) { - SectionConfiguration sectionDescription = new SectionConfiguration(); - sectionDescription.setId(ActivityExplorerExtensionManager.getId(contributor)); - sectionDescription.setName(ActivityExplorerExtensionManager.getName(contributor)); - sectionDescription.setExpanded(ActivityExplorerExtensionManager.getIsExpanded(contributor)); - String desc = ActivityExplorerExtensionManager.getDescription(contributor); - if (null != desc) { - boolean isInParagraph = P_PATTERN.matcher(desc).find(); - sectionDescription.setDescription(isInParagraph ? HTMLHelper.formWrapper2(desc) : HTMLHelper.formWrapper(desc)); - } - String indice = ActivityExplorerExtensionManager.getIndex(contributor); - try { - sectionDescription.setIndex(Integer.parseInt(indice)); - } catch (NumberFormatException e) { - throw new IllegalArgumentException(MessageFormat.format("Attribute ''{0}'' of section {1} must be an int, but was ''{2}''", ActivityExplorerExtensionManager.ATT_INDEX, - ActivityExplorerExtensionManager.getId(contributor), indice)); - } - sectionDescription.setFiltering(ActivityExplorerExtensionManager.getIsFiltering(contributor)); - createActivities(contributor, sectionDescription); - return sectionDescription; - } - - /** - * Create theirs Activities. - * - * @param contributor - */ - private static void createActivities(IConfigurationElement contributor, SectionConfiguration sectionDescription) { - sectionDescription.activities = new TreeSet<ExplorerActivity>(); - List<IConfigurationElement> activities = ActivityExplorerExtensionManager.getActivities(contributor); - for (IConfigurationElement element : activities) { - try { - sectionDescription.activities.add(new ExplorerActivity(element)); - } catch (NumberFormatException e){ - StringBuilder message = new StringBuilder(); - message.append("ActivityExplorerSection.createActivities(...) _ "); //$NON-NLS-1$ - message.append("The Activity contribution "); //$NON-NLS-1$ - message.append(ActivityExplorerExtensionManager.getId(contributor)); - message.append(" has wrong index format ("); //$NON-NLS-1$ - message.append(ActivityExplorerExtensionManager.getIndex(contributor)); - message.append("). Only integers are valid"); //$NON-NLS-1$ - ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e); - } - } - } /** * Constructor. * - * @param contributor + * @param cfg the configuration. */ - public ActivityExplorerSection(IConfigurationElement contributor) { - this.config = parseConfiguration(contributor); + public ActivityExplorerSection(SectionConfiguration cfg) { + this.config = cfg; } /** diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java index fd138598..25c11a7e 100644 --- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java +++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java @@ -1,562 +1,684 @@ -/*******************************************************************************
- * Copyright (c) 2006, 2016 THALES GLOBAL SERVICES.
- * 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:
- * Thales - initial API and implementation
- *******************************************************************************/
-package org.eclipse.amalgam.explorer.activity.ui.internal.extension.point.manager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.activity.InvalidActivityException;
-
-import org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator;
-import org.eclipse.amalgam.explorer.activity.ui.IImageKeys;
-import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.CommonActivityExplorerPage;
-import org.eclipse.amalgam.explorer.activity.ui.api.editor.predicates.IPredicate;
-import org.eclipse.amalgam.explorer.activity.ui.internal.ActivityExplorerConstants;
-import org.eclipse.amalgam.explorer.activity.ui.internal.exceptions.InvalidActivityExplorerIndexException;
-import org.eclipse.amalgam.explorer.activity.ui.internal.util.ActivityExplorerLoggerService;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IContributor;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.osgi.framework.Bundle;
-
-public class ActivityExplorerExtensionManager {
-
- /**
- * Extension point declaration
- */
- public static final String PROVIDER_PAGES_EXT = "org.eclipse.amalgam.explorer.activity.ui.pagesProvider"; //$NON-NLS-1$
- public static final String PROVIDER_SECTIONS_EXT = "org.eclipse.amalgam.explorer.activity.ui.sectionsProvider"; //$NON-NLS-1$
- public static final String PROVIDER_ACTIVITIES_EXT = "org.eclipse.amalgam.explorer.activity.ui.activitiesProvider"; //$NON-NLS-1$
- /**
- * Page Attributes
- */
- public static final String PAGE = "Page"; //$NON-NLS-1$
- public static final String ATT_CLASS = "class"; //$NON-NLS-1$
- public static final String ATT_TAB_NAME = "tabName"; //$NON-NLS-1$
- public static final String ATT_TITLE = "title"; //$NON-NLS-1$
- public static final String ATT_IMAGE = "image"; //$NON-NLS-1$
- public static final String ATT_IMAGE_OFF = "imageOff"; //$NON-NLS-1$
- public static final String ATT_IMAGE_ON = "imageOn"; //$NON-NLS-1$
- public static final String ATT_ID = "id"; //$NON-NLS-1$
- public static final String ATT_NAME = "name"; //$NON-NLS-1$
- public static final String DESCRIPTION = "Description"; //$NON-NLS-1$
- public static final String ATT_INDEX = "index"; //$NON-NLS-1$
- public static final String ATT_VIEWER = "viewer"; //$NON-NLS-1$
-
- public static final String OVERVIEW = "Overview"; //$NON-NLS-1$
- public static final String ATT_OVERVIEW_IMG_ON = "imageOn"; //$NON-NLS-1$
- public static final String ATT_OVERVIEW_IMG_OFF = "imageOff"; //$NON-NLS-1$
-
- /**
- * Section Attributes
- */
- public static final String SECTION = "Section"; //$NON-NLS-1$
- public static final String ATT_EXPANDED = "expanded"; //$NON-NLS-1$
- public static final String ATT_FILTERING = "filtering"; //$NON-NLS-1$
- /**
- * Activity Attributes
- */
- public static final String ACTIVITY = "Activity"; //$NON-NLS-1$
- public static final String ATT_DIAGRAM_REPRESENTATION = "diagram"; //$NON-NLS-1$
- public static final String ATT_VIEWPOINT = "viewpoint"; //$NON-NLS-1$
- public static final String ATT_SECTION_PAGE_ID = "pageId"; //$NON-NLS-1$
- public static final String ATT_ACTIVITY_SECTION_ID = "sectionId"; //$NON-NLS-1$
-
- /**
- * Predicate
- */
- public static final String PREDICATE = "Predicate"; //$NON-NLS-1$
-
- /**
- * get all Page Providers
- *
- * @return
- */
- public static IConfigurationElement[] getAllProviderExtensions() {
- return getExtensionElt(PROVIDER_PAGES_EXT);
- }
-
- private static IConfigurationElement[] getExtensionElt(String id) {
- IExtensionPoint point = getExtensionPoint(id);
- IExtension[] extensions = point.getExtensions();
- ArrayList<IConfigurationElement> configElements = new ArrayList<IConfigurationElement>();
-
- for (IExtension extension : extensions) {
- configElements.addAll(Arrays.asList(extension.getConfigurationElements()));
- }
-
- return configElements.toArray(new IConfigurationElement[] {});
- }
-
- public static IExtensionPoint getExtensionPoint(String id) {
- return Platform.getExtensionRegistry().getExtensionPoint(id);
- }
-
- private static CommonActivityExplorerPage getPage(IConfigurationElement element) throws CoreException, InvalidActivityExplorerIndexException {
- CommonActivityExplorerPage page = null;
-
- if (element != null) {
- CommonActivityExplorerPage.setID(getId(element));
- if (element.getAttribute(ATT_CLASS) != null) {
-
- page = (CommonActivityExplorerPage) element.createExecutableExtension(ATT_CLASS);
- } else {
- page = new CommonActivityExplorerPage();
- ((IExecutableExtension) page).setInitializationData(element, ATT_CLASS, null);
- }
- }
-
- return accept(page, element);
- }
-
- /**
- * check if the page is valid
- * @param page
- * @return the page, otherways, launch an exception
- * @throws InvalidActivityException
- */
- private static CommonActivityExplorerPage accept(CommonActivityExplorerPage page, IConfigurationElement element)
- throws InvalidActivityExplorerIndexException {
-
- //Never accept null page
- if (page == null){
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.accept(...) _ "); //$NON-NLS-1$
- message.append("An error occured while instantianting the class of contribution "); //$NON-NLS-1$
- message.append(getId(element));
-
- throw new NullPointerException(message.toString());
- }
-
- //Never accept negatif index for pages
- if (page.getPosition() < 0) {
-
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.accept(...) _ "); //$NON-NLS-1$
- message.append("The page "); //$NON-NLS-1$
- message.append(page.getId()); //$NON-NLS-1$
- message.append(" has negatif index. "); //$NON-NLS-1$
- message.append("Only pages win an index upper or equal to zero are allowed"); //$NON-NLS-1$
-
- throw new InvalidActivityExplorerIndexException(message.toString());
- }
- return page;
- }
-
- public static List<CommonActivityExplorerPage> getAllPages() {
- List<CommonActivityExplorerPage> providers = new ArrayList<CommonActivityExplorerPage>();
-
- List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT));
-
- CommonActivityExplorerPage page;
- for (IConfigurationElement extension : extensions) {
- page = null;
- try {
- page = getPage(extension);
- providers.add(page);
- } catch (CoreException e) {
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, Messages.ActivityExplorerExtensionManager_0, e);
-
- } catch (InvalidActivityExplorerIndexException e) {
-
- ActivityExplorerActivator
- .getDefault()
- .getLog()
- .log(new Status(IStatus.WARNING, ActivityExplorerActivator.ID, e.getMessage()));
-
- } catch (NumberFormatException e){
-
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$
- message.append("The contribution "); //$NON-NLS-1$
- message.append(getId(extension));
- message.append(" has wrong index format ("); //$NON-NLS-1$
- message.append(getIndex(extension));
- message.append("). Only 0 or positive integers are valid"); //$NON-NLS-1$
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e);
-
- } catch (NullPointerException e){
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, e.getMessage(), null);
-
- } catch (Throwable e){
- //Unknown error from contribution
-
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$
- message.append("Unknown error occurred from contribution "); //$NON-NLS-1$
- message.append(getId(extension));
- message.append(". See the exception stack for more details"); //$NON-NLS-1$
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e);
- }
- }
- return providers;
- }
-
- public static List<IConfigurationElement> getAllPagesElt() {
- List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT));
-
- return extensions;
- }
-
- public static List<IConfigurationElement> getAllSectionsExtensions() {
- List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_SECTIONS_EXT));
-
- return extensions;
- }
-
- public static List<IConfigurationElement> getAllSectionsExtensionForPageId(String id) {
- List<IConfigurationElement> list = new ArrayList<IConfigurationElement>();
- for (IConfigurationElement elt : getAllSectionsExtensions()) {
- if (getPageId(elt).equals(id))
- list.add(elt);
- }
- return list;
- }
-
- public static List<IConfigurationElement> getAllActivitiesExtensionForSectionId(String id) {
- List<IConfigurationElement> list = new ArrayList<IConfigurationElement>();
- for (IConfigurationElement elt : getAllActivitiesExtensions()) {
- if (getSectionId(elt).equals(id))
- list.add(elt);
- }
- return list;
- }
-
- public static List<IConfigurationElement> getAllActivitiesExtensions() {
- List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_ACTIVITIES_EXT));
-
- return extensions;
- }
-
- public static CommonActivityExplorerPage getPageById(String id) {
- CommonActivityExplorerPage result = null;
- for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) {
- if (getId(page).equals(id)) {
- try {
- result = getPage(page);
- } catch (CoreException e) {
-
- StringBuilder loggerMessage = new StringBuilder("ActivityExplorerExtensionManager.getPageById(..) _ "); //$NON-NLS-1$
- loggerMessage.append(e.getMessage());
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, loggerMessage.toString(), e);
-
- } catch (InvalidActivityExplorerIndexException e) {
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, e.toString(), e);
-
- } catch (NumberFormatException e){
-
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$
- message.append("The contribution "); //$NON-NLS-1$
- message.append(getId(page));
- message.append(" has wrong index format ("); //$NON-NLS-1$
- message.append(getIndex(page));
- message.append("). Only 0 or positive integers are valid"); //$NON-NLS-1$
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e);
-
- } catch (NullPointerException e){
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, e.getMessage(), e);
-
- } catch (Throwable e){
- //Unknown error from contributions
-
- StringBuilder message = new StringBuilder();
- message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$
- message.append("Unknown error occurred from contribution ");
- message.append(getId(page));
- message.append(". See the exception stack for more details");
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e);
-
- }
- }
- }
- return result;
- }
-
- public static String getPageId(IConfigurationElement element) {
- return element.getAttribute(ATT_SECTION_PAGE_ID);
- }
-
- public static String getSectionId(IConfigurationElement element) {
- return element.getAttribute(ATT_ACTIVITY_SECTION_ID);
- }
-
- public static List<IConfigurationElement> getSectionsFromPageId(String id) {
- List<IConfigurationElement> sections = new ArrayList<IConfigurationElement>();
- for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) {
- if (getId(page).equals(id)) {
- sections.addAll(getSections(page));
- }
- }
-
- return sections;
- }
-
- public static List<IConfigurationElement> getActivitiesFromPageId(String id) {
- List<IConfigurationElement> sections = new ArrayList<IConfigurationElement>();
- for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) {
- if (getId(page).equals(id)) {
- sections.addAll(getSections(page));
- }
- }
-
- return sections;
- }
-
- public static String getId(IConfigurationElement element) {
- return element.getAttribute(ATT_ID);
- }
-
- public static String getName(IConfigurationElement element) {
- String att = ATT_NAME;
-
- if (element.getName().equals(PAGE))
- att = ATT_TITLE;
- String name = element.getAttribute(att);
- return name == null ? ActivityExplorerConstants.NO_NAME : name;
- }
-
- public static String getTitle(IConfigurationElement element) {
- String title = element.getAttribute(ATT_TITLE);
- return title == null ? ActivityExplorerConstants.NO_TITLE : title;
- }
-
- public static String getTabName(IConfigurationElement element) {
- return element.getAttribute(ATT_TAB_NAME);
- }
-
- public static String getIndex(IConfigurationElement element) {
- return element.getAttribute(ATT_INDEX);
- }
-
- public static Image getImage(IConfigurationElement element) {
-
- Image image = null;
- String img = element.getAttribute(ATT_IMAGE);
- if (img != null) {
- String pluginId = ActivityExplorerExtensionManager.getPluginId(element);
- image = ActivityExplorerActivator.getDefault().getImage(pluginId, img);
- }
- return image;
- }
-
- public static Image getImageOff(IConfigurationElement element) {
-
- Image image = null;
- String img = element.getAttribute(ATT_IMAGE_OFF);
- if (img != null) {
- String pluginId = ActivityExplorerExtensionManager.getPluginId(element);
- image = ActivityExplorerActivator.getDefault().getImage(pluginId, img);
- }
- return image;
- }
-
- public static Image getImageOn(IConfigurationElement element) {
-
- Image image = null;
- String img = element.getAttribute(ATT_IMAGE_ON);
- if (img != null) {
- String pluginId = ActivityExplorerExtensionManager.getPluginId(element);
- image = ActivityExplorerActivator.getDefault().getImage(pluginId, img);
- }
- return image;
- }
-
- public static boolean getIsDisplayViewerInPage(IConfigurationElement element) {
- String bool = element.getAttribute(ATT_VIEWER);
- return Boolean.parseBoolean(bool);
- }
-
- public static IConfigurationElement getOverviewElement(IConfigurationElement element) {
- return getChild(element, OVERVIEW);
- }
-
- private static IConfigurationElement getChild(IConfigurationElement element, String name) {
- IConfigurationElement child = null;
- IConfigurationElement[] children = element.getChildren(name);
- if (children.length > 0)
- child = children[0];
-
- return child;
-
- }
-
- public static String getOverviewImageOn(IConfigurationElement element) {
- IConfigurationElement overview = getOverviewElement(element);
- String img = overview.getAttribute(ATT_OVERVIEW_IMG_ON);
- return img == null ? IImageKeys.IMAGE_DEFAULT_OVERVIEW_ON : img;
- }
-
- public static String getOverviewImageOff(IConfigurationElement element) {
- IConfigurationElement overview = getOverviewElement(element);
- String img = overview.getAttribute(ATT_OVERVIEW_IMG_OFF);
- return img == null ? IImageKeys.IMAGE_DEFAULT_OVERVIEW_OFF : img;
- }
-
- public static String getOverviewDescription(IConfigurationElement element) {
- IConfigurationElement overview = getOverviewElement(element);
- return getDescription(overview);
- }
-
- public static String getDescription(IConfigurationElement element) {
- String description = null;
- if (null != element) {
- IConfigurationElement desc = getChild(element, DESCRIPTION);
- if (null != desc) {
- description = desc.getValue();
- }
- }
- return description;
- }
-
- public static List<IConfigurationElement> getSections(IConfigurationElement element) {
- List<IConfigurationElement> result = new ArrayList<IConfigurationElement>();
- String id = getId(element);
- result.addAll(Arrays.asList(element.getChildren(SECTION)));
- result.addAll(getAllSectionsExtensionForPageId(id));
-
- return result;
- }
-
- public static String getPluginId(IConfigurationElement element) {
- IContributor contributor = element.getContributor();
- Bundle bundle = Platform.getBundle(contributor.getName());
- String id = bundle.getSymbolicName();
- return id;
- }
-
- public static boolean getIsExpanded(IConfigurationElement element) {
- String bool = element.getAttribute(ATT_EXPANDED);
- boolean result = Boolean.parseBoolean(bool);
- return result;
- }
-
- public static boolean getIsFiltering(IConfigurationElement element) {
- String bool = element.getAttribute(ATT_FILTERING);
- boolean result = Boolean.parseBoolean(bool);
- return result;
- }
-
- public static List<IConfigurationElement> getActivities(IConfigurationElement element) {
- List<IConfigurationElement> result = new ArrayList<IConfigurationElement>();
- String id = getId(element);
- result.addAll(Arrays.asList(element.getChildren(ACTIVITY)));
- result.addAll(getAllActivitiesExtensionForSectionId(id));
- return result;
- }
-
- public static IHyperlinkListener getActivityAdapter(IConfigurationElement element) {
- IHyperlinkListener listener = null;
-
- String type = element.getName();
- String id = getId(element);
-
- try {
- String c = element.getAttribute(ATT_CLASS);
- if (c != null) {
- listener = (IHyperlinkListener) element.createExecutableExtension(ATT_CLASS);
- }
- } catch (CoreException e) {
- StringBuilder message = new StringBuilder();
-
- message.append(Messages.ActivityExplorerExtensionManager_1);
- message.append(type);
- message.append(Messages.ActivityExplorerExtensionManager_2);
- message.append(id);
- message.append(Messages.ActivityExplorerExtensionManager_3);
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e);
- }
- return listener;
- }
-
- public static IPredicate getPredicate(IConfigurationElement elem) {
- IPredicate predicate = null;
- IConfigurationElement element = getChild(elem, PREDICATE);
- if (element != null) {
- String type = element.getName();
- try {
-
- String c = elem.getAttribute(ATT_CLASS);
- if (c != null) {
- predicate = (IPredicate) element.createExecutableExtension(ATT_CLASS);
- }
- } catch (CoreException e) {
- StringBuilder message = new StringBuilder();
-
- message.append(Messages.ActivityExplorerExtensionManager_1);
- message.append(type);
- message.append(Messages.ActivityExplorerExtensionManager_2);
- message.append(Messages.ActivityExplorerExtensionManager_3);
-
- ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e);
- }
- }
- return predicate;
- }
-
- /**
- * Test if the id is a ActivityExplorerPage
- *
- * @param id
- * @return boolean
- */
- public static boolean isPage(String id) {
- return null != ActivityExplorerExtensionManager.getPageById(id);
- }
-
- /**
- * Test if the id is a ActivityExplorerSection
- *
- * @param pageId
- * @param sectionId
- * @return
- */
- public static boolean isSection(String pageId, String sectionId) {
- boolean result = false;
- for (IConfigurationElement element : getSectionsFromPageId(pageId)) {
- result |= getId(element).equals(sectionId);
- }
- return result;
- }
-
- public static boolean isActivity(String pageId, String sectionId, String activityId) {
- boolean result = false;
- for (IConfigurationElement element : getSectionsFromPageId(pageId)) {
- if (getId(element).equals(sectionId)) {
- for (IConfigurationElement element2 : getActivities(element)) {
- result |= getId(element2).equals(activityId);
- }
- }
- }
-
- return result;
- }
-
-}
+/******************************************************************************* + * Copyright (c) 2006, 2016 THALES GLOBAL SERVICES. + * 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: + * Thales - initial API and implementation + *******************************************************************************/ +package org.eclipse.amalgam.explorer.activity.ui.internal.extension.point.manager; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.TreeSet; +import java.util.regex.Pattern; + +import javax.activity.InvalidActivityException; + +import org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator; +import org.eclipse.amalgam.explorer.activity.ui.IImageKeys; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.ActivityConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.ActivityExplorerPageConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.BasicSessionActivityExplorerPageConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.CommonActivityExplorerPageConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.configuration.SectionConfiguration; +import org.eclipse.amalgam.explorer.activity.ui.api.editor.activities.ExplorerActivity; +import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.CommonActivityExplorerPage; +import org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.HTMLHelper; +import org.eclipse.amalgam.explorer.activity.ui.api.editor.predicates.IPredicate; +import org.eclipse.amalgam.explorer.activity.ui.internal.ActivityExplorerConstants; +import org.eclipse.amalgam.explorer.activity.ui.internal.exceptions.InvalidActivityExplorerIndexException; +import org.eclipse.amalgam.explorer.activity.ui.internal.util.ActivityExplorerLoggerService; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IContributor; +import org.eclipse.core.runtime.IExecutableExtension; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.forms.events.IHyperlinkListener; +import org.osgi.framework.Bundle; + +public class ActivityExplorerExtensionManager { + + /** + * Extension point declaration + */ + public static final String PROVIDER_PAGES_EXT = "org.eclipse.amalgam.explorer.activity.ui.pagesProvider"; //$NON-NLS-1$ + public static final String PROVIDER_SECTIONS_EXT = "org.eclipse.amalgam.explorer.activity.ui.sectionsProvider"; //$NON-NLS-1$ + public static final String PROVIDER_ACTIVITIES_EXT = "org.eclipse.amalgam.explorer.activity.ui.activitiesProvider"; //$NON-NLS-1$ + /** + * Page Attributes + */ + public static final String PAGE = "Page"; //$NON-NLS-1$ + public static final String ATT_CLASS = "class"; //$NON-NLS-1$ + public static final String ATT_TAB_NAME = "tabName"; //$NON-NLS-1$ + public static final String ATT_TITLE = "title"; //$NON-NLS-1$ + public static final String ATT_IMAGE = "image"; //$NON-NLS-1$ + public static final String ATT_IMAGE_OFF = "imageOff"; //$NON-NLS-1$ + public static final String ATT_IMAGE_ON = "imageOn"; //$NON-NLS-1$ + public static final String ATT_ID = "id"; //$NON-NLS-1$ + public static final String ATT_NAME = "name"; //$NON-NLS-1$ + public static final String DESCRIPTION = "Description"; //$NON-NLS-1$ + public static final String ATT_INDEX = "index"; //$NON-NLS-1$ + public static final String ATT_VIEWER = "viewer"; //$NON-NLS-1$ + + public static final String OVERVIEW = "Overview"; //$NON-NLS-1$ + public static final String ATT_OVERVIEW_IMG_ON = "imageOn"; //$NON-NLS-1$ + public static final String ATT_OVERVIEW_IMG_OFF = "imageOff"; //$NON-NLS-1$ + + /** + * Section Attributes + */ + public static final String SECTION = "Section"; //$NON-NLS-1$ + public static final String ATT_EXPANDED = "expanded"; //$NON-NLS-1$ + public static final String ATT_FILTERING = "filtering"; //$NON-NLS-1$ + /** + * Activity Attributes + */ + public static final String ACTIVITY = "Activity"; //$NON-NLS-1$ + public static final String ATT_DIAGRAM_REPRESENTATION = "diagram"; //$NON-NLS-1$ + public static final String ATT_VIEWPOINT = "viewpoint"; //$NON-NLS-1$ + public static final String ATT_SECTION_PAGE_ID = "pageId"; //$NON-NLS-1$ + public static final String ATT_ACTIVITY_SECTION_ID = "sectionId"; //$NON-NLS-1$ + + /** + * Predicate + */ + public static final String PREDICATE = "Predicate"; //$NON-NLS-1$ + + /** + * get all Page Providers + * + * @return + */ + public static IConfigurationElement[] getAllProviderExtensions() { + return getExtensionElt(PROVIDER_PAGES_EXT); + } + + private static IConfigurationElement[] getExtensionElt(String id) { + IExtensionPoint point = getExtensionPoint(id); + IExtension[] extensions = point.getExtensions(); + ArrayList<IConfigurationElement> configElements = new ArrayList<IConfigurationElement>(); + + for (IExtension extension : extensions) { + configElements.addAll(Arrays.asList(extension.getConfigurationElements())); + } + + return configElements.toArray(new IConfigurationElement[] {}); + } + + public static IExtensionPoint getExtensionPoint(String id) { + return Platform.getExtensionRegistry().getExtensionPoint(id); + } + + private static CommonActivityExplorerPage getPage(IConfigurationElement element) throws CoreException, InvalidActivityExplorerIndexException { + CommonActivityExplorerPage page = null; + + if (element != null) { + CommonActivityExplorerPage.setID(getId(element)); + if (element.getAttribute(ATT_CLASS) != null) { + + page = (CommonActivityExplorerPage) element.createExecutableExtension(ATT_CLASS); + } else { + page = new CommonActivityExplorerPage(); + ((IExecutableExtension) page).setInitializationData(element, ATT_CLASS, null); + } + } + + return accept(page, element); + } + + /** + * check if the page is valid + * @param page + * @return the page, otherways, launch an exception + * @throws InvalidActivityException + */ + private static CommonActivityExplorerPage accept(CommonActivityExplorerPage page, IConfigurationElement element) + throws InvalidActivityExplorerIndexException { + + //Never accept null page + if (page == null){ + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.accept(...) _ "); //$NON-NLS-1$ + message.append("An error occured while instantianting the class of contribution "); //$NON-NLS-1$ + message.append(getId(element)); + + throw new NullPointerException(message.toString()); + } + + //Never accept negatif index for pages + if (page.getPosition() < 0) { + + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.accept(...) _ "); //$NON-NLS-1$ + message.append("The page "); //$NON-NLS-1$ + message.append(page.getId()); //$NON-NLS-1$ + message.append(" has negatif index. "); //$NON-NLS-1$ + message.append("Only pages win an index upper or equal to zero are allowed"); //$NON-NLS-1$ + + throw new InvalidActivityExplorerIndexException(message.toString()); + } + return page; + } + + public static List<CommonActivityExplorerPage> getAllPages() { + List<CommonActivityExplorerPage> providers = new ArrayList<CommonActivityExplorerPage>(); + + List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT)); + + CommonActivityExplorerPage page; + for (IConfigurationElement extension : extensions) { + page = null; + try { + page = getPage(extension); + providers.add(page); + } catch (CoreException e) { + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, Messages.ActivityExplorerExtensionManager_0, e); + + } catch (InvalidActivityExplorerIndexException e) { + + ActivityExplorerActivator + .getDefault() + .getLog() + .log(new Status(IStatus.WARNING, ActivityExplorerActivator.ID, e.getMessage())); + + } catch (NumberFormatException e){ + + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$ + message.append("The contribution "); //$NON-NLS-1$ + message.append(getId(extension)); + message.append(" has wrong index format ("); //$NON-NLS-1$ + message.append(getIndex(extension)); + message.append("). Only 0 or positive integers are valid"); //$NON-NLS-1$ + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e); + + } catch (NullPointerException e){ + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, e.getMessage(), null); + + } catch (Throwable e){ + //Unknown error from contribution + + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$ + message.append("Unknown error occurred from contribution "); //$NON-NLS-1$ + message.append(getId(extension)); + message.append(". See the exception stack for more details"); //$NON-NLS-1$ + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e); + } + } + return providers; + } + + public static List<IConfigurationElement> getAllPagesElt() { + List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT)); + + return extensions; + } + + public static List<IConfigurationElement> getAllSectionsExtensions() { + List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_SECTIONS_EXT)); + + return extensions; + } + + public static List<IConfigurationElement> getAllSectionsExtensionForPageId(String id) { + List<IConfigurationElement> list = new ArrayList<IConfigurationElement>(); + for (IConfigurationElement elt : getAllSectionsExtensions()) { + if (getPageId(elt).equals(id)) + list.add(elt); + } + return list; + } + + public static List<IConfigurationElement> getAllActivitiesExtensionForSectionId(String id) { + List<IConfigurationElement> list = new ArrayList<IConfigurationElement>(); + for (IConfigurationElement elt : getAllActivitiesExtensions()) { + if (getSectionId(elt).equals(id)) + list.add(elt); + } + return list; + } + + public static List<IConfigurationElement> getAllActivitiesExtensions() { + List<IConfigurationElement> extensions = Arrays.asList(getExtensionElt(PROVIDER_ACTIVITIES_EXT)); + + return extensions; + } + + public static CommonActivityExplorerPage getPageById(String id) { + CommonActivityExplorerPage result = null; + for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) { + if (getId(page).equals(id)) { + try { + result = getPage(page); + } catch (CoreException e) { + + StringBuilder loggerMessage = new StringBuilder("ActivityExplorerExtensionManager.getPageById(..) _ "); //$NON-NLS-1$ + loggerMessage.append(e.getMessage()); + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, loggerMessage.toString(), e); + + } catch (InvalidActivityExplorerIndexException e) { + + ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, e.toString(), e); + + } catch (NumberFormatException e){ + + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$ + message.append("The contribution "); //$NON-NLS-1$ + message.append(getId(page)); + message.append(" has wrong index format ("); //$NON-NLS-1$ + message.append(getIndex(page)); + message.append("). Only 0 or positive integers are valid"); //$NON-NLS-1$ + + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e); + + } catch (NullPointerException e){ + + ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, e.getMessage(), e); + + } catch (Throwable e){ + //Unknown error from contributions + + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerExtensionManager.getAllPages(...) _ "); //$NON-NLS-1$ + message.append("Unknown error occurred from contribution "); + message.append(getId(page)); + message.append(". See the exception stack for more details"); + + ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e); + + } + } + } + return result; + } + + public static String getPageId(IConfigurationElement element) { + return element.getAttribute(ATT_SECTION_PAGE_ID); + } + + public static String getSectionId(IConfigurationElement element) { + return element.getAttribute(ATT_ACTIVITY_SECTION_ID); + } + + public static List<IConfigurationElement> getSectionsFromPageId(String id) { + List<IConfigurationElement> sections = new ArrayList<IConfigurationElement>(); + for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) { + if (getId(page).equals(id)) { + sections.addAll(getSections(page)); + } + } + + return sections; + } + + public static List<IConfigurationElement> getActivitiesFromPageId(String id) { + List<IConfigurationElement> sections = new ArrayList<IConfigurationElement>(); + for (IConfigurationElement page : Arrays.asList(getExtensionElt(PROVIDER_PAGES_EXT))) { + if (getId(page).equals(id)) { + sections.addAll(getSections(page)); + } + } + + return sections; + } + + public static String getId(IConfigurationElement element) { + return element.getAttribute(ATT_ID); + } + + public static String getName(IConfigurationElement element) { + String att = ATT_NAME; + + if (element.getName().equals(PAGE)) + att = ATT_TITLE; + String name = element.getAttribute(att); + return name == null ? ActivityExplorerConstants.NO_NAME : name; + } + + public static String getTitle(IConfigurationElement element) { + String title = element.getAttribute(ATT_TITLE); + return title == null ? ActivityExplorerConstants.NO_TITLE : title; + } + + public static String getTabName(IConfigurationElement element) { + return element.getAttribute(ATT_TAB_NAME); + } + + public static String getIndex(IConfigurationElement element) { + return element.getAttribute(ATT_INDEX); + } + + public static Image getImage(IConfigurationElement element) { + + Image image = null; + String img = element.getAttribute(ATT_IMAGE); + if (img != null) { + String pluginId = ActivityExplorerExtensionManager.getPluginId(element); + image = ActivityExplorerActivator.getDefault().getImage(pluginId, img); + } + return image; + } + + public static Image getImageOff(IConfigurationElement element) { + + Image image = null; + String img = element.getAttribute(ATT_IMAGE_OFF); + if (img != null) { + String pluginId = ActivityExplorerExtensionManager.getPluginId(element); + image = ActivityExplorerActivator.getDefault().getImage(pluginId, img); + } + return image; + } + + public static Image getImageOn(IConfigurationElement element) { + + Image image = null; + String img = element.getAttribute(ATT_IMAGE_ON); + if (img != null) { + String pluginId = ActivityExplorerExtensionManager.getPluginId(element); + image = ActivityExplorerActivator.getDefault().getImage(pluginId, img); + } + return image; + } + + public static boolean getIsDisplayViewerInPage(IConfigurationElement element) { + String bool = element.getAttribute(ATT_VIEWER); + return Boolean.parseBoolean(bool); + } + + public static IConfigurationElement getOverviewElement(IConfigurationElement element) { + return getChild(element, OVERVIEW); + } + + private static IConfigurationElement getChild(IConfigurationElement element, String name) { + IConfigurationElement child = null; + IConfigurationElement[] children = element.getChildren(name); + if (children.length > 0) + child = children[0]; + + return child; + + } + + public static String getOverviewImageOn(IConfigurationElement element) { + IConfigurationElement overview = getOverviewElement(element); + String img = overview.getAttribute(ATT_OVERVIEW_IMG_ON); + return img == null ? IImageKeys.IMAGE_DEFAULT_OVERVIEW_ON : img; + } + + public static String getOverviewImageOff(IConfigurationElement element) { + IConfigurationElement overview = getOverviewElement(element); + String img = overview.getAttribute(ATT_OVERVIEW_IMG_OFF); + return img == null ? IImageKeys.IMAGE_DEFAULT_OVERVIEW_OFF : img; + } + + public static String getOverviewDescription(IConfigurationElement element) { + IConfigurationElement overview = getOverviewElement(element); + return getDescription(overview); + } + + public static String getDescription(IConfigurationElement element) { + String description = null; + if (null != element) { + IConfigurationElement desc = getChild(element, DESCRIPTION); + if (null != desc) { + description = desc.getValue(); + } + } + return description; + } + + public static List<IConfigurationElement> getSections(IConfigurationElement element) { + List<IConfigurationElement> result = new ArrayList<IConfigurationElement>(); + String id = getId(element); + result.addAll(Arrays.asList(element.getChildren(SECTION))); + result.addAll(getAllSectionsExtensionForPageId(id)); + + return result; + } + + public static String getPluginId(IConfigurationElement element) { + IContributor contributor = element.getContributor(); + Bundle bundle = Platform.getBundle(contributor.getName()); + String id = bundle.getSymbolicName(); + return id; + } + + public static boolean getIsExpanded(IConfigurationElement element) { + String bool = element.getAttribute(ATT_EXPANDED); + boolean result = Boolean.parseBoolean(bool); + return result; + } + + public static boolean getIsFiltering(IConfigurationElement element) { + String bool = element.getAttribute(ATT_FILTERING); + boolean result = Boolean.parseBoolean(bool); + return result; + } + + public static List<IConfigurationElement> getActivities(IConfigurationElement element) { + List<IConfigurationElement> result = new ArrayList<IConfigurationElement>(); + String id = getId(element); + result.addAll(Arrays.asList(element.getChildren(ACTIVITY))); + result.addAll(getAllActivitiesExtensionForSectionId(id)); + return result; + } + + public static IHyperlinkListener getActivityAdapter(IConfigurationElement element) { + IHyperlinkListener listener = null; + + String type = element.getName(); + String id = getId(element); + + try { + String c = element.getAttribute(ATT_CLASS); + if (c != null) { + listener = (IHyperlinkListener) element.createExecutableExtension(ATT_CLASS); + } + } catch (CoreException e) { + StringBuilder message = new StringBuilder(); + + message.append(Messages.ActivityExplorerExtensionManager_1); + message.append(type); + message.append(Messages.ActivityExplorerExtensionManager_2); + message.append(id); + message.append(Messages.ActivityExplorerExtensionManager_3); + + ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e); + } + return listener; + } + + public static IPredicate getPredicate(IConfigurationElement elem) { + IPredicate predicate = null; + IConfigurationElement element = getChild(elem, PREDICATE); + if (element != null) { + String type = element.getName(); + try { + + String c = elem.getAttribute(ATT_CLASS); + if (c != null) { + predicate = (IPredicate) element.createExecutableExtension(ATT_CLASS); + } + } catch (CoreException e) { + StringBuilder message = new StringBuilder(); + + message.append(Messages.ActivityExplorerExtensionManager_1); + message.append(type); + message.append(Messages.ActivityExplorerExtensionManager_2); + message.append(Messages.ActivityExplorerExtensionManager_3); + + ActivityExplorerLoggerService.getInstance().log(IStatus.WARNING, message.toString(), e); + } + } + return predicate; + } + + /** + * Test if the id is a ActivityExplorerPage + * + * @param id + * @return boolean + */ + public static boolean isPage(String id) { + return null != ActivityExplorerExtensionManager.getPageById(id); + } + + /** + * Test if the id is a ActivityExplorerSection + * + * @param pageId + * @param sectionId + * @return + */ + public static boolean isSection(String pageId, String sectionId) { + boolean result = false; + for (IConfigurationElement element : getSectionsFromPageId(pageId)) { + result |= getId(element).equals(sectionId); + } + return result; + } + + public static boolean isActivity(String pageId, String sectionId, String activityId) { + boolean result = false; + for (IConfigurationElement element : getSectionsFromPageId(pageId)) { + if (getId(element).equals(sectionId)) { + for (IConfigurationElement element2 : getActivities(element)) { + result |= getId(element2).equals(activityId); + } + } + } + + return result; + } + + public static ActivityConfiguration parseActivityConfiguration(IConfigurationElement element_p) { + ActivityConfiguration config = new ActivityConfiguration(); + config.setName(ActivityExplorerExtensionManager.getName(element_p)); + config.setDescription(ActivityExplorerExtensionManager.getDescription(element_p)); + config.setIndex(Integer.parseInt(ActivityExplorerExtensionManager.getIndex(element_p))); + config.setListener(ActivityExplorerExtensionManager.getActivityAdapter(element_p)); + config.setImage(ActivityExplorerExtensionManager.getImage(element_p)); + config.setId(ActivityExplorerExtensionManager.getId(element_p)); + config.setPredicate(ActivityExplorerExtensionManager.getPredicate(element_p)); + return config; + } + + private static final Pattern P_PATTERN = Pattern.compile("<p>.*</p>"); //$NON-NLS-1$ + + public static SectionConfiguration parseSectionConfiguration(IConfigurationElement contributor) { + SectionConfiguration sectionDescription = new SectionConfiguration(); + sectionDescription.setId(ActivityExplorerExtensionManager.getId(contributor)); + sectionDescription.setName(ActivityExplorerExtensionManager.getName(contributor)); + sectionDescription.setExpanded(ActivityExplorerExtensionManager.getIsExpanded(contributor)); + String desc = ActivityExplorerExtensionManager.getDescription(contributor); + if (null != desc) { + boolean isInParagraph = P_PATTERN.matcher(desc).find(); + sectionDescription.setDescription(isInParagraph ? HTMLHelper.formWrapper2(desc) : HTMLHelper.formWrapper(desc)); + } + String indice = ActivityExplorerExtensionManager.getIndex(contributor); + try { + sectionDescription.setIndex(Integer.parseInt(indice)); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(MessageFormat.format("Attribute ''{0}'' of section {1} must be an int, but was ''{2}''", ActivityExplorerExtensionManager.ATT_INDEX, + ActivityExplorerExtensionManager.getId(contributor), indice)); + } + sectionDescription.setFiltering(ActivityExplorerExtensionManager.getIsFiltering(contributor)); + createActivities(contributor, sectionDescription); + return sectionDescription; + } + + + public static void parseCommonActivityExplorerPageConfiguration(IConfigurationElement cfg, CommonActivityExplorerPageConfiguration target) { + target.setTitle(ActivityExplorerExtensionManager.getTitle(cfg)); + target.setTabName(ActivityExplorerExtensionManager.getTabName(cfg)); + if (target.getTabName() == null) { + target.setTabName(target.getTitle()); + } + target.setOverview(ActivityExplorerExtensionManager.getOverviewElement(cfg) != null); + target.setPluginId(ActivityExplorerExtensionManager.getPluginId(cfg)); + if (target.isOverview()) { + target.setOverviewImageOffPath(ActivityExplorerExtensionManager.getOverviewImageOff(cfg)); + target.setOverviewImageOnPath(ActivityExplorerExtensionManager.getOverviewImageOn(cfg)); + target.setOverviewText(ActivityExplorerExtensionManager.getOverviewDescription(cfg)); + } else { + target.setOverviewImageOffPath(IImageKeys.IMAGE_DEFAULT_OVERVIEW_OFF); + target.setOverviewImageOnPath(IImageKeys.IMAGE_DEFAULT_OVERVIEW_ON); + } + target.setPredicate(ActivityExplorerExtensionManager.getPredicate(cfg)); + + String indice = ActivityExplorerExtensionManager.getIndex(cfg); + try { + target.setIndex(Integer.parseInt(indice)); + } catch (NumberFormatException e) { + throw new IllegalArgumentException(MessageFormat.format("Attribute ''{0}'' of page {1} must be an int, but was ''{2}''", ActivityExplorerExtensionManager.ATT_INDEX, + ActivityExplorerExtensionManager.getId(cfg), indice)); + } + } + + public static void parseActivityExplorerPageConfiguration(IConfigurationElement cfig, ActivityExplorerPageConfiguration target) { + target.setHeaderTitle(ActivityExplorerExtensionManager.getTitle(cfig)); + Image image = ActivityExplorerExtensionManager.getImageOff(cfig); + if (image != null) { + target.setHeaderImageOff(image); + } + + image = ActivityExplorerExtensionManager.getImageOn(cfig); + if (image != null) { + target.setHeaderImageOn(image); + } + + String description = ActivityExplorerExtensionManager.getDescription(cfig); + if (null != description) { + target.setDescription(HTMLHelper.formWrapper(description)); + } + } + + public static void parseBasicSessionActivityExplorerPageConfiguration(IConfigurationElement cfg, BasicSessionActivityExplorerPageConfiguration target) { + target.setDisplayViewer(ActivityExplorerExtensionManager.getIsDisplayViewerInPage(cfg)); + } + + /** + * Create theirs Activities. + * + * @param contributor + */ + private static void createActivities(IConfigurationElement contributor, SectionConfiguration sectionDescription) { + sectionDescription.activities = new TreeSet<ExplorerActivity>(); + List<IConfigurationElement> activities = ActivityExplorerExtensionManager.getActivities(contributor); + for (IConfigurationElement element : activities) { + try { + ActivityConfiguration config = ActivityExplorerExtensionManager.parseActivityConfiguration(element); + sectionDescription.activities.add(new ExplorerActivity(config)); + } catch (NumberFormatException e){ + StringBuilder message = new StringBuilder(); + message.append("ActivityExplorerSection.createActivities(...) _ "); //$NON-NLS-1$ + message.append("The Activity contribution "); //$NON-NLS-1$ + message.append(ActivityExplorerExtensionManager.getId(contributor)); + message.append(" has wrong index format ("); //$NON-NLS-1$ + message.append(ActivityExplorerExtensionManager.getIndex(contributor)); + message.append("). Only integers are valid"); //$NON-NLS-1$ + ActivityExplorerLoggerService.getInstance().log(IStatus.ERROR, message.toString(), e); + } + } + } + + +} |
