Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins/migration/org.eclipse.papyrus.migration.common/src/org/eclipse/papyrus/migration/common/wizard/pages/ImportConfigComposite.java')
-rw-r--r--extraplugins/migration/org.eclipse.papyrus.migration.common/src/org/eclipse/papyrus/migration/common/wizard/pages/ImportConfigComposite.java196
1 files changed, 196 insertions, 0 deletions
diff --git a/extraplugins/migration/org.eclipse.papyrus.migration.common/src/org/eclipse/papyrus/migration/common/wizard/pages/ImportConfigComposite.java b/extraplugins/migration/org.eclipse.papyrus.migration.common/src/org/eclipse/papyrus/migration/common/wizard/pages/ImportConfigComposite.java
new file mode 100644
index 00000000000..5e1e6346b7e
--- /dev/null
+++ b/extraplugins/migration/org.eclipse.papyrus.migration.common/src/org/eclipse/papyrus/migration/common/wizard/pages/ImportConfigComposite.java
@@ -0,0 +1,196 @@
+/*****************************************************************************
+ * Copyright (c) 2014 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:
+ * Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - bug 496176
+ *****************************************************************************/
+package org.eclipse.papyrus.migration.common.wizard.pages;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.papyrus.infra.properties.ui.runtime.DisplayEngine;
+import org.eclipse.papyrus.infra.properties.ui.util.PropertiesDisplayHelper;
+import org.eclipse.papyrus.infra.widgets.util.FileUtil;
+import org.eclipse.papyrus.migration.common.MigrationParameters.ThreadConfig;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ *
+ * Generic and reusable composite used to display the previously selected elements and the migration options
+ *
+ * @author Quentin Le Menez
+ *
+ */
+public abstract class ImportConfigComposite extends Composite {
+
+ protected ThreadConfig config;
+
+ protected Collection<Object> transformationFiles;
+
+ protected CheckboxTableViewer listViewer;
+
+ protected ISelectionChangedListener listListener;
+
+ protected DisplayEngine displayEngine;
+
+ protected Collection<Object> uncheckedFiles;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parent
+ * The parent composite
+ * @param style
+ * The swt style used for this ConfigurationComposite
+ * @param config
+ * The configuration used to display the transformation options
+ */
+ public ImportConfigComposite(Composite parent, int style, ThreadConfig config) {
+ super(parent, style);
+ this.setLayout(new GridLayout(1, false));
+ this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ this.config = config;
+
+ Composite filesComposite = new Composite(this, SWT.BORDER);
+ filesComposite.setLayout(new FillLayout());
+ filesComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite configComposite = new Composite(this, SWT.BORDER);
+ configComposite.setLayout(new FillLayout());
+ configComposite.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
+
+ createFilesComposite(filesComposite);
+
+ createParamComposite(configComposite);
+ }
+
+
+ /**
+ *
+ * Fills the selection area with all the files selected previously
+ *
+ * @param parent
+ * The parent composite
+ */
+ protected void createFilesComposite(Composite parent) {
+ Composite listComposite = new Composite(parent, SWT.NONE);
+ GridLayout gridLayout = new GridLayout(2, false);
+ listComposite.setLayout(gridLayout);
+
+ listViewer = CheckboxTableViewer.newCheckList(listComposite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ GridData viewerGrid = new GridData(SWT.FILL, SWT.FILL, true, true);
+ listViewer.getTable().setLayoutData(viewerGrid);
+
+ listViewer.setLabelProvider(new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IFile) {
+ return FileUtil.getPath((IFile) element, true);
+ } else if (element instanceof File) {
+ return ((File) element).getAbsolutePath();
+ } else {
+ return "Not an IFile, wrong type to transform";
+ }
+ }
+ });
+
+ listViewer.setContentProvider(new ArrayContentProvider());
+
+ listListener = new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ fireSelectionEvent(event);
+ }
+ };
+
+ listViewer.addSelectionChangedListener(listListener);
+
+ setTransformationFiles();
+
+ createSelectionButtons(listComposite);
+
+ }
+
+
+ /**
+ *
+ * Used to update the display from a changed selection in the ConfigPage
+ *
+ * @param selectedFiles
+ * The new list of selected files
+ */
+ abstract void setViewerInput(Collection<Object> selectedFiles);
+
+ /**
+ *
+ * Abstract method to be implemented by the child in order to create the useful buttons to manipulate the tableViewer's elements
+ *
+ * @param parent
+ * The parent composite in which the new buttons will be created
+ */
+ abstract void createSelectionButtons(Composite parent);
+
+ /**
+ *
+ * Abstract method to be implemented by the child in order to handle the transformation options
+ *
+ * @param event
+ * The event linked to the configuration's selection buttons
+ */
+ abstract void fireSelectionEvent(SelectionChangedEvent event);
+
+
+ /**
+ *
+ * Updates the list of files to be transformed
+ *
+ */
+ public void setTransformationFiles() {
+ transformationFiles = new LinkedList<Object>(Arrays.asList(listViewer.getCheckedElements()));
+ }
+
+
+ /**
+ *
+ * Fills the composite with the configuration parameters
+ *
+ * @param parent
+ * The parent composite
+ */
+ public void createParamComposite(Composite parent) {
+ displayEngine = PropertiesDisplayHelper.display(config, parent);
+ }
+
+
+ @Override
+ public void dispose() {
+ if (displayEngine != null) {
+ displayEngine.dispose();
+ }
+ if (listListener != null) {
+ listViewer.removeSelectionChangedListener(listListener);
+ }
+ super.dispose();
+ }
+
+}

Back to the top