Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2017-02-24 09:22:07 +0000
committerPierre-Charles David2017-08-08 15:36:13 +0000
commit81fa98edefcc5f2441b4c342cf0a60a13fe22137 (patch)
treecc1aee17f89187cca523f634ac62bde826d860ba
parentb314dac1423b93fcd7060c64c41e787fda320491 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java18
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java38
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java7
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java35
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java58
-rw-r--r--plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java1246
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);
+ }
+ }
+ }
+
+
+}

Back to the top