| /******************************************************************************* |
| * Copyright (c) 2008-2011 Chair for Applied Software Engineering, |
| * Technische Universitaet Muenchen. |
| * 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: |
| * Aleksander Shterev, Edgar Mueller - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.emf.emfstore.internal.client.ui.views.changes; |
| |
| import java.util.List; |
| |
| import org.eclipse.emf.emfstore.internal.client.ui.views.scm.SCMContentProvider; |
| import org.eclipse.emf.emfstore.internal.client.ui.views.scm.SCMLabelProvider; |
| import org.eclipse.emf.emfstore.internal.common.model.ModelElementIdToEObjectMapping; |
| import org.eclipse.emf.emfstore.internal.common.model.Project; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.AbstractChangePackage; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.AbstractOperation; |
| import org.eclipse.jface.layout.GridDataFactory; |
| import org.eclipse.jface.layout.GridLayoutFactory; |
| import org.eclipse.jface.viewers.TreeViewer; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.TabFolder; |
| import org.eclipse.swt.widgets.TabItem; |
| |
| /** |
| * A composite that contains multiple tabs displaying the operation from a |
| * different view - e.g. grouped by model element, or ungrouped. |
| * |
| * @author Shterev |
| * @author emueller |
| */ |
| public class TabbedChangesComposite extends Composite { |
| |
| private TabFolder folder; |
| private Composite tabComposite; |
| private TreeViewer tabTreeViewer; |
| private SCMContentProvider contentProvider; |
| private SCMLabelProvider labelProvider; |
| |
| /** |
| * Default constructor. |
| * |
| * @param parent |
| * the composite's parent |
| * @param style |
| * the style |
| * @param changePackages |
| * the input of change packages as a list |
| * @param project |
| * the project |
| * @param idToEObjectMapping |
| * a mapping from IDs to EObjects that is necessary to resolve |
| * deleted EObjects contained in change packages |
| * @param showRootNodes |
| * whether to show root nodes |
| */ |
| public TabbedChangesComposite(Composite parent, int style, List<AbstractChangePackage> changePackages, |
| Project project, |
| ModelElementIdToEObjectMapping idToEObjectMapping, boolean showRootNodes) { |
| super(parent, style); |
| createComposite(style, project, idToEObjectMapping, showRootNodes); |
| tabTreeViewer.setInput(changePackages); |
| } |
| |
| /** |
| * Default constructor. |
| * |
| * @param parent |
| * the composite's parent |
| * @param style |
| * the style |
| * @param project |
| * the project |
| * @param operations |
| * the input of operations as a list |
| * @param idToEObjectMapping |
| * a mapping from IDs to EObjects that is necessary to resolve |
| * deleted EObjects contained in operations |
| * @param showRootNodes |
| * whether to show root nodes |
| */ |
| public TabbedChangesComposite(Composite parent, int style, Project project, List<AbstractOperation> operations, |
| ModelElementIdToEObjectMapping idToEObjectMapping, boolean showRootNodes) { |
| super(parent, style); |
| createComposite(style, project, idToEObjectMapping, showRootNodes); |
| tabTreeViewer.setInput(operations); |
| } |
| |
| private void createComposite(int style, |
| Project project, |
| ModelElementIdToEObjectMapping idToEObjectMapping, |
| boolean showRootNodes) { |
| |
| setLayout(new GridLayout()); |
| folder = new TabFolder(this, style); |
| GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL) |
| .grab(true, true).applyTo(folder); |
| |
| tabComposite = new Composite(folder, SWT.NONE); |
| GridLayoutFactory.fillDefaults().applyTo(tabComposite); |
| |
| tabTreeViewer = new TreeViewer(tabComposite, SWT.H_SCROLL |
| | SWT.V_SCROLL | SWT.VIRTUAL); |
| GridDataFactory.fillDefaults().grab(true, true) |
| .applyTo(tabTreeViewer.getControl()); |
| |
| contentProvider = new SCMContentProvider(idToEObjectMapping); |
| contentProvider.setShowRootNodes(showRootNodes); |
| labelProvider = new SCMLabelProvider(project); |
| labelProvider.setChangePackageVisualizationHelper( |
| new ChangePackageVisualizationHelper(idToEObjectMapping)); |
| contentProvider.setProxyInitializer(labelProvider); |
| tabTreeViewer.setContentProvider(contentProvider); |
| tabTreeViewer.setLabelProvider(labelProvider); |
| tabTreeViewer.expandToLevel(1); |
| |
| final TabItem opTab = new TabItem(folder, style); |
| opTab.setText(Messages.TabbedChangesComposite_OperationsText); |
| opTab.setControl(tabComposite); |
| } |
| |
| /** |
| * {@inheritDoc} |
| * |
| * @see org.eclipse.swt.widgets.Widget#dispose() |
| */ |
| @Override |
| public void dispose() { |
| contentProvider.dispose(); |
| labelProvider.dispose(); |
| } |
| |
| } |