Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPauline DEVILLE2016-11-08 14:34:38 +0000
committerFlorian Noyrit2017-04-19 09:16:29 +0000
commit320a4377d303954215633cb92c4e95d21f2749e8 (patch)
treea617ba5019869a4fcb983fa8e7c73dc03ac58228 /plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common
parentb37f9403c106de972fd4f25dcdd0aeed40588f7f (diff)
downloadorg.eclipse.papyrus-320a4377d303954215633cb92c4e95d21f2749e8.tar.gz
org.eclipse.papyrus-320a4377d303954215633cb92c4e95d21f2749e8.tar.xz
org.eclipse.papyrus-320a4377d303954215633cb92c4e95d21f2749e8.zip
Bug 510611 - [Activity Diagram] Automated pin derivation for
AcceptEventAction and AcceptCallAction Change-Id: I49bb0c9398ca49ccffb255c218d88dd92c918a0e Signed-off-by: Pauline DEVILLE <pauline.deville@cea.fr>
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/plugin.xml9
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/Messages.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/messages.properties2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AbstractAutomatedModelCompletionPreferencesPage.java232
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AutomatedModelCompletionPreferenceDescriptor.java128
5 files changed, 375 insertions, 0 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/plugin.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/plugin.xml
index 3b6b37d142b..a2c5a31a360 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/plugin.xml
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/plugin.xml
@@ -525,4 +525,13 @@
target="1.3.0">
</diagramReconciler>
</extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.ui.internal.dialogs.EmptyPreferencePage"
+ id="org.eclipse.papyrus.uml.diagram.common.automatedModelCompletionPreferencePage"
+ name="Automated Model Completion">
+ </page>
+ </extension>
</plugin>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/Messages.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/Messages.java
index e94d390daf4..86579c5325b 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/Messages.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/Messages.java
@@ -20,6 +20,10 @@ public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.papyrus.uml.diagram.common.messages.messages"; //$NON-NLS-1$
+ public static String AbstractAutomatedModelCompletionPreferencesPage_Accelerators;
+
+ public static String AbstractAutomatedModelCompletionPreferencesPage_Elements;
+
public static String ShowHideRelatedLinkSelectionDialog_Comment_;
public static String ShowHideRelatedLinkSelectionDialog_CommentLink;
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/messages.properties b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/messages.properties
index 0ced120eb38..365038c99f7 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/messages.properties
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/messages/messages.properties
@@ -1,3 +1,5 @@
+AbstractAutomatedModelCompletionPreferencesPage_Accelerators=Accelerators
+AbstractAutomatedModelCompletionPreferencesPage_Elements=Elements
CreateOrShowExistingElementHelper_CreateOrRestoreX=Create or Restore {0}
CreateOrShowExistingElementHelper_XBetweenTheseElementAlreadyExists={0} between these elements already exists in the model.\nDo you want to restore it?
CreateOrShowExistingElementHelper_AlwaysCreateNewLink=Do not show this again. Always create a new link.
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AbstractAutomatedModelCompletionPreferencesPage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AbstractAutomatedModelCompletionPreferencesPage.java
new file mode 100644
index 00000000000..25dfbf8126e
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AbstractAutomatedModelCompletionPreferencesPage.java
@@ -0,0 +1,232 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.common.preferences;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.papyrus.infra.widgets.providers.CollectionContentProvider;
+import org.eclipse.papyrus.uml.diagram.common.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * Automated pin derivation for AcceptEventAction and AcceptCallAction
+ *
+ * This class provide graphical interface for Automated Model Completion Preferences Page.
+ * Sub classes must initialize the contentProvider property
+ */
+public abstract class AbstractAutomatedModelCompletionPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ final static String FIRST_COLUMN_NAME = org.eclipse.papyrus.uml.diagram.common.messages.Messages.AbstractAutomatedModelCompletionPreferencesPage_Elements;
+
+ final static String SECOND_COLUMN_NAME = org.eclipse.papyrus.uml.diagram.common.messages.Messages.AbstractAutomatedModelCompletionPreferencesPage_Accelerators;
+
+ final static int ROW_HEIGHT = 25;
+
+ /**
+ * Save the associate comboBox to the AutomatedModelCompletionDescriptor
+ */
+ private HashMap<AutomatedModelCompletionPreferenceDescriptor, Combo> mapInstanceComboBox;
+
+ /**
+ * The content of the table
+ */
+ protected List<AutomatedModelCompletionPreferenceDescriptor> automatedModelCompletionDescriptorsList;
+
+ /**
+ * Constructor.
+ *
+ */
+ public AbstractAutomatedModelCompletionPreferencesPage() {
+ automatedModelCompletionDescriptorsList = new ArrayList<>();
+ }
+
+ /**
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ *
+ * @param workbench
+ */
+ @Override
+ public void init(IWorkbench workbench) {
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ }
+
+ /**
+ * Perform apply.
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#performApply()
+ */
+ @Override
+ protected void performApply() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+
+ // save preferences
+ for (Map.Entry<AutomatedModelCompletionPreferenceDescriptor, Combo> entry : mapInstanceComboBox.entrySet()) {
+ String value = entry.getValue().getText();
+ store.setValue(entry.getKey().getPreferenceConstant(), value);
+ }
+ }
+
+ /**
+ * @see org.eclipse.jface.preference.PreferencePage#performOk()
+ *
+ * @return
+ */
+ @Override
+ public boolean performOk() {
+ performApply();
+ return super.performOk();
+ }
+
+ /**
+ * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+ *
+ */
+ @Override
+ protected void performDefaults() {
+ IPreferenceStore preferences = Activator.getDefault().getPreferenceStore();
+
+ for (Map.Entry<AutomatedModelCompletionPreferenceDescriptor, Combo> entry : mapInstanceComboBox.entrySet()) {
+ String selected = preferences.getDefaultString(entry.getKey().getPreferenceConstant());
+ entry.getValue().setText(selected);
+ }
+ super.performDefaults();
+ }
+
+ /**
+ * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ * @return
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite self = new Composite(parent, SWT.NONE);
+ self.setLayout(new GridLayout(1, true));
+ self.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // TableViewer
+ final TableViewer tableViewer = new TableViewer(self, SWT.BORDER);
+
+ // Table
+ Table table = tableViewer.getTable();
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ table.setLayoutData(gridData);
+
+ tableViewer.setContentProvider(CollectionContentProvider.instance);
+ tableViewer.setLabelProvider(new ColumnLabelProvider() {
+
+ @Override
+ public void update(ViewerCell cell) {
+ if (cell.getColumnIndex() == 0) {
+ super.update(cell);
+ } else {
+ return;
+ }
+ }
+
+ @Override
+ public String getText(Object element) {
+ if (element instanceof AutomatedModelCompletionPreferenceDescriptor) {
+ String text = ((AutomatedModelCompletionPreferenceDescriptor) element).getElement().toString();
+ text = text.replaceAll("org.eclipse.uml2.uml.", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ text = text.replaceFirst("interface\\s", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ return text;
+ }
+ return super.getText(element);
+ }
+ });
+
+ TableLayout layout = new TableLayout();
+
+ new TableColumn(table, SWT.LEFT);
+ layout.addColumnData(new ColumnWeightData(100, 250, true));
+
+ new TableColumn(table, SWT.LEFT);
+ layout.addColumnData(new ColumnWeightData(100, 250, true));
+
+ table.setLayout(layout);
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ table.getColumn(0).setText(FIRST_COLUMN_NAME);
+ table.getColumn(1).setText(SECOND_COLUMN_NAME);
+
+ // Set content
+ tableViewer.setInput(automatedModelCompletionDescriptorsList);
+
+ // Create comboBox
+ mapInstanceComboBox = new HashMap<AutomatedModelCompletionPreferenceDescriptor, Combo>();
+ for (TableItem item : table.getItems()) {
+ if (item.getData() instanceof AutomatedModelCompletionPreferenceDescriptor) {
+ TableEditor editor = new TableEditor(table);
+
+ final Combo comboBox = new Combo(table, SWT.DROP_DOWN);
+ List<String> list = ((AutomatedModelCompletionPreferenceDescriptor) item.getData()).getListOfAccelerator();
+ java.util.Collections.sort(list);
+ for (String updater : list) {
+ comboBox.add(updater);
+ }
+
+ // set selection
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ comboBox.setText(store.getString(((AutomatedModelCompletionPreferenceDescriptor) item.getData()).getPreferenceConstant()));
+
+ final TableItem currentItem = item;
+
+ final AutomatedModelCompletionPreferenceDescriptor strategy = (AutomatedModelCompletionPreferenceDescriptor) currentItem.getData();
+
+ mapInstanceComboBox.put(strategy, comboBox);
+
+ editor.setEditor(comboBox, item, 1);
+ editor.horizontalAlignment = SWT.CENTER;
+ editor.grabHorizontal = true;
+
+ }
+ }
+
+ // resize the row height
+ table.addListener(SWT.MeasureItem, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ event.height = ROW_HEIGHT;
+
+ }
+ });
+
+ return self;
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AutomatedModelCompletionPreferenceDescriptor.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AutomatedModelCompletionPreferenceDescriptor.java
new file mode 100644
index 00000000000..3fec04ef183
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/preferences/AutomatedModelCompletionPreferenceDescriptor.java
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.common.preferences;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ *
+ * Automated pin derivation for AcceptEventAction and AcceptCallAction
+ *
+ */
+public class AutomatedModelCompletionPreferenceDescriptor {
+
+ /**
+ * element is the node on which the updater is applied
+ */
+ private Class<? extends Element> element;
+
+ /**
+ * listOfAccelerator
+ */
+ private List<String> listOfAccelerator;
+
+ /**
+ * preferenceConstant of this accelerator
+ */
+ private String preferenceConstant;
+
+ /**
+ * Constructor.
+ *
+ */
+ public AutomatedModelCompletionPreferenceDescriptor(String preferenceConstant) {
+ this.element = Element.class;
+ this.listOfAccelerator = new ArrayList<>();
+ this.preferenceConstant = preferenceConstant;
+ }
+
+ /**
+ * Constructor.
+ *
+ */
+ public AutomatedModelCompletionPreferenceDescriptor(Class<? extends Element> node, List<String> listOfUpdater, String preferenceConstant) {
+ this.element = node;
+ this.listOfAccelerator = listOfUpdater;
+ this.preferenceConstant = preferenceConstant;
+ }
+
+ /**
+ * this method add updater to the listOfUpdater
+ *
+ * @param updater
+ * @return true if the list change
+ */
+ boolean addAccelerator(String updater) {
+ return listOfAccelerator.add(updater);
+ }
+
+ /**
+ * this method remove updater to the listOfUpdater
+ *
+ * @param updater
+ * @return true if the list contain the specified element
+ */
+ boolean removeAccelerator(String updater) {
+ return listOfAccelerator.remove(updater);
+ }
+
+ /**
+ * @return the element
+ */
+ public Class<? extends Element> getElement() {
+ return element;
+ }
+
+ /**
+ * @param element
+ * the element to set
+ */
+ public void setElement(Class<? extends Element> element) {
+ this.element = element;
+ }
+
+ /**
+ * @return the listOfAccelerator
+ */
+ public List<String> getListOfAccelerator() {
+ return listOfAccelerator;
+ }
+
+ /**
+ * @param listOfAccelerator
+ * the listOfAccelerator to set
+ */
+ public void setListOfAccelerator(List<String> listOfAccelerator) {
+ this.listOfAccelerator = listOfAccelerator;
+ }
+
+ /**
+ * @return the preferenceConstant
+ */
+ public String getPreferenceConstant() {
+ return preferenceConstant;
+ }
+
+ /**
+ * @param preferenceConstant
+ * the preferenceConstant to set
+ */
+ public void setPreferenceConstant(String preferenceConstant) {
+ this.preferenceConstant = preferenceConstant;
+ }
+
+}

Back to the top