diff options
author | Pauline DEVILLE | 2016-11-08 14:34:38 +0000 |
---|---|---|
committer | Florian Noyrit | 2017-04-19 09:16:29 +0000 |
commit | 320a4377d303954215633cb92c4e95d21f2749e8 (patch) | |
tree | a617ba5019869a4fcb983fa8e7c73dc03ac58228 /plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common | |
parent | b37f9403c106de972fd4f25dcdd0aeed40588f7f (diff) | |
download | org.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')
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; + } + +} |