| /******************************************************************************* |
| * 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: |
| * Otto von Wesendonk - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.emf.emfstore.internal.client.ui.dialogs.merge.ui; |
| |
| import java.util.ArrayList; |
| |
| import org.apache.commons.lang.StringUtils; |
| import org.eclipse.emf.emfstore.internal.client.model.changeTracking.merging.conflict.VisualConflict; |
| import org.eclipse.emf.emfstore.internal.client.ui.dialogs.merge.util.UIDecisionUtil; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.custom.StyleRange; |
| import org.eclipse.swt.custom.StyledText; |
| import org.eclipse.swt.layout.FillLayout; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Label; |
| |
| /** |
| * Displays the description in the decision box. |
| * |
| * @author wesendon |
| */ |
| public class DescriptionComponentImpl implements DescriptionComponent { |
| |
| /** |
| * Constructor. |
| */ |
| public DescriptionComponentImpl() { |
| } |
| |
| /** |
| * |
| * {@inheritDoc} |
| * |
| * @see org.eclipse.emf.emfstore.internal.client.ui.dialogs.merge.ui.MergeComponent#init(org.eclipse.swt.widgets.Composite, |
| * org.eclipse.emf.emfstore.internal.client.ui.dialogs.merge.ui.DecisionBox, |
| * org.eclipse.emf.emfstore.internal.client.model.changeTracking.merging.conflict.VisualConflict) |
| */ |
| public void init(Composite parent, DecisionBox decisionBox, VisualConflict visualConflict) { |
| final Composite composite = new Composite(parent, SWT.NONE); |
| final GridLayout layout = new GridLayout(2, false); |
| layout.horizontalSpacing = 20; |
| composite.setLayout(layout); |
| composite.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| |
| final Label image = new Label(composite, SWT.NONE); |
| image.setImage(UIDecisionUtil.getImage(visualConflict.getConflictDescription().getImage())); |
| image.setToolTipText(visualConflict.getClass().getSimpleName()); |
| image.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); |
| image.setBackground(parent.getBackground()); |
| |
| final ArrayList<StyleRange> styleRanges = new ArrayList<StyleRange>(); |
| String description = StringUtils.EMPTY; |
| for (final String tmp : DescriptionComponenptUtil.splitText(decisionBox, |
| visualConflict.getConflictDescription())) { |
| if (tmp.startsWith("::")) { //$NON-NLS-1$ |
| styleRanges.add(createStyleRange(description.length(), tmp.length() - 2)); |
| description += tmp.substring(2); |
| } else { |
| description += tmp; |
| } |
| } |
| |
| final Group group = new Group(composite, SWT.NONE); |
| group.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| final FillLayout groupLayout = new FillLayout(); |
| groupLayout.marginHeight = 5; |
| groupLayout.marginWidth = 6; |
| group.setLayout(groupLayout); |
| group.setBackground(parent.getBackground()); |
| group.setText(Messages.DescriptionComponentImpl_ConflictDescription); |
| |
| final StyledText styledDescription = new StyledText(group, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY); |
| styledDescription.setEditable(false); |
| styledDescription.setEnabled(false); |
| styledDescription.setText(description + "\n"); //$NON-NLS-1$ |
| styledDescription.setWordWrap(true); |
| styledDescription.setStyleRanges(styleRanges.toArray(new StyleRange[styleRanges.size()])); |
| styledDescription.setBackground(parent.getBackground()); |
| } |
| |
| private StyleRange createStyleRange(int start, int length) { |
| final StyleRange styleRange = new StyleRange(); |
| styleRange.start = start; |
| styleRange.length = length; |
| styleRange.fontStyle = SWT.BOLD; |
| return styleRange; |
| } |
| } |