Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/misc/org.eclipse.papyrus.infra.hyperlink/src/org/eclipse/papyrus/infra/hyperlink/helper/HyperLinkHelperFactory.java')
-rw-r--r--plugins/infra/misc/org.eclipse.papyrus.infra.hyperlink/src/org/eclipse/papyrus/infra/hyperlink/helper/HyperLinkHelperFactory.java143
1 files changed, 143 insertions, 0 deletions
diff --git a/plugins/infra/misc/org.eclipse.papyrus.infra.hyperlink/src/org/eclipse/papyrus/infra/hyperlink/helper/HyperLinkHelperFactory.java b/plugins/infra/misc/org.eclipse.papyrus.infra.hyperlink/src/org/eclipse/papyrus/infra/hyperlink/helper/HyperLinkHelperFactory.java
new file mode 100644
index 00000000000..ecb1dfe0e66
--- /dev/null
+++ b/plugins/infra/misc/org.eclipse.papyrus.infra.hyperlink/src/org/eclipse/papyrus/infra/hyperlink/helper/HyperLinkHelperFactory.java
@@ -0,0 +1,143 @@
+/*****************************************************************************
+ * Copyright (c) 2009-2011 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.hyperlink.helper;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.infra.hyperlink.commands.DeleteHyperLinkDocumentCommand;
+import org.eclipse.papyrus.infra.hyperlink.commands.EmptyAllHyperLinkCommand;
+import org.eclipse.papyrus.infra.hyperlink.messages.Messages;
+import org.eclipse.papyrus.infra.hyperlink.object.HyperLinkObject;
+import org.eclipse.papyrus.infra.hyperlink.util.HyperLinkException;
+
+
+/**
+ * The Class HyperlinkHelper, contains all methods to manipulate information
+ * about hyperlinks in a model
+ */
+public class HyperLinkHelperFactory {
+
+ protected List<AbstractHyperLinkHelper> hyperLinkHelpers = new ArrayList<AbstractHyperLinkHelper>();
+
+ public List<AbstractHyperLinkHelper> getHyperLinkHelpers() {
+ return hyperLinkHelpers;
+ }
+
+ public HyperLinkHelperFactory(List<AbstractHyperLinkHelper> hyperLinkHelpers) {
+ this.hyperLinkHelpers.clear();
+ this.hyperLinkHelpers.addAll(hyperLinkHelpers);
+ }
+
+ /**
+ * Gets the adds the hyper link command.
+ *
+ * @param domain
+ * the domain to execute command
+ * @param object
+ * the object where it is attached the information
+ * @param localization
+ * the localization of the document
+ * @param tooltipText
+ * the tooltip text
+ * @param isDefault
+ * to set this hyperlink as default
+ * @return the adds the hyper link command
+ */
+ public Command getAddHyperLinkCommand(TransactionalEditingDomain domain, EModelElement object, List<HyperLinkObject> hyperlinkObjects) throws HyperLinkException {
+ CompoundCommand cmpCommand = new CompoundCommand(Messages.HyperLinkHelperFactory_addHyperLinksCommand);
+ Iterator<HyperLinkObject> iterator = hyperlinkObjects.iterator();
+ while (iterator.hasNext()) {
+ HyperLinkObject hyperlinkObject = iterator.next();
+ RecordingCommand cmd = null;
+ int i = 0;
+ while (cmd == null && i < hyperLinkHelpers.size()) {
+ cmd = hyperLinkHelpers.get(i).getAddHyperLinkCommand(domain, object, hyperlinkObject);
+ i++;
+ }
+ if (cmd == null) {
+ throw new HyperLinkException(Messages.HyperLinkHelperFactory_ImpossibleToFindACommandToSerialize + hyperlinkObject);
+ }
+ cmpCommand.append(cmd);
+ }
+ return cmpCommand.isEmpty() ? null : cmpCommand;
+ }
+
+ /**
+ * use to remove a hyperlink web or document
+ *
+ * @param domain
+ * the domain to execute the command
+ * @param object
+ * the object where was attached the information
+ * @param localization
+ * the localization or link
+ *
+ * @return the removes the element command
+ */
+ public static RecordingCommand getRemoveHyperlinkCommand(TransactionalEditingDomain domain, EModelElement object, String localization) {
+ return new DeleteHyperLinkDocumentCommand(domain, object, localization);
+
+ }
+
+ /**
+ * Gets the allreferenced element.
+ *
+ * @param object
+ * the object where we look for information
+ *
+ * @return the allreferenced
+ */
+ public ArrayList<?> getAllreferenced(EModelElement object) throws HyperLinkException {
+ ArrayList<HyperLinkObject> result = new ArrayList<HyperLinkObject>();
+ Iterator<EAnnotation> iter = object.getEAnnotations().iterator();
+ while (iter.hasNext()) {
+ EAnnotation currentAnnotation = iter.next();
+ int i = 0;
+ HyperLinkObject hyperlinkObject = null;
+ while (hyperlinkObject == null && i < hyperLinkHelpers.size()) {
+ hyperlinkObject = hyperLinkHelpers.get(i).getHyperLinkObject(currentAnnotation);
+ i++;
+ }
+ if (hyperlinkObject != null) {
+ result.add(hyperlinkObject);
+ }
+ }
+
+ return result;
+
+ }
+
+ /**
+ * Gets the empty all hyper link command. to clean all hyperlinks
+ *
+ * @param domain
+ * the domain to execute the command
+ * @param object
+ * the object where is attached information
+ *
+ * @return the empty all hyper link command
+ */
+ public static EmptyAllHyperLinkCommand getEmptyAllHyperLinkCommand(TransactionalEditingDomain domain, EModelElement object) {
+ return new EmptyAllHyperLinkCommand(domain, object);
+ }
+
+}

Back to the top