Projects >> ecommons-uimisc >>247a2992d89b05725870b28a80fa514730a48076

Chunk
Conflicting content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
// -cleanup, ~
package org.eclipse.nebula.widgets.nattable;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.check;
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;
=======
package org.eclipse.nebula.widgets.nattable;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import java.util.ArrayList;
import java.util.Collection;
Solution content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// -cleanup, ~
package org.eclipse.nebula.widgets.nattable;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.check;
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import java.util.ArrayList;
import java.util.Collection;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Import
Package declaration
Chunk
Conflicting content
import java.util.List;
import java.util.Properties;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.dnd.DragSource;
Solution content
import java.util.List;
import java.util.Properties;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.dnd.DragSource;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
=======
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
Solution content
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.conflation.VisualChangeEventConflater;
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.coordinate.SWTUtil;
import org.eclipse.nebula.widgets.nattable.edit.ActiveCellEditorRegistry;
import org.eclipse.nebula.widgets.nattable.grid.command.ClientAreaResizeCommand;
import org.eclipse.nebula.widgets.nattable.grid.command.InitializeGridCommand;
import org.eclipse.nebula.widgets.nattable.internal.LayerListenerList;
import org.eclipse.nebula.widgets.nattable.internal.NatTablePlugin;
=======
import org.eclipse.nebula.widgets.nattable.edit.ActiveCellEditorRegistry;
import org.eclipse.nebula.widgets.nattable.edit.command.EditUtils;
import org.eclipse.nebula.widgets.nattable.grid.command.ClientAreaResizeCommand;
import org.eclipse.nebula.widgets.nattable.grid.command.InitializeGridCommand;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.nebula.widgets.nattable.layer.HorizontalLayerDim;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.ILayerDim;
Solution content
import org.eclipse.nebula.widgets.nattable.conflation.VisualChangeEventConflater;
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.edit.ActiveCellEditorRegistry;
import org.eclipse.nebula.widgets.nattable.grid.command.ClientAreaResizeCommand;
import org.eclipse.nebula.widgets.nattable.grid.command.InitializeGridCommand;
import org.eclipse.nebula.widgets.nattable.internal.LayerListenerList;
import org.eclipse.nebula.widgets.nattable.internal.NatTablePlugin;
import org.eclipse.nebula.widgets.nattable.layer.HorizontalLayerDim;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.ILayerDim;
File
NatTable.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.VerticalLayerDim;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
=======
import org.eclipse.nebula.widgets.nattable.layer.event.CellVisualUpdateEvent;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IVisualChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.stack.DummyGridLayerStack;
Solution content
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.VerticalLayerDim;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IVisualChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.stack.DummyGridLayerStack;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
import org.eclipse.nebula.widgets.nattable.viewport.command.RecalculateScrollBarsCommand;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java

public class NatTable extends Canvas implements ILayer, PaintListener, ILayerListener, IPersistable {
	
	public static final int DEFAULT_STYLE_OPTIONS = SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED  | SWT.V_SCROLL | SWT.H_SCROLL;
	
	
	private IClientAreaProvider clientAreaProvider = new IClientAreaProvider() {
		@Override
		public Rectangle getClientArea() {
			if (!isDisposed()) {
				return SWTUtil.toNatTable(NatTable.this.getClientArea());
			}
			else return new Rectangle(0, 0, 0, 0);
		}
		
	};
	
	
	private UiBindingRegistry uiBindingRegistry;
	
	private ModeSupport modeSupport;
	
	private final EventConflaterChain conflaterChain = new EventConflaterChain();
	
	private final List overlayPainters = new ArrayList();
	
	private final List persistables = new LinkedList();
	
	private final ILayerDim h;
	private final ILayerDim v;
	
	private ILayer underlyingLayer;
	
	private IConfigRegistry configRegistry;
	
	protected final Collection configurations = new LinkedList();
	
	protected String id = GUIHelper.getSequenceNumber();
	
	private ILayerPainter layerPainter = new NatLayerPainter(this);
	
	private final boolean autoconfigure;
	
	
	public NatTable(Composite parent) {
		this(parent, DEFAULT_STYLE_OPTIONS);
	}
	
=======
public class NatTable extends Canvas implements ILayer, PaintListener, IClientAreaProvider, ILayerListener, IPersistable {

	public static final int DEFAULT_STYLE_OPTIONS = SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED  | SWT.V_SCROLL | SWT.H_SCROLL;
	
	
	private final ILayerDim hDim;
	private final ILayerDim vDim;
	
	private UiBindingRegistry uiBindingRegistry;

	private ModeSupport modeSupport;

	private final EventConflaterChain conflaterChain = new EventConflaterChain();

	private final List overlayPainters = new ArrayList();

	private final List persistables = new LinkedList();

	private ILayer underlyingLayer;

	private IConfigRegistry configRegistry;

	protected final Collection configurations = new LinkedList();

	protected String id = GUIHelper.getSequenceNumber();

	private ILayerPainter layerPainter = new NatLayerPainter(this);

	private final boolean autoconfigure;

	public NatTable(Composite parent) {
		this(parent, DEFAULT_STYLE_OPTIONS);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * @param parent widget for the table.
	 * @param autoconfigure if set to False
Solution content
	
	
	private ModeSupport modeSupport;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
import org.eclipse.nebula.widgets.nattable.viewport.command.RecalculateScrollBarsCommand;


public class NatTable extends Canvas implements ILayer, PaintListener, ILayerListener, IPersistable {
	
	public static final int DEFAULT_STYLE_OPTIONS = SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED  | SWT.V_SCROLL | SWT.H_SCROLL;
	
	
	private final ILayerDim hDim;
	private final ILayerDim vDim;
	
	private IClientAreaProvider clientAreaProvider = new IClientAreaProvider() {
		@Override
		public Rectangle getClientArea() {
			if (!isDisposed()) {
				return SWTUtil.toNatTable(NatTable.this.getClientArea());
			}
			else return new Rectangle(0, 0, 0, 0);
		}
		
	};
	
	
	private UiBindingRegistry uiBindingRegistry;
	
	private final EventConflaterChain conflaterChain = new EventConflaterChain();
	private final List overlayPainters = new ArrayList();
	
	private final List persistables = new LinkedList();
	
	private ILayer underlyingLayer;
	
	private IConfigRegistry configRegistry;
	
	protected final Collection configurations = new LinkedList();
	
	protected String id = GUIHelper.getSequenceNumber();
	
	private ILayerPainter layerPainter = new NatLayerPainter(this);
	
	private final boolean autoconfigure;
	
	
	public NatTable(Composite parent) {
		this(parent, DEFAULT_STYLE_OPTIONS);
	}
	
	/**
	 * @param parent widget for the table.
	 * @param autoconfigure if set to False
File
NatTable.java
Developer's decision
Combination
Kind of conflict
Attribute
Class signature
Method declaration
Method invocation
Chunk
Conflicting content
	public NatTable(Composite parent, boolean autoconfigure) {
		this(parent, DEFAULT_STYLE_OPTIONS, autoconfigure);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	public NatTable(Composite parent, ILayer layer) {
		this(parent, DEFAULT_STYLE_OPTIONS, layer);
	}
	
	public NatTable(Composite parent, ILayer layer, boolean autoconfigure) {
		this(parent, DEFAULT_STYLE_OPTIONS, layer, autoconfigure);
	}
	
	public NatTable(Composite parent, final int style) {
		this(parent, style, new DummyGridLayerStack());
	}
	
	public NatTable(Composite parent, final int style, boolean autoconfigure) {
		this(parent, style, new DummyGridLayerStack(), autoconfigure);
	}
	
	public NatTable(final Composite parent, final int style, ILayer layer) {
		this(parent, style, layer, true);
	}
	
	public NatTable(final Composite parent, final int style, final ILayer layer, boolean autoconfigure) {
		super(parent, style);
		
		this.h = new HorizontalLayerDim(this);
		this.v = new VerticalLayerDim(this);
=======

	public NatTable(Composite parent, ILayer layer) {
	    this(parent, DEFAULT_STYLE_OPTIONS, layer);
	}

	public NatTable(Composite parent, ILayer layer, boolean autoconfigure) {
		this.vDim = new VerticalLayerDim(this);
	    this(parent, DEFAULT_STYLE_OPTIONS, layer, autoconfigure);
	}

	public NatTable(Composite parent, final int style) {
		this(parent, style, new DummyGridLayerStack());
	}

	public NatTable(Composite parent, final int style, boolean autoconfigure) {
		this(parent, style, new DummyGridLayerStack(), autoconfigure);
	}

	public NatTable(final Composite parent, final int style, ILayer layer) {
		this(parent, style, layer, true);
	}

	public NatTable(final Composite parent, final int style, final ILayer layer, boolean autoconfigure) {
		super(parent, style);
		
		this.hDim = new HorizontalLayerDim(this);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		// Disable scroll bars by default; if a Viewport is available, it will enable the scroll bars
		disableScrollBar(getHorizontalBar());
Solution content
	public NatTable(Composite parent, boolean autoconfigure) {
		this(parent, DEFAULT_STYLE_OPTIONS, autoconfigure);
	}
	
	public NatTable(Composite parent, ILayer layer) {
		this(parent, DEFAULT_STYLE_OPTIONS, layer);
	}
	
	public NatTable(Composite parent, ILayer layer, boolean autoconfigure) {
		this(parent, DEFAULT_STYLE_OPTIONS, layer, autoconfigure);
	}
	
	public NatTable(Composite parent, final int style) {
		this(parent, style, new DummyGridLayerStack());
	}
	
	public NatTable(Composite parent, final int style, boolean autoconfigure) {
		this(parent, style, new DummyGridLayerStack(), autoconfigure);
	}
	
	public NatTable(final Composite parent, final int style, ILayer layer) {
		this(parent, style, layer, true);
	}
	
	public NatTable(final Composite parent, final int style, final ILayer layer, boolean autoconfigure) {
		super(parent, style);
		
		this.hDim = new HorizontalLayerDim(this);
		this.vDim = new VerticalLayerDim(this);
		
		// Disable scroll bars by default; if a Viewport is available, it will enable the scroll bars
		disableScrollBar(getHorizontalBar());
File
NatTable.java
Developer's decision
Version 2
Kind of conflict
Attribute
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
		// Disable scroll bars by default; if a Viewport is available, it will enable the scroll bars
		disableScrollBar(getHorizontalBar());
		disableScrollBar(getVerticalBar());
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		initInternalListener();
		
		internalSetLayer(layer);
		
=======

		initInternalListener();

		internalSetLayer(layer);

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		this.autoconfigure = autoconfigure;
		if (autoconfigure) {
			configurations.add(new DefaultNatTableStyleConfiguration());
Solution content
		// Disable scroll bars by default; if a Viewport is available, it will enable the scroll bars
		disableScrollBar(getHorizontalBar());
		disableScrollBar(getVerticalBar());
		
		initInternalListener();
		
		internalSetLayer(layer);
		
		this.autoconfigure = autoconfigure;
		if (autoconfigure) {
			configurations.add(new DefaultNatTableStyleConfiguration());
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
			configurations.add(new DefaultNatTableStyleConfiguration());
			configure();
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		conflaterChain.add(getVisualChangeEventConflater());
		conflaterChain.start();
		
		addDisposeListener(new DisposeListener() {
			
=======

		conflaterChain.add(getVisualChangeEventConflater());
		conflaterChain.start();

		addDisposeListener(new DisposeListener() {

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			@Override
			public void widgetDisposed(DisposeEvent e) {
				doCommand(new DisposeResourcesCommand());
Solution content
			configurations.add(new DefaultNatTableStyleConfiguration());
			configure();
		}
		
		conflaterChain.add(getVisualChangeEventConflater());
		conflaterChain.start();
		
		addDisposeListener(new DisposeListener() {
			
			@Override
			public void widgetDisposed(DisposeEvent e) {
				doCommand(new DisposeResourcesCommand());
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
				ActiveCellEditorRegistry.unregisterActiveCellEditor();
				layer.dispose();
			}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		});
	}
	
Solution content
				ActiveCellEditorRegistry.unregisterActiveCellEditor();
				layer.dispose();
			}
			
		});
	}
	
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	}
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	protected IEventConflater getVisualChangeEventConflater() {
		return new VisualChangeEventConflater(this);
	}
	
=======
	@Override
	public ILayerDim getDim(final Orientation orientation) {
		if (orientation == null) {
			throw new NullPointerException("orientation"); //$NON-NLS-1$
		}
		
		return (orientation == HORIZONTAL) ? this.hDim : this.vDim;
	}
	
	
	protected IEventConflater getVisualChangeEventConflater() {
		return new VisualChangeEventConflater(this);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	private void disableScrollBar(ScrollBar scrollBar) {
		if (scrollBar != null) {
			scrollBar.setMinimum(0);
Solution content
	}
	
	
	@Override
	public ILayerDim getDim(final Orientation orientation) {
		if (orientation == null) {
			throw new NullPointerException("orientation"); //$NON-NLS-1$
		}
		
		return (orientation == HORIZONTAL) ? this.hDim : this.vDim;
	}
	
	
	protected IEventConflater getVisualChangeEventConflater() {
		return new VisualChangeEventConflater(this);
	}
	
	private void disableScrollBar(ScrollBar scrollBar) {
		if (scrollBar != null) {
			scrollBar.setMinimum(0);
File
NatTable.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
			scrollBar.setEnabled(false);
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	public ILayer getLayer() {
		return underlyingLayer;
	}
	
=======

	public ILayer getLayer() {
		return underlyingLayer;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public void setLayer(ILayer layer) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set layer post construction if autoconfigure is turned off"); //$NON-NLS-1$
Solution content
			scrollBar.setEnabled(false);
		}
	}
	
	public ILayer getLayer() {
		return underlyingLayer;
	}
	
	public void setLayer(ILayer layer) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set layer post construction if autoconfigure is turned off"); //$NON-NLS-1$
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
		if (autoconfigure) {
			throw new IllegalStateException("May only set layer post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		internalSetLayer(layer);
	}
	
	private void internalSetLayer(ILayer layer) {
		if (layer != null) {
			this.underlyingLayer = layer;
			underlyingLayer.setClientAreaProvider(getClientAreaProvider());
			underlyingLayer.addLayerListener(this);
		}
	}
	
=======

		internalSetLayer(layer);
	}

	private void internalSetLayer(ILayer layer) {
		if (layer != null) {
			this.underlyingLayer = layer;
			underlyingLayer.setClientAreaProvider(new IClientAreaProvider() {

				@Override
				public Rectangle getClientArea() {
					final Rectangle clientArea = new Rectangle(0, 0, 0, 0);
					if (!isDisposed()) {
						getDisplay().syncExec(new Runnable() {
							@Override
							public void run() {
								Rectangle natClientArea = NatTable.this.getClientArea();
								clientArea.x = natClientArea.x;
								clientArea.y = natClientArea.y;
								clientArea.width = natClientArea.width;
								clientArea.height = natClientArea.height;
							}
						});
					}
					return clientArea;
				}

			});
			underlyingLayer.addLayerListener(this);
		}
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Adds a configuration to the table.
	 * 

Solution content
		if (autoconfigure) {
			throw new IllegalStateException("May only set layer post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
		
		internalSetLayer(layer);
	}
	
	private void internalSetLayer(ILayer layer) {
		if (layer != null) {
			this.underlyingLayer = layer;
			underlyingLayer.setClientAreaProvider(getClientAreaProvider());
			underlyingLayer.addLayerListener(this);
		}
	}
	
	/**
	 * Adds a configuration to the table.
	 * 

File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method invocation
Chunk
Conflicting content
		if (autoconfigure) {
			throw new IllegalStateException("May only add configurations post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		configurations.add(configuration);
	}
	
=======

		configurations.add(configuration);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * @return {@link IConfigRegistry} used to hold the configuration bindings
	 * 	by Layer, DisplayMode and Config labels.
Solution content
		if (autoconfigure) {
			throw new IllegalStateException("May only add configurations post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
		
		configurations.add(configuration);
	}
	
	/**
	 * @return {@link IConfigRegistry} used to hold the configuration bindings
	 * 	by Layer, DisplayMode and Config labels.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
		}
		return configRegistry;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public void setConfigRegistry(IConfigRegistry configRegistry) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set config registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
Solution content
		}
		return configRegistry;
	}
	
	public void setConfigRegistry(IConfigRegistry configRegistry) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set config registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		if (autoconfigure) {
			throw new IllegalStateException("May only set config registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		this.configRegistry = configRegistry;
	}
	
=======

		this.configRegistry = configRegistry;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * @return Registry holding all the UIBindings contributed by the underlying layers
	 */
Solution content
		if (autoconfigure) {
			throw new IllegalStateException("May only set config registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
		
		this.configRegistry = configRegistry;
	}
	
	/**
	 * @return Registry holding all the UIBindings contributed by the underlying layers
	 */
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Attribute
Chunk
Conflicting content
		}
		return uiBindingRegistry;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public void setUiBindingRegistry(UiBindingRegistry uiBindingRegistry) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set UI binding registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
Solution content
		}
		return uiBindingRegistry;
	}
	
	public void setUiBindingRegistry(UiBindingRegistry uiBindingRegistry) {
		if (autoconfigure) {
			throw new IllegalStateException("May only set UI binding registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		if (autoconfigure) {
			throw new IllegalStateException("May only set UI binding registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		this.uiBindingRegistry = uiBindingRegistry;
	}
	
	public String getID() {
		return id;
	}
	
	@Override
	protected void checkSubclass() {
	}
	
=======

		this.uiBindingRegistry = uiBindingRegistry;
	}

	public String getID() {
		return id;
	}

	@Override
	protected void checkSubclass() {
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	protected void initInternalListener() {
		modeSupport = new ModeSupport(this);
		modeSupport.registerModeEventHandler(Mode.NORMAL_MODE, new ConfigurableModeEventHandler(modeSupport, this));
Solution content
		if (autoconfigure) {
			throw new IllegalStateException("May only set UI binding registry post construction if autoconfigure is turned off"); //$NON-NLS-1$
		}
		
		this.uiBindingRegistry = uiBindingRegistry;
	}
	
	public String getID() {
		return id;
	}
	
	@Override
	protected void checkSubclass() {
	}
	
	protected void initInternalListener() {
		modeSupport = new ModeSupport(this);
		modeSupport.registerModeEventHandler(Mode.NORMAL_MODE, new ConfigurableModeEventHandler(modeSupport, this));
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Attribute
Method declaration
Chunk
Conflicting content
		modeSupport = new ModeSupport(this);
		modeSupport.registerModeEventHandler(Mode.NORMAL_MODE, new ConfigurableModeEventHandler(modeSupport, this));
		modeSupport.switchMode(Mode.NORMAL_MODE);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		addPaintListener(this);
		
		addFocusListener(new FocusListener() {
			
=======

		addPaintListener(this);

		addFocusListener(new FocusListener() {

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			@Override
			public void focusLost(final FocusEvent arg0) {
				redraw();
Solution content
		modeSupport = new ModeSupport(this);
		modeSupport.registerModeEventHandler(Mode.NORMAL_MODE, new ConfigurableModeEventHandler(modeSupport, this));
		modeSupport.switchMode(Mode.NORMAL_MODE);
		
		addPaintListener(this);
		
		addFocusListener(new FocusListener() {
			
			@Override
			public void focusLost(final FocusEvent arg0) {
				redraw();
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
			public void focusLost(final FocusEvent arg0) {
				redraw();
			}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			@Override
			public void focusGained(final FocusEvent arg0) {
				redraw();
Solution content
			public void focusLost(final FocusEvent arg0) {
				redraw();
			}
			
			@Override
			public void focusGained(final FocusEvent arg0) {
				redraw();
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
			public void focusGained(final FocusEvent arg0) {
				redraw();
			}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
			
		});
		
		addListener(SWT.Resize, new Listener() {
			@Override
			public void handleEvent(final Event e) {
=======

		});

		addListener(SWT.Resize, new Listener() {
			@Override
			public void handleEvent(final Event e) {
				//as resizing doesn't cause the current active editor to loose focus
				//we are closing the current active editor manually
				if (!EditUtils.commitAndCloseActiveEditor()) {
					//if committing didn't work out we need to perform a hard close
					//otherwise the state of the table would be unstale
					ActiveCellEditorRegistry.getActiveCellEditor().close();
				}
				
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
				doCommand(new ClientAreaResizeCommand(NatTable.this));
			}
		});
Solution content
			public void focusGained(final FocusEvent arg0) {
				redraw();
			}
			
		});
		
		addListener(SWT.Resize, new Listener() {
			@Override
			public void handleEvent(final Event e) {
				doCommand(new ClientAreaResizeCommand(NatTable.this));
			}
		});
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
			}
		});
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public boolean forceFocus() {
		return super.forceFocus();
Solution content
			}
		});
	}
	
	@Override
	public boolean forceFocus() {
		return super.forceFocus();
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public boolean forceFocus() {
		return super.forceFocus();
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	// Painting ///////////////////////////////////////////////////////////////
	
=======

	// Painting ///////////////////////////////////////////////////////////////

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public List getOverlayPainters() {
		return overlayPainters;
	}
Solution content
	public boolean forceFocus() {
		return super.forceFocus();
	}
	
	// Painting ///////////////////////////////////////////////////////////////
	
	public List getOverlayPainters() {
		return overlayPainters;
	}
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	public void addOverlayPainter(IOverlayPainter overlayPainter) {
		overlayPainters.add(overlayPainter);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	public void removeOverlayPainter(IOverlayPainter overlayPainter) {
		overlayPainters.remove(overlayPainter);
	}
	
=======

	public void removeOverlayPainter(IOverlayPainter overlayPainter) {
		overlayPainters.remove(overlayPainter);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void paintControl(final PaintEvent event) {
		paintNatTable(event);
Solution content
	public void addOverlayPainter(IOverlayPainter overlayPainter) {
		overlayPainters.add(overlayPainter);
	}
	
	public void removeOverlayPainter(IOverlayPainter overlayPainter) {
		overlayPainters.remove(overlayPainter);
	}
	
	@Override
	public void paintControl(final PaintEvent event) {
		paintNatTable(event);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
	public void paintControl(final PaintEvent event) {
		paintNatTable(event);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	private void paintNatTable(final PaintEvent event) {
		getLayerPainter().paintLayer(this, event.gc, 0, 0, new org.eclipse.swt.graphics.Rectangle(event.x, event.y, event.width, event.height), getConfigRegistry());
	}
	
=======

	private void paintNatTable(final PaintEvent event) {
		getLayerPainter().paintLayer(this, event.gc, 0, 0, new Rectangle(event.x, event.y, event.width, event.height), getConfigRegistry());
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public ILayerPainter getLayerPainter() {
		return layerPainter;
Solution content
	public void paintControl(final PaintEvent event) {
		paintNatTable(event);
	}
	
	private void paintNatTable(final PaintEvent event) {
		getLayerPainter().paintLayer(this, event.gc, 0, 0, new org.eclipse.swt.graphics.Rectangle(event.x, event.y, event.width, event.height), getConfigRegistry());
	}
	
	@Override
	public ILayerPainter getLayerPainter() {
		return layerPainter;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
=======

	public void setLayerPainter(ILayerPainter layerPainter) {
	public ILayerPainter getLayerPainter() {
		return layerPainter;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	public void setLayerPainter(ILayerPainter layerPainter) {
		this.layerPainter = layerPainter;
	}
	
		this.layerPainter = layerPainter;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Repaint only a specific column in the grid. This method is optimized so that only the specific column is
	 * repainted and nothing else.
Solution content
	public ILayerPainter getLayerPainter() {
		return layerPainter;
	}
	
	public void setLayerPainter(ILayerPainter layerPainter) {
		this.layerPainter = layerPainter;
	}
	
	/**
	 * Repaint only a specific column in the grid. This method is optimized so that only the specific column is
	 * repainted and nothing else.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
	 *
	 * @param columnPosition column of the grid to repaint
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public void repaintColumn(long columnPosition) {
		if (columnPosition == Long.MIN_VALUE) {
			return;
		}
		long xOffset = getStartXOfColumnPosition(columnPosition);
		if (xOffset < 0) {
			return;
		}
		redraw(check(xOffset), 0, getColumnWidthByPosition(columnPosition), safe(getHeight()), true);
	}
	
=======
	public void repaintColumn(int columnPosition) {
		int xOffset = getStartXOfColumnPosition(columnPosition);
		if (xOffset < 0) {
			return;
		}
		redraw(xOffset, 0, getColumnWidthByPosition(columnPosition), getHeight(), true);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Repaint only a specific row in the grid. This method is optimized so that only the specific row is repainted and
	 * nothing else.
Solution content
	 *
	 * @param columnPosition column of the grid to repaint
	 */
	public void repaintColumn(long columnPosition) {
		if (columnPosition == Long.MIN_VALUE) {
			return;
		}
		long xOffset = getStartXOfColumnPosition(columnPosition);
		if (xOffset < 0) {
			return;
		}
		redraw(check(xOffset), 0, getColumnWidthByPosition(columnPosition), safe(getHeight()), true);
	}
	
	/**
	 * Repaint only a specific row in the grid. This method is optimized so that only the specific row is repainted and
	 * nothing else.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
	 *
	 * @param rowPosition row of the grid to repaint
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public void repaintRow(long rowPosition) {
		if (rowPosition == Long.MIN_VALUE) {
			return;
		}
		long yOffset = getStartYOfRowPosition(rowPosition);
		if (yOffset < 0) {
			return;
		}
		redraw(0, check(yOffset), safe(getWidth()), getRowHeightByPosition(rowPosition), true);
=======
	public void repaintRow(int rowPosition) {
		int yOffset = getStartYOfRowPosition(rowPosition);
		if (yOffset < 0) {
			return;
		}
		redraw(0, yOffset, getWidth(), getRowHeightByPosition(rowPosition), true);
	}

	/**
	 * Repaint only a specific cell in the grid. This method is optimized so that only the specific cell is repainted and
	 * nothing else.
	 *
	 * @param columnPosition column position of the cell to repaint
	 * @param rowPosition row position of the cell to repaint
	 */
	public void repaintCell(int columnPosition, int rowPosition) {
		int xOffset = getStartXOfColumnPosition(columnPosition);
		int yOffset = getStartYOfRowPosition(rowPosition);
		
		redraw(xOffset, yOffset, getColumnWidthByPosition(columnPosition), getRowHeightByPosition(rowPosition), true);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	}
	
	public void updateResize() {
Solution content
	 *
	 * @param rowPosition row of the grid to repaint
	 */
	public void repaintRow(long rowPosition) {
		if (rowPosition == Long.MIN_VALUE) {
			return;
		}
		long yOffset = getStartYOfRowPosition(rowPosition);
		if (yOffset < 0) {
			return;
		}
		redraw(0, check(yOffset), safe(getWidth()), getRowHeightByPosition(rowPosition), true);
	}
	
	public void updateResize() {
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Comment
If statement
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
	public void updateResize() {
		updateResize(true);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Update the table screen by re-calculating everything again. It should not
	 * be called too frequently.
Solution content
	public void updateResize() {
		updateResize(true);
	}
	
	/**
	 * Update the table screen by re-calculating everything again. It should not
	 * be called too frequently.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
			redraw();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Refreshes the entire NatTable as every layer will be refreshed.
	 */
Solution content
			redraw();
		}
	}
	
	/**
	 * Refreshes the entire NatTable as every layer will be refreshed.
	 */
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public void configure(ConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
		throw new UnsupportedOperationException("Cannot use this method to configure NatTable. Use no-argument configure() instead."); //$NON-NLS-1$
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Processes all the registered {@link IConfiguration} (s).
	 * All the underlying layers are walked and given a chance to configure.
Solution content
	public void configure(ConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
		throw new UnsupportedOperationException("Cannot use this method to configure NatTable. Use no-argument configure() instead."); //$NON-NLS-1$
	}
	
	/**
	 * Processes all the registered {@link IConfiguration} (s).
	 * All the underlying layers are walked and given a chance to configure.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		if (underlyingLayer == null) {
			throw new IllegalStateException("Layer must be set before configure is called"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		if (underlyingLayer != null) {
			underlyingLayer.configure((ConfigRegistry) getConfigRegistry(), getUiBindingRegistry());
		}
		
=======

		if (underlyingLayer != null) {
			underlyingLayer.configure((ConfigRegistry) getConfigRegistry(), getUiBindingRegistry());
		}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		for (IConfiguration configuration : configurations) {
			configuration.configureLayer(this);
			configuration.configureRegistry(getConfigRegistry());
Solution content
		if (underlyingLayer == null) {
			throw new IllegalStateException("Layer must be set before configure is called"); //$NON-NLS-1$
		}
		
		if (underlyingLayer != null) {
			underlyingLayer.configure((ConfigRegistry) getConfigRegistry(), getUiBindingRegistry());
		}
		
		for (IConfiguration configuration : configurations) {
			configuration.configureLayer(this);
			configuration.configureRegistry(getConfigRegistry());
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
If statement
Chunk
Conflicting content
			configuration.configureRegistry(getConfigRegistry());
			configuration.configureUiBindings(getUiBindingRegistry());
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		// Once everything is initialized and properly configured we will
		// now formally initialize the grid
		doCommand(new InitializeGridCommand(this));
Solution content
			configuration.configureRegistry(getConfigRegistry());
			configuration.configureUiBindings(getUiBindingRegistry());
		}
		
		// Once everything is initialized and properly configured we will
		// now formally initialize the grid
		doCommand(new InitializeGridCommand(this));
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		// now formally initialize the grid
		doCommand(new InitializeGridCommand(this));
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	// Events /////////////////////////////////////////////////////////////////
	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		for (ILayerListener layerListener : listeners.getListeners()) {
			layerListener.handleLayerEvent(event);
		}
		
		if (event instanceof IVisualChangeEvent) {
			conflaterChain.addEvent(event);
		}
		
=======

	// Events /////////////////////////////////////////////////////////////////

	@Override
	public void handleLayerEvent(ILayerEvent event) {
		for (ILayerListener layerListener : listeners) {
			layerListener.handleLayerEvent(event);
		}

		if (event instanceof CellVisualUpdateEvent) {
			CellVisualUpdateEvent update = (CellVisualUpdateEvent)event;
			repaintCell(update.getColumnPosition(), update.getRowPosition());
			return;
		}
		
	    if (event instanceof IVisualChangeEvent) {
	    	conflaterChain.addEvent(event);
	    }

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		if (event instanceof CellSelectionEvent) {
			Event e = new Event();
			e.widget = this;
Solution content
		// now formally initialize the grid
		doCommand(new InitializeGridCommand(this));
	}
	
	// Events /////////////////////////////////////////////////////////////////
	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		for (ILayerListener layerListener : listeners.getListeners()) {
			layerListener.handleLayerEvent(event);
		}
		
		if (event instanceof IVisualChangeEvent) {
			conflaterChain.addEvent(event);
		}
		
		if (event instanceof CellSelectionEvent) {
			Event e = new Event();
			e.widget = this;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
For statement
If statement
Method signature
Chunk
Conflicting content
			try {
				notifyListeners(SWT.Selection, e);
			} catch (RuntimeException re) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
				NatTablePlugin.log(new Status(IStatus.ERROR, NatTablePlugin.PLUGIN_ID,
						"An error occurred when fireing SWT selection event.", re )); //$NON-NLS-1$
			}
		}
	}
	
	
	// ILayer /////////////////////////////////////////////////////////////////
	
	// Persistence
	
=======
				re.printStackTrace();
			}
		}
	}


	// ILayer /////////////////////////////////////////////////////////////////

	// Persistence

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Save the state of the table to the properties object.
	 * {@link ILayer#saveState(String, Properties)} is invoked on all the underlying layers.
Solution content
			try {
				notifyListeners(SWT.Selection, e);
			} catch (RuntimeException re) {
				NatTablePlugin.log(new Status(IStatus.ERROR, NatTablePlugin.PLUGIN_ID,
						"An error occurred when fireing SWT selection event.", re )); //$NON-NLS-1$
			}
		}
	}
	
	
	// ILayer /////////////////////////////////////////////////////////////////
	
	// Persistence
	
	/**
	 * Save the state of the table to the properties object.
	 * {@link ILayer#saveState(String, Properties)} is invoked on all the underlying layers.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Chunk
Conflicting content
			}
		});
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Restore the state of the underlying layers from the values in the properties object.
	 * @see #saveState(String, Properties)
Solution content
			}
		});
	}
	
	/**
	 * Restore the state of the underlying layers from the values in the properties object.
	 * @see #saveState(String, Properties)
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
			}
		});
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * @see ILayer#registerPersistable(IPersistable)
	 */
Solution content
			}
		});
	}
	
	/**
	 * @see ILayer#registerPersistable(IPersistable)
	 */
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public void registerPersistable(IPersistable persistable) {
		persistables.add(persistable);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void unregisterPersistable(IPersistable persistable) {
		persistables.remove(persistable);
Solution content
	public void registerPersistable(IPersistable persistable) {
		persistables.add(persistable);
	}
	
	@Override
	public void unregisterPersistable(IPersistable persistable) {
		persistables.remove(persistable);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public void unregisterPersistable(IPersistable persistable) {
		persistables.remove(persistable);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	// Command
	
=======

	// Command

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public boolean doCommand(ILayerCommand command) {
		return underlyingLayer.doCommand(command);
Solution content
	public void unregisterPersistable(IPersistable persistable) {
		persistables.remove(persistable);
	}
	
	// Command
	
	@Override
	public boolean doCommand(ILayerCommand command) {
		return underlyingLayer.doCommand(command);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	public boolean doCommand(ILayerCommand command) {
		return underlyingLayer.doCommand(command);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void registerCommandHandler(ILayerCommandHandler commandHandler) {
		underlyingLayer.registerCommandHandler(commandHandler);
Solution content
	public boolean doCommand(ILayerCommand command) {
		return underlyingLayer.doCommand(command);
	}
	
	@Override
	public void registerCommandHandler(ILayerCommandHandler commandHandler) {
		underlyingLayer.registerCommandHandler(commandHandler);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public void registerCommandHandler(ILayerCommandHandler commandHandler) {
		underlyingLayer.registerCommandHandler(commandHandler);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void unregisterCommandHandler(Class commandClass) {
		underlyingLayer.unregisterCommandHandler(commandClass);
Solution content
	public void registerCommandHandler(ILayerCommandHandler commandHandler) {
		underlyingLayer.registerCommandHandler(commandHandler);
	}
	
	@Override
	public void unregisterCommandHandler(Class commandClass) {
		underlyingLayer.unregisterCommandHandler(commandClass);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	}
	
	// Events
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	private final LayerListenerList listeners = new LayerListenerList();
	
=======

	private final List listeners = new ArrayList();

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void fireLayerEvent(ILayerEvent event) {
		underlyingLayer.fireLayerEvent(event);
Solution content
	}
	
	// Events
	
	private final LayerListenerList listeners = new LayerListenerList();
	
	@Override
	public void fireLayerEvent(ILayerEvent event) {
		underlyingLayer.fireLayerEvent(event);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
	public void fireLayerEvent(ILayerEvent event) {
		underlyingLayer.fireLayerEvent(event);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
Solution content
	public void fireLayerEvent(ILayerEvent event) {
		underlyingLayer.fireLayerEvent(event);
	}
	
	@Override
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public void removeLayerListener(ILayerListener listener) {
		listeners.remove(listener);
Solution content
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
	}
	
	@Override
	public void removeLayerListener(ILayerListener listener) {
		listeners.remove(listener);
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		listeners.remove(listener);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	// Columns
	
	@Override
	public long getColumnCount() {
		return underlyingLayer.getColumnCount();
	}
	
	@Override
	public long getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}
	
	@Override
	public long getColumnIndexByPosition(long columnPosition) {
		return underlyingLayer.getColumnIndexByPosition(columnPosition);
	}
	
	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}
	
	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return Long.MIN_VALUE;
		}
		
		return underlyingColumnPosition;
	}
	
=======
	@Override
	public boolean hasLayerListener(Class layerListenerClass) {
		for (ILayerListener listener : listeners) {
			if (listener.getClass().equals(layerListenerClass)) {
				return true;
			}
		}
		return false;
	}

	// Columns

	@Override
	public int getColumnCount() {
		return underlyingLayer.getColumnCount();
	}

	@Override
	public int getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}

	@Override
	public int getColumnIndexByPosition(int columnPosition) {
		return underlyingLayer.getColumnIndexByPosition(columnPosition);
	}

	@Override
	public int localToUnderlyingColumnPosition(int localColumnPosition) {
		return localColumnPosition;
	}

	@Override
	public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, int underlyingColumnPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return -1;
		}

		return underlyingColumnPosition;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		if (sourceUnderlyingLayer != underlyingLayer) {
Solution content
		listeners.remove(listener);
	}
	
	// Columns
	
	@Override
	public long getColumnCount() {
		return underlyingLayer.getColumnCount();
	}
	
	@Override
	public long getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}
	
	@Override
	public long getColumnIndexByPosition(long columnPosition) {
		return underlyingLayer.getColumnIndexByPosition(columnPosition);
	}
	
	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}
	
	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return Long.MIN_VALUE;
		}
		
		return underlyingColumnPosition;
	}
	
	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		if (sourceUnderlyingLayer != underlyingLayer) {
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Chunk
Conflicting content
		if (sourceUnderlyingLayer != underlyingLayer) {
			return null;
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		return underlyingColumnPositionRanges;
	}
	
	
	@Override
	public ILayerDim getDim(final Orientation orientation) {
		if (orientation == null) {
			throw new NullPointerException("orientation"); //$NON-NLS-1$
		}
		
		return (orientation == HORIZONTAL) ? this.h : this.v;
	}
	
	
	// Width
	
	@Override
	public long getWidth() {
		return underlyingLayer.getWidth();
	}
	
	@Override
	public long getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}
	
	@Override
	public int getColumnWidthByPosition(long columnPosition) {
		return underlyingLayer.getColumnWidthByPosition(columnPosition);
	}
	
	// Column resize
	
	@Override
	public boolean isColumnPositionResizable(long columnPosition) {
		return underlyingLayer.isColumnPositionResizable(columnPosition);
	}
	
	// X
	
	@Override
	public long getColumnPositionByX(long x) {
		if (x < 0 || x >= getWidth()) {
			return Long.MIN_VALUE;
		}
		return underlyingLayer.getColumnPositionByX(x);
	}
	
	@Override
	public long getStartXOfColumnPosition(long columnPosition) {
		return underlyingLayer.getStartXOfColumnPosition(columnPosition);
	}
	
	// Underlying
	
	@Override
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
=======

		return underlyingColumnPositionRanges;
	}

	// Width

	@Override
	public int getWidth() {
		return underlyingLayer.getWidth();
	}

	@Override
	public int getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}

	@Override
	public int getColumnWidthByPosition(int columnPosition) {
		return underlyingLayer.getColumnWidthByPosition(columnPosition);
	}

	// Column resize

	@Override
	public boolean isColumnPositionResizable(int columnPosition) {
		return underlyingLayer.isColumnPositionResizable(columnPosition);
	}

	// X

	@Override
	public int getColumnPositionByX(int x) {
		return underlyingLayer.getColumnPositionByX(x);
	}

	@Override
	public int getStartXOfColumnPosition(int columnPosition) {
		return underlyingLayer.getStartXOfColumnPosition(columnPosition);
	}

	// Underlying

	@Override
	public Collection getUnderlyingLayersByColumnPosition(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
Solution content
		if (sourceUnderlyingLayer != underlyingLayer) {
			return null;
		}
		
		return underlyingColumnPositionRanges;
	}
	
	
	// Width
	
	@Override
	public long getWidth() {
		return underlyingLayer.getWidth();
	}
	
	@Override
	public long getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}
	
	@Override
	public int getColumnWidthByPosition(long columnPosition) {
		return underlyingLayer.getColumnWidthByPosition(columnPosition);
	}
	
	// Column resize
	
	@Override
	public boolean isColumnPositionResizable(long columnPosition) {
		return underlyingLayer.isColumnPositionResizable(columnPosition);
	}
	
	// X
	
	@Override
	public long getColumnPositionByX(long x) {
		if (x < 0 || x >= getWidth()) {
			return Long.MIN_VALUE;
		}
		return underlyingLayer.getColumnPositionByX(x);
	}
	
	@Override
	public long getStartXOfColumnPosition(long columnPosition) {
		return underlyingLayer.getStartXOfColumnPosition(columnPosition);
	}
	
	// Underlying
	
	@Override
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
File
NatTable.java
Developer's decision
Combination
Kind of conflict
Annotation
Comment
Method declaration
Method signature
Return statement
Variable
Chunk
Conflicting content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	// Rows
	
	@Override
	public long getRowCount() {
		return underlyingLayer.getRowCount();
	}
	
	@Override
	public long getPreferredRowCount() {
		return underlyingLayer.getPreferredRowCount();
	}
	
	@Override
	public long getRowIndexByPosition(long rowPosition) {
		return underlyingLayer.getRowIndexByPosition(rowPosition);
	}
	
	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}
	
	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return Long.MIN_VALUE;
		}
		
		return underlyingRowPosition;
	}
	
=======

	// Rows

	@Override
	public int getRowCount() {
		return underlyingLayer.getRowCount();
	}

	@Override
	public int getPreferredRowCount() {
		return underlyingLayer.getPreferredRowCount();
	}

	@Override
	public int getRowIndexByPosition(int rowPosition) {
		return underlyingLayer.getRowIndexByPosition(rowPosition);
	}

	@Override
	public int localToUnderlyingRowPosition(int localRowPosition) {
		return localRowPosition;
	}

	@Override
	public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, int underlyingRowPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return -1;
		}

		return underlyingRowPosition;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		if (sourceUnderlyingLayer != underlyingLayer) {
Solution content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
	
	// Rows
	
	@Override
	public long getRowCount() {
		return underlyingLayer.getRowCount();
	}
	
	@Override
	public long getPreferredRowCount() {
		return underlyingLayer.getPreferredRowCount();
	}
	
	@Override
	public long getRowIndexByPosition(long rowPosition) {
		return underlyingLayer.getRowIndexByPosition(rowPosition);
	}
	
	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}
	
	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		if (sourceUnderlyingLayer != underlyingLayer) {
			return Long.MIN_VALUE;
		}
		
		return underlyingRowPosition;
	}
	
	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		if (sourceUnderlyingLayer != underlyingLayer) {
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Chunk
Conflicting content
	}
	
	// Y
		if (sourceUnderlyingLayer != underlyingLayer) {
			return null;
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		
		return underlyingRowPositionRanges;
	}
	
	// Height
	
	@Override
	public long getHeight() {
		return underlyingLayer.getHeight();
	}
	
	@Override
	public long getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}
	
	@Override
	public int getRowHeightByPosition(long rowPosition) {
		return underlyingLayer.getRowHeightByPosition(rowPosition);
	}
	
	// Row resize
	
	@Override
	public boolean isRowPositionResizable(long rowPosition) {
		return underlyingLayer.isRowPositionResizable(rowPosition);
	
	@Override
	public long getRowPositionByY(long y) {
		if (y < 0 || y >= getHeight()) {
			return Long.MIN_VALUE;
		}
		return underlyingLayer.getRowPositionByY(y);
	}
	
	@Override
	public long getStartYOfRowPosition(long rowPosition) {
		return underlyingLayer.getStartYOfRowPosition(rowPosition);
	}
	
	// Underlying
	
	@Override
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
=======

		return underlyingRowPositionRanges;
	}

	// Height

	@Override
	public int getHeight() {
		return underlyingLayer.getHeight();
	}

	@Override
	public int getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}

	@Override
	public int getRowHeightByPosition(int rowPosition) {
		return underlyingLayer.getRowHeightByPosition(rowPosition);
	}

	// Row resize

	@Override
	public boolean isRowPositionResizable(int rowPosition) {
		return underlyingLayer.isRowPositionResizable(rowPosition);
	}

	// Y

	@Override
	public int getRowPositionByY(int y) {
		return underlyingLayer.getRowPositionByY(y);
	}

	@Override
	public int getStartYOfRowPosition(int rowPosition) {
		return underlyingLayer.getStartYOfRowPosition(rowPosition);
	}

	// Underlying

	@Override
	public Collection getUnderlyingLayersByRowPosition(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
Solution content
		if (sourceUnderlyingLayer != underlyingLayer) {
			return null;
		}
		
		return underlyingRowPositionRanges;
	}
	
	// Height
	
	@Override
	public long getHeight() {
		return underlyingLayer.getHeight();
	}
	
	@Override
	public long getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}
	
	@Override
	public int getRowHeightByPosition(long rowPosition) {
		return underlyingLayer.getRowHeightByPosition(rowPosition);
	}
	
	// Row resize
	
	@Override
	public boolean isRowPositionResizable(long rowPosition) {
		return underlyingLayer.isRowPositionResizable(rowPosition);
	}
	
	// Y
	
	@Override
	public long getRowPositionByY(long y) {
		if (y < 0 || y >= getHeight()) {
			return Long.MIN_VALUE;
		}
		return underlyingLayer.getRowPositionByY(y);
	}
	
	@Override
	public long getStartYOfRowPosition(long rowPosition) {
		return underlyingLayer.getStartYOfRowPosition(rowPosition);
	}
	
	// Underlying
	
	@Override
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Method signature
Return statement
Variable
Chunk
Conflicting content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
	// Cell features
	
	@Override
	public ILayerCell getCellByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getCellByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public Rectangle getBoundsByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getBoundsByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getConfigLabelsByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public Object getDataValueByPosition(long columnPosition, long rowPosition) {
=======

	// Cell features

	@Override
	public ILayerCell getCellByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer.getCellByPosition(columnPosition, rowPosition);
	}

	@Override
	public Rectangle getBoundsByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer.getBoundsByPosition(columnPosition, rowPosition);
	}

	@Override
	public String getDisplayModeByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer.getDisplayModeByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer.getConfigLabelsByPosition(columnPosition, rowPosition);
	}

	@Override
	public Object getDataValueByPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		return underlyingLayer.getDataValueByPosition(columnPosition, rowPosition);
	}
	
Solution content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
	
	// Cell features
	
	@Override
	public ILayerCell getCellByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getCellByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public Rectangle getBoundsByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getBoundsByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getConfigLabelsByPosition(columnPosition, rowPosition);
	}
	
	@Override
	public Object getDataValueByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer.getDataValueByPosition(columnPosition, rowPosition);
	}
	
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Method signature
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}
	
	// IRegionResolver
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
		return underlyingLayer.getRegionLabelsByXY(x, y);
	}
	
	@Override
	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer;
	}
	
	@Override
	public IClientAreaProvider getClientAreaProvider() {
		return clientAreaProvider;
	}
	
	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
		this.clientAreaProvider = clientAreaProvider;
=======
	public ICellPainter getCellPainter(int columnPosition, int rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}

	// IRegionResolver

	@Override
	public LabelStack getRegionLabelsByXY(int x, int y) {
		return underlyingLayer.getRegionLabelsByXY(x, y);
	}

	@Override
	public ILayer getUnderlyingLayerByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer;
	}

	@Override
	public IClientAreaProvider getClientAreaProvider() {
		return this;
	}

	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
		underlyingLayer.setClientAreaProvider(clientAreaProvider);
	}
	
Solution content
	}
	
	@Override
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}
	
	// IRegionResolver
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
		return underlyingLayer.getRegionLabelsByXY(x, y);
	}
	
	@Override
	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer;
	}
	
	@Override
	public IClientAreaProvider getClientAreaProvider() {
		return clientAreaProvider;
	}
	
	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
		this.clientAreaProvider = clientAreaProvider;
		underlyingLayer.setClientAreaProvider(clientAreaProvider);
	}
	
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Annotation
Attribute
Comment
Method declaration
Method signature
Chunk
Conflicting content
		dragSource.setTransfer(transferTypes);
		dragSource.addDragListener(listener);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	/**
	 * Adds support for dropping items into this control via a user drag-and-drop
	 * operation.
Solution content
		dragSource.setTransfer(transferTypes);
		dragSource.addDragListener(listener);
	}
	
	/**
	 * Adds support for dropping items into this control via a user drag-and-drop
	 * operation.
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		dropTarget.setTransfer(transferTypes);
		dropTarget.addDropListener(listener);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
	
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
}
Solution content
		dropTarget.setTransfer(transferTypes);
		dropTarget.addDropListener(listener);
	}
	
}
File
NatTable.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
// ~
package org.eclipse.nebula.widgets.nattable.columnCategories.gui;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/columnCategories/gui/AvailableColumnCategoriesProvider.java
=======
import static org.eclipse.nebula.widgets.nattable.util.ObjectUtils.isNull;

import java.util.ArrayList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/columnCategories/gui/AvailableColumnCategoriesProvider.java
import java.util.List;

import org.eclipse.jface.viewers.ITreeContentProvider;
Solution content
// ~
package org.eclipse.nebula.widgets.nattable.columnCategories.gui;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.viewers.ITreeContentProvider;
File
AvailableColumnCategoriesProvider.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
	}

	public Object[] getElements(Object inputElement) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/columnCategories/gui/AvailableColumnCategoriesProvider.java
		return (model.getRootCategory() != null) ? 
				model.getRootCategory().getChildren().toArray() : new Object[0];
=======
		return isNull(model.getRootCategory())
				? new Object[]{}
				: getFilteredChildren(model.getRootCategory().getChildren()).toArray();
	}
	
	private List getFilteredChildren(List allChildren) {
		List children = new ArrayList(allChildren);
		for (Node child : allChildren) {
			if (hiddenIndexes.contains(child.getData())) {
				children.remove(child);
			}
		}
		return children;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/columnCategories/gui/AvailableColumnCategoriesProvider.java
	}

	private Node castToNode(Object element) {
Solution content
	}

	public Object[] getElements(Object inputElement) {
		return (model.getRootCategory() != null) ?
				getFilteredChildren(model.getRootCategory().getChildren()).toArray() :
				new Object[0];
	}
	
	private List getFilteredChildren(List allChildren) {
		List children = new ArrayList(allChildren);
		for (Node child : allChildren) {
			if (hiddenIndexes.contains(child.getData())) {
				children.remove(child);
			}
		}
		return children;
	}

	private Node castToNode(Object element) {
File
AvailableColumnCategoriesProvider.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
	public static final String RENAMED_COLUMN_INDICATOR = "*"; //$NON-NLS-1$

	public static void hideColumnEntries(List removedItems, ColumnHideShowLayer hideShowLayer) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/columnChooser/ColumnChooserUtils.java
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(
				hideShowLayer, asLongArray(getColumnEntryPositions(removedItems)));
		hideShowLayer.doCommand(hideCommand);
	}

	public static void hideColumnPositions(List removedPositions, ColumnHideShowLayer hideShowLayer) {
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(hideShowLayer, asLongArray(removedPositions));
=======
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(hideShowLayer,
				new RangeList(asIntArray(getColumnEntryPositions(removedItems))));
		hideShowLayer.doCommand(hideCommand);
	}

	public static void hideColumnPositions(List removedPositions, ColumnHideShowLayer hideShowLayer) {
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(hideShowLayer,
				new RangeList(asIntArray(removedPositions)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/columnChooser/ColumnChooserUtils.java
		hideShowLayer.doCommand(hideCommand);
	}
	
Solution content
	public static final String RENAMED_COLUMN_INDICATOR = "*"; //$NON-NLS-1$

	public static void hideColumnEntries(List removedItems, ColumnHideShowLayer hideShowLayer) {
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(hideShowLayer,
				new RangeList(asLongArray(getColumnEntryPositions(removedItems))));
		hideShowLayer.doCommand(hideCommand);
	}

	public static void hideColumnPositions(List removedPositions, ColumnHideShowLayer hideShowLayer) {
		MultiColumnHideCommand hideCommand = new MultiColumnHideCommand(hideShowLayer,
				new RangeList(asLongArray(removedPositions)));
		hideShowLayer.doCommand(hideCommand);
	}
	
File
ColumnChooserUtils.java
Developer's decision
Manual
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
 * Example a Range of selected rows: 1 - 100
 * Ranges are inclusive of their start value and not inclusive of their end value, i.e. start <= x < end
 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
public final class Range implements Comparable {
	
	
	public long start = 0;
	public long end = 0;
	
	
	public Range(final long start, final long end) {
=======
public class Range {

	public int start = 0;
	public int end = 0;


	/**
	 * Creates a new range with the specified start and end values.
	 */
	public Range(final int start, final int end) {
		if (start > end) {
			throw new IllegalArgumentException("start: " + start + " > end: " + end); //$NON-NLS-1$ //$NON-NLS-2$
		}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		this.start = start;
		this.end = end;
	}
Solution content
 * Example a Range of selected rows: 1 - 100
 * Ranges are inclusive of their start value and not inclusive of their end value, i.e. start <= x < end
 */
public final class Range implements Comparable {
	
	
	public long start;
	public long end;
	
	
	/**
	 * Creates a new range with the specified start and end values.
	 */
	public Range(final long start, final long end) {
		this.start = start;
		this.end = end;
	}
File
Range.java
Developer's decision
Manual
Kind of conflict
Attribute
Class signature
Comment
If statement
Method signature
Chunk
Conflicting content
		this.end = end;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	public Range(final long value) {
=======
	/**
	 * Creates a new range which contains the specified single value.
	 */
	public Range(final int value) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		this.start = value;
		this.end = value + 1;
	}
Solution content
		this.end = end;
	}
	
	/**
	 * Creates a new range which contains the specified single value.
	 */
	public Range(final long value) {
		this.start = value;
		this.end = value + 1;
	}
File
Range.java
Developer's decision
Combination
Kind of conflict
Comment
Method signature
Chunk
Conflicting content
	}
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	public long size() {
		return this.end - this.start;
	}
	
	
	@Override
	public int compareTo(Range o) {
		if (this.start < o.start) {
			return -1;
		}
		if (this.start > o.start) {
			return 1;
		}
		if (this.end < o.end) {
			return -1;
		}
		if (this.end > o.end) {
			return 1;
		}
		return 0;
=======
	public int size() {
		return end - start;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	}
	
	/**
Solution content
	}
	
	
	public long size() {
		return this.end - this.start;
	}
	
	
	@Override
	public int compareTo(Range o) {
		if (this.start < o.start) {
			return -1;
		}
		if (this.start > o.start) {
			return 1;
		}
		if (this.end < o.end) {
			return -1;
		}
		if (this.end > o.end) {
			return 1;
		}
		return 0;
	}
	
	/**
File
Range.java
Developer's decision
Version 1
Kind of conflict
Annotation
Attribute
If statement
Method declaration
Method signature
Return statement
Chunk
Conflicting content
	/**
	 * @return true if the range contains the given row position
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	public boolean contains(long position) {
		return position >= start && position < end;
	}

	public boolean overlap(Range range) {
		return (start < end) &&  // this is a non-empty range
=======
	public boolean contains(int position) {
		return ((position >= start) && (position < end));
	}

	public boolean overlap(Range range) {
		return (this.start < this.end) &&  // this is a non-empty range
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
				(range.start < range.end) &&  // range parameter is non-empty
				(contains(range.start) || contains(range.end - 1) || range.contains(this.start) || range.contains(this.end - 1) );
	}
Solution content
	/**
	 * @return true if the range contains the given row position
	 */
	public boolean contains(long position) {
		return ((position >= start) && (position < end));
	}

	public boolean overlap(Range range) {
		return ((this.start < this.end) &&  // this is a non-empty range
				(range.start < range.end) &&  // range parameter is non-empty
				(contains(range.start) || contains(range.end - 1) || range.contains(this.start) || range.contains(this.end - 1)) );
	}
File
Range.java
Developer's decision
Manual
Kind of conflict
Attribute
Comment
Method declaration
Method signature
Return statement
Chunk
Conflicting content
	@Override
	public int hashCode() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		int h = (int) (this.start ^ (this.start >>> 32));
		h = Integer.rotateRight(h, 15);
		h ^= (int) (this.end ^ (this.end >>> 32));
		return h ^ (h >>> 7);
	}

	@Override
	public boolean equals(Object obj) {
=======
		return HashCodeBuilder.reflectionHashCode(this);
	}

	@Override
	public boolean equals(final Object obj) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		if (this == obj) {
			return true;
		}
Solution content
	@Override
	public int hashCode() {
		int h = (int) (this.start ^ (this.start >>> 32));
		h = Integer.rotateRight(h, 15);
		h ^= (int) (this.end ^ (this.end >>> 32));
		return h ^ (h >>> 7);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
File
Range.java
Developer's decision
Version 1
Kind of conflict
Annotation
Cast expression
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
			return false;
		}
		final Range other = (Range) obj;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		return (start == other.start) && (end == other.end);
=======
		return ((this.start == other.start) && (this.end == other.end));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	}
	
	@Override
Solution content
			return false;
		}
		final Range other = (Range) obj;
		return ((this.start == other.start) && (this.end == other.end));
	}
	
	@Override
File
Range.java
Developer's decision
Version 2
Kind of conflict
Attribute
Return statement
Variable
Chunk
Conflicting content
	
	@Override
	public String toString() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
		return getClass().getSimpleName() + " [" + start + "," + end + "]";
=======
		return "Range {" + this.start + ", " + this.end + "}"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
	}


	public static void sortByStart(List ranges) {
		Collections.sort(ranges, new Comparator() {
			public int compare(Range range1, Range range2) {
				return Integer.valueOf(range1.start).compareTo(
						Integer.valueOf(range2.start));
			}
		});
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/coordinate/Range.java
	}
	
}
Solution content
	
	@Override
	public String toString() {
		return "Range {" + start + ", " + end + "}"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
	}
	
}
File
Range.java
Developer's decision
Manual
Kind of conflict
Attribute
Comment
Method invocation
Method signature
Return statement
Chunk
Conflicting content
 * complicated calculation algorithm need to be implemented that checks every columns and row 
 * by building the spanning cell for the matching rectangle. As this would be quite time consuming
 * calculations, this is not supported out of the box by NatTable.
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
=======
 * 
 * @author Dirk Fauth
 *
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
 */
public class AutomaticSpanningDataProvider implements ISpanningDataProvider, IPersistable {
Solution content
 * complicated calculation algorithm need to be implemented that checks every columns and row 
 * by building the spanning cell for the matching rectangle. As this would be quite time consuming
 * calculations, this is not supported out of the box by NatTable.
 */
public class AutomaticSpanningDataProvider implements ISpanningDataProvider, IPersistable {
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	 * 

* Note: If this list is empty, all columns will do auto row spanning. */ <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java private List autoSpanColumns = new ArrayList(); ======= private List autoSpanColumns = new ArrayList(); >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java /** * List of row positions for which automatic spanning is enabled. *

Solution content
	 * 

* Note: If this list is empty, all columns will do auto row spanning. */ private List autoSpanColumns = new ArrayList(); /** * List of row positions for which automatic spanning is enabled. *

File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
	 * 

* Note: If this list is empty, all rows will do auto column spanning. */ <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java private List autoSpanRows = new ArrayList(); ======= private List autoSpanRows = new ArrayList(); >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java /** *

Solution content
	 * 

* Note: If this list is empty, all rows will do auto column spanning. */ private List autoSpanRows = new ArrayList(); /** *

File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public Object getDataValue(long columnIndex, long rowIndex) {
=======
	public Object getDataValue(int columnIndex, int rowIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return this.underlyingDataProvider.getDataValue(columnIndex, rowIndex);
	}
Solution content
	}
	
	@Override
	public Object getDataValue(long columnIndex, long rowIndex) {
		return this.underlyingDataProvider.getDataValue(columnIndex, rowIndex);
	}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public void setDataValue(long columnIndex, long rowIndex, Object newValue) {
=======
	public void setDataValue(int columnIndex, int rowIndex, Object newValue) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		this.underlyingDataProvider.setDataValue(columnIndex, rowIndex, newValue);
	}
Solution content
	}

	@Override
	public void setDataValue(long columnIndex, long rowIndex, Object newValue) {
		this.underlyingDataProvider.setDataValue(columnIndex, rowIndex, newValue);
	}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public long getColumnCount() {
=======
	public int getColumnCount() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return this.underlyingDataProvider.getColumnCount();
	}
Solution content
	}

	@Override
	public long getColumnCount() {
		return this.underlyingDataProvider.getColumnCount();
	}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public long getRowCount() {
=======
	public int getRowCount() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return this.underlyingDataProvider.getRowCount();
	}
Solution content
	}

	@Override
	public long getRowCount() {
		return this.underlyingDataProvider.getRowCount();
	}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public DataCell getCellByPosition(long columnPosition, long rowPosition) {
		long cellColumnPosition = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ? 
				getStartColumnPosition(columnPosition, rowPosition) : columnPosition;
		long cellRowPosition = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
				getStartRowPosition(columnPosition, rowPosition) : rowPosition;

		long columnSpan = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ?
				getColumnSpan(cellColumnPosition, cellRowPosition) : 1;
		long rowSpan = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
=======
	public DataCell getCellByPosition(int columnPosition, int rowPosition) {
		int cellColumnPosition = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ? 
				getStartColumnPosition(columnPosition, rowPosition) : columnPosition;
		int cellRowPosition = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
				getStartRowPosition(columnPosition, rowPosition) : rowPosition;

		int columnSpan = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ?
				getColumnSpan(cellColumnPosition, cellRowPosition) : 1;
		int rowSpan = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
				getRowSpan(cellColumnPosition, cellRowPosition) : 1;
		
		return new DataCell(cellColumnPosition, cellRowPosition, columnSpan, rowSpan);
Solution content
	}

	@Override
	public DataCell getCellByPosition(long columnPosition, long rowPosition) {
		long cellColumnPosition = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ? 
				getStartColumnPosition(columnPosition, rowPosition) : columnPosition;
		long cellRowPosition = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
				getStartRowPosition(columnPosition, rowPosition) : rowPosition;

		long columnSpan = isAutoSpanEnabledForColumn(columnPosition, rowPosition) ?
				getColumnSpan(cellColumnPosition, cellRowPosition) : 1;
		long rowSpan = isAutoSpanEnabledForRow(columnPosition, rowPosition) ? 
				getRowSpan(cellColumnPosition, cellRowPosition) : 1;
		
		return new DataCell(cellColumnPosition, cellRowPosition, columnSpan, rowSpan);
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @param rowPosition The row position for which the column spanning should be checked
	 * @return true if for that column position auto spanning is enabled
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected boolean isAutoSpanEnabledForColumn(long columnPosition, long rowPosition) {
=======
	protected boolean isAutoSpanEnabledForColumn(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return (this.autoColumnSpan && isAutoSpanRow(rowPosition));
	}
Solution content
	 * @param rowPosition The row position for which the column spanning should be checked
	 * @return true if for that column position auto spanning is enabled
	 */
	protected boolean isAutoSpanEnabledForColumn(long columnPosition, long rowPosition) {
		return (this.autoColumnSpan && isAutoSpanRow(rowPosition));
	}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param rowPosition The row position to check for auto spanning
	 * @return true if for that row position auto spanning is enabled
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected boolean isAutoSpanEnabledForRow(long columnPosition, long rowPosition) {
=======
	protected boolean isAutoSpanEnabledForRow(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return (this.autoRowSpan && isAutoSpanColumn(columnPosition));
	}
	
Solution content
	 * @param rowPosition The row position to check for auto spanning
	 * @return true if for that row position auto spanning is enabled
	 */
	protected boolean isAutoSpanEnabledForRow(long columnPosition, long rowPosition) {
		return (this.autoRowSpan && isAutoSpanColumn(columnPosition));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param columnPosition The column position to check
	 * @return true if the given column position is configured as a auto span column.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	private boolean isAutoSpanColumn(long columnPosition) {
=======
	private boolean isAutoSpanColumn(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return (this.autoSpanColumns.isEmpty() || this.autoSpanColumns.contains(columnPosition));
	}
	
Solution content
	 * @param columnPosition The column position to check
	 * @return true if the given column position is configured as a auto span column.
	 */
	private boolean isAutoSpanColumn(long columnPosition) {
		return (this.autoSpanColumns.isEmpty() || this.autoSpanColumns.contains(columnPosition));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param rowPosition The row position to check
	 * @return true if the given row position is configured as a auto span row.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	private boolean isAutoSpanRow(long rowPosition) {
=======
	private boolean isAutoSpanRow(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		return (this.autoSpanRows.isEmpty() || this.autoSpanRows.contains(rowPosition));
	}
	
Solution content
	 * @param rowPosition The row position to check
	 * @return true if the given row position is configured as a auto span row.
	 */
	private boolean isAutoSpanRow(long rowPosition) {
		return (this.autoSpanRows.isEmpty() || this.autoSpanRows.contains(rowPosition));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * won't be auto spanned anymore.
	 * @param columnPositions The column positions to add for auto spanning.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public void addAutoSpanningColumnPositions(Long... columnPositions) {
=======
	public void addAutoSpanningColumnPositions(Integer... columnPositions) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		this.autoSpanColumns.addAll(Arrays.asList(columnPositions));
	}
	
Solution content
	 * won't be auto spanned anymore.
	 * @param columnPositions The column positions to add for auto spanning.
	 */
	public void addAutoSpanningColumnPositions(Long... columnPositions) {
		this.autoSpanColumns.addAll(Arrays.asList(columnPositions));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * be auto spanned anymore.
	 * @param rowPositions The row positions to add for auto spanning.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public void addAutoSpanningRowPositions(Long... rowPositions) {
=======
	public void addAutoSpanningRowPositions(Integer... rowPositions) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		this.autoSpanRows.addAll(Arrays.asList(rowPositions));
	}
	
Solution content
	 * be auto spanned anymore.
	 * @param rowPositions The row positions to add for auto spanning.
	 */
	public void addAutoSpanningRowPositions(Long... rowPositions) {
		this.autoSpanRows.addAll(Arrays.asList(rowPositions));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * Removes the given column positions for auto spanning. 
	 * @param columnPositions The column positions to remove for auto spanning.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public void removeAutoSpanningColumnPositions(Long... columnPositions) {
=======
	public void removeAutoSpanningColumnPositions(Integer... columnPositions) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		this.autoSpanColumns.removeAll(Arrays.asList(columnPositions));
	}
	
Solution content
	 * Removes the given column positions for auto spanning. 
	 * @param columnPositions The column positions to remove for auto spanning.
	 */
	public void removeAutoSpanningColumnPositions(Long... columnPositions) {
		this.autoSpanColumns.removeAll(Arrays.asList(columnPositions));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * Removes the given row positions for auto spanning. 
	 * @param rowPositions The row positions to remove for auto spanning.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	public void removeAutoSpanningRowPositions(Long... rowPositions) {
=======
	public void removeAutoSpanningRowPositions(Integer... rowPositions) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		this.autoSpanRows.removeAll(Arrays.asList(rowPositions));
	}
	
Solution content
	 * Removes the given row positions for auto spanning. 
	 * @param rowPositions The row positions to remove for auto spanning.
	 */
	public void removeAutoSpanningRowPositions(Long... rowPositions) {
		this.autoSpanRows.removeAll(Arrays.asList(rowPositions));
	}
	
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @return The column position where the spanning starts or the given column position
	 * 			if it is not spanned with the columns to the left.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected long getStartColumnPosition(long columnPosition, long rowPosition) {
=======
	protected int getStartColumnPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		if (columnPosition <= 0 || !isAutoSpanColumn(columnPosition) || !isAutoSpanColumn(columnPosition-1)) {
			return columnPosition;
		}
Solution content
	 * @return The column position where the spanning starts or the given column position
	 * 			if it is not spanned with the columns to the left.
	 */
	protected long getStartColumnPosition(long columnPosition, long rowPosition) {
		if (columnPosition <= 0 || !isAutoSpanColumn(columnPosition) || !isAutoSpanColumn(columnPosition-1)) {
			return columnPosition;
		}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @return The row position where the spanning starts or the given row position
	 * 			if it is not spanned with rows above.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected long getStartRowPosition(long columnPosition, long rowPosition) {
=======
	protected int getStartRowPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		if (rowPosition <= 0 || !isAutoSpanRow(rowPosition) || !isAutoSpanRow(rowPosition - 1)) {
			return rowPosition;
		}
Solution content
	 * @return The row position where the spanning starts or the given row position
	 * 			if it is not spanned with rows above.
	 */
	protected long getStartRowPosition(long columnPosition, long rowPosition) {
		if (rowPosition <= 0 || !isAutoSpanRow(rowPosition) || !isAutoSpanRow(rowPosition - 1)) {
			return rowPosition;
		}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param rowPosition The row position for which the column spanning should be checked
	 * @return The number of columns to span
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected long getColumnSpan(long columnPosition, long rowPosition) {
		long span = 1;
=======
	protected int getColumnSpan(int columnPosition, int rowPosition) {
		int span = 1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		
		while (columnPosition < getColumnCount()-1
				&& isAutoSpanColumn(columnPosition)
Solution content
	 * @param rowPosition The row position for which the column spanning should be checked
	 * @return The number of columns to span
	 */
	protected long getColumnSpan(long columnPosition, long rowPosition) {
		long span = 1;
		
		while (columnPosition < getColumnCount()-1
				&& isAutoSpanColumn(columnPosition)
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Variable
Chunk
Conflicting content
	 * @param rowPosition The row position to start the check for spanning
	 * @return The number of rows to span
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
	protected long getRowSpan(long columnPosition, long rowPosition) {
		long span = 1;
=======
	protected int getRowSpan(int columnPosition, int rowPosition) {
		int span = 1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
		
		while (rowPosition < getRowCount()-1
				&& isAutoSpanRow(rowPosition)
Solution content
	 * @param rowPosition The row position to start the check for spanning
	 * @return The number of rows to span
	 */
	protected long getRowSpan(long columnPosition, long rowPosition) {
		long span = 1;
		
		while (rowPosition < getRowCount()-1
				&& isAutoSpanRow(rowPosition)
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Variable
Chunk
Conflicting content
		if (autoSpanColumns.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			for (Long index : autoSpanColumns) {
=======
			for (Integer index : autoSpanColumns) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
Solution content
		if (autoSpanColumns.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : autoSpanColumns) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
		if (autoSpanRows.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			for (Long index : autoSpanRows) {
=======
			for (Integer index : autoSpanRows) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
Solution content
		if (autoSpanRows.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : autoSpanRows) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
		this.autoSpanColumns.clear();
		property = properties.getProperty(prefix + PERSISTENCE_KEY_AUTO_SPAN_COLUMNS);
		if (property != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			List newAutoSpanColumns = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanColumns.add(Long.valueOf(index));
=======
			List newAutoSpanColumns = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanColumns.add(Integer.valueOf(index));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			}
			
			this.autoSpanColumns.addAll(newAutoSpanColumns);
Solution content
		this.autoSpanColumns.clear();
		property = properties.getProperty(prefix + PERSISTENCE_KEY_AUTO_SPAN_COLUMNS);
		if (property != null) {
			List newAutoSpanColumns = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanColumns.add(Long.valueOf(index));
			}
			
			this.autoSpanColumns.addAll(newAutoSpanColumns);
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
While statement
Chunk
Conflicting content
		this.autoSpanRows.clear();
		property = properties.getProperty(prefix + PERSISTENCE_KEY_AUTO_SPAN_ROWS);
		if (property != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			List newAutoSpanRows = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanRows.add(Long.valueOf(index));
=======
			List newAutoSpanRows = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanRows.add(Integer.valueOf(index));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
			}
			
			this.autoSpanRows.addAll(newAutoSpanRows);
Solution content
		this.autoSpanRows.clear();
		property = properties.getProperty(prefix + PERSISTENCE_KEY_AUTO_SPAN_ROWS);
		if (property != null) {
			List newAutoSpanRows = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newAutoSpanRows.add(Long.valueOf(index));
			}
			
			this.autoSpanRows.addAll(newAutoSpanRows);
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
While statement
Chunk
Conflicting content
			this.autoSpanRows.addAll(newAutoSpanRows);
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
}
=======
}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/data/AutomaticSpanningDataProvider.java
Solution content
			this.autoSpanRows.addAll(newAutoSpanRows);
		}
	}
}
File
AutomaticSpanningDataProvider.java
Developer's decision
Version 1
Kind of conflict
Other
Chunk
Conflicting content
			if (cells.size() == 1 || 
					(cells.size() > 1 && supportMultiEdit(cells, cellEditor, configRegistry))) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/EditController.java
				//as the EditSelectionCommandHandler already ensured that all cells have the same
				//configuration, we can simply use any cell for multi cell edit handling
				ICellEditDialog dialog = CellEditDialogFactory.createCellEditDialog(
						parent != null ? parent.getShell() : null, initialCanonicalValue, 
								cells.get(0), cellEditor, configRegistry);
				
				long returnValue = dialog.open();
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/EditController.java
				
				if (cellEditor.openMultiEditDialog()) {
					//as the EditSelectionCommandHandler already ensured that all cells have the same
Solution content
			if (cells.size() == 1 || 
					(cells.size() > 1 && supportMultiEdit(cells, cellEditor, configRegistry))) {
				
				if (cellEditor.openMultiEditDialog()) {
					//as the EditSelectionCommandHandler already ensured that all cells have the same
File
EditController.java
Developer's decision
Version 2
Kind of conflict
Comment
Method invocation
Variable
Chunk
Conflicting content
				&& EditUtils.isEditorSame(this.selectionLayer, configRegistry)
				&& EditUtils.isConverterSame(this.selectionLayer, configRegistry)) {
			//check how many cells are selected
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
			List selectedCellPositions = this.selectionLayer.getSelectedCellPositions();
			if (selectedCellPositions.size() == 1) {
=======
			Collection selectedCells = selectionLayer.getSelectedCells();
			if (selectedCells.size() == 1) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
				//editing is triggered by key for a single cell
				//we need to fire the InlineCellEditEvent here because we don't know the correct bounds
				//of the cell to edit inline corresponding to the NatTable. On firing the event, a
Solution content
				&& EditUtils.isEditorSame(this.selectionLayer, configRegistry)
				&& EditUtils.isConverterSame(this.selectionLayer, configRegistry)) {
			//check how many cells are selected
			Collection selectedCells = selectionLayer.getSelectedCells();
			if (selectedCells.size() == 1) {
				//editing is triggered by key for a single cell
				//we need to fire the InlineCellEditEvent here because we don't know the correct bounds
				//of the cell to edit inline corresponding to the NatTable. On firing the event, a
File
EditSelectionCommandHandler.java
Developer's decision
Version 2
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
				//of the cell to edit inline corresponding to the NatTable. On firing the event, a
				//translation process is triggered, converting the information to the correct values
				//needed for inline editing
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
				PositionCoordinate selectedCell = selectedCellPositions.get(0);
				ILayerCell cell = this.selectionLayer.getCellByPosition(selectedCell.columnPosition, selectedCell.rowPosition);
=======
				ILayerCell cell = selectedCells.iterator().next();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
				this.selectionLayer.fireLayerEvent(
						new InlineCellEditEvent(
								this.selectionLayer, 
Solution content
				//of the cell to edit inline corresponding to the NatTable. On firing the event, a
				//translation process is triggered, converting the information to the correct values
				//needed for inline editing
				ILayerCell cell = selectedCells.iterator().next();
				this.selectionLayer.fireLayerEvent(
						new InlineCellEditEvent(
								this.selectionLayer, 
File
EditSelectionCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
								configRegistry, 
								(initialValue != null ? initialValue : cell.getDataValue())));
			}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
			else if (selectedCellPositions.size() > 1) {
				
				//collect the selected ILayerCells for further processing
				List selectedCells = new ArrayList();
				for (PositionCoordinate coord : selectedCellPositions) {
					selectedCells.add(this.selectionLayer.getCellByPosition(coord.columnPosition, coord.rowPosition));
				}
				
=======
			else if (selectedCells.size() > 1) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
				//determine the initial value
				Object initialEditValue = initialValue;
				if (initialValue == null && EditUtils.isValueSame(this.selectionLayer)) {
Solution content
								configRegistry, 
								(initialValue != null ? initialValue : cell.getDataValue())));
			}
			else if (selectedCells.size() > 1) {
				//determine the initial value
				Object initialEditValue = initialValue;
				if (initialValue == null && EditUtils.isValueSame(this.selectionLayer)) {
File
EditSelectionCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Comment
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
				if (initialValue == null && EditUtils.isValueSame(this.selectionLayer)) {
					ILayerCell cell = selectedCells.iterator().next();
					initialEditValue = this.selectionLayer.getDataValueByPosition(
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
							selectedCellPositions.get(0).columnPosition, selectedCellPositions.get(0).rowPosition);
=======
							 cell.getColumnPosition(), cell.getRowPosition());
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditSelectionCommandHandler.java
				}
				
				EditController.editCells(selectedCells, parent, initialEditValue, configRegistry);
Solution content
				if (initialValue == null && EditUtils.isValueSame(this.selectionLayer)) {
					ILayerCell cell = selectedCells.iterator().next();
					initialEditValue = this.selectionLayer.getDataValueByPosition(
							 cell.getColumnPosition(), cell.getRowPosition());
				}
				
				EditController.editCells(selectedCells, parent, initialEditValue, configRegistry);
File
EditSelectionCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * 			at least one cell is not editable.
	 */
	public static boolean allCellsEditable(SelectionLayer selectionLayer, IConfigRegistry configRegistry) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditUtils.java
		List selectedCells = selectionLayer.getSelectedCellPositions();
		ILayerCell layerCell = null;
		for (PositionCoordinate cell : selectedCells) {
			layerCell = selectionLayer.getCellByPosition(cell.columnPosition, cell.rowPosition);
=======
		Collection selectedCells = selectionLayer.getSelectedCells();
		for (ILayerCell layerCell : selectedCells) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditUtils.java
			LabelStack labelStack = layerCell.getConfigLabels();
			IEditableRule editableRule = configRegistry.getConfigAttribute(
					EditConfigAttributes.CELL_EDITABLE_RULE, 
Solution content
	 * 			at least one cell is not editable.
	 */
	public static boolean allCellsEditable(SelectionLayer selectionLayer, IConfigRegistry configRegistry) {
		Collection selectedCells = selectionLayer.getSelectedCells();
		for (ILayerCell layerCell : selectedCells) {
			LabelStack labelStack = layerCell.getConfigLabels();
			IEditableRule editableRule = configRegistry.getConfigAttribute(
					EditConfigAttributes.CELL_EDITABLE_RULE, 
File
EditUtils.java
Developer's decision
Version 2
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	 */
	public static boolean isValueSame(SelectionLayer selectionLayer) {
		Object lastSelectedValue = null;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditUtils.java
		List selectedCells = selectionLayer.getSelectedCellPositions();
		for (PositionCoordinate selectedCell : selectedCells) {
			Object cellValue = selectionLayer
					.getCellByPosition(selectedCell.columnPosition, selectedCell.rowPosition)
					.getDataValue();
=======
		Collection selectedCells = selectionLayer.getSelectedCells();
		for (ILayerCell layerCell : selectedCells) {
			Object cellValue = layerCell.getDataValue();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/EditUtils.java
			if (lastSelectedValue == null) {
				lastSelectedValue = cellValue;
			}
Solution content
	 */
	public static boolean isValueSame(SelectionLayer selectionLayer) {
		Object lastSelectedValue = null;
		Collection selectedCells = selectionLayer.getSelectedCells();
		for (ILayerCell layerCell : selectedCells) {
			Object cellValue = layerCell.getDataValue();
			if (lastSelectedValue == null) {
				lastSelectedValue = cellValue;
			}
File
EditUtils.java
Developer's decision
Version 2
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
// -depend
package org.eclipse.nebula.widgets.nattable.edit.command;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/UpdateDataCommandHandler.java
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;

=======
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/UpdateDataCommandHandler.java
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.internal.NatTablePlugin;
Solution content
// -depend
package org.eclipse.nebula.widgets.nattable.edit.command;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;

import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
import org.eclipse.nebula.widgets.nattable.internal.NatTablePlugin;
File
UpdateDataCommandHandler.java
Developer's decision
Manual
Kind of conflict
Import
Chunk
Conflicting content
	@Override
	protected boolean doCommand(UpdateDataCommand command) {
		try {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/UpdateDataCommandHandler.java
			long columnPosition = command.getColumnPosition();
			long rowPosition = command.getRowPosition();
			dataLayer.getDataProvider().setDataValue(columnPosition, rowPosition, command.getNewValue());
			dataLayer.fireLayerEvent(new CellVisualChangeEvent(dataLayer, columnPosition, rowPosition));
			return true;
		} catch (UnsupportedOperationException e) {
			NatTablePlugin.log(new Status(IStatus.ERROR, NatTablePlugin.PLUGIN_ID,
					"Failed to update value to: " + command.getNewValue(), e ));
			return false;
		}
	}
	
=======
			int columnPosition = command.getColumnPosition();
			int rowPosition = command.getRowPosition();
			if (!ObjectUtils.equals(
					dataLayer.getDataValue(columnPosition, rowPosition), command.getNewValue())) {
				dataLayer.setDataValue(columnPosition, rowPosition, command.getNewValue());
				dataLayer.fireLayerEvent(new CellVisualChangeEvent(dataLayer, columnPosition, rowPosition));
				
				//TODO implement a new event which is a mix of PropertyUpdateEvent and CellVisualChangeEvent
			}
			return true;
		} catch(Exception e) {
			log.error("Failed to update value to: "+command.getNewValue(), e); //$NON-NLS-1$
			return false;
		}
	}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/command/UpdateDataCommandHandler.java
}
Solution content
	@Override
	protected boolean doCommand(UpdateDataCommand command) {
		try {
			long columnPosition = command.getColumnPosition();
			long rowPosition = command.getRowPosition();
			final IDataProvider dataProvider = dataLayer.getDataProvider();
			Object oldValue = dataProvider.getDataValue(columnPosition, rowPosition);
			Object newValue = command.getNewValue();
			if ((oldValue != null) ? !oldValue.equals(newValue) : null != newValue)  {
				dataProvider.setDataValue(columnPosition, rowPosition, newValue);
				dataLayer.fireLayerEvent(new CellVisualChangeEvent(dataLayer, columnPosition, rowPosition));
				
				//TODO implement a new event which is a mix of PropertyUpdateEvent and CellVisualChangeEvent
			}
			return true;
		} catch (UnsupportedOperationException e) {
			NatTablePlugin.log(new Status(IStatus.ERROR, NatTablePlugin.PLUGIN_ID,
					"Failed to update value to: " + command.getNewValue(), e ));
			return false;
		}
	}
	
}
File
UpdateDataCommandHandler.java
Developer's decision
Manual
Kind of conflict
Catch clause
If statement
Method invocation
Return statement
Variable
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/AbstractCellEditor.java
=======
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/AbstractCellEditor.java

/**
 * Abstract implementation of {@link ICellEditor} that wraps SWT controls to be
Solution content
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;

/**
 * Abstract implementation of {@link ICellEditor} that wraps SWT controls to be
File
AbstractCellEditor.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
// ~
package org.eclipse.nebula.widgets.nattable.edit.editor;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/CheckBoxCellEditor.java
import java.util.List;

=======
import org.eclipse.nebula.widgets.nattable.painter.cell.CheckBoxPainter;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/CheckBoxCellEditor.java
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
Solution content
// ~
package org.eclipse.nebula.widgets.nattable.edit.editor;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
File
CheckBoxCellEditor.java
Developer's decision
None
Kind of conflict
Import
Chunk
Conflicting content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
// ~
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
package org.eclipse.nebula.widgets.nattable.edit.editor;

import java.util.ArrayList;
Solution content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// ~
package org.eclipse.nebula.widgets.nattable.edit.editor;

import java.util.ArrayList;
File
ComboBoxCellEditor.java
Developer's decision
Version 1
Kind of conflict
Package declaration
Chunk
Conflicting content
import java.util.ArrayList;
import java.util.List;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
=======
import org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
import org.eclipse.nebula.widgets.nattable.util.ArrayUtil;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
import org.eclipse.nebula.widgets.nattable.widget.NatCombo;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
Solution content
import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
File
ComboBoxCellEditor.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
import org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter;
import org.eclipse.nebula.widgets.nattable.util.ArrayUtil;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
import org.eclipse.nebula.widgets.nattable.widget.NatCombo;


=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
/**
 * {@link ICellEditor} implementation to provide combo box editing behaviour.
 * Uses the {@link NatCombo} as editor control which provides free editing in
Solution content
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;

import org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter;
import org.eclipse.nebula.widgets.nattable.util.ArrayUtil;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
import org.eclipse.nebula.widgets.nattable.widget.NatCombo;


/**
 * {@link ICellEditor} implementation to provide combo box editing behaviour.
 * Uses the {@link NatCombo} as editor control which provides free editing in
File
ComboBoxCellEditor.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
			public void keyPressed(KeyEvent event) {
				if ((event.keyCode == SWT.CR)
						|| (event.keyCode == SWT.KEYPAD_CR)) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
					commit(null, editMode == EditModeEnum.INLINE);
=======
					commit(MoveDirectionEnum.NONE, editMode == EditModeEnum.INLINE);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
				} else if (event.keyCode == SWT.ESC){
					close();
				}
Solution content
			public void keyPressed(KeyEvent event) {
				if ((event.keyCode == SWT.CR)
						|| (event.keyCode == SWT.KEYPAD_CR)) {
					commit(null, editMode == EditModeEnum.INLINE);
				} else if (event.keyCode == SWT.ESC){
					close();
				}
File
ComboBoxCellEditor.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
		combo.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
				commit(null, (!multiselect && editMode == EditModeEnum.INLINE));
=======
				commit(MoveDirectionEnum.NONE, (!multiselect && editMode == EditModeEnum.INLINE));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ComboBoxCellEditor.java
			}
		});
		
Solution content
		combo.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				commit(null, (!multiselect && editMode == EditModeEnum.INLINE));
			}
		});
		
File
ComboBoxCellEditor.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.ui.matcher.IMouseEventMatcher;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ICellEditor.java

=======
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ICellEditor.java

/**
 * Interface for implementing editors that can be used in a NatTable.
Solution content
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.ui.matcher.IMouseEventMatcher;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;


/**
 * Interface for implementing editors that can be used in a NatTable.
File
ICellEditor.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	 */
	void removeEditorControlListeners();
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ICellEditor.java
=======
	/**
	 * This method is used to calculate the bounds of the edit control when opened inline.
	 * By default it should return the given cell bounds to match the cell structure in NatTable.
	 * For several cases it might be useful to return the preferred size to show all content
	 * rather than trimming the control to the cell size.
	 * 

* Note: By changing the bounds you should ensure to only modify width and height attributes * and not x and y coordinate, otherwise the editor control will show up somewhere else * and not in place of the cell that is edited. * @param cellBounds The bounds of the cell for which the editor is opened. * @return The bounds of the editor control that should be applied. By default the cell bounds * for several cases bigger. */ Rectangle calculateControlBounds(Rectangle cellBounds); >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/ICellEditor.java }

Solution content
	 */
	void removeEditorControlListeners();
	
	/**
	 * This method is used to calculate the bounds of the edit control when opened inline.
	 * By default it should return the given cell bounds to match the cell structure in NatTable.
	 * For several cases it might be useful to return the preferred size to show all content
	 * rather than trimming the control to the cell size.
	 * 

* Note: By changing the bounds you should ensure to only modify width and height attributes * and not x and y coordinate, otherwise the editor control will show up somewhere else * and not in place of the cell that is edited. * @param cellBounds The bounds of the cell for which the editor is opened. * @return The bounds of the editor control that should be applied. By default the cell bounds * for several cases bigger. */ Rectangle calculateControlBounds(Rectangle cellBounds); }

File
ICellEditor.java
Developer's decision
Version 2
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
	
	@Override
	public Text createEditorControl(Composite parent) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java
		int style = CellStyleUtil.getHorizontalAlignmentSWT(this.cellStyle, SWT.NONE)
				| SWT.MULTI | SWT.BORDER | SWT.V_SCROLL;
=======
		boolean openInline = openInline(this.configRegistry, this.labelStack.getLabels());
		
		int style = HorizontalAlignmentEnum.getSWTStyle(this.cellStyle) | SWT.MULTI | SWT.BORDER;
		if (!openInline) {
			//if the editor control is opened in a dialog, we add scrolling as the size of the
			//control is dependent on the dialog size
			style = style | SWT.V_SCROLL;
		}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java
		if (lineWrap) {
			style = style | SWT.WRAP;
		} 
Solution content
	
	@Override
	public Text createEditorControl(Composite parent) {
		boolean openInline = openInline(this.configRegistry, this.labelStack.getLabels());
		
		int style = CellStyleUtil.getHorizontalAlignmentSWT(this.cellStyle, SWT.NONE) | SWT.MULTI | SWT.BORDER;
		if (!openInline) {
			//if the editor control is opened in a dialog, we add scrolling as the size of the
			//control is dependent on the dialog size
			style = style | SWT.V_SCROLL;
		}
		if (lineWrap) {
			style = style | SWT.WRAP;
		} 
File
MultiLineTextCellEditor.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
						(event.keyCode == SWT.CR
							|| event.keyCode == SWT.KEYPAD_CR)) {
					
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TextCellEditor.java
					Direction move = null;
=======
					boolean commit = (event.stateMask == SWT.ALT) ? false : true;
					MoveDirectionEnum move = MoveDirectionEnum.NONE;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TextCellEditor.java
					if (moveSelectionOnEnter && editMode == EditModeEnum.INLINE) {
						if (event.stateMask == 0) {
							move = Direction.DOWN;
Solution content
						(event.keyCode == SWT.CR
							|| event.keyCode == SWT.KEYPAD_CR)) {
					
					boolean commit = (event.stateMask == SWT.ALT) ? false : true;
					Direction move = null;
					if (moveSelectionOnEnter && editMode == EditModeEnum.INLINE) {
						if (event.stateMask == 0) {
							move = Direction.DOWN;
File
TextCellEditor.java
Developer's decision
Combination
Kind of conflict
Variable
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/edit/gui/AbstractDialogCellEditor.java

=======
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/gui/AbstractDialogCellEditor.java

/**
 * Abstract implementation of a {@link ICellEditor} that is also a {@link ICellEditDialog}.
Solution content
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;


/**
 * Abstract implementation of a {@link ICellEditor} that is also a {@link ICellEditDialog}.
File
AbstractDialogCellEditor.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	 */
	void exportLayerEnd(OutputStream outputStream, String layerName) throws IOException;
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/export/ILayerExporter.java
	void exportRowBegin(OutputStream outputStream, long rowPosition) throws IOException;
	
	void exportRowEnd(OutputStream outputStream, long rowPosition) throws IOException;
=======
	/**
	 * Starts the export operation of one row. 
	 * Is used for example to initialize a row in a sheet or open some
	 * tags in a XML format.
	 * @param outputStream The OutputStream to write the export to.
	 * @param rowPosition The position of the row to export.
	 * @throws IOException If an error occurred during writing the export.
	 */
	void exportRowBegin(OutputStream outputStream, int rowPosition) throws IOException;
	
	/**
	 * Ends the export operation of one row. 
	 * @param outputStream The OutputStream to write the export to.
	 * @param rowPosition The position of the row that was exported.
	 * 			Usually not necessary, but in case there is caching involved in a
	 * 			custom ILayerExporter implementation, this can be used to retrieve
	 * 			the row again.
	 * @throws IOException If an error occurred during writing the export.
	 */
	void exportRowEnd(OutputStream outputStream, int rowPosition) throws IOException;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/ILayerExporter.java
	
	/**
	 * Exports one cell.
Solution content
	 */
	void exportLayerEnd(OutputStream outputStream, String layerName) throws IOException;
	
	/**
	 * Starts the export operation of one row. 
	 * Is used for example to initialize a row in a sheet or open some
	 * tags in a XML format.
	 * @param outputStream The OutputStream to write the export to.
	 * @param rowPosition The position of the row to export.
	 * @throws IOException If an error occurred during writing the export.
	 */
	void exportRowBegin(OutputStream outputStream, long rowPosition) throws IOException;
	
	/**
	 * Ends the export operation of one row. 
	 * @param outputStream The OutputStream to write the export to.
	 * @param rowPosition The position of the row that was exported.
	 * 			Usually not necessary, but in case there is caching involved in a
	 * 			custom ILayerExporter implementation, this can be used to retrieve
	 * 			the row again.
	 * @throws IOException If an error occurred during writing the export.
	 */
	void exportRowEnd(OutputStream outputStream, long rowPosition) throws IOException;
	
	/**
	 * Exports one cell.
File
ILayerExporter.java
Developer's decision
Combination
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.summaryrow.command.CalculateSummaryRowValuesCommand;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
import org.eclipse.swt.SWT;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/export/NatExporter.java
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.program.Program;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/NatExporter.java
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
Solution content
import org.eclipse.nebula.widgets.nattable.summaryrow.command.CalculateSummaryRowValuesCommand;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
File
NatExporter.java
Developer's decision
None
Kind of conflict
Import
Chunk
Conflicting content
		outputStream.write(asBytes("
")); //$NON-NLS-1$ } <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java public void exportRowBegin(OutputStream outputStream, long rowPosition) throws IOException { outputStream.write(asBytes("\n")); //$NON-NLS-1$ } public void exportRowEnd(OutputStream outputStream, long rowPosition) throws IOException { ======= @Override public void exportRowBegin(OutputStream outputStream, int rowPosition) throws IOException { outputStream.write(asBytes("\n")); //$NON-NLS-1$ } @Override public void exportRowEnd(OutputStream outputStream, int rowPosition) throws IOException { >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java outputStream.write(asBytes("\n")); //$NON-NLS-1$ }
Solution content
		outputStream.write(asBytes("
")); //$NON-NLS-1$ } @Override public void exportRowBegin(OutputStream outputStream, long rowPosition) throws IOException { outputStream.write(asBytes("\n")); //$NON-NLS-1$ } @Override public void exportRowEnd(OutputStream outputStream, long rowPosition) throws IOException { outputStream.write(asBytes("\n")); //$NON-NLS-1$ }
File
ExcelExporter.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
import org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate;
import org.eclipse.nebula.widgets.nattable.freeze.FreezeLayer.Dim;
import org.eclipse.nebula.widgets.nattable.freeze.command.FreezeColumnCommand;
Solution content
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate;
import org.eclipse.nebula.widgets.nattable.freeze.FreezeLayer.Dim;
import org.eclipse.nebula.widgets.nattable.freeze.command.FreezeColumnCommand;
File
FreezeHelper.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
			
		}
		
			viewportLayer.getDim(HORIZONTAL).setMinimumOriginPosition(bottomRightPosition.columnPosition + 1);
		if (topLeftPosition != null && bottomRightPosition != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
			freezeLayer.setFreeze(topLeftPosition.columnPosition, topLeftPosition.rowPosition,
					bottomRightPosition.columnPosition, bottomRightPosition.rowPosition );
=======
			freezeLayer.setTopLeftPosition(topLeftPosition.columnPosition, topLeftPosition.rowPosition);
			freezeLayer.setBottomRightPosition(bottomRightPosition.columnPosition, bottomRightPosition.rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
			viewportLayer.getDim(VERTICAL).setMinimumOriginPosition(bottomRightPosition.rowPosition + 1);
Solution content
		}
		
		if (topLeftPosition != null && bottomRightPosition != null) {
			freezeLayer.setFreeze(topLeftPosition.columnPosition, topLeftPosition.rowPosition,
					bottomRightPosition.columnPosition, bottomRightPosition.rowPosition );
			
			viewportLayer.getDim(HORIZONTAL).setMinimumOriginPosition(bottomRightPosition.columnPosition + 1);
			viewportLayer.getDim(VERTICAL).setMinimumOriginPosition(bottomRightPosition.rowPosition + 1);
File
FreezeHelper.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * @param freezeLayer The FreezeLayer of the grid to perform the freeze action.
	 * @param viewportLayer The ViewportLayer of the grid to perform the freeze action.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
	public static void resetViewport(final FreezeLayer freezeLayer, final ViewportLayer viewportLayer) {
		for (final Orientation orientation : Orientation.values()) {
			if (freezeLayer.isFrozen()) {
				final Dim freezeDim = freezeLayer.get(orientation);
				
				final long position = freezeDim.getStartPosition();
				freezeDim.setFreeze(0, 0);
				viewportLayer.getDim(orientation).reset(position);
			}
		}
=======
	public static void resetViewport(FreezeLayer freezeLayer, ViewportLayer viewportLayer) {
		PositionCoordinate topLeftPosition = freezeLayer.getTopLeftPosition();
		
		viewportLayer.getDim(HORIZONTAL).reset(Math.max(0, topLeftPosition.columnPosition));
		viewportLayer.getDim(VERTICAL).reset(Math.max(0,topLeftPosition.rowPosition));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
	}
	
}
Solution content
	 * @param freezeLayer The FreezeLayer of the grid to perform the freeze action.
	 * @param viewportLayer The ViewportLayer of the grid to perform the freeze action.
	 */
	public static void resetViewport(final FreezeLayer freezeLayer, final ViewportLayer viewportLayer) {
		for (final Orientation orientation : Orientation.values()) {
			if (freezeLayer.isFrozen()) {
				final Dim freezeDim = freezeLayer.get(orientation);
				
				final long position = freezeDim.getStartPosition();
				freezeDim.setFreeze(0, 0);
				viewportLayer.getDim(orientation).reset(position);
			}
		}
	}
	
}
File
FreezeHelper.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeSelectionStrategy.java
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeSelectionStrategy.java
import org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate;
import org.eclipse.nebula.widgets.nattable.freeze.FreezeLayer;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
Solution content
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate;
import org.eclipse.nebula.widgets.nattable.freeze.FreezeLayer;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
File
FreezeSelectionStrategy.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
		if (selectionAnchor == null) {
			return null;
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeSelectionStrategy.java
		
		return new PositionCoordinate(freezeLayer,
				checkPosition(HORIZONTAL, selectionAnchor.columnPosition),
				checkPosition(VERTICAL, selectionAnchor.rowPosition) );
	}
	
	private long checkPosition(final Orientation orientation, final long maxPosition) {
		final IViewportDim dim = viewportLayer.getDim(orientation);
		if (dim.getSize() > 0) {
			final long position = dim.getOriginPosition();
			if (position < maxPosition) {
				return position;
			}
=======
			
		int columnPosition = viewportLayer.getDim(HORIZONTAL).getOriginPosition();
		if (columnPosition >= lastSelectedCellPosition.columnPosition) {
			columnPosition = lastSelectedCellPosition.columnPosition - 1;
		}
		
		int rowPosition = viewportLayer.getDim(VERTICAL).getOriginPosition();
		if (rowPosition >= lastSelectedCellPosition.rowPosition) {
			rowPosition = lastSelectedCellPosition.rowPosition - 1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeSelectionStrategy.java
		}
		return -1;
	}
Solution content
		if (selectionAnchor == null) {
			return null;
		}
		
		return new PositionCoordinate(freezeLayer,
				checkPosition(HORIZONTAL, selectionAnchor.columnPosition),
				checkPosition(VERTICAL, selectionAnchor.rowPosition) );
	}
	
	private long checkPosition(final Orientation orientation, final long maxPosition) {
		final IViewportDim dim = viewportLayer.getDim(orientation);
		if (dim.getSize() > 0) {
			final long position = dim.getOriginPosition();
			if (position < maxPosition) {
				return position;
			}
		}
		return -1;
	}
File
FreezeSelectionStrategy.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
			long leftOffset = 0;
		// The handling of diffs have to be in sync with ViewportDim#handleStructuralChanges
		Collection columnDiffs = event.getColumnDiffs();
		if (columnDiffs != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/event/FreezeEventHandler.java
			long rightOffset = 0;
=======
			int leftOffset = 0;
			int rightOffset = 0;
			int freezeMove = 0; // 0 = unset, 1 == true, -1 == false
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/event/FreezeEventHandler.java
			
			for (StructuralDiff diff : columnDiffs) {
				final int start = diff.getBeforePositionRange().start;
Solution content
		// The handling of diffs have to be in sync with ViewportDim#handleStructuralChanges
		Collection columnDiffs = event.getColumnDiffs();
		if (columnDiffs != null) {
			int leftOffset = 0;
			int rightOffset = 0;
			int freezeMove = 0; // 0 = unset, 1 == true, -1 == false
			
			for (StructuralDiff diff : columnDiffs) {
File
FreezeEventHandler.java
Developer's decision
Version 2
Kind of conflict
Comment
Variable
Chunk
Conflicting content
			long leftOffset = 0;
		
		Collection rowDiffs = event.getRowDiffs();
		if (rowDiffs != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/freeze/event/FreezeEventHandler.java
			long rightOffset = 0;
=======
			int leftOffset = 0;
			int rightOffset = 0;
			int freezeMove = 0; // 0 = unset, 1 == true, -1 == false
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/event/FreezeEventHandler.java
			
			for (StructuralDiff diff : rowDiffs) {
				final int start = diff.getBeforePositionRange().start;
Solution content
		
		Collection rowDiffs = event.getRowDiffs();
		if (rowDiffs != null) {
			int leftOffset = 0;
			int rightOffset = 0;
			int freezeMove = 0; // 0 = unset, 1 == true, -1 == false
			
			for (StructuralDiff diff : rowDiffs) {
File
FreezeEventHandler.java
Developer's decision
Version 2
Kind of conflict
Comment
Variable
Chunk
Conflicting content
		if (selectionLayer.isColumnPositionFullySelected(columnPosition)) {
			initCommand.setSelectedColumnPositions(selectionLayer.getFullySelectedColumnPositions());
		} else {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/command/InitializeAutoResizeColumnsCommandHandler.java
			RangeList list = new RangeList();
			list.addValue(columnPosition);
			initCommand.setSelectedColumnPositions(list);
=======
			initCommand.setSelectedColumnPositions(new RangeList(columnPosition));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/command/InitializeAutoResizeColumnsCommandHandler.java
		}
		
		// Fire command carrying the selected columns
Solution content
		
		if (selectionLayer.isColumnPositionFullySelected(columnPosition)) {
			initCommand.setSelectedColumnPositions(selectionLayer.getFullySelectedColumnPositions());
		} else {
		// Fire command carrying the selected columns
			initCommand.setSelectedColumnPositions(new RangeList(columnPosition));
		}
File
InitializeAutoResizeColumnsCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
		if (selectionLayer.isRowPositionFullySelected(rowPosition)) {
			initCommand.setSelectedRowPositions(selectionLayer.getFullySelectedRowPositions());
		} else {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/command/InitializeAutoResizeRowsCommandHandler.java
			RangeList list = new RangeList();
			list.addValue(rowPosition);
			initCommand.setSelectedRowPositions(list);
=======
			initCommand.setSelectedRowPositions(new RangeList(rowPosition));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/command/InitializeAutoResizeRowsCommandHandler.java
		}
		
		// Fire command carrying the selected columns
Solution content
		if (selectionLayer.isRowPositionFullySelected(rowPosition)) {
			initCommand.setSelectedRowPositions(selectionLayer.getFullySelectedRowPositions());
		} else {
			initCommand.setSelectedRowPositions(new RangeList(rowPosition));
		}
		
		// Fire command carrying the selected columns
File
InitializeAutoResizeRowsCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
import java.util.HashMap;
import java.util.Map;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;

public class DummyModifiableBodyDataProvider implements IDataProvider {

	private long columnCount;
	
	private long rowCount;

	private Map values = new HashMap();
	
	public DummyModifiableBodyDataProvider(long columnCount, long rowCount) {
=======
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;
import org.eclipse.swt.graphics.Point;

public class DummyModifiableBodyDataProvider implements IDataProvider {

	private int columnCount;
	
	private int rowCount;

	private Map values = new HashMap();
	
	public DummyModifiableBodyDataProvider(int columnCount, int rowCount) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
		this.columnCount = columnCount;
		this.rowCount = rowCount;
	}
Solution content
import java.util.HashMap;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Point;
import org.eclipse.nebula.widgets.nattable.data.IDataProvider;

public class DummyModifiableBodyDataProvider implements IDataProvider {

	private long columnCount;
	
	private long rowCount;

	private Map values = new HashMap();
	
	public DummyModifiableBodyDataProvider(long columnCount, long rowCount) {
		this.columnCount = columnCount;
		this.rowCount = rowCount;
	}
File
DummyModifiableBodyDataProvider.java
Developer's decision
Version 1
Kind of conflict
Attribute
Class signature
Import
Method invocation
Method signature
Chunk
Conflicting content
		this.rowCount = rowCount;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
	public long getColumnCount() {
		return columnCount;
	}

	public long getRowCount() {
=======
	public int getColumnCount() {
		return columnCount;
	}

	public int getRowCount() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
		return rowCount;
	}
Solution content
		this.rowCount = rowCount;
	}
	
	public long getColumnCount() {
		return columnCount;
	}

	public long getRowCount() {
		return rowCount;
	}
File
DummyModifiableBodyDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
	 * You have to fire a {@link org.eclipse.nebula.widgets.nattable.layer.event.StructuralRefreshEvent} after using this method for refreshing the NatTable.
	 * @param columnCount
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
	public void setColumnCount(long columnCount) {
=======
	public void setColumnCount(int columnCount) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
		this.columnCount = columnCount;
	}
Solution content
	 * You have to fire a {@link org.eclipse.nebula.widgets.nattable.layer.event.StructuralRefreshEvent} after using this method for refreshing the NatTable.
	 * @param columnCount
	 */
	public void setColumnCount(long columnCount) {
		this.columnCount = columnCount;
	}
File
DummyModifiableBodyDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * You have to fire a {@link org.eclipse.nebula.widgets.nattable.layer.event.StructuralRefreshEvent} after using this method for refreshing the NatTable.
	 * @param rowCount
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
	public void setRowCount(long rowCount) {
		this.rowCount = rowCount;
	}

	public Object getDataValue(long columnIndex, long rowIndex) {
=======
	public void setRowCount(int rowCount) {
		this.rowCount = rowCount;
	}

	public Object getDataValue(int columnIndex, int rowIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
		Point point = new Point(columnIndex, rowIndex);
		if (values.containsKey(point)) {
			return values.get(point);
Solution content
	 * You have to fire a {@link org.eclipse.nebula.widgets.nattable.layer.event.StructuralRefreshEvent} after using this method for refreshing the NatTable.
	 * @param rowCount
	 */
	public void setRowCount(long rowCount) {
		this.rowCount = rowCount;
	}

	public Object getDataValue(long columnIndex, long rowIndex) {
		Point point = new Point(columnIndex, rowIndex);
		if (values.containsKey(point)) {
			return values.get(point);
File
DummyModifiableBodyDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
		}
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
	public void setDataValue(long columnIndex, long rowIndex, Object newValue) {
=======
	public void setDataValue(int columnIndex, int rowIndex, Object newValue) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/data/DummyModifiableBodyDataProvider.java
		values.put(new Point(columnIndex, rowIndex), newValue);
	}
Solution content
		}
	}
	
	public void setDataValue(long columnIndex, long rowIndex, Object newValue) {
		values.put(new Point(columnIndex, rowIndex), newValue);
	}
File
DummyModifiableBodyDataProvider.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content

public class ColumnHeaderSelectionEvent extends ColumnVisualChangeEvent {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/grid/layer/event/ColumnHeaderSelectionEvent.java

	public ColumnHeaderSelectionEvent(ILayer layer, long columnPosition) {
		this(layer, new Range(columnPosition));
	}
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/grid/layer/event/ColumnHeaderSelectionEvent.java
	
	
	public ColumnHeaderSelectionEvent(ILayer layer, Collection columnPositionRanges) {
Solution content

public class ColumnHeaderSelectionEvent extends ColumnVisualChangeEvent {
	
	
	public ColumnHeaderSelectionEvent(ILayer layer, Collection columnPositionRanges) {
File
ColumnHeaderSelectionEvent.java
Developer's decision
Version 2
Kind of conflict
Method declaration
Chunk
Conflicting content
		}
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
=======
	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void saveState(String prefix, Properties properties) {
		StringBuilder strBuilder = new StringBuilder();
Solution content
		}
	}

	@Override
	public void saveState(String prefix, Properties properties) {
		StringBuilder strBuilder = new StringBuilder();
File
ColumnGroupModel.java
Developer's decision
Version 2
Kind of conflict
Annotation
Chunk
Conflicting content
			strBuilder.append(columnGroup.unbreakable ? "unbreakable" : "breakable"); //$NON-NLS-1$ //$NON-NLS-2$
			strBuilder.append(':');

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			for (Long member : columnGroup.members) {
=======
			for (Integer member : columnGroup.members) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
				strBuilder.append(member);
				strBuilder.append(',');
			}
Solution content
			strBuilder.append(columnGroup.unbreakable ? "unbreakable" : "breakable"); //$NON-NLS-1$ //$NON-NLS-2$
			strBuilder.append(':');

			for (Long member : columnGroup.members) {
				strBuilder.append(member);
				strBuilder.append(',');
			}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
				strBuilder.append(',');
			}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
=======
			if (!columnGroup.staticColumnIndexes.isEmpty()) {
				strBuilder.append(':');
				for (Integer member : columnGroup.staticColumnIndexes) {
					strBuilder.append(member);
					strBuilder.append(',');
				}
			}
			
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			strBuilder.append('|');
		}
Solution content
				strBuilder.append(',');
			}

			if (!columnGroup.staticColumnIndexes.isEmpty()) {
				strBuilder.append(':');
				for (Long member : columnGroup.staticColumnIndexes) {
					strBuilder.append(member);
					strBuilder.append(',');
				}
			}
			
			strBuilder.append('|');
		}
File
ColumnGroupModel.java
Developer's decision
Manual
Kind of conflict
If statement
Chunk
Conflicting content
		properties.setProperty(prefix + PERSISTENCE_KEY_COLUMN_GROUPS, strBuilder.toString());
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
=======
	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void loadState(String prefix, Properties properties) {
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_COLUMN_GROUPS);
		if (property != null) {
Solution content
		properties.setProperty(prefix + PERSISTENCE_KEY_COLUMN_GROUPS, strBuilder.toString());
	}

	@Override
	public void loadState(String prefix, Properties properties) {
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_COLUMN_GROUPS);
		if (property != null) {
File
ColumnGroupModel.java
Developer's decision
Version 2
Kind of conflict
Annotation
Chunk
Conflicting content
				String indexes = columnGroupProperties[3];
				StringTokenizer indexTokenizer = new StringTokenizer(indexes, ","); //$NON-NLS-1$
				while (indexTokenizer.hasMoreTokens()) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
					Long index = Long.valueOf(indexTokenizer.nextToken());
					columnGroup.members.add(index);
				}
=======
					Integer index = Integer.valueOf(indexTokenizer.nextToken());
					columnGroup.members.add(index);
				}
				
				if (columnGroupProperties.length == 5) {
					String statics = columnGroupProperties[4];
					StringTokenizer staticTokenizer = new StringTokenizer(statics, ","); //$NON-NLS-1$
					while (staticTokenizer.hasMoreTokens()) {
						Integer index = Integer.valueOf(staticTokenizer.nextToken());
						columnGroup.staticColumnIndexes.add(index);
					}
				}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			}
		}
	}
Solution content
				String indexes = columnGroupProperties[3];
				StringTokenizer indexTokenizer = new StringTokenizer(indexes, ","); //$NON-NLS-1$
				while (indexTokenizer.hasMoreTokens()) {
					Long index = Long.valueOf(indexTokenizer.nextToken());
					columnGroup.members.add(index);
				}
				
				if (columnGroupProperties.length == 5) {
					String statics = columnGroupProperties[4];
					StringTokenizer staticTokenizer = new StringTokenizer(statics, ","); //$NON-NLS-1$
					while (staticTokenizer.hasMoreTokens()) {
						Long index = Long.valueOf(staticTokenizer.nextToken());
						columnGroup.staticColumnIndexes.add(index);
					}
				}
			}
		}
	}
File
ColumnGroupModel.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
	 * and adds the column indexes to it.
	 * @see #insertColumnIndexes(String, int[])
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void addColumnsIndexesToGroup(String colGroupName, long... bodyColumnIndexs) {
=======
	public void addColumnsIndexesToGroup(String colGroupName, int... bodyColumnIndexs) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (getColumnGroupByName(colGroupName) == null) {
			ColumnGroup group = new ColumnGroup(colGroupName);
			columnGroups.add(group);
Solution content
	 * and adds the column indexes to it.
	 * @see #insertColumnIndexes(String, int[])
	 */
	public void addColumnsIndexesToGroup(String colGroupName, long... bodyColumnIndexs) {
		if (getColumnGroupByName(colGroupName) == null) {
			ColumnGroup group = new ColumnGroup(colGroupName);
			columnGroups.add(group);
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * 		The column group is frozen
	 * 		Index is already s part of a column group
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public boolean insertColumnIndexes(String colGroupName, long... columnIndexesToInsert) {
		LinkedList members = new LinkedList();
=======
	public boolean insertColumnIndexes(String colGroupName, int... columnIndexesToInsert) {
		LinkedList members = new LinkedList();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java

		ColumnGroup columnGroup = getColumnGroupByName(colGroupName);
		if (columnGroup.unbreakable) {
Solution content
	 * 		The column group is frozen
	 * 		Index is already s part of a column group
	 */
	public boolean insertColumnIndexes(String colGroupName, long... columnIndexesToInsert) {
		LinkedList members = new LinkedList();

		ColumnGroup columnGroup = getColumnGroupByName(colGroupName);
		if (columnGroup.unbreakable) {
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
		}

		// Check if any of the indexes belong to existing groups
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		for (long columnIndexToInsert : columnIndexesToInsert) {
			final Long index = Long.valueOf(columnIndexToInsert);
=======
		for (int columnIndexToInsert : columnIndexesToInsert) {
			final Integer index = Integer.valueOf(columnIndexToInsert);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			if (getColumnGroupByIndex(columnIndexToInsert) != null) {
				return false;
			}
Solution content
		}

		// Check if any of the indexes belong to existing groups
		for (long columnIndexToInsert : columnIndexesToInsert) {
			final Long index = Long.valueOf(columnIndexToInsert);
			if (getColumnGroupByIndex(columnIndexToInsert) != null) {
				return false;
			}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	 * @param colGroupName to add the indexes to
	 * @param staticColumnIndexes
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void setStaticColumnIndexesByGroup(String colGroupName, long[] staticColumnIndexes) {
=======
	public void setStaticColumnIndexesByGroup(String colGroupName, int[] staticColumnIndexes) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (getColumnGroupByName(colGroupName) == null) {
			ColumnGroup group = new ColumnGroup(colGroupName);
			columnGroups.add(group);
Solution content
	 * @param colGroupName to add the indexes to
	 * @param staticColumnIndexes
	 */
	public void setStaticColumnIndexesByGroup(String colGroupName, long[] staticColumnIndexes) {
		if (getColumnGroupByName(colGroupName) == null) {
			ColumnGroup group = new ColumnGroup(colGroupName);
			columnGroups.add(group);
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param colGroupName to add the indexes to
	 * @param columnIndexesToInsert
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void insertStaticColumnIndexes(String colGroupName, long... columnIndexesToInsert) {
		
		LinkedList staticColumnIndexes = new LinkedList();
		ColumnGroup columnGroup = getColumnGroupByName(colGroupName);

		// Check if any of the indexes belong to existing groups
		for (long columnIndexToInsert : columnIndexesToInsert) {
			
			final Long index = Long.valueOf(columnIndexToInsert);			
=======
	public void insertStaticColumnIndexes(String colGroupName, int... columnIndexesToInsert) {
		
		LinkedList staticColumnIndexes = new LinkedList();
		ColumnGroup columnGroup = getColumnGroupByName(colGroupName);

		// Check if any of the indexes belong to existing groups
		for (int columnIndexToInsert : columnIndexesToInsert) {
			
			final Integer index = Integer.valueOf(columnIndexToInsert);			
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			staticColumnIndexes.add(index);
		}
Solution content
	 * @param colGroupName to add the indexes to
	 * @param columnIndexesToInsert
	 */
	public void insertStaticColumnIndexes(String colGroupName, long... columnIndexesToInsert) {
		
		LinkedList staticColumnIndexes = new LinkedList();
		ColumnGroup columnGroup = getColumnGroupByName(colGroupName);

		// Check if any of the indexes belong to existing groups
		for (long columnIndexToInsert : columnIndexesToInsert) {
			
			final Long index = Long.valueOf(columnIndexToInsert);			
			staticColumnIndexes.add(index);
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Comment
For statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
		return null;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public ColumnGroup getColumnGroupByIndex(long columnIndex) {
		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.getMembers().contains(Long.valueOf(columnIndex))) {
=======
	public ColumnGroup getColumnGroupByIndex(int columnIndex) {
		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.getMembers().contains(Integer.valueOf(columnIndex))) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
				return columnGroup;
			}
		}
Solution content
		return null;
	}
	
	public ColumnGroup getColumnGroupByIndex(long columnIndex) {
		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.getMembers().contains(Long.valueOf(columnIndex))) {
				return columnGroup;
			}
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
For statement
If statement
Method signature
Chunk
Conflicting content
		notifyListeners();
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public boolean isPartOfAGroup(long bodyColumnIndex) {
=======
	public boolean isPartOfAGroup(int bodyColumnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.members.contains(bodyColumnIndex)) {
				return true;
Solution content
		notifyListeners();
	}
	
	public boolean isPartOfAGroup(long bodyColumnIndex) {
		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.members.contains(bodyColumnIndex)) {
				return true;
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	/**
	 * @return Number of column Groups in the model.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public long size() {
=======
	public int size() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		return columnGroups.size();
	}
Solution content
	/**
	 * @return Number of column Groups in the model.
	 */
	public long size() {
		return columnGroups.size();
	}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	/**
	 * @return all the indexes which belong to groups
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public List getAllIndexesInGroups() {
		List indexes = new LinkedList();
=======
	public List getAllIndexesInGroups() {
		List indexes = new LinkedList();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		for (ColumnGroup columnGroup : columnGroups) {
			indexes.addAll(columnGroup.members);
		}
Solution content
	/**
	 * @return all the indexes which belong to groups
	 */
	public List getAllIndexesInGroups() {
		List indexes = new LinkedList();
		for (ColumnGroup columnGroup : columnGroups) {
			indexes.addAll(columnGroup.members);
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @return TRUE if bodyColumnIndex is contained in the list
	 * of static columns of the column group this index belongs to
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public boolean isStaticColumn(long bodyColumnIndex) {
=======
	public boolean isStaticColumn(int bodyColumnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (isPartOfAGroup(bodyColumnIndex)) {
			return getColumnGroupByIndex(bodyColumnIndex).staticColumnIndexes.contains(bodyColumnIndex);
		}
Solution content
	 * @return TRUE if bodyColumnIndex is contained in the list
	 * of static columns of the column group this index belongs to
	 */
	public boolean isStaticColumn(long bodyColumnIndex) {
		if (isPartOfAGroup(bodyColumnIndex)) {
			return getColumnGroupByIndex(bodyColumnIndex).staticColumnIndexes.contains(bodyColumnIndex);
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	/**
	 * @return Total number of columns hidden for all the collapsed columns.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public long getCollapsedColumnCount() {
		long count = 0;

		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.collapsed) {
				long staticColumnIndexesCount = columnGroup.getStaticColumnIndexes().size();
=======
	public int getCollapsedColumnCount() {
		int count = 0;

		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.collapsed) {
				int staticColumnIndexesCount = columnGroup.getStaticColumnIndexes().size();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
				count = count + columnGroup.getMembers().size() - Math.max(staticColumnIndexesCount, 1);
			}
		}
Solution content
	/**
	 * @return Total number of columns hidden for all the collapsed columns.
	 */
	public long getCollapsedColumnCount() {
		long count = 0;

		for (ColumnGroup columnGroup : columnGroups) {
			if (columnGroup.collapsed) {
				long staticColumnIndexesCount = columnGroup.getStaticColumnIndexes().size();
				count = count + columnGroup.getMembers().size() - Math.max(staticColumnIndexesCount, 1);
			}
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
For statement
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @param bodyColumnIndex
	 * @return The position of the index within the column group
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public long getColumnGroupPositionFromIndex(long bodyColumnIndex) {
		if (isPartOfAGroup(bodyColumnIndex)) {
			ColumnGroup columnGroup = getColumnGroupByIndex(bodyColumnIndex);
			return columnGroup.members.indexOf(Long.valueOf(bodyColumnIndex));
=======
	public int getColumnGroupPositionFromIndex(int bodyColumnIndex) {
		if (isPartOfAGroup(bodyColumnIndex)) {
			ColumnGroup columnGroup = getColumnGroupByIndex(bodyColumnIndex);
			return columnGroup.members.indexOf(Integer.valueOf(bodyColumnIndex));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		}
		return -1;
	}
Solution content
	 * @param bodyColumnIndex
	 * @return The position of the index within the column group
	 */
	public long getColumnGroupPositionFromIndex(long bodyColumnIndex) {
		if (isPartOfAGroup(bodyColumnIndex)) {
			ColumnGroup columnGroup = getColumnGroupByIndex(bodyColumnIndex);
			return columnGroup.members.indexOf(Long.valueOf(bodyColumnIndex));
		}
		return -1;
	}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
	 * 			to a {@link ColumnGroup} and this {@link ColumnGroup} is collabseable,
	 * 			false if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public boolean isPartOfACollapseableGroup(long columnIndex) {
=======
	public boolean isPartOfACollapseableGroup(int columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (isPartOfAGroup(columnIndex)) {
			return getColumnGroupByIndex(columnIndex).isCollapseable();
		}
Solution content
	 * 			to a {@link ColumnGroup} and this {@link ColumnGroup} is collabseable,
	 * 			false if not.
	 */
	public boolean isPartOfACollapseableGroup(long columnIndex) {
		if (isPartOfAGroup(columnIndex)) {
			return getColumnGroupByIndex(columnIndex).isCollapseable();
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param collabseable true to set the column group collapseable,
	 * 			false to set it not to be collapseable.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void setColumnGroupCollapseable(long columnIndex, boolean collabseable) {
=======
	public void setColumnGroupCollapseable(int columnIndex, boolean collabseable) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (isPartOfAGroup(columnIndex)) {
			getColumnGroupByIndex(columnIndex).setCollapseable(collabseable);
		}
Solution content
	 * @param collabseable true to set the column group collapseable,
	 * 			false to set it not to be collapseable.
	 */
	public void setColumnGroupCollapseable(long columnIndex, boolean collabseable) {
		if (isPartOfAGroup(columnIndex)) {
			getColumnGroupByIndex(columnIndex).setCollapseable(collabseable);
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * 			to a {@link ColumnGroup} and this {@link ColumnGroup} is unbreakable,
	 * 			false if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public boolean isPartOfAnUnbreakableGroup(long columnIndex) {
=======
	public boolean isPartOfAnUnbreakableGroup(int columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (isPartOfAGroup(columnIndex)) {
			return getColumnGroupByIndex(columnIndex).isUnbreakable();
		}
Solution content
	 * 			to a {@link ColumnGroup} and this {@link ColumnGroup} is unbreakable,
	 * 			false if not.
	 */
	public boolean isPartOfAnUnbreakableGroup(long columnIndex) {
		if (isPartOfAGroup(columnIndex)) {
			return getColumnGroupByIndex(columnIndex).isUnbreakable();
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param unbreakable true to set the column group unbreakable,
	 * 			false to remove the unbreakable state.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
	public void setColumnGroupUnbreakable(long columnIndex, boolean unbreakable) {
=======
	public void setColumnGroupUnbreakable(int columnIndex, boolean unbreakable) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		if (isPartOfAGroup(columnIndex)) {
			getColumnGroupByIndex(columnIndex).setUnbreakable(unbreakable);
		}
Solution content
	 * @param unbreakable true to set the column group unbreakable,
	 * 			false to remove the unbreakable state.
	 */
	public void setColumnGroupUnbreakable(long columnIndex, boolean unbreakable) {
		if (isPartOfAGroup(columnIndex)) {
			getColumnGroupByIndex(columnIndex).setUnbreakable(unbreakable);
		}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	public class ColumnGroup {
		
		/** Body column indexes */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		private final LinkedList members = new LinkedList();
		
		/** column indexes which remain visible when collapsing this group */
		private LinkedList staticColumnIndexes = new LinkedList();
=======
		private final LinkedList members = new LinkedList();
		
		/** column indexes which remain visible when collapsing this group */
		private LinkedList staticColumnIndexes = new LinkedList();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java

		private String name;
		
Solution content
	public class ColumnGroup {
		
		/** Body column indexes */
		private final LinkedList members = new LinkedList();
		
		/** column indexes which remain visible when collapsing this group */
		private LinkedList staticColumnIndexes = new LinkedList();

		private String name;
		
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Attribute
Comment
Method invocation
Chunk
Conflicting content
			notifyListeners();
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		public List getMembers() {
			return members;
		}
		
		public List getMembersSorted() {
			
			List sortedMembers = 
=======
		public List getMembers() {
			return members;
		}
		
		public List getMembersSorted() {
			
			List sortedMembers = 
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
					Collections.unmodifiableList(members);
			Collections.sort(sortedMembers);
			
Solution content
			notifyListeners();
		}
		
		public List getMembers() {
			return members;
		}
		
		public List getMembersSorted() {
			
			List sortedMembers = 
					Collections.unmodifiableList(members);
			Collections.sort(sortedMembers);
			
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Variable
Chunk
Conflicting content
		 * @return the column indexes which remains visible when collapsing
		 * this group
		 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		public LinkedList getStaticColumnIndexes() {
			return staticColumnIndexes;
		}
		
		public long getSize() {
=======
		public LinkedList getStaticColumnIndexes() {
			return staticColumnIndexes;
		}
		
		public int getSize() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
			return members.size();
		}
		
Solution content
		 * @return the column indexes which remains visible when collapsing
		 * this group
		 */
		public LinkedList getStaticColumnIndexes() {
			return staticColumnIndexes;
		}
		
		public long getSize() {
			return members.size();
		}
		
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
		/**
		 * @return TRUE if index successfully removed from its group.
		 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
		public boolean removeColumn(long bodyColumnIndex) {
			if (members.contains(bodyColumnIndex) && !unbreakable) {
				members.remove(Long.valueOf(bodyColumnIndex));
=======
		public boolean removeColumn(int bodyColumnIndex) {
			if (members.contains(bodyColumnIndex) && !unbreakable) {
				members.remove(Integer.valueOf(bodyColumnIndex));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/ColumnGroupModel.java
				if (members.size() == 0) {
					columnGroups.remove(this);
				}
Solution content
		/**
		 * @return TRUE if index successfully removed from its group.
		 */
		public boolean removeColumn(long bodyColumnIndex) {
			if (members.contains(bodyColumnIndex) && !unbreakable) {
				members.remove(Long.valueOf(bodyColumnIndex));
				if (members.size() == 0) {
					columnGroups.remove(this);
				}
File
ColumnGroupModel.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.group;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.ArrayList;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
import java.util.List;
import java.util.Properties;
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.group;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;
import java.util.List;
import java.util.Properties;
File
RowGroupHeaderLayer.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
import java.util.Properties;

import org.eclipse.nebula.widgets.nattable.NatTable;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
=======
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
import org.eclipse.nebula.widgets.nattable.group.config.DefaultRowGroupHeaderLayerConfiguration;
import org.eclipse.nebula.widgets.nattable.group.model.IRowGroup;
Solution content
import java.util.Properties;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
import org.eclipse.nebula.widgets.nattable.group.config.DefaultRowGroupHeaderLayerConfiguration;
import org.eclipse.nebula.widgets.nattable.group.model.IRowGroup;
File
RowGroupHeaderLayer.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		long rowIndex = getRowIndexByPosition(rowPosition);
		if( columnPosition == 0 && RowGroupUtils.isPartOfAGroup(model, rowIndex) ) {
			List fullySelectedRowPositions = selectionLayer.getFullySelectedRowPositions();
			for (Range range : fullySelectedRowPositions) {
				for (long position = range.start; position < range.end; position++) {
					long index = this.selectionLayer.getRowIndexByPosition(rowPosition);
					if (rowIndex == index) {
						return new LabelStack(SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE, GridRegion.ROW_GROUP_HEADER);
					}
=======
	public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) {
		int rowIndex = getRowIndexByPosition(rowPosition);
		if (columnPosition == 0 && RowGroupUtils.isPartOfAGroup(model, rowIndex) ) {
			final RangeList fullySelectedRowPositions = selectionLayer.getFullySelectedRowPositions();
			for (final IValueIterator rowIter = fullySelectedRowPositions.values().iterator(); rowIter.hasNext(); ) {
				int index = this.selectionLayer.getRowIndexByPosition(rowIter.nextValue());
				if (rowIndex == index) {
					return new LabelStack(SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE, GridRegion.ROW_GROUP_HEADER);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/RowGroupHeaderLayer.java
				}
			}
			return new LabelStack(GridRegion.ROW_GROUP_HEADER);
Solution content
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		long rowIndex = getRowIndexByPosition(rowPosition);
		if (columnPosition == 0 && RowGroupUtils.isPartOfAGroup(model, rowIndex)) {
			final RangeList fullySelectedRowPositions = selectionLayer.getFullySelectedRowPositions();
			for (final IValueIterator rowIter = fullySelectedRowPositions.values().iterator(); rowIter.hasNext(); ) {
				long index = this.selectionLayer.getRowIndexByPosition(rowIter.nextValue());
				if (rowIndex == index) {
					return new LabelStack(SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE, GridRegion.ROW_GROUP_HEADER);
				}
			}
			return new LabelStack(GridRegion.ROW_GROUP_HEADER);
File
RowGroupHeaderLayer.java
Developer's decision
Manual
Kind of conflict
For statement
If statement
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
import java.util.Map;

import org.eclipse.swt.graphics.Point;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
=======
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
import org.eclipse.swt.widgets.Display;

import org.eclipse.nebula.widgets.nattable.Messages;
Solution content
import java.util.Map;

import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;

import org.eclipse.nebula.widgets.nattable.Messages;
File
ColumnGroupsCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.columnRename.ColumnRenameDialog;
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupHeaderLayer;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup;
Solution content
import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.columnRename.ColumnRenameDialog;
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupHeaderLayer;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup;
File
ColumnGroupsCommandHandler.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
	}
	
	protected void loadSelectedColumnsIndexesWithPositions() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
		columnIndexesToPositionsMap = new LinkedHashMap();
		List fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		
		if (!fullySelectedColumns.isEmpty()) {
			for (final Range range : fullySelectedColumns) {
				for (long position = range.start; position < range.end; position++) {
					long columnIndex = selectionLayer.getColumnIndexByPosition(position);
					if (columnIndex >= 0 && model.isPartOfAGroup(columnIndex)){
						columnIndexesToPositionsMap.clear();
						break;
					}
					columnIndexesToPositionsMap.put(Long.valueOf(columnIndex), Long.valueOf(position));
				}
			}
=======
		columnIndexesToPositionsMap = new LinkedHashMap();
		final RangeList fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		
		for (final IValueIterator columnIter = fullySelectedColumns.values().iterator(); columnIter.hasNext(); ) {
			final int position = columnIter.nextValue();
			int index = selectionLayer.getColumnIndexByPosition(position);
			if (model.isPartOfAGroup(index)) {
				columnIndexesToPositionsMap.clear();
				break;
			}
			columnIndexesToPositionsMap.put(Integer.valueOf(index), Integer.valueOf(position));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
		}
	}
Solution content
	}
	
	protected void loadSelectedColumnsIndexesWithPositions() {
		columnIndexesToPositionsMap = new LinkedHashMap();
		final RangeList fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		
		for (final IValueIterator columnIter = fullySelectedColumns.values().iterator(); columnIter.hasNext(); ) {
			final long position = columnIter.nextValue();
			long columnIndex = selectionLayer.getColumnIndexByPosition(position);
			if (model.isPartOfAGroup(columnIndex)) {
				columnIndexesToPositionsMap.clear();
				break;
			}
			columnIndexesToPositionsMap.put(Long.valueOf(columnIndex), Long.valueOf(position));
		}
	}
File
ColumnGroupsCommandHandler.java
Developer's decision
Manual
Kind of conflict
Attribute
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
	public void handleUngroupCommand() {
		// Grab fully selected column positions
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
		List fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		Map toColumnPositions = new HashMap();
		if (!fullySelectedColumns.isEmpty()) {
		
		// Pick the ones which belong to a group and remove them from the group
			for (final Range range : fullySelectedColumns) {
				for (long position = range.start; position < range.end; position++) {
					long columnIndex = selectionLayer.getColumnIndexByPosition(position);
					if (columnIndex >= 0 && model.isPartOfAGroup(columnIndex) && !model.isPartOfAnUnbreakableGroup(columnIndex)){
						handleRemovalFromGroup(toColumnPositions, columnIndex);
					}
				}
			}
		// The groups which were affected should be reordered to the start position, this should group all columns together
			Collection values = toColumnPositions.values();
			final Iterator toColumnPositionsIterator = values.iterator();
			while(toColumnPositionsIterator.hasNext()) {
				Long toColumnPosition = toColumnPositionsIterator.next();
				selectionLayer.doCommand(new ReorderColumnGroupCommand(selectionLayer, toColumnPosition.longValue(), toColumnPosition.longValue()));
=======
		final RangeList fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		Map toColumnPositions = new HashMap();
		
		for (final IValueIterator columnIter = fullySelectedColumns.values().iterator(); columnIter.hasNext(); ) {
			// Pick the ones which belong to a group and remove them from the group
			final int position = columnIter.nextValue();
			int index = selectionLayer.getColumnIndexByPosition(position);
			if (model.isPartOfAGroup(index) && !model.isPartOfAnUnbreakableGroup(index)) {
				handleRemovalFromGroup(toColumnPositions, index);
			}
		}
		if (!toColumnPositions.isEmpty()) {
			// The groups which were affected should be reordered to the start position, this should group all columns together
			for (final Integer position : toColumnPositions.values()) {
				selectionLayer.doCommand(new ReorderColumnGroupCommand(selectionLayer, position, position));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupsCommandHandler.java
			}
			selectionLayer.clear();
		}
Solution content
	public void handleUngroupCommand() {
		// Grab fully selected column positions
		final RangeList fullySelectedColumns = selectionLayer.getFullySelectedColumnPositions();
		Map toColumnPositions = new HashMap();
		
		for (final IValueIterator columnIter = fullySelectedColumns.values().iterator(); columnIter.hasNext(); ) {
			// Pick the ones which belong to a group and remove them from the group
			final long position = columnIter.nextValue();
			long index = selectionLayer.getColumnIndexByPosition(position);
			if (model.isPartOfAGroup(index) && !model.isPartOfAnUnbreakableGroup(index)) {
				handleRemovalFromGroup(toColumnPositions, index);
			}
		}
		
		if (!toColumnPositions.isEmpty()) {
			// The groups which were affected should be reordered to the start position, this should group all columns together
			for (final Long position : toColumnPositions.values()) {
				selectionLayer.doCommand(new ReorderColumnGroupCommand(selectionLayer, position, position));
			}
			selectionLayer.clear();
		}
File
ColumnGroupsCommandHandler.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
If statement
Method invocation
Variable
While statement
Chunk
Conflicting content
 * are made available under the terms of the Eclipse Public License v1.0
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/AbstractColumnHideShowLayer.java
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors and others.
 * All rights reserved. This program and the accompanying materials
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractColumnHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {

	private List cachedVisibleColumnIndexOrder;

	private Map cachedHiddenColumnIndexToPositionMap;

	private final Map startXCache = new HashMap();

	public AbstractColumnHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}

	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isHorizontalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}

	// Horizontal features

	// Columns

	@Override
	public long getColumnCount() {
		return getCachedVisibleColumnIndexes().size();
	}

	@Override
	public long getColumnIndexByPosition(long columnPosition) {
		if (columnPosition < 0 || columnPosition >= getColumnCount()) {
			return NO_INDEX;
		}

		Long columnIndex = getCachedVisibleColumnIndexes().get((int) columnPosition);
		if (columnIndex != null) {
			return columnIndex.longValue();
		} else {
			return NO_INDEX;
		}
	}

	public long getColumnPositionByIndex(long columnIndex) {
		return getCachedVisibleColumnIndexes().indexOf(Long.valueOf(columnIndex));
	}
	
	public Collection getColumnPositionsByIndexes(Collection columnIndexes) {
		Collection columnPositions = new HashSet();
		for (long columnIndex : columnIndexes) {
			columnPositions.add(getColumnPositionByIndex(columnIndex));
		}
		return columnPositions;
	}
	
	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		} else {
		long columnIndex = getColumnIndexByPosition(localColumnPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}

	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		long columnIndex = getUnderlyingLayer().getColumnIndexByPosition(underlyingColumnPosition);
		long columnPosition = getColumnPositionByIndex(columnIndex);
		if (columnPosition >= 0) {
			return columnPosition;
			Long hiddenColumnPosition = cachedHiddenColumnIndexToPositionMap.get(Long.valueOf(columnIndex));
			if (hiddenColumnPosition != null) {
				return hiddenColumnPosition.longValue();
			} else {
				return Long.MIN_VALUE;
			}
		}
	}

	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		Collection localColumnPositionRanges = new ArrayList();

		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			long startColumnPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start, underlyingColumnPositionRange.end);
			long endColumnPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.end, underlyingColumnPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the
			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startColumnPosition > -1) {
				localColumnPositionRanges.add(new Range(startColumnPosition, endColumnPosition));
			}
		}

		return localColumnPositionRanges;
	}

	private long getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, long startUnderlyingPosition, long endUnderlyingPosition) {
		long localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		long offset = 0;
		while (localStartColumnPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartColumnPosition;
	}

	private long getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, long endUnderlyingPosition, long startUnderlyingPosition) {
		long localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		long offset = 0;
		while (localEndColumnPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndColumnPosition + 1;
	}

	// Width

	@Override
	public long getWidth() {
		long lastColumnPosition = getColumnCount() - 1;
		return getStartXOfColumnPosition(lastColumnPosition) + getColumnWidthByPosition(lastColumnPosition);
	}

	// X

	@Override
	public long getColumnPositionByX(long x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	@Override
	public long getStartXOfColumnPosition(long localColumnPosition) {
		Long cachedStartX = startXCache.get(Long.valueOf(localColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.longValue();
		}

		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		long underlyingPosition = localToUnderlyingColumnPosition(localColumnPosition);
		long underlyingStartX = underlyingLayer.getStartXOfColumnPosition(underlyingPosition);

		for (Long hiddenIndex : getHiddenColumnIndexes()) {
			long hiddenPosition = underlyingLayer.getColumnPositionByIndex(hiddenIndex.longValue());
			if (hiddenPosition <= underlyingPosition) {
				underlyingStartX -= underlyingLayer.getColumnWidthByPosition(hiddenPosition);
			}
		}

		startXCache.put(Long.valueOf(localColumnPosition), Long.valueOf(underlyingStartX));
		return underlyingStartX;
	}
	
	// Vertical features

	// Rows

	public long getRowPositionByIndex(long rowIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}

	// Hide/show

	/**
	 * Will check if the column at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * Note: As the {@link ColumnGroup}s are created index based, this method only
	 * 		 works correctly with indexes rather than positions.
	 * @param columnIndex The column index of the column whose visibility state
	 * 			should be checked.
	 * @return true if the column at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isColumnIndexHidden(long columnIndex);

	/**
	 * Will collect and return all indexes of the columns that are hidden in this layer.
	 * Note: It is not intended that it also collects the column indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all column indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenColumnIndexes();

	// Cache

	/**
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleColumnIndexOrder = null;
		startXCache.clear();
	}

	private List getCachedVisibleColumnIndexes() {
		if (cachedVisibleColumnIndexOrder == null) {
			cacheVisibleColumnIndexes();
		}
		return cachedVisibleColumnIndexOrder;
	}

	private void cacheVisibleColumnIndexes() {
		cachedVisibleColumnIndexOrder = new ArrayList();
		cachedHiddenColumnIndexToPositionMap = new HashMap();
		startXCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		long columnPosition = 0;
		for (long parentColumnPosition = 0; parentColumnPosition < underlyingLayer.getColumnCount(); parentColumnPosition++) {
			long columnIndex = underlyingLayer.getColumnIndexByPosition(parentColumnPosition);

			if (!isColumnIndexHidden(columnIndex)) {
				cachedVisibleColumnIndexOrder.add(Long.valueOf(columnIndex));
				columnPosition++;
			} else {
				cachedHiddenColumnIndexToPositionMap.put(Long.valueOf(columnIndex), Long.valueOf(columnPosition));
			}
		}
	}

}
=======
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractColumnHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {

	private List cachedVisibleColumnIndexOrder;

	private Map cachedHiddenColumnIndexToPositionMap;

	private final Map startXCache = new HashMap();

	public AbstractColumnHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}

	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isHorizontalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}

	// Horizontal features

	// Columns

	@Override
	public int getColumnCount() {
		return getCachedVisibleColumnIndexes().size();
	}

	@Override
	public int getColumnIndexByPosition(int columnPosition) {
		if (columnPosition < 0 || columnPosition >= getColumnCount()) {
			return -1;
		}

		Integer columnIndex = getCachedVisibleColumnIndexes().get(columnPosition);
		if (columnIndex != null) {
			return columnIndex.intValue();
		} else {
			return -1;
		}
	}

	public int getColumnPositionByIndex(int columnIndex) {
		return getCachedVisibleColumnIndexes().indexOf(Integer.valueOf(columnIndex));
	}
	
	public Collection getColumnPositionsByIndexes(Collection columnIndexes) {
		Collection columnPositions = new HashSet();
		for (int columnIndex : columnIndexes) {
			columnPositions.add(getColumnPositionByIndex(columnIndex));
		}
		return columnPositions;
	}
	
	@Override
	public int localToUnderlyingColumnPosition(int localColumnPosition) {
		int columnIndex = getColumnIndexByPosition(localColumnPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}

	@Override
	public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, int underlyingColumnPosition) {
		int columnIndex = getUnderlyingLayer().getColumnIndexByPosition(underlyingColumnPosition);
		int columnPosition = getColumnPositionByIndex(columnIndex);
		if (columnPosition >= 0) {
			return columnPosition;
		} else {
			Integer hiddenColumnPosition = cachedHiddenColumnIndexToPositionMap.get(Integer.valueOf(columnIndex));
			if (hiddenColumnPosition != null) {
				return hiddenColumnPosition.intValue();
			} else {
				return -1;
			}
		}
	}

	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		Collection localColumnPositionRanges = new ArrayList();

		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			int startColumnPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start, underlyingColumnPositionRange.end);
			int endColumnPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.end, underlyingColumnPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the
			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startColumnPosition > -1 && startColumnPosition < endColumnPosition) {
				localColumnPositionRanges.add(new Range(startColumnPosition, endColumnPosition));
			}
		}

		return localColumnPositionRanges;
	}

	private int getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, int startUnderlyingPosition, int endUnderlyingPosition) {
		int localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		int offset = 0;
		while (localStartColumnPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartColumnPosition;
	}

	private int getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, int endUnderlyingPosition, int startUnderlyingPosition) {
		int localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		int offset = 0;
		while (localEndColumnPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndColumnPosition + 1;
	}

	// Width

	@Override
	public int getWidth() {
		int lastColumnPosition = getColumnCount() - 1;
		return getStartXOfColumnPosition(lastColumnPosition) + getColumnWidthByPosition(lastColumnPosition);
	}

	// X

	@Override
	public int getColumnPositionByX(int x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	@Override
	public int getStartXOfColumnPosition(int localColumnPosition) {
		Integer cachedStartX = startXCache.get(Integer.valueOf(localColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.intValue();
		}

		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		int underlyingPosition = localToUnderlyingColumnPosition(localColumnPosition);
		if (underlyingPosition < 0) {
			return -1;
		}
		int underlyingStartX = underlyingLayer.getStartXOfColumnPosition(underlyingPosition);
		if (underlyingStartX < 0) {
			return -1;
		}

		for (Integer hiddenIndex : getHiddenColumnIndexes()) {
			int hiddenPosition = underlyingLayer.getColumnPositionByIndex(hiddenIndex.intValue());
			if (hiddenPosition <= underlyingPosition) {
				underlyingStartX -= underlyingLayer.getColumnWidthByPosition(hiddenPosition);
			}
		}

		startXCache.put(Integer.valueOf(localColumnPosition), Integer.valueOf(underlyingStartX));
		return underlyingStartX;
	}
	
	// Vertical features

	// Rows

	public int getRowPositionByIndex(int rowIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}

	// Hide/show

	/**
	 * Will check if the column at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * Note: As the {@link ColumnGroup}s are created index based, this method only
	 * 		 works correctly with indexes rather than positions.
	 * @param columnIndex The column index of the column whose visibility state
	 * 			should be checked.
	 * @return true if the column at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isColumnIndexHidden(int columnIndex);

	/**
	 * Will collect and return all indexes of the columns that are hidden in this layer.
	 * Note: It is not intended that it also collects the column indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all column indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenColumnIndexes();

	// Cache

	/**
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleColumnIndexOrder = null;
		startXCache.clear();
	}

	private List getCachedVisibleColumnIndexes() {
		if (cachedVisibleColumnIndexOrder == null) {
			cacheVisibleColumnIndexes();
		}
		return cachedVisibleColumnIndexOrder;
	}

	private void cacheVisibleColumnIndexes() {
		cachedVisibleColumnIndexOrder = new ArrayList();
		cachedHiddenColumnIndexToPositionMap = new HashMap();
		startXCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		int columnPosition = 0;
		for (int parentColumnPosition = 0; parentColumnPosition < underlyingLayer.getColumnCount(); parentColumnPosition++) {
			int columnIndex = underlyingLayer.getColumnIndexByPosition(parentColumnPosition);

			if (!isColumnIndexHidden(columnIndex)) {
				cachedVisibleColumnIndexOrder.add(Integer.valueOf(columnIndex));
				columnPosition++;
			} else {
				cachedHiddenColumnIndexToPositionMap.put(Integer.valueOf(columnIndex), Integer.valueOf(columnPosition));
			}
		}
	}

}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/AbstractColumnHideShowLayer.java
Solution content
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractColumnHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {

	private List cachedVisibleColumnIndexOrder;

	private Map cachedHiddenColumnIndexToPositionMap;

	private final Map startXCache = new HashMap();

	public AbstractColumnHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}

	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isHorizontalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}

	// Horizontal features

	// Columns

	@Override
	public long getColumnCount() {
		return getCachedVisibleColumnIndexes().size();
	}

	@Override
	public long getColumnIndexByPosition(long columnPosition) {
		if (columnPosition < 0 || columnPosition >= getColumnCount()) {
			return NO_INDEX;
		}

		Long columnIndex = getCachedVisibleColumnIndexes().get((int) columnPosition);
		if (columnIndex != null) {
			return columnIndex.longValue();
		} else {
			return NO_INDEX;
		}
	}

	public long getColumnPositionByIndex(long columnIndex) {
		return getCachedVisibleColumnIndexes().indexOf(Long.valueOf(columnIndex));
	}
	
	public Collection getColumnPositionsByIndexes(Collection columnIndexes) {
		Collection columnPositions = new HashSet();
		for (long columnIndex : columnIndexes) {
			columnPositions.add(getColumnPositionByIndex(columnIndex));
		}
		return columnPositions;
	}
	
	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		long columnIndex = getColumnIndexByPosition(localColumnPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}

	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		long columnIndex = getUnderlyingLayer().getColumnIndexByPosition(underlyingColumnPosition);
		long columnPosition = getColumnPositionByIndex(columnIndex);
		if (columnPosition >= 0) {
			return columnPosition;
		} else {
			Long hiddenColumnPosition = cachedHiddenColumnIndexToPositionMap.get(Long.valueOf(columnIndex));
			if (hiddenColumnPosition != null) {
				return hiddenColumnPosition.longValue();
			} else {
				return Long.MIN_VALUE;
			}
		}
	}

	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		Collection localColumnPositionRanges = new ArrayList();

		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			long startColumnPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start, underlyingColumnPositionRange.end);
			long endColumnPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.end, underlyingColumnPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the
			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startColumnPosition > -1 && startColumnPosition < endColumnPosition) {
				localColumnPositionRanges.add(new Range(startColumnPosition, endColumnPosition));
			}
		}

		return localColumnPositionRanges;
	}

	private long getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, long startUnderlyingPosition, long endUnderlyingPosition) {
		long localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		long offset = 0;
		while (localStartColumnPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartColumnPosition;
	}

	private long getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, long endUnderlyingPosition, long startUnderlyingPosition) {
		long localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		long offset = 0;
		while (localEndColumnPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndColumnPosition + 1;
	}

	// Width

	@Override
	public long getWidth() {
		long lastColumnPosition = getColumnCount() - 1;
		return getStartXOfColumnPosition(lastColumnPosition) + getColumnWidthByPosition(lastColumnPosition);
	}

	// X

	@Override
	public long getColumnPositionByX(long x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	@Override
	public long getStartXOfColumnPosition(long localColumnPosition) {
		Long cachedStartX = startXCache.get(Long.valueOf(localColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.longValue();
		}

		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		long underlyingPosition = localToUnderlyingColumnPosition(localColumnPosition);
		if (underlyingPosition < 0) {
			return -1;
		}
		long underlyingStartX = underlyingLayer.getStartXOfColumnPosition(underlyingPosition);

		for (Long hiddenIndex : getHiddenColumnIndexes()) {
			long hiddenPosition = underlyingLayer.getColumnPositionByIndex(hiddenIndex.longValue());
			if (hiddenPosition <= underlyingPosition) {
				underlyingStartX -= underlyingLayer.getColumnWidthByPosition(hiddenPosition);
			}
		}

		startXCache.put(Long.valueOf(localColumnPosition), Long.valueOf(underlyingStartX));
		return underlyingStartX;
	}
	
	// Vertical features

	// Rows

	public long getRowPositionByIndex(long rowIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}

	// Hide/show

	/**
	 * Will check if the column at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * Note: As the {@link ColumnGroup}s are created index based, this method only
	 * 		 works correctly with indexes rather than positions.
	 * @param columnIndex The column index of the column whose visibility state
	 * 			should be checked.
	 * @return true if the column at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isColumnIndexHidden(long columnIndex);

	/**
	 * Will collect and return all indexes of the columns that are hidden in this layer.
	 * Note: It is not intended that it also collects the column indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all column indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenColumnIndexes();

	// Cache

	/**
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleColumnIndexOrder = null;
		startXCache.clear();
	}

	private List getCachedVisibleColumnIndexes() {
		if (cachedVisibleColumnIndexOrder == null) {
			cacheVisibleColumnIndexes();
		}
		return cachedVisibleColumnIndexOrder;
	}

	private void cacheVisibleColumnIndexes() {
		cachedVisibleColumnIndexOrder = new ArrayList();
		cachedHiddenColumnIndexToPositionMap = new HashMap();
		startXCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		long columnPosition = 0;
		for (long parentColumnPosition = 0; parentColumnPosition < underlyingLayer.getColumnCount(); parentColumnPosition++) {
			long columnIndex = underlyingLayer.getColumnIndexByPosition(parentColumnPosition);

			if (!isColumnIndexHidden(columnIndex)) {
				cachedVisibleColumnIndexOrder.add(Long.valueOf(columnIndex));
				columnPosition++;
			} else {
				cachedHiddenColumnIndexToPositionMap.put(Long.valueOf(columnIndex), Long.valueOf(columnPosition));
			}
		}
	}

}
File
AbstractColumnHideShowLayer.java
Developer's decision
Combination
Kind of conflict
Class declaration
Comment
Import
Package declaration
Chunk
Conflicting content
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/AbstractRowHideShowLayer.java
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractRowHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {

	private Map cachedVisibleRowIndexOrder;
	private Map cachedVisibleRowPositionOrder;
	
	private Map cachedHiddenRowIndexToPositionMap;

	private final Map startYCache = new HashMap();	
	
	
	public AbstractRowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}
	
	@Override
	}
	@Override
		return cachedVisibleRowIndexOrder;
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Horizontal features

	// Columns
	
	public long getColumnPositionByIndex(long columnIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}
	
	// Vertical features

	// Rows
	
	@Override
	public long getRowCount() {
		return getCachedVisibleRowIndexes().size();
	}
	
	@Override
	public long getRowIndexByPosition(long rowPosition) {
		if (rowPosition < 0 || rowPosition >= getRowCount()) {
			return NO_INDEX;
		}

		Long rowIndex = getCachedVisibleRowPositons().get(rowPosition);
		if (rowIndex != null) {
			return rowIndex.longValue();
		} else {
			return NO_INDEX;
		}
	}
	
	@Override
	public long getRowPositionByIndex(long rowIndex) {
		final Long position = getCachedVisibleRowIndexes().get(Long.valueOf(rowIndex));
		return position != null ? position : Long.MIN_VALUE;
	}
	
	public Collection getRowPositionsByIndexes(Collection rowIndexes) {
		Collection rowPositions = new HashSet();
		for (long rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		return rowPositions;
	}
	
	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		long rowIndex = getRowIndexByPosition(localRowPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}
	
	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		long  rowIndex = getUnderlyingLayer().getRowIndexByPosition(underlyingRowPosition);
		long  rowPosition = getRowPositionByIndex(rowIndex);
		if (rowPosition >= 0) {
			return rowPosition;
		} else {
			Long hiddenRowPosition = cachedHiddenRowIndexToPositionMap.get(Long.valueOf(rowIndex));
			if (hiddenRowPosition != null) {
				return hiddenRowPosition.longValue();
			} else {
				return Long.MIN_VALUE;
			}
		}
	}

	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		Collection localRowPositionRanges = new ArrayList();

		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			long  startRowPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start, underlyingRowPositionRange.end);
			long  endRowPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingRowPositionRange.end, underlyingRowPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the
			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startRowPosition > -1) {
				localRowPositionRanges.add(new Range(startRowPosition, endRowPosition));
			}
		}

		return localRowPositionRanges;
	}
	
	private long  getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, long  startUnderlyingPosition, long  endUnderlyingPosition) {
		long localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		long offset = 0;
		while (localStartRowPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartRowPosition;
	}

	private long getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, long endUnderlyingPosition, long startUnderlyingPosition) {
		long localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		long offset = 0;
		while (localEndRowPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndRowPosition + 1;
	}
	
	// Height
	
	@Override
	public long getHeight() {
		long lastRowPosition = getRowCount() - 1;
		return getStartYOfRowPosition(lastRowPosition) + getRowHeightByPosition(lastRowPosition);
	}
	
	// Y
	
	@Override
	public long getRowPositionByY(long y) {
		return LayerUtil.getRowPositionByY(this, y);
	}
	
	@Override
	public long getStartYOfRowPosition(long localRowPosition) {
		Long cachedStartY = startYCache.get(Long.valueOf(localRowPosition));
		if (cachedStartY != null) {
			return cachedStartY.longValue();
		}
		
		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		long underlyingPosition = localToUnderlyingRowPosition(localRowPosition);
		long underlyingStartY = underlyingLayer.getStartYOfRowPosition(underlyingPosition);

		for (Long hiddenIndex : getHiddenRowIndexes()) {
			long hiddenPosition = underlyingLayer.getRowPositionByIndex(hiddenIndex.longValue());
			//if the hidden position is -1, it is hidden in the underlying layer
			//therefore the underlying layer should handle the positioning
			if (hiddenPosition >= 0 && hiddenPosition <= underlyingPosition) {
				underlyingStartY -= underlyingLayer.getRowHeightByPosition(hiddenPosition);
			}
		}

		startYCache.put(Long.valueOf(localRowPosition), Long.valueOf(underlyingStartY));
		return underlyingStartY;
	}
	
	// Hide/show

	/**
	 * Will check if the row at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * @param rowIndex The row index of the row whose visibility state
	 * 			should be checked.
	 * @return true if the row at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isRowIndexHidden(long rowIndex);

	/**
	 * Will collect and return all indexes of the rows that are hidden in this layer.
	 * Note: It is not intended that it also collects the row indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all row indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenRowIndexes();
	
	// Cache

	/**
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleRowIndexOrder = null;
		cachedVisibleRowPositionOrder = null;
		cachedHiddenRowIndexToPositionMap = null;
		startYCache.clear();
	}

	private Map getCachedVisibleRowIndexes() {
		if (cachedVisibleRowIndexOrder == null) {
			cacheVisibleRowIndexes();
		}
	// Height
	
	private Map getCachedVisibleRowPositons() {
		if (cachedVisibleRowPositionOrder == null) {
			cacheVisibleRowIndexes();
		}
		return cachedVisibleRowPositionOrder;
	}

	protected void cacheVisibleRowIndexes() {
		cachedVisibleRowIndexOrder = new HashMap();
		cachedVisibleRowPositionOrder = new HashMap();
		cachedHiddenRowIndexToPositionMap = new HashMap();
		startYCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		long rowPosition = 0;
		for (long parentRowPosition = 0; parentRowPosition < underlyingLayer.getRowCount(); parentRowPosition++) {
			long rowIndex = underlyingLayer.getRowIndexByPosition(parentRowPosition);

			if (!isRowIndexHidden(rowIndex)) {
				cachedVisibleRowIndexOrder.put(Long.valueOf(rowIndex), rowPosition);
				cachedVisibleRowPositionOrder.put(rowPosition, Long.valueOf(rowIndex));
				rowPosition++;
			} else {
				cachedHiddenRowIndexToPositionMap.put(Long.valueOf(rowIndex), Long.valueOf(rowPosition));
			}
		}
	}

}
=======
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractRowHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {

	private Map cachedVisibleRowIndexOrder;
	private Map cachedVisibleRowPositionOrder;
	
	private Map cachedHiddenRowIndexToPositionMap;

	private final Map startYCache = new HashMap();	
	
	
	public AbstractRowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}
	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Horizontal features

	// Columns
	
	@Override
	public int getColumnPositionByIndex(int columnIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}
	
	// Vertical features

	// Rows
	
	@Override
	public int getRowCount() {
	
		return getCachedVisibleRowIndexes().size();
	}
	
	@Override
	public int getRowIndexByPosition(int rowPosition) {
		if (rowPosition < 0 || rowPosition >= getRowCount()) {
			return -1;
		}

		Integer rowIndex = getCachedVisibleRowPositons().get(rowPosition);
		if (rowIndex != null) {
			return rowIndex.intValue();
		} else {
			return -1;
		}
	}
	
	@Override
	public int getRowPositionByIndex(int rowIndex) {
		final Integer position = getCachedVisibleRowIndexes().get(Integer.valueOf(rowIndex));
		return position != null ? position : -1;
	}
	
	public Collection getRowPositionsByIndexes(Collection rowIndexes) {
		Collection rowPositions = new HashSet();
		for (int rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		return rowPositions;
	}
	
	@Override
	public int localToUnderlyingRowPosition(int localRowPosition) {
		int rowIndex = getRowIndexByPosition(localRowPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}
	
	@Override
	public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, int underlyingRowPosition) {
		int rowIndex = getUnderlyingLayer().getRowIndexByPosition(underlyingRowPosition);
		int rowPosition = getRowPositionByIndex(rowIndex);
		if (rowPosition >= 0) {
			return rowPosition;
		} else {
			Integer hiddenRowPosition = cachedHiddenRowIndexToPositionMap.get(Integer.valueOf(rowIndex));
			if (hiddenRowPosition != null) {
				return hiddenRowPosition.intValue();
			} else {
				return -1;
			}
		}
	}

	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		Collection localRowPositionRanges = new ArrayList();

		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			int startRowPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start, underlyingRowPositionRange.end);
			int endRowPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingRowPositionRange.end, underlyingRowPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the
			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startRowPosition > -1 && startRowPosition < endRowPosition) {
				localRowPositionRanges.add(new Range(startRowPosition, endRowPosition));
			}
		}

		return localRowPositionRanges;
	}
	
	private int getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, int startUnderlyingPosition, int endUnderlyingPosition) {
		int localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		int offset = 0;
		while (localStartRowPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartRowPosition;
	}

	private int getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, int endUnderlyingPosition, int startUnderlyingPosition) {
		int localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		int offset = 0;
		while (localEndRowPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndRowPosition + 1;
	}
	
	
	@Override
			int rowIndex = underlyingLayer.getRowIndexByPosition(parentRowPosition);
	@Override
	public int getHeight() {
		int lastRowPosition = getRowCount() - 1;
		return getStartYOfRowPosition(lastRowPosition) + getRowHeightByPosition(lastRowPosition);
	}
	
	// Y
	
	@Override
	public int getRowPositionByY(int y) {
		return LayerUtil.getRowPositionByY(this, y);
	}
	public int getStartYOfRowPosition(int localRowPosition) {
		Integer cachedStartY = startYCache.get(Integer.valueOf(localRowPosition));
		if (cachedStartY != null) {
			return cachedStartY.intValue();
		}
		
		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		int underlyingPosition = localToUnderlyingRowPosition(localRowPosition);
		if (underlyingPosition < 0) {
			return -1;
		}
		int underlyingStartY = underlyingLayer.getStartYOfRowPosition(underlyingPosition);
		if (underlyingStartY < 0) {
			return -1;
		}

		for (Integer hiddenIndex : getHiddenRowIndexes()) {
			int hiddenPosition = underlyingLayer.getRowPositionByIndex(hiddenIndex.intValue());
			//if the hidden position is -1, it is hidden in the underlying layer
			//therefore the underlying layer should handle the positioning
			if (hiddenPosition >= 0 && hiddenPosition <= underlyingPosition) {
				underlyingStartY -= underlyingLayer.getRowHeightByPosition(hiddenPosition);
			}
		}

		startYCache.put(Integer.valueOf(localRowPosition), Integer.valueOf(underlyingStartY));
		return underlyingStartY;
	}
	
	// Hide/show

	/**
	 * Will check if the row at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * @param rowIndex The row index of the row whose visibility state
	 * 			should be checked.
	 * @return true if the row at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isRowIndexHidden(int rowIndex);

	/**
	 * Will collect and return all indexes of the rows that are hidden in this layer.
	 * Note: It is not intended that it also collects the row indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all row indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenRowIndexes();
	
	// Cache

	/**
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleRowIndexOrder = null;
		cachedVisibleRowPositionOrder = null;
		cachedHiddenRowIndexToPositionMap = null;
		startYCache.clear();
	}

	private Map getCachedVisibleRowIndexes() {
		if (cachedVisibleRowIndexOrder == null) {
			cacheVisibleRowIndexes();
		}
		return cachedVisibleRowIndexOrder;
	}
	
	private Map getCachedVisibleRowPositons() {
		if (cachedVisibleRowPositionOrder == null) {
			cacheVisibleRowIndexes();
		}
		return cachedVisibleRowPositionOrder;
	}

	protected void cacheVisibleRowIndexes() {
		cachedVisibleRowIndexOrder = new HashMap();
		cachedVisibleRowPositionOrder = new HashMap();
		cachedHiddenRowIndexToPositionMap = new HashMap();
		startYCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		int rowPosition = 0;
		for (int parentRowPosition = 0; parentRowPosition < underlyingLayer.getRowCount(); parentRowPosition++) {

			if (!isRowIndexHidden(rowIndex)) {
				cachedVisibleRowIndexOrder.put(Integer.valueOf(rowIndex), rowPosition);
				cachedVisibleRowPositionOrder.put(rowPosition, Integer.valueOf(rowIndex));
				rowPosition++;
			} else {
				cachedHiddenRowIndexToPositionMap.put(Integer.valueOf(rowIndex), Integer.valueOf(rowPosition));
			}
		}
	}

}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/AbstractRowHideShowLayer.java
Solution content
	/**

/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;


public abstract class AbstractRowHideShowLayer extends AbstractLayerTransform implements IUniqueIndexLayer {
	// Cache
	
		cachedVisibleRowIndexOrder = null;
	private Map cachedVisibleRowIndexOrder;
	private Map cachedVisibleRowPositionOrder;
	private Map cachedHiddenRowIndexToPositionMap;

	private final Map startYCache = new HashMap();	
	
	
	public AbstractRowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
	}
	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				invalidateCache();
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Horizontal features

	// Columns
	
	@Override
	public long getColumnPositionByIndex(long columnIndex) {
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getColumnPositionByIndex(columnIndex);
	}
	
	// Vertical features

	// Rows
	
	@Override
	public long getRowCount() {
		return getCachedVisibleRowIndexes().size();
	}
	
	@Override
	public long getRowIndexByPosition(long rowPosition) {
		if (rowPosition < 0 || rowPosition >= getRowCount()) {
			return NO_INDEX;
		}

		Long rowIndex = getCachedVisibleRowPositons().get(rowPosition);
		if (rowIndex != null) {
			return rowIndex.longValue();
		} else {
			return NO_INDEX;
		}
	}
	
	@Override
	public long getRowPositionByIndex(long rowIndex) {
		final Long position = getCachedVisibleRowIndexes().get(Long.valueOf(rowIndex));
		return position != null ? position : Long.MIN_VALUE;
	}
	
	public Collection getRowPositionsByIndexes(Collection rowIndexes) {
		Collection rowPositions = new HashSet();
		for (long rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		return rowPositions;
	}
	
	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		long rowIndex = getRowIndexByPosition(localRowPosition);
		return ((IUniqueIndexLayer) getUnderlyingLayer()).getRowPositionByIndex(rowIndex);
	}
	
	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		long  rowIndex = getUnderlyingLayer().getRowIndexByPosition(underlyingRowPosition);
		long  rowPosition = getRowPositionByIndex(rowIndex);
		if (rowPosition >= 0) {
			return rowPosition;
		} else {
			Long hiddenRowPosition = cachedHiddenRowIndexToPositionMap.get(Long.valueOf(rowIndex));
			if (hiddenRowPosition != null) {
				return hiddenRowPosition.longValue();
			} else {
				return Long.MIN_VALUE;
			}
		}
	}

	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		Collection localRowPositionRanges = new ArrayList();

		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			long  startRowPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start, underlyingRowPositionRange.end);
			long  endRowPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingRowPositionRange.end, underlyingRowPositionRange.start);

			// teichstaedt: fixes the problem that ranges where added even if the

			// corresponding startPosition weren't found in the underlying layer.
			// Without that fix a bunch of ranges of kind Range [-1, 180] which
			// causes strange behaviour in Freeze- and other Layers were returned.
			if (startRowPosition > -1 && startRowPosition < endRowPosition) {
				localRowPositionRanges.add(new Range(startRowPosition, endRowPosition));
			}
		}

		return localRowPositionRanges;
	}
	
	private long  getAdjustedUnderlyingToLocalStartPosition(ILayer sourceUnderlyingLayer, long  startUnderlyingPosition, long  endUnderlyingPosition) {
		long localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition);
		long offset = 0;
		while (localStartRowPosition < 0 && (startUnderlyingPosition + offset < endUnderlyingPosition)) {
			localStartRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, startUnderlyingPosition + offset++);
		}
		return localStartRowPosition;
	}

	private long getAdjustedUnderlyingToLocalEndPosition(ILayer sourceUnderlyingLayer, long endUnderlyingPosition, long startUnderlyingPosition) {
		long localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - 1);
		long offset = 0;
		while (localEndRowPosition < 0 && (endUnderlyingPosition - offset > startUnderlyingPosition)) {
			localEndRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, endUnderlyingPosition - offset++);
		}
		return localEndRowPosition + 1;
	}
	
	// Height
	
	@Override
	public long getHeight() {
		long lastRowPosition = getRowCount() - 1;
		return getStartYOfRowPosition(lastRowPosition) + getRowHeightByPosition(lastRowPosition);
	}
	
	// Y
	
	@Override
	public long getRowPositionByY(long y) {
		return LayerUtil.getRowPositionByY(this, y);
	}
	
	@Override
	public long getStartYOfRowPosition(long localRowPosition) {
		Long cachedStartY = startYCache.get(Long.valueOf(localRowPosition));
		if (cachedStartY != null) {
			return cachedStartY.longValue();
		}
		
		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		long underlyingPosition = localToUnderlyingRowPosition(localRowPosition);
		if (underlyingPosition < 0) {
			return -1;
		}
		long underlyingStartY = underlyingLayer.getStartYOfRowPosition(underlyingPosition);

		for (Long hiddenIndex : getHiddenRowIndexes()) {
			long hiddenPosition = underlyingLayer.getRowPositionByIndex(hiddenIndex.longValue());
			//if the hidden position is -1, it is hidden in the underlying layer
			//therefore the underlying layer should handle the positioning
			if (hiddenPosition >= 0 && hiddenPosition <= underlyingPosition) {
				underlyingStartY -= underlyingLayer.getRowHeightByPosition(hiddenPosition);
			}
		}

		startYCache.put(Long.valueOf(localRowPosition), Long.valueOf(underlyingStartY));
		return underlyingStartY;
	}
	
	// Hide/show

	/**
	 * Will check if the row at the specified index is hidden or not. Checks this
	 * layer and also the sublayers for the visibility.
	 * @param rowIndex The row index of the row whose visibility state
	 * 			should be checked.
	 * @return true if the row at the specified index is hidden,
	 * 			false if it is visible.
	 */
	public abstract boolean isRowIndexHidden(long rowIndex);

	/**
	 * Will collect and return all indexes of the rows that are hidden in this layer.
	 * Note: It is not intended that it also collects the row indexes of underlying
	 * 		 layers. This would cause issues on calculating positions as every layer
	 * 		 is responsible for those calculations itself. 
	 * @return Collection of all row indexes that are hidden in this layer.
	 */
	public abstract Collection getHiddenRowIndexes();
	
	 * Invalidate the cache to ensure that information is rebuild.
	 */
	protected void invalidateCache() {
		cachedVisibleRowPositionOrder = null;
		cachedHiddenRowIndexToPositionMap = null;
		startYCache.clear();
	}

	private Map getCachedVisibleRowIndexes() {
		if (cachedVisibleRowIndexOrder == null) {
			cacheVisibleRowIndexes();
		}
		return cachedVisibleRowIndexOrder;
	}
	
	private Map getCachedVisibleRowPositons() {
		if (cachedVisibleRowPositionOrder == null) {
			cacheVisibleRowIndexes();
		}
		return cachedVisibleRowPositionOrder;
	}

	protected void cacheVisibleRowIndexes() {
		cachedVisibleRowIndexOrder = new HashMap();
		cachedVisibleRowPositionOrder = new HashMap();
		cachedHiddenRowIndexToPositionMap = new HashMap();
		startYCache.clear();

		ILayer underlyingLayer = getUnderlyingLayer();
		long rowPosition = 0;
		for (long parentRowPosition = 0; parentRowPosition < underlyingLayer.getRowCount(); parentRowPosition++) {
			long rowIndex = underlyingLayer.getRowIndexByPosition(parentRowPosition);

			if (!isRowIndexHidden(rowIndex)) {
				cachedVisibleRowIndexOrder.put(Long.valueOf(rowIndex), rowPosition);
				cachedVisibleRowPositionOrder.put(rowPosition, Long.valueOf(rowIndex));
				rowPosition++;
			} else {
				cachedHiddenRowIndexToPositionMap.put(Long.valueOf(rowIndex), Long.valueOf(rowPosition));
			}
		}
	}

}
File
AbstractRowHideShowLayer.java
Developer's decision
Combination
Kind of conflict
Class declaration
Comment
Import
Package declaration
Chunk
Conflicting content
 * Interface for creating a layer for row hide/show behaviour. The main idea behind it
 * is that a layer that implements this interface is intended to handle the row hide/show
 * commands, so it isn't necessary to create new commands for every layer. 
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
=======
 * 
 * @author Dirk Fauth
 *
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
 */
public interface IRowHideShowCommandLayer {
Solution content
 * Interface for creating a layer for row hide/show behaviour. The main idea behind it
 * is that a layer that implements this interface is intended to handle the row hide/show
 * commands, so it isn't necessary to create new commands for every layer. 
 */
public interface IRowHideShowCommandLayer {
File
IRowHideShowCommandLayer.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	 * Hide the rows at the given positions. 
	 * @param rowPositions The positions of the rows to hide.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	void hideRowPositions(Collection rowPositions);
=======
	void hideRowPositions(Collection rowPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	
	/**
	 * Hide the rows with the given indexes. 
Solution content
	 * Hide the rows at the given positions. 
	 * @param rowPositions The positions of the rows to hide.
	 */
	void hideRowPositions(Collection rowPositions);
	
	/**
	 * Hide the rows with the given indexes. 
File
IRowHideShowCommandLayer.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
	 * Hide the rows with the given indexes. 
	 * @param rowIndexes The indexes of the rows to hide.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	void hideRowIndexes(Collection rowIndexes);
=======
	void hideRowIndexes(Collection rowIndexes);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	
	/**
	 * Show the rows with the given indexes again. 
Solution content
	 * Hide the rows with the given indexes. 
	 * @param rowIndexes The indexes of the rows to hide.
	 */
	void hideRowIndexes(Collection rowIndexes);
	
	/**
	 * Show the rows with the given indexes again. 
File
IRowHideShowCommandLayer.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
	 * Show the rows with the given indexes again. 
	 * @param rowIndexes The indexes of the rows that should be showed again.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	void showRowIndexes(Collection rowIndexes);
=======
	void showRowIndexes(Collection rowIndexes);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/IRowHideShowCommandLayer.java
	
	/**
	 * Show all rows that where previously hidden.
Solution content
	 * Show the rows with the given indexes again. 
	 * @param rowIndexes The indexes of the rows that should be showed again.
	 */
	void showRowIndexes(Collection rowIndexes);
	
	/**
	 * Show all rows that where previously hidden.
File
IRowHideShowCommandLayer.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/RowHideShowLayer.java
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowHideCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowShowCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllRowsCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.event.HideRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.hideshow.event.ShowRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralChangeEventHelper;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;


public class RowHideShowLayer extends AbstractRowHideShowLayer implements IRowHideShowCommandLayer {

	public static final String PERSISTENCE_KEY_HIDDEN_ROW_INDEXES = ".hiddenRowIndexes"; //$NON-NLS-1$
	
	private final Set hiddenRowIndexes;
	
	public RowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
		this.hiddenRowIndexes = new TreeSet();
		
		registerCommandHandler(new MultiRowHideCommandHandler(this));
		registerCommandHandler(new RowHideCommandHandler(this));
		registerCommandHandler(new ShowAllRowsCommandHandler(this));
		registerCommandHandler(new MultiRowShowCommandHandler(this));
	}

	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				Collection rowDiffs = structuralChangeEvent.getRowDiffs();
				if (rowDiffs != null && !rowDiffs.isEmpty()) {
					StructuralChangeEventHelper.handleRowDelete(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
					StructuralChangeEventHelper.handleRowInsert(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
				}
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Persistence
	
	@Override
	public void saveState(String prefix, Properties properties) {
		if (hiddenRowIndexes.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : hiddenRowIndexes) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
			properties.setProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES, strBuilder.toString());
		}
		
		super.saveState(prefix, properties);
	}
	
	@Override
	public void loadState(String prefix, Properties properties) {
		hiddenRowIndexes.clear();
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES);
		if (property != null) {
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				hiddenRowIndexes.add(Long.valueOf(index));
			}
		}
		
		super.loadState(prefix, properties);
	}
	
	// Hide/show	
	
	@Override
	public boolean isRowIndexHidden(long rowIndex) {
		return hiddenRowIndexes.contains(Long.valueOf(rowIndex));
	}

	@Override
	public Collection getHiddenRowIndexes() {
		return hiddenRowIndexes; 
	}
	
	@Override
	public void hideRowPositions(Collection rowPositions) {
		Set rowIndexes = new HashSet();
		for (Long rowPosition : rowPositions) {
			rowIndexes.add(getRowIndexByPosition(rowPosition));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}

	@Override
	public void hideRowIndexes(Collection rowIndexes) {
		Set rowPositions = new HashSet();
		for (Long rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}
	
	@Override
	public void showRowIndexes(Collection rowIndexes) {
		hiddenRowIndexes.removeAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, getRowPositionsByIndexes(rowIndexes)));
	}

	@Override
	public void showAllRows() {
		Collection hiddenRows = new ArrayList(hiddenRowIndexes);
		hiddenRowIndexes.clear();
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, hiddenRows));
	}
}
=======
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowHideCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowShowCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllRowsCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.event.HideRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.hideshow.event.ShowRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralChangeEventHelper;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;


public class RowHideShowLayer extends AbstractRowHideShowLayer implements IRowHideShowCommandLayer {

	public static final String PERSISTENCE_KEY_HIDDEN_ROW_INDEXES = ".hiddenRowIndexes"; //$NON-NLS-1$
	
	private final Set hiddenRowIndexes;
	
	public RowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
		this.hiddenRowIndexes = new TreeSet();
		
		registerCommandHandler(new MultiRowHideCommandHandler(this));
		registerCommandHandler(new RowHideCommandHandler(this));
		registerCommandHandler(new ShowAllRowsCommandHandler(this));
		registerCommandHandler(new MultiRowShowCommandHandler(this));
	}

	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				Collection rowDiffs = structuralChangeEvent.getRowDiffs();
				if (rowDiffs != null && !rowDiffs.isEmpty() && !StructuralChangeEventHelper.isReorder(rowDiffs)) {
					StructuralChangeEventHelper.handleRowDelete(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
					StructuralChangeEventHelper.handleRowInsert(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
				}
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Persistence
	
	@Override
	public void saveState(String prefix, Properties properties) {
		if (hiddenRowIndexes.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Integer index : hiddenRowIndexes) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
			properties.setProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES, strBuilder.toString());
		}
		
		super.saveState(prefix, properties);
	}
	
	@Override
	public void loadState(String prefix, Properties properties) {
		hiddenRowIndexes.clear();
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES);
		if (property != null) {
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				hiddenRowIndexes.add(Integer.valueOf(index));
			}
		}
		
		super.loadState(prefix, properties);
	}
	
	// Hide/show	
	
	@Override
	public boolean isRowIndexHidden(int rowIndex) {
		return hiddenRowIndexes.contains(Integer.valueOf(rowIndex));
	}

	@Override
	public Collection getHiddenRowIndexes() {
		return hiddenRowIndexes; 
	}
	
	@Override
	public void hideRowPositions(Collection rowPositions) {
		Set rowIndexes = new HashSet();
		for (Integer rowPosition : rowPositions) {
			rowIndexes.add(getRowIndexByPosition(rowPosition));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}

	@Override
	public void hideRowIndexes(Collection rowIndexes) {
		Set rowPositions = new HashSet();
		for (Integer rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}
	
	@Override
	public void showRowIndexes(Collection rowIndexes) {
		hiddenRowIndexes.removeAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, getRowPositionsByIndexes(rowIndexes)));
	}

	@Override
	public void showAllRows() {
		Collection hiddenRows = new ArrayList(hiddenRowIndexes);
		hiddenRowIndexes.clear();
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, hiddenRows));
	}
}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/RowHideShowLayer.java
Solution content
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.hideshow;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowHideCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowShowCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommandHandler;
	@Override
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllRowsCommandHandler;
import org.eclipse.nebula.widgets.nattable.hideshow.event.HideRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.hideshow.event.ShowRowPositionsEvent;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralChangeEventHelper;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;


public class RowHideShowLayer extends AbstractRowHideShowLayer implements IRowHideShowCommandLayer {

	public static final String PERSISTENCE_KEY_HIDDEN_ROW_INDEXES = ".hiddenRowIndexes"; //$NON-NLS-1$
	
	private final Set hiddenRowIndexes;
	
	public RowHideShowLayer(IUniqueIndexLayer underlyingLayer) {
		super(underlyingLayer);
		this.hiddenRowIndexes = new TreeSet();
		
		registerCommandHandler(new MultiRowHideCommandHandler(this));
		registerCommandHandler(new RowHideCommandHandler(this));
		registerCommandHandler(new ShowAllRowsCommandHandler(this));
		registerCommandHandler(new MultiRowShowCommandHandler(this));
	}

	
	@Override
	public void handleLayerEvent(ILayerEvent event) {
		if (event instanceof IStructuralChangeEvent) {
			IStructuralChangeEvent structuralChangeEvent = (IStructuralChangeEvent) event;
			if (structuralChangeEvent.isVerticalStructureChanged()) {
				Collection rowDiffs = structuralChangeEvent.getRowDiffs();
				if (rowDiffs != null && !rowDiffs.isEmpty()) {
					StructuralChangeEventHelper.handleRowDelete(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
					StructuralChangeEventHelper.handleRowInsert(rowDiffs, underlyingLayer, hiddenRowIndexes, false);
				}
			}
		}
		super.handleLayerEvent(event);
	}
	
	// Persistence
	
	@Override
	public void saveState(String prefix, Properties properties) {
		if (hiddenRowIndexes.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : hiddenRowIndexes) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
			properties.setProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES, strBuilder.toString());
		}
		
		super.saveState(prefix, properties);
	}
	
	@Override
	public void loadState(String prefix, Properties properties) {
		hiddenRowIndexes.clear();
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_INDEXES);
		if (property != null) {
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				hiddenRowIndexes.add(Long.valueOf(index));
			}
		}
		
		super.loadState(prefix, properties);
	}
	
	// Hide/show	
	
	@Override
	public boolean isRowIndexHidden(long rowIndex) {
		return hiddenRowIndexes.contains(Long.valueOf(rowIndex));
	}

	@Override
	public Collection getHiddenRowIndexes() {
		return hiddenRowIndexes; 
	}
	
	@Override
	public void hideRowPositions(Collection rowPositions) {
		Set rowIndexes = new HashSet();
		for (Long rowPosition : rowPositions) {
			rowIndexes.add(getRowIndexByPosition(rowPosition));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}

	public void hideRowIndexes(Collection rowIndexes) {
		Set rowPositions = new HashSet();
		for (Long rowIndex : rowIndexes) {
			rowPositions.add(getRowPositionByIndex(rowIndex));
		}
		hiddenRowIndexes.addAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new HideRowPositionsEvent(this, rowPositions));
	}
	
	@Override
	public void showRowIndexes(Collection rowIndexes) {
		hiddenRowIndexes.removeAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, getRowPositionsByIndexes(rowIndexes)));
	}

	@Override
	public void showAllRows() {
		Collection hiddenRows = new ArrayList(hiddenRowIndexes);
		hiddenRowIndexes.clear();
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, hiddenRows));
	}
}
File
RowHideShowLayer.java
Developer's decision
Version 1
Kind of conflict
Class declaration
Comment
Import
Package declaration
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.ILayer;


<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiColumnHideCommand.java
	public MultiColumnHideCommand(ILayer layer, long columnPosition) {
		this(layer, new long[] { columnPosition });
	}

	public MultiColumnHideCommand(ILayer layer, long[] columnPositions) {
		super(layer, columnPositions);
=======
public class MultiColumnHideCommand extends AbstractDimPositionsCommand {
	
	
	public MultiColumnHideCommand(ILayer layer, int columnPosition) {
		this(layer, new RangeList(columnPosition));
	}
	
	public MultiColumnHideCommand(ILayer layer, Collection columnPositions) {
		super(layer.getDim(HORIZONTAL), columnPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiColumnHideCommand.java
	}
	
	protected MultiColumnHideCommand(MultiColumnHideCommand command) {
Solution content
import org.eclipse.nebula.widgets.nattable.layer.ILayer;


public class MultiColumnHideCommand extends AbstractDimPositionsCommand {
	
	
	public MultiColumnHideCommand(ILayer layer, long columnPosition) {
		this(layer, new RangeList(columnPosition));
	}
	
	public MultiColumnHideCommand(ILayer layer, Collection columnPositions) {
		super(layer.getDim(HORIZONTAL), columnPositions);
	}
	
	protected MultiColumnHideCommand(MultiColumnHideCommand command) {
File
MultiColumnHideCommand.java
Developer's decision
Combination
Kind of conflict
Class signature
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.ILayer;


<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowHideCommand.java
	public MultiRowHideCommand(ILayer layer, long rowPosition) {
		this(layer, new long[] { rowPosition });
	}

	public MultiRowHideCommand(ILayer layer, long[] rowPositions) {
		super(layer, rowPositions);
=======
public class MultiRowHideCommand extends AbstractDimPositionsCommand {
	
	
	public MultiRowHideCommand(ILayer layer, int rowPosition) {
		this(layer, new RangeList(rowPosition));
	}
	
	public MultiRowHideCommand(ILayer layer, Collection rowPositions) {
		super(layer.getDim(VERTICAL), rowPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowHideCommand.java
	}
	
	protected MultiRowHideCommand(MultiRowHideCommand command) {
Solution content
import org.eclipse.nebula.widgets.nattable.layer.ILayer;


public class MultiRowHideCommand extends AbstractDimPositionsCommand {
	
	
	public MultiRowHideCommand(ILayer layer, long rowPosition) {
		this(layer, new RangeList(rowPosition));
	}
	
	public MultiRowHideCommand(ILayer layer, Collection rowPositions) {
		super(layer.getDim(VERTICAL), rowPositions);
	}
	
	protected MultiRowHideCommand(MultiRowHideCommand command) {
File
MultiRowHideCommand.java
Developer's decision
Combination
Kind of conflict
Class signature
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
	/**
	 * The indexes of the rows that should be showed again.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
	private final Collection rowIndexes;
=======
	private final Collection rowIndexes;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java

	/**
	 * 
Solution content
	/**
	 * The indexes of the rows that should be showed again.
	 */
	private final Collection rowIndexes;

	/**
	 * 
File
MultiRowShowCommand.java
Developer's decision
Version 1
Kind of conflict
Attribute
Chunk
Conflicting content
	 * 
	 * @param rowIndexes The indexes of the rows that should be showed again.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
	public MultiRowShowCommand(Collection rowIndexes) {
=======
	public MultiRowShowCommand(Collection rowIndexes) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
		this.rowIndexes = rowIndexes;
	}
Solution content
	 * 
	 * @param rowIndexes The indexes of the rows that should be showed again.
	 */
	public MultiRowShowCommand(Collection rowIndexes) {
		this.rowIndexes = rowIndexes;
	}
File
MultiRowShowCommand.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * 
	 * @return The indexes of the rows that should be showed again.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
	public Collection getRowIndexes() {
=======
	public Collection getRowIndexes() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
		return rowIndexes;
	}
	
Solution content
	 * 
	 * @return The indexes of the rows that should be showed again.
	 */
	public Collection getRowIndexes() {
		return rowIndexes;
	}
	
File
MultiRowShowCommand.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	
	@Override
	public MultiRowShowCommand cloneCommand() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
		return new MultiRowShowCommand(new ArrayList(this.rowIndexes));
=======
		return new MultiRowShowCommand(new ArrayList(this.rowIndexes));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/hideshow/command/MultiRowShowCommand.java
	}
}
Solution content
	
	@Override
	public MultiRowShowCommand cloneCommand() {
		return new MultiRowShowCommand(new ArrayList(this.rowIndexes));
	}
}
File
MultiRowShowCommand.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Return statement
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.ArrayList;
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
Solution content
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
File
AbstractLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfiguration;
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.internal.LayerListenerList;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
Solution content
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfiguration;
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.internal.LayerListenerList;
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
File
AbstractLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
public abstract class AbstractLayer implements ILayer {
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	private ILayerDim h;
	private ILayerDim v;
=======
	private ILayerDim hDim;
	private ILayerDim vDim;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	
	private String regionName;
	protected ILayerPainter layerPainter;
Solution content
public abstract class AbstractLayer implements ILayer {
	
	
	private String regionName;
	private ILayerDim hDim;
	private ILayerDim vDim;
	
	protected ILayerPainter layerPainter;
File
AbstractLayer.java
Developer's decision
Version 2
Kind of conflict
Attribute
Chunk
Conflicting content
	
	// Dispose
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
=======
	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public void dispose() {
	}
	
Solution content
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// ~(ListenerList)
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfiguration;
import org.eclipse.nebula.widgets.nattable.coordinate.Orientation;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.internal.LayerListenerList;
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEventHandler;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.layer.GridLineCellLayerPainter;
import org.eclipse.nebula.widgets.nattable.painter.layer.ILayerPainter;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;


/**
 * Base layer implementation with common methods for managing listeners and caching, etc.
 */
public abstract class AbstractLayer implements ILayer {
	
	
	private ILayerDim hDim;
	private ILayerDim vDim;
	
	private String regionName;
	protected ILayerPainter layerPainter;
	private IClientAreaProvider clientAreaProvider = IClientAreaProvider.DEFAULT;
	private IConfigLabelAccumulator configLabelAccumulator;
	
	private final Map, ILayerCommandHandler> commandHandlers = new LinkedHashMap, ILayerCommandHandler>();
	private final Map, ILayerEventHandler> eventHandlers = new HashMap, ILayerEventHandler>();
	
	private final List persistables = new LinkedList();
	private final LayerListenerList listeners = new LayerListenerList();
	private final Collection configurations = new ArrayList();
	
	
	protected AbstractLayer() {
		updateDims();
		
		this.layerPainter = createPainter();
	}
	
	
	// Dims
	
	/**
	 * Updates the layer dimensions.
	 * 
	 * Override this method to set custom layer dimension implementations.
	 */
	protected void updateDims() {
		setDim(new HorizontalLayerDim(this));
		setDim(new VerticalLayerDim(this));
	}
	
	/**
	 * Sets the layer dimension of this layer for the orientation of the given dimension.
	 * 
	 * This method use usually called in {@link #updateDims()}.
	 * 
	 * @param dim the layer dimension
	 */
	protected void setDim(/*@NonNull*/ final ILayerDim dim) {
		if (dim == null) {
			throw new NullPointerException("dim"); //$NON-NLS-1$
		}
		
		if (dim.getOrientation() == HORIZONTAL) {
			this.hDim = dim;
		}
		else {
			this.vDim = dim;
		}
	}
	
	@Override
	public ILayerDim getDim(final Orientation orientation) {
		if (orientation == null) {
			throw new NullPointerException("orientation"); //$NON-NLS-1$
		}
		
		return (orientation == HORIZONTAL) ? this.hDim : this.vDim;
	}
	
	
	protected ILayerPainter createPainter() {
		return null;
	}
	
	
	// Dispose
	
	@Override
	public void dispose() {
	}
	
	
	// Regions
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
		LabelStack regionLabels = new LabelStack();
		if (regionName != null) {
			regionLabels.addLabel(regionName);
		}
		return regionLabels;
	}
	
	public String getRegionName() {
		return regionName;
	}
	
	public void setRegionName(String regionName) {
		this.regionName = regionName;
	}
	
	// Config lables
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		LabelStack configLabels = new LabelStack();
		if (configLabelAccumulator != null) {
			configLabelAccumulator.accumulateConfigLabels(configLabels, columnPosition, rowPosition);
		}
		if (regionName != null) {
			configLabels.addLabel(regionName);
		}
		return configLabels;
	}
	
	public IConfigLabelAccumulator getConfigLabelAccumulator() {
		return configLabelAccumulator;
	}
	
	public void setConfigLabelAccumulator(IConfigLabelAccumulator cellLabelAccumulator) {
		this.configLabelAccumulator = cellLabelAccumulator;
	}
	
	// Persistence
	
	@Override
	public void saveState(String prefix, Properties properties) {
		for (IPersistable persistable : persistables) {
			persistable.saveState(prefix, properties);
		}
	}
	
	@Override
	public void loadState(String prefix, Properties properties) {
		for (IPersistable persistable : persistables) {
			persistable.loadState(prefix, properties);
		}
	}
	  
	@Override
	public void registerPersistable(IPersistable persistable){
		persistables.add(persistable);
	}

	@Override
	public void unregisterPersistable(IPersistable persistable){
		persistables.remove(persistable);
	}
	
	// Configuration
	
	public void addConfiguration(IConfiguration configuration) {
		configurations.add(configuration);
	}

	public void clearConfiguration() {
		configurations.clear();
	}
	
	@Override
	public void configure(ConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
		for (IConfiguration configuration : configurations) {
			configuration.configureLayer(this);
			configuration.configureRegistry(configRegistry);
			configuration.configureUiBindings(uiBindingRegistry);
		}
	}
	
	// Commands
	
	@Override
	@SuppressWarnings("unchecked")
	public boolean doCommand(ILayerCommand command) {
		for (Class commandClass : commandHandlers.keySet()) {
			if (commandClass.isInstance(command)) {
				ILayerCommandHandler commandHandler = commandHandlers.get(commandClass);
				if (commandHandler.doCommand(this, command)) {
					return true;
				}
			}
		}
		
		return false;
	}
	
	// Command handlers
	
	/**
	 * Layers should use this method to register their command handlers
	 * and call it from their constructor. This allows easy overriding if 
	 * required of command handlers 
	 */
	protected void registerCommandHandlers() {
		// No op
	}
	
	@Override
	public void registerCommandHandler(ILayerCommandHandler commandHandler) {
		commandHandlers.put(commandHandler.getCommandClass(), commandHandler);
	}

	@Override
	public void unregisterCommandHandler(Class commandClass) {
		commandHandlers.remove(commandClass);
	}
	
	// Events
	
	@Override
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
	}
	
	@Override
	public void removeLayerListener(ILayerListener listener) {
		listeners.remove(listener);
	}
	
	/**
	 * Handle layer event notification. Convert it to your context
	 * and propagate UP.
	 *  
	 * If you override this method you MUST NOT FORGET to raise
	 * the event up the layer stack by calling super.fireLayerEvent(event)
	 * - unless you plan to eat the event yourself.
	 **/
	@Override
	@SuppressWarnings("unchecked")
	public void handleLayerEvent(ILayerEvent event) {
		for (Class eventClass : eventHandlers.keySet()) {
			if (eventClass.isInstance(event)) {
				ILayerEventHandler eventHandler = eventHandlers.get(eventClass);
				eventHandler.handleLayerEvent(event);
			}
		}
		
		// Pass on the event to our parent
		if (event.convertToLocal(this)) {
			fireLayerEvent(event);
		}
	}
	
	public void registerEventHandler(ILayerEventHandler eventHandler) {
		eventHandlers.put(eventHandler.getLayerEventClass(), eventHandler);
	}
	
	public void unregisterEventHandler(ILayerEventHandler eventHandler) {
		eventHandlers.remove(eventHandler.getLayerEventClass());
	}
	
	/**
	 * Pass the event to all the {@link ILayerListener} registered on this layer.
	 * A cloned copy is passed to each listener.
	 */
	@Override
	public void fireLayerEvent(ILayerEvent event) {
		final ILayerListener[] currentListeners = listeners.getListeners();
		final int last = currentListeners.length - 1;
		if (last >= 0) {
			// Fire cloned event to first n-1 listeners; fire original event to last listener
			for (int i = 0; i < last; i++) {
				currentListeners[i].handleLayerEvent(event.cloneEvent());
			}
			currentListeners[last].handleLayerEvent(event);
		}
	}
	
	/**
	 * @return {@link ILayerPainter}. Defaults to {@link GridLineCellLayerPainter}
	 */
	@Override
	public ILayerPainter getLayerPainter() {
		if (layerPainter == null) {
			layerPainter = new GridLineCellLayerPainter();
		}
		return layerPainter;
	}
	
	protected void setLayerPainter(ILayerPainter layerPainter) {
		this.layerPainter = layerPainter;
	}

	// Client area
	
	@Override
	public IClientAreaProvider getClientAreaProvider() {
		return clientAreaProvider;
	}
	
	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
		this.clientAreaProvider = clientAreaProvider;
	}
	
	@Override
	public String toString() {
		return getClass().getSimpleName();
	}
	
	@Override
	public ILayerCell getCellByPosition(long columnPosition, long rowPosition) {
		if (columnPosition < 0 || columnPosition >= getColumnCount()
				|| rowPosition < 0 || rowPosition >= getRowCount()) {
			return null;
		}
		
		return new LayerCell(this,
				new LayerCellDim(HORIZONTAL, getColumnIndexByPosition(columnPosition),
						columnPosition ),
				new LayerCellDim(VERTICAL, getRowIndexByPosition(rowPosition),
						rowPosition ));
	}
	
	@Override
	public Rectangle getBoundsByPosition(long columnPosition, long rowPosition) {
		ILayerCell cell = getCellByPosition(columnPosition, rowPosition);
		
		long xOffset = -1;
		long yOffset = -1;
		long width = 0;
		long height = 0;
		{	final ILayerDim dim = cell.getLayer().getDim(HORIZONTAL);
			long cellPosition = cell.getColumnPosition();
			final long start = cell.getOriginColumnPosition();
			final long end = start + cell.getColumnSpan();
			
			xOffset = dim.getPositionStart(cellPosition, cell.getOriginColumnPosition());
			
			for (long position = cell.getOriginColumnPosition(); position < end; position++) {
				width += dim.getPositionSize(cellPosition, position);
			}
		}
		{	final ILayerDim dim = cell.getLayer().getDim(VERTICAL);
			long cellPosition = cell.getRowPosition();
			final long start = cell.getOriginRowPosition();
			final long end = start + cell.getRowSpan();
			
			yOffset = dim.getPositionStart(cellPosition, cell.getOriginRowPosition());
			
			for (long position = cell.getOriginRowPosition(); position < end; position++) {
				height += dim.getPositionSize(cellPosition, position);
			}
		}
		
		return new Rectangle(xOffset, yOffset, width, height);
	}
	
	@Override
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return configRegistry.getConfigAttribute(CellConfigAttributes.CELL_PAINTER, cell.getDisplayMode(), cell.getConfigLabels().getLabels());
	}
	
}
File
AbstractLayer.java
Developer's decision
Manual
Kind of conflict
Annotation
Chunk
Conflicting content
	
	// Regions
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public LabelStack getRegionLabelsByXY(long x, long y) {
=======
	@Override
	public LabelStack getRegionLabelsByXY(int x, int y) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
		LabelStack regionLabels = new LabelStack();
		if (regionName != null) {
			regionLabels.addLabel(regionName);
Solution content
	@Override
	// Regions
	
	protected ILayerPainter createPainter() {
		return null;
	}
	
	
	// Dispose
	
	
	public void dispose() {
	}
	
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
		LabelStack regionLabels = new LabelStack();
		if (regionName != null) {
			regionLabels.addLabel(regionName);
File
AbstractLayer.java
Developer's decision
Manual
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	
	// Config lables
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
=======
	@Override
	public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
		LabelStack configLabels = new LabelStack();
		if (configLabelAccumulator != null) {
			configLabelAccumulator.accumulateConfigLabels(configLabels, columnPosition, rowPosition);
Solution content
	
	// Config lables
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		LabelStack configLabels = new LabelStack();
		if (configLabelAccumulator != null) {
			configLabelAccumulator.accumulateConfigLabels(configLabels, columnPosition, rowPosition);
File
AbstractLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	}
	
	// Events
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	
=======

	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
	}
Solution content
	}
	
	// Events
	
	@Override
	public void addLayerListener(ILayerListener listener) {
		listeners.add(listener);
	}
File
AbstractLayer.java
Developer's decision
Version 2
Kind of conflict
Annotation
Chunk
Conflicting content
		listeners.remove(listener);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
=======
	@Override
	public boolean hasLayerListener(Class layerListenerClass) {
		for (ILayerListener listener : listeners) {
			if (listener.getClass().equals(layerListenerClass)) {
				return true;
			}
		}
		return false;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	/**
	 * Handle layer event notification. Convert it to your context
	 * and propagate UP.
Solution content
		listeners.remove(listener);
	}
	
	/**
	 * Handle layer event notification. Convert it to your context
	 * and propagate UP.
File
AbstractLayer.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
		return getClass().getSimpleName();
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public ILayerCell getCellByPosition(long columnPosition, long rowPosition) {
=======
	@Override
	public ILayerCell getCellByPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
		if (columnPosition < 0 || columnPosition >= getColumnCount()
				|| rowPosition < 0 || rowPosition >= getRowCount()) {
			return null;
Solution content
		return getClass().getSimpleName();
	}
	
	@Override
	public ILayerCell getCellByPosition(long columnPosition, long rowPosition) {
		if (columnPosition < 0 || columnPosition >= getColumnCount()
				|| rowPosition < 0 || rowPosition >= getRowCount()) {
			return null;
File
AbstractLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
						rowPosition ));
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public Rectangle getBoundsByPosition(long columnPosition, long rowPosition) {
=======
	@Override
	public Rectangle getBoundsByPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
		ILayerCell cell = getCellByPosition(columnPosition, rowPosition);
		
		long xOffset = -1;
Solution content
						rowPosition ));
	}
	
	@Override
	public Rectangle getBoundsByPosition(long columnPosition, long rowPosition) {
		ILayerCell cell = getCellByPosition(columnPosition, rowPosition);
		
		long xOffset = -1;
File
AbstractLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
		return new Rectangle(xOffset, yOffset, width, height);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
=======
	@Override
	public String getDisplayModeByPosition(int columnPosition, int rowPosition) {
		return DisplayMode.NORMAL;
	}
	
	@Override
	public ICellPainter getCellPainter(int columnPosition, int rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayer.java
		return configRegistry.getConfigAttribute(CellConfigAttributes.CELL_PAINTER, cell.getDisplayMode(), cell.getConfigLabels().getLabels());
	}
	
Solution content
		return new Rectangle(xOffset, yOffset, width, height);
	}
	
	@Override
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return configRegistry.getConfigAttribute(CellConfigAttributes.CELL_PAINTER, cell.getDisplayMode(), cell.getConfigLabels().getLabels());
	}
	
File
AbstractLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.layer;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;
=======
import org.eclipse.nebula.widgets.nattable.layer.cell.TranslatedLayerCell;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.layer.ILayerPainter;
Solution content
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.layer.ILayerPainter;
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 * class to implement specific kinds of layer transformations.
 */
public abstract class AbstractLayerTransform extends AbstractLayer {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	
	protected ILayer underlyingLayer;
	
	
	public AbstractLayerTransform() {
	}
	
	public AbstractLayerTransform(ILayer underlyingLayer) {
		setUnderlyingLayer(underlyingLayer);
	}
	
	
=======

		setUnderlyingLayer(underlyingLayer);
	}

	protected ILayer underlyingLayer;

	public AbstractLayerTransform() {
	}

	public AbstractLayerTransform(ILayer underlyingLayer) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	protected void setUnderlyingLayer(ILayer underlyingLayer) {
		this.underlyingLayer = underlyingLayer;
		this.underlyingLayer.setClientAreaProvider(getClientAreaProvider());
Solution content
 * class to implement specific kinds of layer transformations.
 */
public abstract class AbstractLayerTransform extends AbstractLayer {
	
	
	protected ILayer underlyingLayer;
	
	
	public AbstractLayerTransform() {
	}
	
	public AbstractLayerTransform(ILayer underlyingLayer) {
		setUnderlyingLayer(underlyingLayer);
	}
	
	
	protected void setUnderlyingLayer(ILayer underlyingLayer) {
		this.underlyingLayer = underlyingLayer;
		this.underlyingLayer.setClientAreaProvider(getClientAreaProvider());
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method declaration
Chunk
Conflicting content
		this.underlyingLayer.setClientAreaProvider(getClientAreaProvider());
		this.underlyingLayer.addLayerListener(this);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	protected ILayer getUnderlyingLayer() {
		return underlyingLayer;
	}
	
=======

	protected ILayer getUnderlyingLayer() {
		return underlyingLayer;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	// Dispose
	
	@Override
Solution content
		this.underlyingLayer.setClientAreaProvider(getClientAreaProvider());
		this.underlyingLayer.addLayerListener(this);
	}
	
	protected ILayer getUnderlyingLayer() {
		return underlyingLayer;
	}
	
	// Dispose
	
	@Override
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
	}
	
	// Persistence
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	@Override
	public void saveState(String prefix, Properties properties) {
		underlyingLayer.saveState(prefix, properties);
		super.saveState(prefix, properties);
	}
	
=======

	@Override
	public void saveState(String prefix, Properties properties) {
		super.saveState(prefix, properties);
		underlyingLayer.saveState(prefix, properties);
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	/**
	 * Underlying layers must load state first.
	 * If this is not done, {@link IStructuralChangeEvent} from underlying
Solution content
	
	}
	
	// Persistence
	@Override
	public void saveState(String prefix, Properties properties) {
		underlyingLayer.saveState(prefix, properties);
		super.saveState(prefix, properties);
	}
	
	/**
	 * Underlying layers must load state first.
	 * If this is not done, {@link IStructuralChangeEvent} from underlying
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
	 */
	@Override
	public void loadState(String prefix, Properties properties) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		underlyingLayer.loadState(prefix, properties);
		super.loadState(prefix, properties);
	}
	
	// Configuration
	
=======
		super.loadState(prefix, properties);
		underlyingLayer.loadState(prefix, properties);
	}

	// Configuration

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	@Override
	public void configure(ConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
		underlyingLayer.configure(configRegistry, uiBindingRegistry);
Solution content
	 */
	@Override
	public void loadState(String prefix, Properties properties) {
		underlyingLayer.loadState(prefix, properties);
		super.loadState(prefix, properties);
	}
	
	// Configuration
	
	@Override
	public void configure(ConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
		underlyingLayer.configure(configRegistry, uiBindingRegistry);
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Chunk
Conflicting content
	public ILayerPainter getLayerPainter() {
		return underlyingLayer.getLayerPainter();
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	// Command
	
=======

	// Command

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	@Override
	public boolean doCommand(ILayerCommand command) {
		if (super.doCommand(command)) {
Solution content
	public ILayerPainter getLayerPainter() {
		return underlyingLayer.getLayerPainter();
	}
	
	// Command
	
	@Override
	public boolean doCommand(ILayerCommand command) {
		if (super.doCommand(command)) {
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
		return false;
	}
		if (super.doCommand(command)) {
			return true;
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		
		if (underlyingLayer != null) {
			return underlyingLayer.doCommand(command);
		}
		
		return false;
	}
	
	// Client area
	
=======

		if (underlyingLayer != null) {
			return underlyingLayer.doCommand(command);
		}


	// Client area

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
		super.setClientAreaProvider(clientAreaProvider);
Solution content
		if (super.doCommand(command)) {
			return true;
		}
		
		if (underlyingLayer != null) {
			return underlyingLayer.doCommand(command);
		}
		
		return false;
	}
	
	// Client area
	
	@Override
	public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
		super.setClientAreaProvider(clientAreaProvider);
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
If statement
Return statement
Chunk
Conflicting content
			getUnderlyingLayer().setClientAreaProvider(clientAreaProvider);
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	// Horizontal features
	
	// Columns
	
	public long getColumnCount() {
		return underlyingLayer.getColumnCount();
	}
	
	public long getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}
	
	public long getColumnIndexByPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
	}
	
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}
	
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		if (sourceUnderlyingLayer != getUnderlyingLayer()) {
			throw new IllegalArgumentException("underlyingLayer"); //$NON-NLS-1$
		}
		
=======

    // Horizontal features

	// Columns

	public int getColumnCount() {
		return underlyingLayer.getColumnCount();
	}

	public int getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}

	public int getColumnIndexByPosition(int columnPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
	}

	public int localToUnderlyingColumnPosition(int localColumnPosition) {
		return localColumnPosition;
	}

	public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, int underlyingColumnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		return underlyingColumnPosition;
	}
	
Solution content
			getUnderlyingLayer().setClientAreaProvider(clientAreaProvider);
		}
	}
	
	// Horizontal features
	
	// Columns
	
	public long getColumnCount() {
		return underlyingLayer.getColumnCount();
	}
	
	public long getPreferredColumnCount() {
		return underlyingLayer.getPreferredColumnCount();
	}
	
	public long getColumnIndexByPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
	}
	
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}
	
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		if (sourceUnderlyingLayer != getUnderlyingLayer()) {
			throw new IllegalArgumentException("underlyingLayer"); //$NON-NLS-1$
		}
		
		return underlyingColumnPosition;
	}
	
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
If statement
Method declaration
Method signature
Chunk
Conflicting content
		
		return localColumnPositionRanges;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	// Width
	
	public long getWidth() {
		return underlyingLayer.getWidth();
	}
	
	public long getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}
	
	public int getColumnWidthByPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnWidthByPosition(underlyingColumnPosition);
	}
	
	// Column resize
	
	public boolean isColumnPositionResizable(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.isColumnPositionResizable(underlyingColumnPosition);
	}
	
	// X
	
	public long getColumnPositionByX(long x) {
		return underlyingLayer.getColumnPositionByX(x);
	}
	
	public long getStartXOfColumnPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
=======

	// Width

	public int getWidth() {
		return underlyingLayer.getWidth();
	}

	public int getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}

    public int getColumnWidthByPosition(int columnPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnWidthByPosition(underlyingColumnPosition);
	}

	// Column resize

	public boolean isColumnPositionResizable(int columnPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.isColumnPositionResizable(underlyingColumnPosition);
	}

	// X

	public int getColumnPositionByX(int x) {
		return underlyingLayer.getColumnPositionByX(x);
	}

	public int getStartXOfColumnPosition(int columnPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		return underlyingLayer.getStartXOfColumnPosition(underlyingColumnPosition);
	}
	
Solution content
	
	}
	
		
		return localColumnPositionRanges;
	}
	
	// Width
	
	public long getWidth() {
		return underlyingLayer.getWidth();
	}
	
	public long getPreferredWidth() {
		return underlyingLayer.getPreferredWidth();
	}
	
	public int getColumnWidthByPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getColumnWidthByPosition(underlyingColumnPosition);
	}
	
	// Column resize
	
	public boolean isColumnPositionResizable(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.isColumnPositionResizable(underlyingColumnPosition);
	// X
	public long getColumnPositionByX(long x) {
		return underlyingLayer.getColumnPositionByX(x);
	}
	
	public long getStartXOfColumnPosition(long columnPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		return underlyingLayer.getStartXOfColumnPosition(underlyingColumnPosition);
	}
	
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}
	
	// Underlying
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
=======

	public Collection getUnderlyingLayersByColumnPosition(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
Solution content
	}
	
	// Underlying
	
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	// Vertical features
	
	// Rows
	
	public long getRowCount() {
		return underlyingLayer.getRowCount();
	}
	
	public long getPreferredRowCount() {
		return underlyingLayer.getPreferredRowCount();
	}
	
	public long getRowIndexByPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
	}
	
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}
	
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		if (sourceUnderlyingLayer != getUnderlyingLayer()) {
			throw new IllegalArgumentException("underlyingLayer"); //$NON-NLS-1$
		}
		
=======

	// Vertical features

	// Rows

	public int getRowCount() {
		return underlyingLayer.getRowCount();
	}

	public int getPreferredRowCount() {
	}

		return underlyingLayer.getPreferredRowCount();
	}

	public int getRowIndexByPosition(int rowPosition) {
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
	public int localToUnderlyingRowPosition(int localRowPosition) {
		return localRowPosition;
	}

	public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, int underlyingRowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		return underlyingRowPosition;
	}
	
Solution content
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
	
	// Vertical features
	
	// Rows
	
	public long getRowCount() {
		return underlyingLayer.getRowCount();
	}
	
	public long getPreferredRowCount() {
		return underlyingLayer.getPreferredRowCount();
	}
	
	public long getRowIndexByPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
	}
	
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}
	
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		if (sourceUnderlyingLayer != getUnderlyingLayer()) {
			throw new IllegalArgumentException("underlyingLayer"); //$NON-NLS-1$
		}
		
		return underlyingRowPosition;
	}
	
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
If statement
Method declaration
Method signature
Chunk
Conflicting content
		
		return localRowPositionRanges;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	// Height
	
	public long getHeight() {
		return underlyingLayer.getHeight();
	}
	
	public long getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}
	
	public int getRowHeightByPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowHeightByPosition(underlyingRowPosition);
	}
	
	// Row resize
	
	public boolean isRowPositionResizable(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.isRowPositionResizable(underlyingRowPosition);
	}
	
	// Y
	
	public long getRowPositionByY(long y) {
		return underlyingLayer.getRowPositionByY(y);
	}
	
	public long getStartYOfRowPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
=======

	// Height

	public int getHeight() {
		return underlyingLayer.getHeight();
	}

	public int getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}

	public int getRowHeightByPosition(int rowPosition) {
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowHeightByPosition(underlyingRowPosition);
	}

	// Row resize

	public boolean isRowPositionResizable(int rowPosition) {
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.isRowPositionResizable(underlyingRowPosition);
	}

	// Y

	public int getRowPositionByY(int y) {
		return underlyingLayer.getRowPositionByY(y);
	}

	public int getStartYOfRowPosition(int rowPosition) {
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		return underlyingLayer.getStartYOfRowPosition(underlyingRowPosition);
	}
	
Solution content
		
		return localRowPositionRanges;
	}
	
	// Height
	
	public long getHeight() {
		return underlyingLayer.getHeight();
	}
	
	public long getPreferredHeight() {
		return underlyingLayer.getPreferredHeight();
	}
	
	public int getRowHeightByPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getRowHeightByPosition(underlyingRowPosition);
	}
	
	// Row resize
	
	public boolean isRowPositionResizable(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.isRowPositionResizable(underlyingRowPosition);
	}
	
	// Y
	
	public long getRowPositionByY(long y) {
		return underlyingLayer.getRowPositionByY(y);
	}
	
	public long getStartYOfRowPosition(long rowPosition) {
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getStartYOfRowPosition(underlyingRowPosition);
	}
	
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Comment
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}
	
	// Underlying
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
=======

	public Collection getUnderlyingLayersByRowPosition(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
Solution content
	}
	
	// Underlying
	
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
		Collection underlyingLayers = new HashSet();
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	// Cell features
	
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	@Override
	public ILayerCell getCellByPosition(final long columnPosition, final long rowPosition) {
		ILayerCell cell = this.underlyingLayer.getCellByPosition(
				localToUnderlyingColumnPosition(columnPosition),
				localToUnderlyingRowPosition(rowPosition) );
		
		if (cell != null) {
			final LayerCellDim hDim = transformCellDim(cell.getDim(HORIZONTAL), columnPosition);
			final LayerCellDim vDim = transformCellDim(cell.getDim(VERTICAL), rowPosition);
			cell = new LayerCell(this, hDim, vDim, cell.getDisplayMode());
		}
		
		return cell;
	}
	
	protected LayerCellDim transformCellDim(final LayerCellDim underlyingDim, final long position) {
		final long originPosition = (underlyingDim.getPosition() == underlyingDim.getOriginPosition()) ?
				position :
				getDim(underlyingDim.getOrientation()).underlyingToLocalPosition(
						position, underlyingDim.getOriginPosition() );
		return new LayerCellDim(underlyingDim.getOrientation(), underlyingDim.getIndex(),
				position, originPosition, underlyingDim.getPositionSpan() );
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
=======

    // Cell features

	@Override
	public ILayerCell getCellByPosition(int columnPosition, int rowPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		ILayerCell cell = underlyingLayer.getCellByPosition(underlyingColumnPosition, underlyingRowPosition);
		if (cell != null) {
			cell = new TranslatedLayerCell(
					cell,
					this,
					underlyingToLocalColumnPosition(underlyingLayer, cell.getOriginColumnPosition()),
					underlyingToLocalRowPosition(underlyingLayer, cell.getOriginRowPosition()),
					underlyingToLocalColumnPosition(underlyingLayer, cell.getColumnPosition()),
					underlyingToLocalRowPosition(underlyingLayer, cell.getRowPosition())
			);
		}
		return cell;
	}
	
    @Override
    public String getDisplayModeByPosition(int columnPosition, int rowPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
    	return underlyingLayer.getDisplayModeByPosition(underlyingColumnPosition, underlyingRowPosition);
    }

	@Override
	public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		LabelStack configLabels = underlyingLayer.getConfigLabelsByPosition(underlyingColumnPosition, underlyingRowPosition);
		IConfigLabelAccumulator configLabelAccumulator = getConfigLabelAccumulator();
		if (configLabelAccumulator != null) {
Solution content
		if (cell != null) {
		underlyingLayers.add(underlyingLayer);
		return underlyingLayers;
	}
	
	// Cell features
	
	@Override
	public ILayerCell getCellByPosition(final long columnPosition, final long rowPosition) {
		ILayerCell cell = this.underlyingLayer.getCellByPosition(
				localToUnderlyingColumnPosition(columnPosition),
				localToUnderlyingRowPosition(rowPosition) );
		
			cell = new LayerCell(this, hDim, vDim, cell.getDisplayMode());
			final LayerCellDim hDim = transformCellDim(cell.getDim(HORIZONTAL), columnPosition);
			final LayerCellDim vDim = transformCellDim(cell.getDim(VERTICAL), rowPosition);
		}
		
		return cell;
	}
	
	protected LayerCellDim transformCellDim(final LayerCellDim underlyingDim, final long position) {
		final long originPosition = (underlyingDim.getPosition() == underlyingDim.getOriginPosition()) ?
				position :
				getDim(underlyingDim.getOrientation()).underlyingToLocalPosition(
						position, underlyingDim.getOriginPosition() );
		return new LayerCellDim(underlyingDim.getOrientation(), underlyingDim.getIndex(),
				position, originPosition, underlyingDim.getPositionSpan() );
	}
	
	@Override
	public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		LabelStack configLabels = underlyingLayer.getConfigLabelsByPosition(underlyingColumnPosition, underlyingRowPosition);
		IConfigLabelAccumulator configLabelAccumulator = getConfigLabelAccumulator();
		if (configLabelAccumulator != null) {
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
		}
		return configLabels;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	public Object getDataValueByPosition(long columnPosition, long rowPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
=======

	public Object getDataValueByPosition(int columnPosition, int rowPosition) {
		int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		return underlyingLayer.getDataValueByPosition(underlyingColumnPosition, underlyingRowPosition);
	}
	
Solution content
		}
		return configLabels;
	}
	
	public Object getDataValueByPosition(long columnPosition, long rowPosition) {
		long underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition);
		long underlyingRowPosition = localToUnderlyingRowPosition(rowPosition);
		return underlyingLayer.getDataValueByPosition(underlyingColumnPosition, underlyingRowPosition);
	}
	
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}
	
	// IRegionResolver
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
=======
	public ICellPainter getCellPainter(int columnPosition, int rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}

	// IRegionResolver

	@Override
	public LabelStack getRegionLabelsByXY(int x, int y) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
		LabelStack regionLabels = underlyingLayer.getRegionLabelsByXY(x, y);
		String regionName = getRegionName();
		if (regionName != null) {
Solution content
	}
	
	@Override
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		return underlyingLayer.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
	}
	
	// IRegionResolver
	
	@Override
	public LabelStack getRegionLabelsByXY(long x, long y) {
		LabelStack regionLabels = underlyingLayer.getRegionLabelsByXY(x, y);
		String regionName = getRegionName();
		if (regionName != null) {
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Method signature
Chunk
Conflicting content
		}
		return regionLabels;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
	
	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer;
	}
	
=======

	public ILayer getUnderlyingLayerByPosition(int columnPosition, int rowPosition) {
		return underlyingLayer;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/AbstractLayerTransform.java
}
Solution content
		}
		return regionLabels;
	}
	
	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
		return underlyingLayer;
	}
	
}
File
AbstractLayerTransform.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
	// Columns

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getColumnCount() {
		return dataProvider.getColumnCount();
	}

	public long getPreferredColumnCount() {
=======
	@Override
	public int getColumnCount() {
		return dataProvider.getColumnCount();
	}

	@Override
	public int getPreferredColumnCount() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return getColumnCount();
	}
Solution content
	// Columns

	@Override
	public long getColumnCount() {
		return dataProvider.getColumnCount();
	}

	@Override
	public long getPreferredColumnCount() {
		return getColumnCount();
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
    /**
	 * This is the root coordinate system, so the column index is always equal to the column position.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getColumnIndexByPosition(final long columnPosition) {
		if (!enableColumnIndex || columnPosition < 0 || columnPosition >= getColumnCount()) {
			return NO_INDEX;
=======
	@Override
	public int getColumnIndexByPosition(int columnPosition) {
		if (columnPosition >=0 && columnPosition < getColumnCount()) {
			return columnPosition;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		}
		return columnPosition;
	}
Solution content
    /**
	 * This is the root coordinate system, so the column index is always equal to the column position.
	 */
	@Override
	public long getColumnIndexByPosition(final long columnPosition) {
		if (!enableColumnIndex || columnPosition < 0 || columnPosition >= getColumnCount()) {
			return NO_INDEX;
		}
		return columnPosition;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
	@Override
	/**
	 * This is the root coordinate system, so the column position is always equal to the column index.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getColumnPositionByIndex(final long columnIndex) {
		if (!enableColumnIndex || columnIndex < 0 || columnIndex >= getColumnCount()) {
			return Long.MIN_VALUE;
=======
		}
	public int getColumnPositionByIndex(int columnIndex) {
		if (columnIndex >=0 && columnIndex < getColumnCount()) {
			return columnIndex;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return columnIndex;
	}
Solution content
	/**
	 * This is the root coordinate system, so the column position is always equal to the column index.
	 */
	@Override
	public long getColumnPositionByIndex(final long columnIndex) {
		if (!enableColumnIndex || columnIndex < 0 || columnIndex >= getColumnCount()) {
			return Long.MIN_VALUE;
		}
		return columnIndex;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
		return columnIndex;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}

	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
=======
	@Override
	public int localToUnderlyingColumnPosition(int localColumnPosition) {
		return localColumnPosition;
	}

	@Override
	public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, int underlyingColumnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return underlyingColumnPosition;
	}
	
Solution content
	}
		return underlyingColumnPosition;
		return columnIndex;
	}

	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		return localColumnPosition;
	}

	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
	
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	// Width

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
    public long getWidth() {
		return columnWidthConfig.getAggregateSize(getColumnCount());
	}

	public long getPreferredWidth() {
		return getWidth();
	}

	public int getColumnWidthByPosition(long columnPosition) {
=======
    @Override
	public int getWidth() {
		return columnWidthConfig.getAggregateSize(getColumnCount());
	}

	@Override
	public int getPreferredWidth() {
		return getWidth();
	}

	@Override
	public int getColumnWidthByPosition(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
        return columnWidthConfig.getSize(columnPosition);
    }
Solution content
	@Override
    public long getWidth() {

	// Width

		return columnWidthConfig.getAggregateSize(getColumnCount());
	}

	@Override
	public long getPreferredWidth() {
		return getWidth();
	}

	@Override
	public int getColumnWidthByPosition(long columnPosition) {
        return columnWidthConfig.getSize(columnPosition);
    }
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	// Column resize

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public boolean isColumnPositionResizable(long columnPosition) {
=======
	@Override
	public boolean isColumnPositionResizable(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return columnWidthConfig.isPositionResizable(columnPosition);
	}
Solution content
	// Column resize

	@Override
	public boolean isColumnPositionResizable(long columnPosition) {
		return columnWidthConfig.isPositionResizable(columnPosition);
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	// Underlying

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
=======
	@Override
	public Collection getUnderlyingLayersByColumnPosition(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return null;
	}
Solution content
	// Underlying

	@Override
	public Collection getUnderlyingLayersByColumnPosition(long columnPosition) {
		return null;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	// Rows

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getRowCount() {
		return dataProvider.getRowCount();
	}

	public long getPreferredRowCount() {
=======
	@Override
	public int getRowCount() {
		return dataProvider.getRowCount();
	}

	@Override
	public int getPreferredRowCount() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return getRowCount();
	}
Solution content
	// Rows

	@Override
	public long getRowCount() {
		return dataProvider.getRowCount();
	}

	@Override
	public long getPreferredRowCount() {
		return getRowCount();
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	/**
	 * This is the root coordinate system, so the row index is always equal to the row position.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getRowIndexByPosition(final long rowPosition) {
		if (!enableRowIndex || rowPosition < 0 || rowPosition >= getRowCount()) {
			return NO_INDEX;
=======
	@Override
	public int getRowIndexByPosition(int rowPosition) {
		if (rowPosition >=0 && rowPosition < getRowCount()) {
			return rowPosition;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		}
		return rowPosition;
	}
Solution content
	/**
	 * This is the root coordinate system, so the row index is always equal to the row position.
	 */
	@Override
	public long getRowIndexByPosition(final long rowPosition) {
		if (!enableRowIndex || rowPosition < 0 || rowPosition >= getRowCount()) {
			return NO_INDEX;
		}
		return rowPosition;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
	/**
	 * This is the root coordinate system, so the row position is always equal to the row index.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long getRowPositionByIndex(final long rowIndex) {
		if (!enableRowIndex || rowIndex < 0 || rowIndex >= getRowCount()) {
			return Long.MIN_VALUE;
=======
	@Override
	public int getRowPositionByIndex(int rowIndex) {
		if (rowIndex >= 0 && rowIndex < getRowCount()) {
			return rowIndex;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		}
		return rowIndex;
	}
Solution content
	/**
	 * This is the root coordinate system, so the row position is always equal to the row index.
	 */
	@Override
	public long getRowPositionByIndex(final long rowIndex) {
		if (!enableRowIndex || rowIndex < 0 || rowIndex >= getRowCount()) {
			return Long.MIN_VALUE;
		}
		return rowIndex;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
		return rowIndex;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}

	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
=======
	@Override
	public int localToUnderlyingRowPosition(int localRowPosition) {
		return localRowPosition;
	}

	@Override
	public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, int underlyingRowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return underlyingRowPosition;
	}
	
Solution content
		return rowIndex;
	}

	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		return localRowPosition;
	}

	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		return underlyingRowPosition;
	}
	
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	// Height

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
    public long getHeight() {
		return rowHeightConfig.getAggregateSize(getRowCount());
	}

	public long getPreferredHeight() {
		return getHeight();
	}

	public int getRowHeightByPosition(long rowPosition) {
=======
    @Override
	public int getHeight() {
		return rowHeightConfig.getAggregateSize(getRowCount());
	}

	@Override
	public int getPreferredHeight() {
		return getHeight();
	}

	@Override
	public int getRowHeightByPosition(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return rowHeightConfig.getSize(rowPosition);
	}
Solution content
	// Height

	@Override
    public long getHeight() {
		return rowHeightConfig.getAggregateSize(getRowCount());
	}

	@Override
	public long getPreferredHeight() {
		return getHeight();
	}

	@Override
	public int getRowHeightByPosition(long rowPosition) {
		return rowHeightConfig.getSize(rowPosition);
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	// Row resize

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public boolean isRowPositionResizable(long rowPosition) {
=======
	@Override
	public boolean isRowPositionResizable(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return rowHeightConfig.isPositionResizable(rowPosition);
	}
Solution content
	// Row resize

	@Override
	public boolean isRowPositionResizable(long rowPosition) {
		return rowHeightConfig.isPositionResizable(rowPosition);
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	// Underlying

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
=======
	@Override
	public Collection getUnderlyingLayersByRowPosition(int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return null;
	}
Solution content
	// Underlying

	@Override
	public Collection getUnderlyingLayersByRowPosition(long rowPosition) {
		return null;
	}
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	// Cell features

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
	public Object getDataValueByPosition(final long columnPosition, final long rowPosition) {
//		long columnIndex = getColumnIndexByPosition(columnPosition);
//		long rowIndex = getRowIndexByPosition(rowPosition);
		return dataProvider.getDataValue(columnPosition, rowPosition);
	}

	public long getColumnPositionByX(long x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	public long getRowPositionByY(long y) {
		return LayerUtil.getRowPositionByY(this, y);
	}

	public long getStartXOfColumnPosition(long columnPosition) {
		return columnWidthConfig.getAggregateSize(columnPosition);
	}

	public long getStartYOfRowPosition(long rowPosition) {
		return rowHeightConfig.getAggregateSize(rowPosition);
	}

	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
=======
	@Override
	public Object getDataValueByPosition(int columnPosition, int rowPosition) {
		int columnIndex = getColumnIndexByPosition(columnPosition);
		int rowIndex = getRowIndexByPosition(rowPosition);
		return dataProvider.getDataValue(columnIndex, rowIndex);
	}

	@Override
	public int getColumnPositionByX(int x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	@Override
	public int getRowPositionByY(int y) {
		return LayerUtil.getRowPositionByY(this, y);
	}

	@Override
	public int getStartXOfColumnPosition(int columnPosition) {
		return columnWidthConfig.getAggregateSize(columnPosition);
	}

	@Override
	public int getStartYOfRowPosition(int rowPosition) {
		return rowHeightConfig.getAggregateSize(rowPosition);
	}

	@Override
	public ILayer getUnderlyingLayerByPosition(int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/DataLayer.java
		return null;
	}
	
Solution content
	// Cell features

	@Override
	public Object getDataValueByPosition(final long columnPosition, final long rowPosition) {
//		long columnIndex = getColumnIndexByPosition(columnPosition);
//		long rowIndex = getRowIndexByPosition(rowPosition);
		return dataProvider.getDataValue(columnPosition, rowPosition);
	}

	@Override
	public long getColumnPositionByX(long x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}

	@Override
	public long getRowPositionByY(long y) {
		return LayerUtil.getRowPositionByY(this, y);
	}

	@Override
	public long getStartXOfColumnPosition(long columnPosition) {
		return columnWidthConfig.getAggregateSize(columnPosition);
	}

	@Override
	public long getStartYOfRowPosition(long rowPosition) {
		return rowHeightConfig.getAggregateSize(rowPosition);
	}

	@Override
	public ILayer getUnderlyingLayerByPosition(long columnPosition, long rowPosition) {
		return null;
	}
	
File
DataLayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
import java.util.Collection;
import java.util.Properties;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
Solution content
import java.util.Collection;
import java.util.Properties;

import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
File
ILayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
=======
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java

/**
 * 

Solution content
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
import org.eclipse.nebula.widgets.nattable.util.IClientAreaProvider;


/**
 * 

File
ILayer.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	void dispose();
	
	// Dispose
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	
	
	ILayerDim getDim(Orientation orientation);
=======
	public void dispose();
	
	
	/**
	 * Returns the layer dimension of this layer for the given orientation
	 * 
	 * @param orientation the orientation
	 * 
	 * @return the layer dimension
	 */
	ILayerDim getDim(/*@NonNull*/ Orientation orientation);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	
	
	// Persistence
Solution content
	
	// Dispose
	
	void dispose();
	
	
	/**
	 * Returns the layer dimension of this layer for the given orientation
	 * 
	 * @param orientation the orientation
	 * 
	 * @return the layer dimension
	 */
	ILayerDim getDim(/*@NonNull*/ Orientation orientation);
	
	
	// Persistence
File
ILayer.java
Developer's decision
Combination
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
	/**
	 * @return the number of columns in this coordinate model
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	long getColumnCount();
	
	long getPreferredColumnCount();
	
=======
	public int getColumnCount();

	@Deprecated
	public int getPreferredColumnCount();

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	/**
	 * Gets the underlying non-transformed column index for the given column position.
	 * @param columnPosition a column position relative to this coordinate model
Solution content
	/**
	 * @return the number of columns in this coordinate model
	 */
	long getColumnCount();
	
	@Deprecated
	long getPreferredColumnCount();
	
	/**
	 * Gets the underlying non-transformed column index for the given column position.
	 * @param columnPosition a column position relative to this coordinate model
File
ILayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method interface
Chunk
Conflicting content
	/**
	 * @return the number of rows in this coordinate model
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	long getRowCount();
	
	long getPreferredRowCount();
	
=======
	public int getRowCount();

	@Deprecated
	public int getPreferredRowCount();

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/ILayer.java
	/**
	 * Gets the underlying non-transformed row index for the given row position.
	 * @param rowPosition a row position relative to this coordinate model
Solution content
	/**
	 * @return the number of rows in this coordinate model
	 */
	long getRowCount();
	
	@Deprecated
	long getPreferredRowCount();
	
	/**
	 * Gets the underlying non-transformed row index for the given row position.
	 * @param rowPosition a row position relative to this coordinate model
File
ILayer.java
Developer's decision
Combination
Kind of conflict
Annotation
Method interface
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java

import java.util.Collection;
import java.util.Properties;
Solution content
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.Collection;
import java.util.Properties;
File
InvertedLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
public class InvertedLayer implements IUniqueIndexLayer {
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java
	private final ILayerDim h;
	private final ILayerDim v;
=======
	private final ILayerDim hDim;
	private final ILayerDim vDim;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java
	
	private IUniqueIndexLayer underlyingLayer;
	
Solution content
public class InvertedLayer implements IUniqueIndexLayer {
	
	
	private final ILayerDim hDim;
	private final ILayerDim vDim;
	
	private IUniqueIndexLayer underlyingLayer;
	
File
InvertedLayer.java
Developer's decision
Version 2
Kind of conflict
Attribute
Chunk
Conflicting content
	}
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java
	@Override
	public ILayerDim getDim(final Orientation orientation) {
		if (orientation == null) {
			throw new NullPointerException("orientation"); //$NON-NLS-1$
		}
		
		return (orientation == HORIZONTAL) ? this.h : this.v;
	}
	
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/InvertedLayer.java
	// ILayerListener
	
	public void handleLayerEvent(ILayerEvent event) {
Solution content
	}
	
	
	// ILayerListener
	
	public void handleLayerEvent(ILayerEvent event) {
File
InvertedLayer.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
import java.util.StringTokenizer;
import java.util.TreeMap;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
=======
import org.apache.commons.lang.StringUtils;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;

Solution content

import java.util.StringTokenizer;
import java.util.TreeMap;

import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
File
SizeConfig.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
		if (defaultSize < 0) {
			throw new IllegalArgumentException("size < 0"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		defaultSizeMap.put(Long.valueOf(position), Integer.valueOf(size));
	}

	private int getDefaultSize(long position) {
		Integer size = defaultSizeMap.get(Long.valueOf(position));
=======
		defaultSizeMap.put(position, size);
	}

	private int getDefaultSize(int position) {
		Integer size = defaultSizeMap.get(position);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		if (size != null) {
			return size.intValue();
		} else {
Solution content
		if (defaultSize < 0) {
			throw new IllegalArgumentException("size < 0"); //$NON-NLS-1$
		}
		defaultSizeMap.put(Long.valueOf(position), Integer.valueOf(size));
	}

	private int getDefaultSize(long position) {
		Integer size = defaultSizeMap.get(Long.valueOf(position));
		if (size != null) {
			return size.intValue();
		} else {
File
SizeConfig.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
			//and not as pixel values, therefore another value needs to be considered
			return position * defaultSize;
		} else {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			long resizeAggregate = 0;

			long resizedColumns = 0;
			
			Map mapToUse = percentageSizing ? realSizeMap : sizeMap;
=======
			int resizeAggregate = 0;
			int resizedColumns = 0;
			
			Map mapToUse = isPercentageSizing() ? realSizeMap : sizeMap;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			
			for (Long resizedPosition : mapToUse.keySet()) {
				if (resizedPosition.longValue() < position) {
Solution content
			//and not as pixel values, therefore another value needs to be considered
			return position * defaultSize;
		} else {
			long resizeAggregate = 0;
			long resizedColumns = 0;
			
			Map mapToUse = isPercentageSizing() ? realSizeMap : sizeMap;
			
			for (Long resizedPosition : mapToUse.keySet()) {
				if (resizedPosition.longValue() < position) {
File
SizeConfig.java
Developer's decision
Manual
Kind of conflict
Attribute
Method invocation
Variable
Chunk
Conflicting content
	public int getSize(long position) {
		Integer size;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		if (percentageSizing) {
			size = realSizeMap.get(Long.valueOf(position));
		} else {
			size = sizeMap.get(Long.valueOf(position));
=======
		if (isPercentageSizing()) {
			size = realSizeMap.get(position);
		} else {
			size = sizeMap.get(position);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		}
		if (size != null) {
			return size.intValue();
Solution content
	public int getSize(long position) {
		Integer size;
		if (isPercentageSizing()) {
			size = realSizeMap.get(Long.valueOf(position));
		} else {
			size = sizeMap.get(Long.valueOf(position));
		}
		if (size != null) {
			return size.intValue();
File
SizeConfig.java
Developer's decision
Combination
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
		}
		if (isPositionResizable(position)) {
			//check whether the given value should be remembered as is or if it needs to be calculated
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			if (!isPercentageSizing()) {
				sizeMap.put(Long.valueOf(position), Integer.valueOf(size));
=======
			if (!isPercentageSizing(position)) {
				sizeMap.put(position, size);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			} else {
				if (availableSpace > 0) {
					Double percentage = ((double) size * 100)/ availableSpace;
Solution content
		}
		if (isPositionResizable(position)) {
			//check whether the given value should be remembered as is or if it needs to be calculated
			if (!isPercentageSizing(position)) {
				sizeMap.put(Long.valueOf(position), Integer.valueOf(size));
			} else {
				if (availableSpace > 0) {
					Double percentage = ((double) size * 100)/ availableSpace;
File
SizeConfig.java
Developer's decision
Combination
Kind of conflict
If statement
Method invocation
Chunk
Conflicting content
		if (percentage < 0) {
			throw new IllegalArgumentException("percentage < 0"); //$NON-NLS-1$
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		if (isPositionResizable(position) && isPercentageSizing()) {
			sizeMap.put(Long.valueOf(position), Integer.valueOf(percentage));
=======
		if (isPositionResizable(position)) {
			percentageSizingMap.put(position, Boolean.TRUE);
			sizeMap.put(position, percentage);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			realSizeMap.put(position, calculatePercentageValue(percentage, availableSpace));
			calculatePercentages(availableSpace, realSizeMap.size());
		}
Solution content
		if (percentage < 0) {
			throw new IllegalArgumentException("percentage < 0"); //$NON-NLS-1$
		}
		if (isPositionResizable(position)) {
			percentageSizingMap.put(position, Boolean.TRUE);
			sizeMap.put(Long.valueOf(position), Integer.valueOf(percentage));
			realSizeMap.put(position, calculatePercentageValue(percentage, availableSpace));
			calculatePercentages(availableSpace, realSizeMap.size());
		}
File
SizeConfig.java
Developer's decision
Combination
Kind of conflict
If statement
Method invocation
Chunk
Conflicting content
	 * @return true if the given row/column position is resizable,
	 * 			false if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
	public boolean isPositionResizable(long position) {
		Boolean resizable = resizablesMap.get(Long.valueOf(position));
=======
	public boolean isPositionResizable(int position) {
		Boolean resizable = resizablesMap.get(position);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
		if (resizable != null) {
			return resizable.booleanValue();
		}
Solution content
	 * @return true if the given row/column position is resizable,
	 * 			false if not.
	 */
	public boolean isPositionResizable(long position) {
		Boolean resizable = resizablesMap.get(Long.valueOf(position));
		if (resizable != null) {
			return resizable.booleanValue();
		}
File
SizeConfig.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @param resizable true if the given row/column position should be resizable,
	 * 			false if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
	public void setPositionResizable(long position, boolean resizable) {
		if (percentageSizing && resizable) {
			throw new IllegalStateException("Resizable columns are not allowed when using percentaged sizing."); //$NON-NLS-1$
		}
		resizablesMap.put(Long.valueOf(position), Boolean.valueOf(resizable));
=======
	public void setPositionResizable(int position, boolean resizable) {
		resizablesMap.put(position, resizable);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
	}

	/**
Solution content
	 * @param resizable true if the given row/column position should be resizable,
	 * 			false if not.
	 */
	public void setPositionResizable(long position, boolean resizable) {
		resizablesMap.put(position, resizable);
	}

	/**
File
SizeConfig.java
Developer's decision
Combination
Kind of conflict
If statement
Method invocation
Method signature
Chunk
Conflicting content
	 * @param space The space that is available for rendering.
	 * @param positionCount The number of positions that should be handled by this {@link SizeConfig}
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
	public void calculatePercentages(long space, long positionCount) {
		if (this.percentageSizing) {
			this.availableSpace = space;
			long sum = 0;
			int real = 0;
			long realSum = 0;
			List noInfoPositions = new ArrayList();
=======
	public void calculatePercentages(int space, int positionCount) {
		if (isPercentageSizing()) {
			this.availableSpace = space;
			
			int percentageSpace = calculateAvailableSpace(space);
			
			int sum = 0;
			int real = 0;
			int realSum = 0;
			int fixedSum = 0;
			List noInfoPositions = new ArrayList();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java
			Integer positionValue = null;
			for (long i = 0; i < positionCount; i++) {
				positionValue = this.sizeMap.get(i);
Solution content
	 * @param space The space that is available for rendering.
	 * @param positionCount The number of positions that should be handled by this {@link SizeConfig}
	 */
	public void calculatePercentages(long space, long positionCount) {
		if (isPercentageSizing()) {
			this.availableSpace = space;
			
			long percentageSpace = calculateAvailableSpace(space);
			
			long sum = 0;
			int real = 0;
			long realSum = 0;
			long fixedSum = 0;
			List noInfoPositions = new ArrayList();
			Integer positionValue = null;
			for (long i = 0; i < positionCount; i++) {
				positionValue = this.sizeMap.get(i);
File
SizeConfig.java
Developer's decision
Manual
Kind of conflict
Attribute
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.layer;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SpanningDataLayer.java
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SpanningDataLayer.java
import org.eclipse.nebula.widgets.nattable.data.ISpanningDataProvider;
import org.eclipse.nebula.widgets.nattable.layer.cell.DataCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
Solution content
package org.eclipse.nebula.widgets.nattable.layer;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.data.ISpanningDataProvider;
import org.eclipse.nebula.widgets.nattable.layer.cell.DataCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
File
SpanningDataLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.cell.DataCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/layer/SpanningDataLayer.java
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;
=======
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SpanningDataLayer.java


public class SpanningDataLayer extends DataLayer {
Solution content
import org.eclipse.nebula.widgets.nattable.layer.cell.DataCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;


public class SpanningDataLayer extends DataLayer {
File
SpanningDataLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import java.util.Map;
import java.util.WeakHashMap;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
import java.util.regex.Pattern;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java

import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter;
Solution content
import java.util.Map;

import java.util.WeakHashMap;
import java.util.regex.Pattern;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;

import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter;
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.cell.CellDisplayConversionUtils;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignment;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.TextDecorationEnum;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
=======
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.TextDecorationEnum;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java

/**
 * Abstract TextPainter the contains general methods for drawing text into a cell.
Solution content
import org.eclipse.nebula.widgets.nattable.layer.cell.CellDisplayConversionUtils;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignment;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.TextDecorationEnum;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;

/**
 * Abstract TextPainter the contains general methods for drawing text into a cell.
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 */
public abstract class AbstractTextPainter extends BackgroundPainter {

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	protected static final String EMPTY = ""; //$NON-NLS-1$
	protected static final char DOT = '\u2026';

=======
	public static final String EMPTY = ""; //$NON-NLS-1$
	public static final String DOT = "..."; //$NON-NLS-1$
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	/**
	 * The regular expression to find predefined new lines in the text to show.
	 * Is used for word wrapping to preserve user defined new lines.
Solution content
 */
public abstract class AbstractTextPainter extends BackgroundPainter {

	protected static final String EMPTY = ""; //$NON-NLS-1$
	protected static final char DOT = '\u2026';

	/**
	 * The regular expression to find predefined new lines in the text to show.
	 * Is used for word wrapping to preserve user defined new lines.
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
Comment
Chunk
Conflicting content
			}
	 * To be platform independent \n and \r and the combination of both are used
	 * to find user defined new lines.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	private static final Pattern NEW_LINE_PATTERN = Pattern.compile("\\n\\r|\\r\\n|\\n|\\r"); //$NON-NLS-1$

	private static final String NEW_LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$

	private static final int DEFAULT_SPACING = 3;
	
	public static final int DEFAULT_DRAW_STYLES = SWT.DRAW_TRANSPARENT | SWT.DRAW_DELIMITER;


	private static final class TemporaryMapKey {
	
		private final String text;
		private final Font font;
	
		public TemporaryMapKey(final String text, final Font font) {
			this.text = text;
			this.font = font;
		}


		@Override
		public int hashCode() {
			return text.hashCode() + font.hashCode();
		}

		@Override
		public boolean equals(final Object obj) {
			if (this == obj) {
				return true;
			if (!(obj instanceof TemporaryMapKey)) {
				return false;
			}
			final TemporaryMapKey other = (TemporaryMapKey) obj;
			return (text.equals(other.text) && font.equals(other.font));
		}

	}

	private static final Map temporaryMap = new WeakHashMap();


	protected final boolean wrapText;
	protected final boolean paintBg;
	protected final boolean paintFg;
	protected final int spacing;

	//can only grow but will not calculate the minimal length
	protected final boolean calculateByTextLength;
	protected final boolean calculateByTextHeight;

	protected final int swtDrawStyle;
	
	private boolean underline;
	private boolean strikethrough;


	public AbstractTextPainter() {
		this(false, true, SWT.DEFAULT, false);
=======
	public static final String NEW_LINE_REGEX = "\\n\\r|\\r\\n|\\n|\\r"; //$NON-NLS-1$
	
	public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$

	protected final boolean wrapText;
	protected final boolean paintBg;
	protected boolean paintFg = true;
	protected int spacing = 5;
	//can only grow but will not calculate the minimal length
	protected final boolean calculateByTextLength;
	protected final boolean calculateByTextHeight;
	private boolean underline;
	private boolean strikethrough;

	private static Map temporaryMap = new WeakHashMap();
	private static Map fontDataCache = new WeakHashMap();

	public AbstractTextPainter() {
		this(false, true);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	}

	/**
Solution content
	 * To be platform independent \n and \r and the combination of both are used
	 * to find user defined new lines.
	 */
	private static final Pattern NEW_LINE_PATTERN = Pattern.compile("\\n\\r|\\r\\n|\\n|\\r"); //$NON-NLS-1$

	private static final String NEW_LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$

	private static final int DEFAULT_SPACING = 3;
	
	public static final int DEFAULT_DRAW_STYLES = SWT.DRAW_TRANSPARENT | SWT.DRAW_DELIMITER;


	private static final class TemporaryMapKey {
	
		private final String text;
		private final Font font;
	
		public TemporaryMapKey(final String text, final Font font) {
			this.text = text;
			this.font = font;
		}


		@Override
		public int hashCode() {
			return text.hashCode() + font.hashCode();
		}

		@Override
		public boolean equals(final Object obj) {
			if (this == obj) {
				return true;
			}
			if (!(obj instanceof TemporaryMapKey)) {
				return false;
			}
			final TemporaryMapKey other = (TemporaryMapKey) obj;
			return (text.equals(other.text) && font.equals(other.font));
		}

	}

	private static final Map temporaryMap = new WeakHashMap();


	protected final boolean wrapText;
	protected final boolean paintBg;
	protected final boolean paintFg;
	protected final int spacing;

	//can only grow but will not calculate the minimal length
	protected final boolean calculateByTextLength;
	protected final boolean calculateByTextHeight;

	protected final int swtDrawStyle;
	
	private boolean underline;
	private boolean strikethrough;


	public AbstractTextPainter() {
		this(false, true, SWT.DEFAULT, false);
	}

	/**
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
Class declaration
Comment
Method invocation
Method signature
Chunk
Conflicting content
	 * @param paintBg skips painting the background if is FALSE
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		this(wrapText, paintBg, SWT.DEFAULT, false);
	}

=======
		this(wrapText, paintBg, 0);
	}
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
Solution content
	 * @param paintBg skips painting the background if is FALSE
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg) {
		this(wrapText, paintBg, SWT.DEFAULT, false);
	}

	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
=======
	 * @param calculate tells the text painter to calculate the cell borders regarding the content
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, boolean calculate) {
		this(wrapText, paintBg, 0, calculate);
	}
	
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
	 * @param calculateByTextLength tells the text painter to calculate the cell border by containing
	 * 			text length. For horizontal text rendering, this means the width of the cell is calculated
	 * 			by content, for vertical text rendering the height is calculated
	 * @param calculateByTextHeight tells the text painter to calculate the cell border by containing
	 * 			text height. For horizontal text rendering, this means the height of the cell is calculated
	 * 			by content, for vertical text rendering the width is calculated
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, 
			boolean calculateByTextLength, boolean calculateByTextHeight) {
		this(wrapText, paintBg, 0, calculateByTextLength, calculateByTextHeight);
	}
	
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	 * @param spacing The space between text and cell border
	 * @param calculate tells the text painter to calculate the cell borders regarding the content
	 */
Solution content
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
	 * @param spacing The space between text and cell border
	 * @param calculate tells the text painter to calculate the cell borders regarding the content
	 */
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
Method declaration
Chunk
Conflicting content
	 * @param calculate tells the text painter to calculate the cell borders regarding the content
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, int spacing, boolean calculate) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		this(wrapText, paintBg, spacing, calculate, calculate, DEFAULT_DRAW_STYLES);
	}

=======
		this(wrapText, paintBg, spacing, calculate, calculate);
	}
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
Solution content
	 * @param calculate tells the text painter to calculate the cell borders regarding the content
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, int spacing, boolean calculate) {
		this(wrapText, paintBg, spacing, calculate, calculate, DEFAULT_DRAW_STYLES);
	}

	/**
	 * @param wrapText split text over multiple lines
	 * @param paintBg skips painting the background if is FALSE
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * 			by content, for vertical text rendering the width is calculated
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, int spacing, 
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
			boolean calculateByTextLength, boolean calculateByTextHeight,
			int swtDrawStyle) {
		this.wrapText = wrapText;
		this.paintBg = paintBg;
		this.paintFg = true;
		this.spacing = (spacing >= 0) ? spacing : DEFAULT_SPACING;
		this.calculateByTextLength = calculateByTextLength;
		this.calculateByTextHeight = calculateByTextHeight;
		if (wrapText) {
			swtDrawStyle |= SWT.DRAW_DELIMITER;
		}
		this.swtDrawStyle = swtDrawStyle;
=======
			boolean calculateByTextLength, boolean calculateByTextHeight) {
		this.wrapText = wrapText;
		this.paintBg = paintBg;
		this.spacing = spacing;
		this.calculateByTextLength = calculateByTextLength;
		this.calculateByTextHeight = calculateByTextHeight;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	}

	/**
Solution content
	 * 			by content, for vertical text rendering the width is calculated
	 */
	public AbstractTextPainter(boolean wrapText, boolean paintBg, int spacing, 
			boolean calculateByTextLength, boolean calculateByTextHeight,
			int swtDrawStyle) {
		this.wrapText = wrapText;
		this.paintBg = paintBg;
		this.paintFg = true;
		this.spacing = (spacing >= 0) ? spacing : DEFAULT_SPACING;
		this.calculateByTextLength = calculateByTextLength;
		this.calculateByTextHeight = calculateByTextHeight;
		if (wrapText) {
			swtDrawStyle |= SWT.DRAW_DELIMITER;
		}
		this.swtDrawStyle = swtDrawStyle;
	}

	/**
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
If statement
Variable
Chunk
Conflicting content
	 * @param gc
	 * @param cellStyle
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	protected void setupGCFromConfig(GC gc, IStyle cellStyle) {
=======
	public void setupGCFromConfig(GC gc, IStyle cellStyle) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		Color fg = cellStyle.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR);
		Color bg = cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR);
		Font font = cellStyle.getAttributeValue(CellStyleAttributes.FONT);
Solution content
	 * @param gc
	 * @param cellStyle
	 */
	protected void setupGCFromConfig(GC gc, IStyle cellStyle) {
		Color fg = cellStyle.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR);
		Color bg = cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR);
		Font font = cellStyle.getAttributeValue(CellStyleAttributes.FONT);
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		}
		return this.strikethrough;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java

=======
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	/**
	 * Scans for new line characters and counts the number of lines
	 * for the given text.
Solution content
		}
		return this.strikethrough;
	}

	/**
	 * Scans for new line characters and counts the number of lines
	 * for the given text.
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
		}
	 * @return the number of lines for the given text
	 */
	protected int getNumberOfNewLines(String text) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		String[] lines = NEW_LINE_PATTERN.split(text);
		return lines.length;
	}

	protected long getHorizontalAlignmentIndent(HorizontalAlignment horizontalAlignment, final long width, final long textWidth) {
		if (horizontalAlignment == null) {
			horizontalAlignment = HorizontalAlignment.CENTER;
		}
		switch (horizontalAlignment) {
	}

=======
		case CENTER:
			return (width - textWidth) / 2;
		case RIGHT:
			return (width - textWidth);
		default:
			return 0;
		String[] lines = text.split(NEW_LINE_REGEX);
		return lines.length;
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	/**
	 * Calculates the length of a given text by using the GC.
	 * To minimize the count of calculations, the calculation
Solution content
	 * @return the number of lines for the given text
	 */
	protected int getNumberOfNewLines(String text) {
		String[] lines = NEW_LINE_PATTERN.split(text);
		return lines.length;
	}

	protected long getHorizontalAlignmentIndent(HorizontalAlignment horizontalAlignment, final long width, final long textWidth) {
		if (horizontalAlignment == null) {
			horizontalAlignment = HorizontalAlignment.CENTER;
		}
		switch (horizontalAlignment) {
		case CENTER:
			return (width - textWidth) / 2;
		case RIGHT:
			return (width - textWidth);
		default:
			return 0;
		}
	}

	/**
	 * Calculates the length of a given text by using the GC.
	 * To minimize the count of calculations, the calculation
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method invocation
Return statement
Variable
Chunk
Conflicting content
	 * @param text the text to get the length for
	 * @return the length of the text
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	protected int getWidthFromCache(GC gc, String text) {
		final TemporaryMapKey key = new TemporaryMapKey(text, gc.getFont());
		Integer width = temporaryMap.get(key);
		if (width == null) {
			width = Integer.valueOf(gc.textExtent(text, swtDrawStyle).x);
			temporaryMap.put(key, width);
		}
=======
	protected int getLengthFromCache(GC gc, String text) {
		String originalString = text;
		StringBuilder buffer = new StringBuilder();
		buffer.append(text);
		if (gc.getFont() != null) {
			FontData[] datas = fontDataCache.get(gc.getFont());
			if (datas == null) {
				datas = gc.getFont().getFontData();
				fontDataCache.put(gc.getFont(), datas);
			}
			if (datas != null && datas.length > 0) {
				buffer.append(datas[0].getName());
				buffer.append(","); //$NON-NLS-1$
				buffer.append(datas[0].getHeight());
				buffer.append(","); //$NON-NLS-1$
				buffer.append(datas[0].getStyle());
			}
		}
		text = buffer.toString();
		Integer width = temporaryMap.get(text);
		if (width == null) {
			width = Integer.valueOf(gc.textExtent(originalString).x);
			temporaryMap.put(text, width);
		}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		return width.intValue();
	}
Solution content
	 * @param text the text to get the length for
	 * @return the length of the text
	 */
	protected int getWidthFromCache(GC gc, String text) {
		final TemporaryMapKey key = new TemporaryMapKey(text, gc.getFont());
		Integer width = temporaryMap.get(key);
		if (width == null) {
			width = Integer.valueOf(gc.textExtent(text, swtDrawStyle).x);
			temporaryMap.put(key, width);
		}
		return width.intValue();
	}
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @param text the text that should be modified for display
	 * @return the modified text
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	protected String getTextToDisplay(ILayerCell cell, GC gc, long availableLength, String text) {
=======
	protected String getTextToDisplay(ILayerCell cell, GC gc, int availableLength, String text) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		StringBuilder output = new StringBuilder();

		text = text.trim();
Solution content
	 * @param text the text that should be modified for display
	 * @return the modified text
	 */
	protected String getTextToDisplay(ILayerCell cell, GC gc, long availableLength, String text) {
		StringBuilder output = new StringBuilder();

		text = text.trim();
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		text = text.trim();

		//take the whole width of the text
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		long textLength = getWidthFromCache(gc, text);
=======
		int textLength = getLengthFromCache(gc, text);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		if (calculateByTextLength && wrapText) {
			if (availableLength < textLength) {
				//calculate length by finding the longest word in text
Solution content
		text = text.trim();

		//take the whole width of the text
		long textLength = getWidthFromCache(gc, text);
		if (calculateByTextLength && wrapText) {
			if (availableLength < textLength) {
				//calculate length by finding the longest word in text
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				//calculate length by finding the longest word in text
				textLength = availableLength;
				
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				String[] lines = NEW_LINE_PATTERN.split(text);
				for (String line : lines) {
					if (output.length() > 0) {
						output.append(NEW_LINE_SEPARATOR);
=======
				String[] lines = text.split(NEW_LINE_REGEX);
				for (String line : lines) {
					if (output.length() > 0) {
						output.append(LINE_SEPARATOR);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
					}
					
					String[] words = line.split("\\s"); //$NON-NLS-1$
Solution content
				//calculate length by finding the longest word in text
				textLength = availableLength;
				
				String[] lines = NEW_LINE_PATTERN.split(text);
				for (String line : lines) {
					if (output.length() > 0) {
						output.append(NEW_LINE_SEPARATOR);
					}
					
					String[] words = line.split("\\s"); //$NON-NLS-1$
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
					
					String[] words = line.split("\\s"); //$NON-NLS-1$
					for (String word : words) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
						textLength = Math.max(textLength, getWidthFromCache(gc, word));
=======
						textLength = Math.max(textLength, getLengthFromCache(gc, word));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
					}
					
					//concat the words with spaces and newlines to be always smaller then available
Solution content
					
					String[] words = line.split("\\s"); //$NON-NLS-1$
					for (String word : words) {
						textLength = Math.max(textLength, getWidthFromCache(gc, word));
					}
					
					//concat the words with spaces and newlines to be always smaller then available
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				output.append(text);
			}
			
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
//			setNewMinLength(cell, textLength + calculatePadding(cell, availableLength));
=======
			setNewMinLength(cell, textLength + calculatePadding(cell, availableLength));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		}
		else if (calculateByTextLength && !wrapText){
			output.append(modifyTextToDisplay(text, gc, textLength));
Solution content
				output.append(text);
			}
			
//			setNewMinLength(cell, textLength + calculatePadding(cell, availableLength));
		}
		else if (calculateByTextLength && !wrapText){
			output.append(modifyTextToDisplay(text, gc, textLength));
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Chunk
Conflicting content
			//add padding and spacing to textLength because they are needed for correct sizing
			//padding can occur on using decorators like the BeveledBorderDecorator or the 
			//PaddingDecorator
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
//			setNewMinLength(cell, textLength + (2*spacing));
		}
		else if (!calculateByTextLength && wrapText) {
			String[] lines = NEW_LINE_PATTERN.split(text);
			for (String line : lines) {
				if (output.length() > 0) {
					output.append(NEW_LINE_SEPARATOR);
=======
			setNewMinLength(cell, textLength + calculatePadding(cell, availableLength) + (2*spacing));
		}
		else if (!calculateByTextLength && wrapText) {
			String[] lines = text.split(NEW_LINE_REGEX);
			for (String line : lines) {
				if (output.length() > 0) {
					output.append(LINE_SEPARATOR);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				}
				
				String[] words = line.split("\\s"); //$NON-NLS-1$
Solution content
			//add padding and spacing to textLength because they are needed for correct sizing
			//padding can occur on using decorators like the BeveledBorderDecorator or the 
			//PaddingDecorator
//			setNewMinLength(cell, textLength + (2*spacing));
		}
		else if (!calculateByTextLength && wrapText) {
			String[] lines = NEW_LINE_PATTERN.split(text);
			for (String line : lines) {
				if (output.length() > 0) {
					output.append(NEW_LINE_SEPARATOR);
				}
				
				String[] words = line.split("\\s"); //$NON-NLS-1$
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
			
		}
		else if (!calculateByTextLength && !wrapText) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
			output.append(modifyTextToDisplay(text, gc, availableLength));
=======
			output.append(modifyTextToDisplay(text, gc, availableLength + (2*spacing)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		}
		
		return output.toString();
Solution content
			
		}
		else if (!calculateByTextLength && !wrapText) {
			output.append(modifyTextToDisplay(text, gc, availableLength));
		}
		
		return output.toString();
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
			result += two;
	 * @param availableSpace the available space
	 * @return the concatenated String of the first two parameters
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	private String computeTextToDisplay(String one, String two, GC gc, long availableSpace) {
		String result = one;
		//if one is empty or one ends with newline just add two
		if (one == null || one.length() == 0 || one.endsWith(NEW_LINE_SEPARATOR)) {
			result += two;
		}
		//if one does not contain a newline
		else if (one.indexOf(NEW_LINE_SEPARATOR) == -1) {
			//
			if (getWidthFromCache(gc, one) == availableSpace 
				|| getWidthFromCache(gc, one+" "+two) >= availableSpace) { //$NON-NLS-1$
				result += NEW_LINE_SEPARATOR;
=======
	private String computeTextToDisplay(String one, String two, GC gc, int availableSpace) {
		String result = one;
		//if one is empty or one ends with newline just add two
		if (one == null || one.length() == 0 || one.endsWith(LINE_SEPARATOR)) {
		}
		//if one does not contain a newline
		else if (one.indexOf(LINE_SEPARATOR) == -1) {
			//
			if (getLengthFromCache(gc, one) == availableSpace 
				|| getLengthFromCache(gc, one+" "+two) >= availableSpace) { //$NON-NLS-1$
				result += LINE_SEPARATOR;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				result += modifyTextToDisplay(two, gc, availableSpace);
			}
			else {
Solution content
	 * @param availableSpace the available space
	 * @return the concatenated String of the first two parameters
	 */
	private String computeTextToDisplay(String one, String two, GC gc, long availableSpace) {
		String result = one;
		//if one is empty or one ends with newline just add two
		if (one == null || one.length() == 0 || one.endsWith(NEW_LINE_SEPARATOR)) {
			result += two;
		}
		//if one does not contain a newline
		else if (one.indexOf(NEW_LINE_SEPARATOR) == -1) {
			//
			if (getWidthFromCache(gc, one) == availableSpace 
				|| getWidthFromCache(gc, one+" "+two) >= availableSpace) { //$NON-NLS-1$
				result += NEW_LINE_SEPARATOR;
				result += modifyTextToDisplay(two, gc, availableSpace);
			}
			else {
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
Comment
If statement
Method signature
Variable
Chunk
Conflicting content
		}
		else {
			//get the end of the last part after the last newline
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
			String endString = one.substring(one.lastIndexOf(NEW_LINE_SEPARATOR) + 1);
			if (getWidthFromCache(gc, endString) == availableSpace 
					|| getWidthFromCache(gc, endString+" "+two) >= availableSpace) { //$NON-NLS-1$
					result += NEW_LINE_SEPARATOR;
=======
			String endString = one.substring(one.lastIndexOf(LINE_SEPARATOR) + 1);
			if (getLengthFromCache(gc, endString) == availableSpace 
					|| getLengthFromCache(gc, endString+" "+two) >= availableSpace) { //$NON-NLS-1$
					result += LINE_SEPARATOR;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
					result += two;
				}
				else {
Solution content
		}
		else {
			//get the end of the last part after the last newline
			String endString = one.substring(one.lastIndexOf(NEW_LINE_SEPARATOR) + 1);
			if (getWidthFromCache(gc, endString) == availableSpace 
					|| getWidthFromCache(gc, endString+" "+two) >= availableSpace) { //$NON-NLS-1$
					result += NEW_LINE_SEPARATOR;
					result += two;
				}
				else {
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
Comment
If statement
Method invocation
Variable
Chunk
Conflicting content
	 * @return the modified text if it is bigger than the available space or the 
	 * text as it was given if it fits into the available space
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
	private String modifyTextToDisplay(String text, GC gc, long availableLength) {
		//length of the text on GC taking new lines into account
		//this means the textLength is the value of the longest line
		long textLength = getWidthFromCache(gc, text);
=======
	private String modifyTextToDisplay(String text, GC gc, int availableLength) {
		//length of the text on GC taking new lines into account
		//this means the textLength is the value of the longest line
		int textLength = getLengthFromCache(gc, text);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
		if (textLength > availableLength) {
			//as looking at the text length without taking new lines into account
			//we have to look at every line itself
Solution content
	 * @return the modified text if it is bigger than the available space or the 
	 * text as it was given if it fits into the available space
	 */
	private String modifyTextToDisplay(String text, GC gc, long availableLength) {
		//length of the text on GC taking new lines into account
		//this means the textLength is the value of the longest line
		long textLength = getWidthFromCache(gc, text);
		if (textLength > availableLength) {
			//as looking at the text length without taking new lines into account
			//we have to look at every line itself
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Method signature
Variable
Chunk
Conflicting content
			//as looking at the text length without taking new lines into account
			//we have to look at every line itself
			StringBuilder result = new StringBuilder();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
			String[] lines = ((swtDrawStyle & SWT.DRAW_DELIMITER) == 0) ?
					NEW_LINE_PATTERN.split(text, 1) : NEW_LINE_PATTERN.split(text);
			for (String line : lines) {
				if (result.length() > 0) {
					result.append(NEW_LINE_SEPARATOR);
=======
			String[] lines = text.split(NEW_LINE_REGEX);
			for (String line : lines) {
				if (result.length() > 0) {
					result.append(LINE_SEPARATOR);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				}
				
				//now modify every line if it is longer than the available space
Solution content
			//as looking at the text length without taking new lines into account
			//we have to look at every line itself
			StringBuilder result = new StringBuilder();
			String[] lines = ((swtDrawStyle & SWT.DRAW_DELIMITER) == 0) ?
					NEW_LINE_PATTERN.split(text, 1) : NEW_LINE_PATTERN.split(text);
			for (String line : lines) {
				if (result.length() > 0) {
					result.append(NEW_LINE_SEPARATOR);
				}
				
				//now modify every line if it is longer than the available space
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Attribute
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
				
				//now modify every line if it is longer than the available space
				//this way every line will get ... if it doesn't fit
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				long lineLength = getWidthFromCache(gc, line);
=======
				int lineLength = getLengthFromCache(gc, line);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
				if (lineLength > availableLength) {
					int numExtraChars = 0;
Solution content
				
				//now modify every line if it is longer than the available space
				//this way every line will get ... if it doesn't fit
				long lineLength = getWidthFromCache(gc, line);
				if (lineLength > availableLength) {
					int numExtraChars = 0;
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
					int newStringLength = line.length();
					String trialLabelText = line + DOT;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
					long newTextExtent = getWidthFromCache(gc, trialLabelText);
=======
					int newTextExtent = getLengthFromCache(gc, trialLabelText);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java

					while (newTextExtent > availableLength + 1 && newStringLength > 0) {
						double avgWidthPerChar = (double) newTextExtent / trialLabelText.length();
Solution content
					int newStringLength = line.length();
					String trialLabelText = line + DOT;
					long newTextExtent = getWidthFromCache(gc, trialLabelText);

					while (newTextExtent > availableLength + 1 && newStringLength > 0) {
						double avgWidthPerChar = (double) newTextExtent / trialLabelText.length();
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
						newStringLength = line.length() - numExtraChars;
						if (newStringLength > 0) {
							trialLabelText = line.substring(0, newStringLength) + DOT;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
							newTextExtent = getWidthFromCache(gc, trialLabelText);
=======
							newTextExtent = getLengthFromCache(gc, trialLabelText);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
						}
					}
Solution content
						newStringLength = line.length() - numExtraChars;
						if (newStringLength > 0) {
							trialLabelText = line.substring(0, newStringLength) + DOT;
							newTextExtent = getWidthFromCache(gc, trialLabelText);
						}
					}
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
					String testString = line;
					for (int i = 0; i < line.length(); i++){
						testString = line.substring(0, line.length() + i - numExtraChars) + DOT;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
						textLength = getWidthFromCache(gc, testString);
=======
						textLength = getLengthFromCache(gc, testString);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
						
						if (textLength >= availableLength) {
							
Solution content
					String testString = line;
					for (int i = 0; i < line.length(); i++){
						testString = line.substring(0, line.length() + i - numExtraChars) + DOT;
						textLength = getWidthFromCache(gc, testString);
						
						if (textLength >= availableLength) {
							
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
		return text;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
//	/**
//	 * This method gets only called if automatic length calculation is enabled.
//	 * Calculate the new cell width/height by using the given content length and the
//	 * difference from current cell width/height to available length.
//	 * If the calculated cell is greater than the current set contentLength,
//	 * update the contentLength and execute a corresponding resize command.
//	 * @param cell the current cell that is painted
//	 * @param contentLength the length of the content
//	 */
//	protected abstract void setNewMinLength(ILayerCell cell, long contentLength);
//	
//	/**
//	 * This method is used to determine the padding from the cell to the available length.
//	 * A padding can occur for example by using a BeveledBorderDecorator or PaddingDecorator.
//	 * This TextPainter is called with the available space rectangle which is calculated
//	 * by the wrapping painters and decorators by subtracting paddings.
//	 * As this TextPainter does not know his wrapping painters and decorators the existing
//	 * padding needs to be calculated for automatic resizing.
//	 * Abstract because a horizontal TextPainter uses the width while a VerticalTextPainter
//	 * uses the height of the cell and the Rectangle.
//	 * @param cell the current cell which should be resized
//	 * @param availableLength the length value that is available and was given into paintCell()
//	 * as Rectangle argument
//	 * @return the padding between the current cell length - availableLength
//	 */
//	protected abstract long calculatePadding(ILayerCell cell, long availableLength);
=======
	/**
	 * This method gets only called if automatic length calculation is enabled.
	 * Calculate the new cell width/height by using the given content length and the
	 * difference from current cell width/height to available length.
	 * If the calculated cell is greater than the current set contentLength,
	 * update the contentLength and execute a corresponding resize command.
	 * @param cell the current cell that is painted
	 * @param contentLength the length of the content
	 */
	protected abstract void setNewMinLength(ILayerCell cell, int contentLength);
	
	/**
	 * This method is used to determine the padding from the cell to the available length.
	 * A padding can occur for example by using a BeveledBorderDecorator or PaddingDecorator.
	 * This TextPainter is called with the available space rectangle which is calculated
	 * by the wrapping painters and decorators by subtracting paddings.
	 * As this TextPainter does not know his wrapping painters and decorators the existing
	 * padding needs to be calculated for automatic resizing.
	 * Abstract because a horizontal TextPainter uses the width while a VerticalTextPainter
	 * as Rectangle argument
	 * uses the height of the cell and the Rectangle.
	 * @param cell the current cell which should be resized
	 * @param availableLength the length value that is available and was given into paintCell()
	 * @return the padding between the current cell length - availableLength
	 */
	protected abstract int calculatePadding(ILayerCell cell, int availableLength);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java

	/**
	 * Set if the text should be rendered underlined or not.
Solution content
		return text;
	}

//	/**
//	 * This method gets only called if automatic length calculation is enabled.
//	 * Calculate the new cell width/height by using the given content length and the
//	 * difference from current cell width/height to available length.
//	 * If the calculated cell is greater than the current set contentLength,
//	 * update the contentLength and execute a corresponding resize command.
//	 * @param cell the current cell that is painted
//	 * @param contentLength the length of the content
//	 */
//	protected abstract void setNewMinLength(ILayerCell cell, long contentLength);
//	
//	/**
//	 * This method is used to determine the padding from the cell to the available length.
//	 * A padding can occur for example by using a BeveledBorderDecorator or PaddingDecorator.
//	 * This TextPainter is called with the available space rectangle which is calculated
//	 * by the wrapping painters and decorators by subtracting paddings.
//	 * As this TextPainter does not know his wrapping painters and decorators the existing
//	 * padding needs to be calculated for automatic resizing.
//	 * Abstract because a horizontal TextPainter uses the width while a VerticalTextPainter
//	 * uses the height of the cell and the Rectangle.
//	 * @param cell the current cell which should be resized
//	 * @param availableLength the length value that is available and was given into paintCell()
//	 * as Rectangle argument
//	 * @return the padding between the current cell length - availableLength
//	 */
//	protected abstract long calculatePadding(ILayerCell cell, long availableLength);

	/**
	 * Set if the text should be rendered underlined or not.
File
AbstractTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.painter.cell;

import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java

/**
 * Special {@link TextPainter} that will always calculate the row height of the cell dependent
Solution content
package org.eclipse.nebula.widgets.nattable.painter.cell;

import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;

/**
 * Special {@link TextPainter} that will always calculate the row height of the cell dependent
File
AutomaticRowHeightTextPainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 * 

It shouldn't be used for large tables that can be scrolled as the growing/shrinking on * scrolling can cause some side effects, like jumping layouts on scrolling.

* <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java ======= * @author Dirk Fauth * >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java * @see TextPainter * @see DataLayer#setColumnPercentageSizing(boolean) */
Solution content
 * 

It shouldn't be used for large tables that can be scrolled as the growing/shrinking on * scrolling can cause some side effects, like jumping layouts on scrolling.

* * @see TextPainter * @see DataLayer#setColumnPercentageSizing(boolean) */
File
AutomaticRowHeightTextPainter.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java
	protected boolean performRowResize(long contentHeight, Rectangle rectangle) {
=======
	protected boolean performRowResize(int contentHeight, Rectangle rectangle) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AutomaticRowHeightTextPainter.java
		return ((contentHeight != rectangle.height) && calculateByTextHeight);
	}
Solution content
	}

	@Override
	protected boolean performRowResize(long contentHeight, Rectangle rectangle) {
		return ((contentHeight != rectangle.height) && calculateByTextHeight);
	}
File
AutomaticRowHeightTextPainter.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.painter.cell;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GradientBackgroundPainter.java
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;

import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
=======
import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GradientBackgroundPainter.java

/**
 * Paints the background of the cell with a gradient sweeping using the style configuration.
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.painter.cell;

import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;

import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;

/**
 * Paints the background of the cell with a gradient sweeping using the style configuration.
File
GradientBackgroundPainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
=======
			gc.fillGradientRectangle(bounds.x, bounds.y, bounds.width, bounds.height, vertical);

			gc.setForeground(foregroundColor);
			gc.setBackground(backgroundColor);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GradientBackgroundPainter.java
			org.eclipse.swt.graphics.Rectangle rect = GraphicsUtils.safe(bounds);
			gc.fillGradientRectangle(rect.x, rect.y, rect.width, rect.height, vertical);
			gc.setForeground(originalForeground);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GradientBackgroundPainter.java

			gc.setBackground(originalBackground);
Solution content
			gc.setForeground(foregroundColor);
			gc.setBackground(backgroundColor);
			org.eclipse.swt.graphics.Rectangle rect = GraphicsUtils.safe(bounds);
			gc.fillGradientRectangle(rect.x, rect.y, rect.width, rect.height, vertical);

			gc.setForeground(originalForeground);
			gc.setBackground(originalBackground);
File
GradientBackgroundPainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GraphicsUtils.java
import org.eclipse.swt.graphics.Rectangle;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GraphicsUtils.java
import org.eclipse.swt.widgets.Display;

/**
Solution content
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;

/**
File
GraphicsUtils.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 * @see GC snippets
 */
public class GraphicsUtils {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GraphicsUtils.java
	
	
	public static final int check(final long pixel) {
		if (pixel < Integer.MIN_VALUE || pixel > Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		return (int) pixel;
	}
	
	public static final int safe(final long pixel) {
		return (pixel <= Integer.MIN_VALUE) ? Integer.MIN_VALUE :
			((pixel >= Integer.MAX_VALUE) ? Integer.MAX_VALUE : (int) pixel);
	}
	
	public static final Rectangle safe(final long x, final long y, final long width, final long height) {
		final int sx = safe(x);
		final int sy = safe(y);
		return new Rectangle(sx, sy, safe(x + width) - sx, safe(y + height) - sy);
	}
	
	public static final Rectangle safe(final org.eclipse.nebula.widgets.nattable.coordinate.Rectangle rect) {
		return safe(rect.x, rect.y, rect.width, rect.height);
	}
	
=======
	  
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/GraphicsUtils.java
  /**
   * Draws text vertically (rotates plus or minus 90 degrees). Uses the current
   * font, color, and background.
Solution content
 * @see GC snippets
 */
public class GraphicsUtils {
	
	
	public static final int check(final long pixel) {
		if (pixel < Integer.MIN_VALUE || pixel > Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		return (int) pixel;
	}
	
	public static final int safe(final long pixel) {
		return (pixel <= Integer.MIN_VALUE) ? Integer.MIN_VALUE :
			((pixel >= Integer.MAX_VALUE) ? Integer.MAX_VALUE : (int) pixel);
	}
	
	public static final Rectangle safe(final long x, final long y, final long width, final long height) {
		final int sx = safe(x);
		final int sy = safe(y);
		return new Rectangle(sx, sy, safe(x + width) - sx, safe(y + height) - sy);
	}
	
	public static final Rectangle safe(final org.eclipse.nebula.widgets.nattable.coordinate.Rectangle rect) {
		return safe(rect.x, rect.y, rect.width, rect.height);
	}
	
  /**
   * Draws text vertically (rotates plus or minus 90 degrees). Uses the current
   * font, color, and background.
File
GraphicsUtils.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.painter.cell;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;

import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.painter.cell;

import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;

import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
=======
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java

/**
 * Paints an image. If no image is provided, it will attempt to look up an image from the cell style.
Solution content
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.nebula.widgets.nattable.style.IStyle;

/**
 * Paints an image. If no image is provided, it will attempt to look up an image from the cell style.
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
	public long getPreferredWidth(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
=======
	public int getPreferredWidth(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			return image.getBounds().width;
Solution content
	}

	@Override
	public long getPreferredWidth(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			return image.getBounds().width;
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
	public long getPreferredHeight(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
=======
	public int getPreferredHeight(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			return image.getBounds().height;
Solution content
	}

	@Override
	public long getPreferredHeight(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			return image.getBounds().height;
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
	public ICellPainter getCellPainterAt(long x, long y, ILayerCell cell, GC gc, Rectangle bounds, IConfigRegistry configRegistry) {
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			org.eclipse.swt.graphics.Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			long x0 = bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width);
			long y0 = bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height);
=======
	public ICellPainter getCellPainterAt(int x, int y, ILayerCell cell, GC gc, Rectangle bounds, IConfigRegistry configRegistry) {
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			int x0 = bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width);
			int y0 = bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
			if (	x >= x0 &&
					x < x0 + imageBounds.width &&
					y >= y0 &&
Solution content
	}

	@Override
	public ICellPainter getCellPainterAt(long x, long y, ILayerCell cell, GC gc, Rectangle bounds, IConfigRegistry configRegistry) {
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			org.eclipse.swt.graphics.Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			long x0 = bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width);
			long y0 = bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height);
			if (	x >= x0 &&
					x < x0 + imageBounds.width &&
					y >= y0 &&
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
		Image image = getImage(cell, configRegistry);
		if (image != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
			org.eclipse.swt.graphics.Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			gc.drawImage(image,
					safe(bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width)),
					safe(bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height)));
=======
			Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			gc.drawImage(
					image,
					bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width),
					bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/ImagePainter.java
		}
	}
	
Solution content
		Image image = getImage(cell, configRegistry);
		if (image != null) {
			org.eclipse.swt.graphics.Rectangle imageBounds = image.getBounds();
			IStyle cellStyle = CellStyleUtil.getCellStyle(cell, configRegistry);
			gc.drawImage(image,
					safe(bounds.x + CellStyleUtil.getHorizontalAlignmentPadding(cellStyle, bounds, imageBounds.width)),
					safe(bounds.y + CellStyleUtil.getVerticalAlignmentPadding(cellStyle, bounds, imageBounds.height)));
		}
	}
	
File
ImagePainter.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
		this.paintDecorationDependent = paintDecorationDependent;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/decorator/CellPainterDecorator.java
=======
	/**
	 * 
	 * @deprecated use setPaintDecorationDependent() instead, note that the semantic is different
	 */
    @Deprecated
	public void setBaseCellPainterSpansWholeCell(boolean interiorPainterToSpanFullWidth) {
        this.paintDecorationDependent = !interiorPainterToSpanFullWidth;
    }
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/decorator/CellPainterDecorator.java
    @Override
	public long getPreferredWidth(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
		switch (cellEdge) {
Solution content
		this.paintDecorationDependent = paintDecorationDependent;
	}
	
    @Override
	public long getPreferredWidth(ILayerCell cell, GC gc, IConfigRegistry configRegistry) {
		switch (cellEdge) {
File
CellPainterDecorator.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method declaration
Chunk
Conflicting content
	private Map verticalPositionToPixelMap;
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/CellLayerPainter.java
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, org.eclipse.swt.graphics.Rectangle pixelRectangle, IConfigRegistry configRegistry) {
=======
	@Override
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, Rectangle pixelRectangle, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/CellLayerPainter.java
		if (pixelRectangle.width <= 0 || pixelRectangle.height <= 0) {
			return;
		}
Solution content
	private Map verticalPositionToPixelMap;
	
	
	@Override
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, org.eclipse.swt.graphics.Rectangle pixelRectangle, IConfigRegistry configRegistry) {
		if (pixelRectangle.width <= 0 || pixelRectangle.height <= 0) {
			return;
		}
File
CellLayerPainter.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
		}
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/CellLayerPainter.java
	public Rectangle adjustCellBounds(long columnPosition, long rowPosition, Rectangle cellBounds) {
=======
	@Override
	public Rectangle adjustCellBounds(int columnPosition, int rowPosition, Rectangle cellBounds) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/CellLayerPainter.java
		return cellBounds;
	}
	
Solution content
		}
	}

	@Override
	public Rectangle adjustCellBounds(long columnPosition, long rowPosition, Rectangle cellBounds) {
		return cellBounds;
	}
	
File
CellLayerPainter.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
		return gridColor;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/GridLineCellLayerPainter.java
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, org.eclipse.swt.graphics.Rectangle rectangle, IConfigRegistry configRegistry) {
=======
	@Override
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, Rectangle rectangle, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/GridLineCellLayerPainter.java
		//Draw GridLines
		drawGridLines(natLayer, gc, rectangle);
		
Solution content
		return gridColor;
	}
	
	@Override
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, org.eclipse.swt.graphics.Rectangle rectangle, IConfigRegistry configRegistry) {
		//Draw GridLines
		drawGridLines(natLayer, gc, rectangle);
		
File
GridLineCellLayerPainter.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
// -depend
package org.eclipse.nebula.widgets.nattable.painter.layer;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.graphics.GC;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
Solution content
// -depend
package org.eclipse.nebula.widgets.nattable.painter.layer;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.graphics.GC;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
File
NatLayerPainter.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
		this.natTable = natTable;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java
	public void paintLayer(ILayer natLayer, GC gc, int xOffset, int yOffset, org.eclipse.swt.graphics.Rectangle rectangle, IConfigRegistry configRegistry) {
=======
	@Override
	public void paintLayer(final ILayer natLayer, final GC gc, final int xOffset, final int yOffset,
			final Rectangle rectangle, final IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java
		try {
			paintBackground(natLayer, gc, xOffset, yOffset, rectangle, configRegistry);
			
Solution content
		this.natTable = natTable;
	}
	
	@Override
	public void paintLayer(final ILayer natLayer, final GC gc, final int xOffset, final int yOffset,
			final org.eclipse.swt.graphics.Rectangle rectangle, final IConfigRegistry configRegistry) {
		try {
			paintBackground(natLayer, gc, xOffset, yOffset, rectangle, configRegistry);
			
File
NatLayerPainter.java
Developer's decision
Manual
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
		}
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java
	public Rectangle adjustCellBounds(long columnPosition, long rowPosition, Rectangle cellBounds) {
=======
	@Override
	public Rectangle adjustCellBounds(int columnPosition, int rowPosition, Rectangle cellBounds) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/layer/NatLayerPainter.java
		ILayerPainter layerPainter = natTable.getLayer().getLayerPainter();
		return layerPainter.adjustCellBounds(columnPosition, rowPosition, cellBounds);
	}
Solution content
		}
	}

	@Override
	public Rectangle adjustCellBounds(long columnPosition, long rowPosition, Rectangle cellBounds) {
		ILayerPainter layerPainter = natTable.getLayer().getLayerPainter();
		return layerPainter.adjustCellBounds(columnPosition, rowPosition, cellBounds);
	}
File
NatLayerPainter.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.reorder;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.reorder;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.event.ColumnStructuralRefreshEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
=======
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralChangeEventHelper;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderCommandHandler;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderEndCommandHandler;
Solution content
import org.eclipse.nebula.widgets.nattable.layer.event.ColumnStructuralRefreshEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralChangeEventHelper;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderCommandHandler;
import org.eclipse.nebula.widgets.nattable.reorder.command.ColumnReorderEndCommandHandler;
File
ColumnReorderLayer.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
	private final IUniqueIndexLayer underlyingLayer;

	// Position X in the List contains the index of column at position X
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	private final List columnIndexOrder = new ArrayList();

	private final Map startXCache = new HashMap();

	private long reorderFromColumnPosition;
=======
	private final List columnIndexOrder = new ArrayList();

	private final Map startXCache = new HashMap();

	private int reorderFromColumnPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java

	public ColumnReorderLayer(IUniqueIndexLayer underlyingLayer) {
		this(underlyingLayer, true);
Solution content
	private final IUniqueIndexLayer underlyingLayer;

	// Position X in the List contains the index of column at position X
	private final List columnIndexOrder = new ArrayList();
	private final Map startXCache = new HashMap();

	private long reorderFromColumnPosition;

	public ColumnReorderLayer(IUniqueIndexLayer underlyingLayer) {
		this(underlyingLayer, true);
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
					columnIndexOrder.clear();
					populateIndexOrder();
				} else {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
					for (StructuralDiff structuralDiff : structuralDiffs) {
						switch (structuralDiff.getDiffType()) {
						case ADD:
							columnIndexOrder.clear();
							populateIndexOrder();
							break;
						case DELETE:
							columnIndexOrder.clear();
							populateIndexOrder();
							break;
						}
					}
=======
					// only react on ADD or DELETE and not on CHANGE
					StructuralChangeEventHelper.handleColumnDelete(structuralDiffs, underlyingLayer, columnIndexOrder, true);
					StructuralChangeEventHelper.handleColumnInsert(structuralDiffs, underlyingLayer, columnIndexOrder, true);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
				}
				invalidateCache();
			}
Solution content
					columnIndexOrder.clear();
					populateIndexOrder();
				} else {
					// only react on ADD or DELETE and not on CHANGE
					StructuralChangeEventHelper.handleColumnDelete(structuralDiffs, underlyingLayer, columnIndexOrder, true);
					StructuralChangeEventHelper.handleColumnInsert(structuralDiffs, underlyingLayer, columnIndexOrder, true);
				}
				invalidateCache();
			}
File
ColumnReorderLayer.java
Developer's decision
Version 2
Kind of conflict
Comment
For statement
Method invocation
Chunk
Conflicting content
		super.saveState(prefix, properties);
		if (columnIndexOrder.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
			for (Long index : columnIndexOrder) {
=======
			for (Integer index : columnIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
				strBuilder.append(index);
				strBuilder.append(',');
			}
Solution content
		super.saveState(prefix, properties);
		if (columnIndexOrder.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : columnIndexOrder) {
				strBuilder.append(index);
				strBuilder.append(',');
			}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_COLUMN_INDEX_ORDER);

		if (property != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
			List newColumnIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, ","); //$NON-NLS-1$
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newColumnIndexOrder.add(Long.valueOf(index));
=======
			List newColumnIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, ","); //$NON-NLS-1$
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newColumnIndexOrder.add(Integer.valueOf(index));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
			}
			
			if(isRestoredStateValid(newColumnIndexOrder)){
Solution content
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_COLUMN_INDEX_ORDER);

		if (property != null) {
			List newColumnIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, ","); //$NON-NLS-1$
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newColumnIndexOrder.add(Long.valueOf(index));
			}
			
			if(isRestoredStateValid(newColumnIndexOrder)){
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Variable
While statement
Chunk
Conflicting content
	 * Ensure that columns haven't changed in the underlying data source
	 * @param newColumnIndexOrder restored from the properties file.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	protected boolean isRestoredStateValid(List newColumnIndexOrder) {
=======
	protected boolean isRestoredStateValid(List newColumnIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		if (newColumnIndexOrder.size() != getColumnCount()){
			System.err.println(
				"Number of persisted columns (" + newColumnIndexOrder.size() + ") " + //$NON-NLS-1$ //$NON-NLS-2$
Solution content
	 * Ensure that columns haven't changed in the underlying data source
	 * @param newColumnIndexOrder restored from the properties file.
	 */
	protected boolean isRestoredStateValid(List newColumnIndexOrder) {
		if (newColumnIndexOrder.size() != getColumnCount()){
			System.err.println(
				"Number of persisted columns (" + newColumnIndexOrder.size() + ") " + //$NON-NLS-1$ //$NON-NLS-2$
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
			return false;
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		for (Long index : newColumnIndexOrder) {
=======
		for (Integer index : newColumnIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
			if(!columnIndexOrder.contains(index)){
				System.err.println(
					"Column index: " + index + " being restored, is not a available in the data soure.\n" + //$NON-NLS-1$ //$NON-NLS-2$
Solution content
			return false;
		}
		
		for (Long index : newColumnIndexOrder) {
			if(!columnIndexOrder.contains(index)){
				System.err.println(
					"Column index: " + index + " being restored, is not a available in the data soure.\n" + //$NON-NLS-1$ //$NON-NLS-2$
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
	// Columns

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public List getColumnIndexOrder() {
=======
	public List getColumnIndexOrder() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return columnIndexOrder;
	}
Solution content
	// Columns

	public List getColumnIndexOrder() {
		return columnIndexOrder;
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getColumnIndexByPosition(long columnPosition) {
		if (columnPosition >= 0 && columnPosition < columnIndexOrder.size()) {
			return columnIndexOrder.get((int) columnPosition).longValue();
		} else {
			return NO_INDEX;
=======
	public int getColumnIndexByPosition(int columnPosition) {
		if (columnPosition >= 0 && columnPosition < columnIndexOrder.size()) {
			return columnIndexOrder.get(columnPosition).intValue();
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		}
	}
Solution content
	}

	@Override
	public long getColumnIndexByPosition(long columnPosition) {
		if (columnPosition >= 0 && columnPosition < columnIndexOrder.size()) {
			return columnIndexOrder.get((int) columnPosition).longValue();
		} else {
			return NO_INDEX;
		}
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Return statement
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getColumnPositionByIndex(long columnIndex) {
		if (columnIndex > Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		return columnIndexOrder.indexOf(Long.valueOf((int) columnIndex));
	}

	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		long columnIndex = getColumnIndexByPosition(localColumnPosition);
=======
	public int getColumnPositionByIndex(int columnIndex) {
		return columnIndexOrder.indexOf(Integer.valueOf(columnIndex));
	}

	@Override
	public int localToUnderlyingColumnPosition(int localColumnPosition) {
		int columnIndex = getColumnIndexByPosition(localColumnPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return underlyingLayer.getColumnPositionByIndex(columnIndex);
	}
Solution content
	}

	@Override
	public long getColumnPositionByIndex(long columnIndex) {
		if (columnIndex > Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		return columnIndexOrder.indexOf(Long.valueOf((int) columnIndex));
	}

	@Override
	public long localToUnderlyingColumnPosition(long localColumnPosition) {
		long columnIndex = getColumnIndexByPosition(localColumnPosition);
		return underlyingLayer.getColumnPositionByIndex(columnIndex);
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}

	@Override
		long columnIndex = underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
=======
	public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, int underlyingColumnPosition) {
		int columnIndex = underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return getColumnPositionByIndex(columnIndex);
	}
Solution content
	}

	@Override
	public long underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer, long underlyingColumnPosition) {
		long columnIndex = underlyingLayer.getColumnIndexByPosition(underlyingColumnPosition);
		return getColumnPositionByIndex(columnIndex);
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		List reorderedColumnPositions = new ArrayList();
		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			for (long underlyingColumnPosition = underlyingColumnPositionRange.start; underlyingColumnPosition < underlyingColumnPositionRange.end; underlyingColumnPosition++) {
				long localColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start);
				reorderedColumnPositions.add(Long.valueOf(localColumnPosition));
=======
		List reorderedColumnPositions = new ArrayList();
		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			for (int underlyingColumnPosition = underlyingColumnPositionRange.start; underlyingColumnPosition < underlyingColumnPositionRange.end; underlyingColumnPosition++) {
				int localColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start);
				reorderedColumnPositions.add(Integer.valueOf(localColumnPosition));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
			}
		}
		Collections.sort(reorderedColumnPositions);
Solution content
	@Override
	public Collection underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection underlyingColumnPositionRanges) {
		List reorderedColumnPositions = new ArrayList();
		for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
			for (long underlyingColumnPosition = underlyingColumnPositionRange.start; underlyingColumnPosition < underlyingColumnPositionRange.end; underlyingColumnPosition++) {
				long localColumnPosition = underlyingToLocalColumnPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start);
				reorderedColumnPositions.add(Long.valueOf(localColumnPosition));
			}
		}
		Collections.sort(reorderedColumnPositions);
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	// X

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getColumnPositionByX(long x) {
=======
	public int getColumnPositionByX(int x) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return LayerUtil.getColumnPositionByX(this, x);
	}
Solution content
	// X

	@Override
	public long getColumnPositionByX(long x) {
		return LayerUtil.getColumnPositionByX(this, x);
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getStartXOfColumnPosition(long targetColumnPosition) {
		if (targetColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		Long cachedStartX = startXCache.get(Long.valueOf((int) targetColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.longValue();
		}

		long aggregateWidth = 0;
=======
	public int getStartXOfColumnPosition(int targetColumnPosition) {
		Integer cachedStartX = startXCache.get(Integer.valueOf(targetColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.intValue();
		}

		int aggregateWidth = 0;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		for (int columnPosition = 0; columnPosition < targetColumnPosition; columnPosition++) {
			aggregateWidth += underlyingLayer.getColumnWidthByPosition(localToUnderlyingColumnPosition(columnPosition));
		}
Solution content
	}

	@Override
	public long getStartXOfColumnPosition(long targetColumnPosition) {
		if (targetColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		Long cachedStartX = startXCache.get(Long.valueOf((int) targetColumnPosition));
		if (cachedStartX != null) {
			return cachedStartX.longValue();
		}

		long aggregateWidth = 0;
		for (int columnPosition = 0; columnPosition < targetColumnPosition; columnPosition++) {
			aggregateWidth += underlyingLayer.getColumnWidthByPosition(localToUnderlyingColumnPosition(columnPosition));
		}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
			aggregateWidth += underlyingLayer.getColumnWidthByPosition(localToUnderlyingColumnPosition(columnPosition));
		}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		startXCache.put(Long.valueOf(targetColumnPosition), Long.valueOf(aggregateWidth));
=======
		startXCache.put(Integer.valueOf(targetColumnPosition), Integer.valueOf(aggregateWidth));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return aggregateWidth;
	}
	
Solution content
			aggregateWidth += underlyingLayer.getColumnWidthByPosition(localToUnderlyingColumnPosition(columnPosition));
		}

		startXCache.put(Long.valueOf(targetColumnPosition), Long.valueOf(aggregateWidth));
		return aggregateWidth;
	}
	
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	
	private void populateIndexOrder() {
		ILayer underlyingLayer = getUnderlyingLayer();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		for (long columnPosition = 0; columnPosition < underlyingLayer.getColumnCount(); columnPosition++) {
			columnIndexOrder.add(Long.valueOf(underlyingLayer.getColumnIndexByPosition(columnPosition)));
=======
		for (int columnPosition = 0; columnPosition < underlyingLayer.getColumnCount(); columnPosition++) {
			columnIndexOrder.add(Integer.valueOf(underlyingLayer.getColumnIndexByPosition(columnPosition)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		}
	}
Solution content
	
	private void populateIndexOrder() {
		ILayer underlyingLayer = getUnderlyingLayer();
		for (long columnPosition = 0; columnPosition < underlyingLayer.getColumnCount(); columnPosition++) {
			columnIndexOrder.add(Long.valueOf(underlyingLayer.getColumnIndexByPosition(columnPosition)));
		}
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Chunk
Conflicting content
	// Rows

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getRowPositionByIndex(long rowIndex) {
=======
	public int getRowPositionByIndex(int rowIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		return underlyingLayer.getRowPositionByIndex(rowIndex);
	}
Solution content
	// Rows

	@Override
	public long getRowPositionByIndex(long rowIndex) {
		return underlyingLayer.getRowPositionByIndex(rowIndex);
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
			toColumnPosition++;
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		Long fromColumnIndex = columnIndexOrder.get(fromColumnPosition);
=======
		Integer fromColumnIndex = columnIndexOrder.get(fromColumnPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		columnIndexOrder.add(toColumnPosition, fromColumnIndex);

		columnIndexOrder.remove(fromColumnPosition + (fromColumnPosition > toColumnPosition ? 1 : 0));
Solution content
			toColumnPosition++;
		}
		
		Long fromColumnIndex = columnIndexOrder.get(fromColumnPosition);
		columnIndexOrder.add(toColumnPosition, fromColumnIndex);

		columnIndexOrder.remove(fromColumnPosition + (fromColumnPosition > toColumnPosition ? 1 : 0));
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
		invalidateCache();
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public void reorderColumnPosition(long fromColumnPosition, long toColumnPosition) {
=======
	public void reorderColumnPosition(int fromColumnPosition, int toColumnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		boolean reorderToLeftEdge;
		if (toColumnPosition < getColumnCount()) {
 			reorderToLeftEdge = true;
Solution content
		invalidateCache();
	}

	public void reorderColumnPosition(long fromColumnPosition, long toColumnPosition) {
		boolean reorderToLeftEdge;
		if (toColumnPosition < getColumnCount()) {
 			reorderToLeftEdge = true;
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		reorderColumnPosition(fromColumnPosition, toColumnPosition, reorderToLeftEdge);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public void reorderColumnPosition(long fromColumnPosition, long toColumnPosition, boolean reorderToLeftEdge) {
		if (fromColumnPosition >= Integer.MAX_VALUE || toColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		moveColumn((int) fromColumnPosition, (int) toColumnPosition, reorderToLeftEdge);
		fireLayerEvent(new ColumnReorderEvent(this, fromColumnPosition, toColumnPosition, reorderToLeftEdge));
	}

	public void reorderMultipleColumnPositions(List fromColumnPositions, long toColumnPosition) {
=======
	public void reorderColumnPosition(int fromColumnPosition, int toColumnPosition, boolean reorderToLeftEdge) {
		moveColumn(fromColumnPosition, toColumnPosition, reorderToLeftEdge);
		fireLayerEvent(new ColumnReorderEvent(this, fromColumnPosition, toColumnPosition, reorderToLeftEdge));
	}

	public void reorderMultipleColumnPositions(List fromColumnPositions, int toColumnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		boolean reorderToLeftEdge;
		if (toColumnPosition < getColumnCount()) {
 			reorderToLeftEdge = true;
Solution content
		reorderColumnPosition(fromColumnPosition, toColumnPosition, reorderToLeftEdge);
	}
	
	public void reorderColumnPosition(long fromColumnPosition, long toColumnPosition, boolean reorderToLeftEdge) {
		if (fromColumnPosition >= Integer.MAX_VALUE || toColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		moveColumn((int) fromColumnPosition, (int) toColumnPosition, reorderToLeftEdge);
		fireLayerEvent(new ColumnReorderEvent(this, fromColumnPosition, toColumnPosition, reorderToLeftEdge));
	}

	public void reorderMultipleColumnPositions(List fromColumnPositions, long toColumnPosition) {
		boolean reorderToLeftEdge;
		if (toColumnPosition < getColumnCount()) {
 			reorderToLeftEdge = true;
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
		reorderMultipleColumnPositions(fromColumnPositions, toColumnPosition, reorderToLeftEdge);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public void reorderMultipleColumnPositions(List fromColumnPositions, long toColumnPosition, boolean reorderToLeftEdge) {
		if (toColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		// Moving from left to right
		final int fromColumnPositionsCount = fromColumnPositions.size();

		if (toColumnPosition > fromColumnPositions.get(fromColumnPositionsCount - 1).longValue()) {
			long firstColumnPosition = fromColumnPositions.get(0).longValue();

			for (int columnCount = 0; columnCount < fromColumnPositionsCount; columnCount++) {
				final long fromColumnPosition = fromColumnPositions.get(0).longValue();
				if (fromColumnPosition >= Integer.MAX_VALUE) {
					throw new IndexOutOfBoundsException();
				}
				moveColumn((int) fromColumnPosition, (int) toColumnPosition, reorderToLeftEdge);
=======
	public void reorderMultipleColumnPositions(List fromColumnPositions, int toColumnPosition, boolean reorderToLeftEdge) {
		// Moving from left to right
		final int fromColumnPositionsCount = fromColumnPositions.size();

		if (toColumnPosition > fromColumnPositions.get(fromColumnPositionsCount - 1).intValue()) {
			int firstColumnPosition = fromColumnPositions.get(0).intValue();

			for (int columnCount = 0; columnCount < fromColumnPositionsCount; columnCount++) {
				final int fromColumnPosition = fromColumnPositions.get(0).intValue();
				moveColumn(fromColumnPosition, toColumnPosition, reorderToLeftEdge);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
				if (fromColumnPosition < firstColumnPosition) {
					firstColumnPosition = fromColumnPosition;
				}
Solution content
		reorderMultipleColumnPositions(fromColumnPositions, toColumnPosition, reorderToLeftEdge);
	}
	
	public void reorderMultipleColumnPositions(List fromColumnPositions, long toColumnPosition, boolean reorderToLeftEdge) {
		if (toColumnPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		// Moving from left to right
		final int fromColumnPositionsCount = fromColumnPositions.size();

		if (toColumnPosition > fromColumnPositions.get(fromColumnPositionsCount - 1).longValue()) {
			long firstColumnPosition = fromColumnPositions.get(0).longValue();

			for (int columnCount = 0; columnCount < fromColumnPositionsCount; columnCount++) {
				final long fromColumnPosition = fromColumnPositions.get(0).longValue();
				if (fromColumnPosition >= Integer.MAX_VALUE) {
					throw new IndexOutOfBoundsException();
				}
				moveColumn((int) fromColumnPosition, (int) toColumnPosition, reorderToLeftEdge);
				if (fromColumnPosition < firstColumnPosition) {
					firstColumnPosition = fromColumnPosition;
				}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Comment
For statement
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
					firstColumnPosition = fromColumnPosition;
				}
			}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		} else if (toColumnPosition < fromColumnPositions.get(fromColumnPositionsCount - 1).longValue()) {
			// Moving from right to left
			int targetColumnPosition = (int) toColumnPosition;
			for (Long fromColumnPosition : fromColumnPositions) {
=======
		} else if (toColumnPosition < fromColumnPositions.get(fromColumnPositionsCount - 1).intValue()) {
			// Moving from right to left
			int targetColumnPosition = toColumnPosition;
			for (Integer fromColumnPosition : fromColumnPositions) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
				final int fromColumnPositionInt = fromColumnPosition.intValue();
				moveColumn(fromColumnPositionInt, targetColumnPosition++, reorderToLeftEdge);
			}
Solution content
					firstColumnPosition = fromColumnPosition;
				}
			}
		} else if (toColumnPosition < fromColumnPositions.get(fromColumnPositionsCount - 1).longValue()) {
			// Moving from right to left
			int targetColumnPosition = (int) toColumnPosition;
			for (Long fromColumnPosition : fromColumnPositions) {
				final int fromColumnPositionInt = fromColumnPosition.intValue();
				moveColumn(fromColumnPositionInt, targetColumnPosition++, reorderToLeftEdge);
			}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Cast expression
Comment
For statement
If statement
Variable
Chunk
Conflicting content
		startXCache.clear();
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
	public long getReorderFromColumnPosition() {
		return reorderFromColumnPosition;
	}
	
	public void setReorderFromColumnPosition(long fromColumnPosition) {
=======
	public int getReorderFromColumnPosition() {
		return reorderFromColumnPosition;
	}
	
	public void setReorderFromColumnPosition(int fromColumnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/ColumnReorderLayer.java
		this.reorderFromColumnPosition = fromColumnPosition;
	}
Solution content
		startXCache.clear();
	}

	public long getReorderFromColumnPosition() {
		return reorderFromColumnPosition;
	}
	
	public void setReorderFromColumnPosition(long fromColumnPosition) {
		this.reorderFromColumnPosition = fromColumnPosition;
	}
File
ColumnReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
 *******************************************************************************/
package org.eclipse.nebula.widgets.nattable.reorder;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Solution content
 *******************************************************************************/
package org.eclipse.nebula.widgets.nattable.reorder;

import static org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell.NO_INDEX;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	 * The local cache of the row index order. Used to track the reordering performed by this layer.
	 * Position Y in the List contains the index of row at position Y.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	private final List rowIndexOrder = new ArrayList();
=======
	private final List rowIndexOrder = new ArrayList();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java

	/**
	 * Caching of the starting y positions of the rows.
Solution content
	 * The local cache of the row index order. Used to track the reordering performed by this layer.
	 * Position Y in the List contains the index of row at position Y.
	 */
	private final List rowIndexOrder = new ArrayList();

	/**
	 * Caching of the starting y positions of the rows.
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
	 * Caching of the starting y positions of the rows.
	 * Used to reduce calculation time on rendering
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	private final Map startYCache = new HashMap();
=======
	private final Map startYCache = new HashMap();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java

	/**
	 * Local cached position of the row that is currently reordered.
Solution content
	 * Caching of the starting y positions of the rows.
	 * Used to reduce calculation time on rendering
	 */
	private final Map startYCache = new HashMap();

	/**
	 * Local cached position of the row that is currently reordered.
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
	/**
	 * Local cached position of the row that is currently reordered.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	private long reorderFromRowPosition;
=======
	private int reorderFromRowPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java

	public RowReorderLayer(IUniqueIndexLayer underlyingLayer) {
		this(underlyingLayer, true);
Solution content
	/**
	 * Local cached position of the row that is currently reordered.
	 */
	private long reorderFromRowPosition;

	public RowReorderLayer(IUniqueIndexLayer underlyingLayer) {
		this(underlyingLayer, true);
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Chunk
Conflicting content
		super.saveState(prefix, properties);
		if (rowIndexOrder.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			for (Long index : rowIndexOrder) {
=======
			for (Integer index : rowIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
Solution content
		super.saveState(prefix, properties);
		if (rowIndexOrder.size() > 0) {
			StringBuilder strBuilder = new StringBuilder();
			for (Long index : rowIndexOrder) {
				strBuilder.append(index);
				strBuilder.append(IPersistable.VALUE_SEPARATOR);
			}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_ROW_INDEX_ORDER);

		if (property != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			List newRowIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newRowIndexOrder.add(Long.valueOf(index));
=======
			List newRowIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newRowIndexOrder.add(Integer.valueOf(index));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			}
			
			if(isRestoredStateValid(newRowIndexOrder)){
Solution content
		String property = properties.getProperty(prefix + PERSISTENCE_KEY_ROW_INDEX_ORDER);

		if (property != null) {
			List newRowIndexOrder = new ArrayList();
			StringTokenizer tok = new StringTokenizer(property, IPersistable.VALUE_SEPARATOR);
			while (tok.hasMoreTokens()) {
				String index = tok.nextToken();
				newRowIndexOrder.add(Long.valueOf(index));
			}
			
			if(isRestoredStateValid(newRowIndexOrder)){
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
While statement
Chunk
Conflicting content
	 * Ensure that rows haven't changed in the underlying data source
	 * @param newRowIndexOrder restored from the properties file.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	protected boolean isRestoredStateValid(List newRowIndexOrder) {
=======
	protected boolean isRestoredStateValid(List newRowIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		if (newRowIndexOrder.size() != getRowCount()){
			System.err.println(
				"Number of persisted rows (" + newRowIndexOrder.size() + ") " + //$NON-NLS-1$ //$NON-NLS-2$
Solution content
	 * Ensure that rows haven't changed in the underlying data source
	 * @param newRowIndexOrder restored from the properties file.
	 */
	protected boolean isRestoredStateValid(List newRowIndexOrder) {
		if (newRowIndexOrder.size() != getRowCount()){
			System.err.println(
				"Number of persisted rows (" + newRowIndexOrder.size() + ") " + //$NON-NLS-1$ //$NON-NLS-2$
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
			return false;
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		for (Long index : newRowIndexOrder) {
=======
		for (Integer index : newRowIndexOrder) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			if(!rowIndexOrder.contains(index)){
				System.err.println(
					"Row index: " + index + " being restored, is not a available in the data soure.\n" + //$NON-NLS-1$ //$NON-NLS-2$
Solution content
			return false;
		}
		
		for (Long index : newRowIndexOrder) {
			if(!rowIndexOrder.contains(index)){
				System.err.println(
					"Row index: " + index + " being restored, is not a available in the data soure.\n" + //$NON-NLS-1$ //$NON-NLS-2$
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
	// Columns

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getColumnPositionByIndex(long columnIndex) {
=======
	public int getColumnPositionByIndex(int columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return underlyingLayer.getColumnPositionByIndex(columnIndex);
	}
	
Solution content
	// Columns

	@Override
	public long getColumnPositionByIndex(long columnIndex) {
		return underlyingLayer.getColumnPositionByIndex(columnIndex);
	}
	
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	// Y

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getRowPositionByY(long y) {
=======
	public int getRowPositionByY(int y) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return LayerUtil.getRowPositionByY(this, y);
	}
Solution content
	// Y

	@Override
	public long getRowPositionByY(long y) {
		return LayerUtil.getRowPositionByY(this, y);
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getStartYOfRowPosition(long targetRowPosition) {
		Long cachedStartY = startYCache.get(targetRowPosition);
=======
	public int getStartYOfRowPosition(int targetRowPosition) {
		Integer cachedStartY = startYCache.get(targetRowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		if (cachedStartY != null) {
			return cachedStartY;
		}
Solution content
	}

	@Override
	public long getStartYOfRowPosition(long targetRowPosition) {
		Long cachedStartY = startYCache.get(targetRowPosition);
		if (cachedStartY != null) {
			return cachedStartY;
		}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
			return cachedStartY;
		}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		long aggregateWidth = 0;
		for (long rowPosition = 0; rowPosition < targetRowPosition; rowPosition++) {
=======
		int aggregateWidth = 0;
		for (int rowPosition = 0; rowPosition < targetRowPosition; rowPosition++) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			aggregateWidth += underlyingLayer.getRowHeightByPosition(localToUnderlyingRowPosition(rowPosition));
		}
Solution content
			return cachedStartY;
		}

		long aggregateWidth = 0;
		for (long rowPosition = 0; rowPosition < targetRowPosition; rowPosition++) {
			aggregateWidth += underlyingLayer.getRowHeightByPosition(localToUnderlyingRowPosition(rowPosition));
		}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Variable
Chunk
Conflicting content
	 */
	private void populateIndexOrder() {
		ILayer underlyingLayer = getUnderlyingLayer();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		for (long rowPosition = 0; rowPosition < underlyingLayer.getRowCount(); rowPosition++) {
=======
		for (int rowPosition = 0; rowPosition < underlyingLayer.getRowCount(); rowPosition++) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			rowIndexOrder.add(underlyingLayer.getRowIndexByPosition(rowPosition));
		}
	}
Solution content
	 */
	private void populateIndexOrder() {
		ILayer underlyingLayer = getUnderlyingLayer();
		for (long rowPosition = 0; rowPosition < underlyingLayer.getRowCount(); rowPosition++) {
			rowIndexOrder.add(underlyingLayer.getRowIndexByPosition(rowPosition));
		}
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Chunk
Conflicting content
	/**
	 * @return The local cache of the row index order.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public List getRowIndexOrder() {
=======
	public List getRowIndexOrder() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return rowIndexOrder;
	}
	
Solution content
	/**
	 * @return The local cache of the row index order.
	 */
	public List getRowIndexOrder() {
		return rowIndexOrder;
	}
	
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getRowIndexByPosition(long rowPosition) {
		if (rowPosition >= 0 && rowPosition < rowIndexOrder.size()) {
			return rowIndexOrder.get((int) rowPosition).longValue();
		} else {
			return NO_INDEX;
=======
	public int getRowIndexByPosition(int rowPosition) {
		if (rowPosition >= 0 && rowPosition < rowIndexOrder.size()) {
			return rowIndexOrder.get(rowPosition).intValue();
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		}
	}
Solution content
	}
	
	@Override
	public long getRowIndexByPosition(long rowPosition) {
		if (rowPosition >= 0 && rowPosition < rowIndexOrder.size()) {
			return rowIndexOrder.get((int) rowPosition).longValue();
		} else {
			return NO_INDEX;
		}
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Return statement
Chunk
Conflicting content
	@Override
	@Override

	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getRowPositionByIndex(long rowIndex) {
		return rowIndexOrder.indexOf(Long.valueOf(rowIndex));
	}
	public long localToUnderlyingRowPosition(long localRowPosition) {
		long rowIndex = getRowIndexByPosition(localRowPosition);
=======
	public int getRowPositionByIndex(int rowIndex) {
		return rowIndexOrder.indexOf(Integer.valueOf(rowIndex));
	}

	@Override
	public int localToUnderlyingRowPosition(int localRowPosition) {
		int rowIndex = getRowIndexByPosition(localRowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return underlyingLayer.getRowPositionByIndex(rowIndex);
	}
Solution content
	}

	@Override
	public long getRowPositionByIndex(long rowIndex) {
		return rowIndexOrder.indexOf(Long.valueOf(rowIndex));
	}

	@Override
	public long localToUnderlyingRowPosition(long localRowPosition) {
		long rowIndex = getRowIndexByPosition(localRowPosition);
		return underlyingLayer.getRowPositionByIndex(rowIndex);
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		long rowIndex = underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
=======
	public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, int underlyingRowPosition) {
		int rowIndex = underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return getRowPositionByIndex(rowIndex);
	}
Solution content
	}

	@Override
	public long underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer, long underlyingRowPosition) {
		long rowIndex = underlyingLayer.getRowIndexByPosition(underlyingRowPosition);
		return getRowPositionByIndex(rowIndex);
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		List reorderedRowPositions = new ArrayList();
		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			for (long underlyingRowPosition = underlyingRowPositionRange.start; underlyingRowPosition < underlyingRowPositionRange.end; underlyingRowPosition++) {
				long localRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start);
=======
		List reorderedRowPositions = new ArrayList();
		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			for (int underlyingRowPosition = underlyingRowPositionRange.start; underlyingRowPosition < underlyingRowPositionRange.end; underlyingRowPosition++) {
				int localRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
				reorderedRowPositions.add(localRowPosition);
			}
		}
Solution content
	@Override
	public Collection underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection underlyingRowPositionRanges) {
		List reorderedRowPositions = new ArrayList();
		for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
			for (long underlyingRowPosition = underlyingRowPositionRange.start; underlyingRowPosition < underlyingRowPositionRange.end; underlyingRowPosition++) {
				long localRowPosition = underlyingToLocalRowPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start);
				reorderedRowPositions.add(localRowPosition);
			}
		}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
			toRowPosition++;
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		Long fromRowIndex = rowIndexOrder.get(fromRowPosition);
=======
		Integer fromRowIndex = rowIndexOrder.get(fromRowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		rowIndexOrder.add(toRowPosition, fromRowIndex);

		rowIndexOrder.remove(fromRowPosition + (fromRowPosition > toRowPosition ? 1 : 0));
Solution content
			toRowPosition++;
		}
		
		Long fromRowIndex = rowIndexOrder.get(fromRowPosition);
		rowIndexOrder.add(toRowPosition, fromRowIndex);

		rowIndexOrder.remove(fromRowPosition + (fromRowPosition > toRowPosition ? 1 : 0));
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
	 * @param toRowPosition position to move the row to
	 * @param reorderToTopEdge whether the move should be done above the given to position or not
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public void reorderRowPosition(long fromRowPosition, long toRowPosition, boolean reorderToTopEdge) {
		if (fromRowPosition >= Integer.MAX_VALUE || toRowPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		moveRow((int) fromRowPosition, (int) toRowPosition, reorderToTopEdge);
=======
	public void reorderRowPosition(int fromRowPosition, int toRowPosition, boolean reorderToTopEdge) {
		moveRow(fromRowPosition, toRowPosition, reorderToTopEdge);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		fireLayerEvent(new RowReorderEvent(this, fromRowPosition, toRowPosition, reorderToTopEdge));
	}
Solution content
	 * @param toRowPosition position to move the row to
	 * @param reorderToTopEdge whether the move should be done above the given to position or not
	 */
	public void reorderRowPosition(long fromRowPosition, long toRowPosition, boolean reorderToTopEdge) {
		if (fromRowPosition >= Integer.MAX_VALUE || toRowPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		moveRow((int) fromRowPosition, (int) toRowPosition, reorderToTopEdge);
		fireLayerEvent(new RowReorderEvent(this, fromRowPosition, toRowPosition, reorderToTopEdge));
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Chunk
Conflicting content
	 * @param fromRowPositions row positions to move
	 * @param toRowPosition position to move the rows to
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public void reorderMultipleRowPositions(List fromRowPositions, long toRowPosition) {
=======
	public void reorderMultipleRowPositions(List fromRowPositions, int toRowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		boolean reorderToTopEdge;
		if (toRowPosition < getRowCount()) {
 			reorderToTopEdge = true;
Solution content
	 * @param fromRowPositions row positions to move
	 * @param toRowPosition position to move the rows to
	 */
	public void reorderMultipleRowPositions(List fromRowPositions, long toRowPosition) {
		boolean reorderToTopEdge;
		if (toRowPosition < getRowCount()) {
 			reorderToTopEdge = true;
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * @param toRowPosition position to move the rows to
	 * @param reorderToTopEdge whether the move should be done above the given to position or not
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public void reorderMultipleRowPositions(List fromRowPositions, long toRowPosition, boolean reorderToTopEdge) {
		if (toRowPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
=======
	public void reorderMultipleRowPositions(List fromRowPositions, int toRowPosition, boolean reorderToTopEdge) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		final int fromRowPositionsCount = fromRowPositions.size();

		if (toRowPosition > fromRowPositions.get(fromRowPositionsCount - 1)) {
Solution content
	 * @param toRowPosition position to move the rows to
	 * @param reorderToTopEdge whether the move should be done above the given to position or not
	 */
	public void reorderMultipleRowPositions(List fromRowPositions, long toRowPosition, boolean reorderToTopEdge) {
		if (toRowPosition >= Integer.MAX_VALUE) {
			throw new IndexOutOfBoundsException();
		}
		final int fromRowPositionsCount = fromRowPositions.size();

		if (toRowPosition > fromRowPositions.get(fromRowPositionsCount - 1)) {
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
If statement
Method signature
Chunk
Conflicting content
		if (toRowPosition > fromRowPositions.get(fromRowPositionsCount - 1)) {
			// Moving from top to bottom
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			long firstRowPosition = fromRowPositions.get(0).longValue();

			for (long rowCount = 0; rowCount < fromRowPositionsCount; rowCount++) {
				final long fromRowPosition = fromRowPositions.get(0).longValue();
				if (fromRowPosition >= Integer.MAX_VALUE) {
					throw new IndexOutOfBoundsException();
				}
				moveRow((int) fromRowPosition, (int) toRowPosition, reorderToTopEdge);
=======
			int firstRowPosition = fromRowPositions.get(0);

			for (int rowCount = 0; rowCount < fromRowPositionsCount; rowCount++) {
				final int fromRowPosition = fromRowPositions.get(0);
				moveRow(fromRowPosition, toRowPosition, reorderToTopEdge);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
				if (fromRowPosition < firstRowPosition) {
					firstRowPosition = fromRowPosition;
				}
Solution content
		if (toRowPosition > fromRowPositions.get(fromRowPositionsCount - 1)) {
			// Moving from top to bottom
			long firstRowPosition = fromRowPositions.get(0).longValue();

			for (long rowCount = 0; rowCount < fromRowPositionsCount; rowCount++) {
				final long fromRowPosition = fromRowPositions.get(0).longValue();
				if (fromRowPosition >= Integer.MAX_VALUE) {
					throw new IndexOutOfBoundsException();
				}
				moveRow((int) fromRowPosition, (int) toRowPosition, reorderToTopEdge);
				if (fromRowPosition < firstRowPosition) {
					firstRowPosition = fromRowPosition;
				}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
		} 
		else if (toRowPosition < fromRowPositions.get(fromRowPositionsCount - 1)) {
			// Moving from bottom to top
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
			int targetRowPosition = (int) toRowPosition;
			for (Long fromRowPosition : fromRowPositions) {
				final int fromRowPositionInt = fromRowPosition.intValue();
=======
			int targetRowPosition = toRowPosition;
			for (Integer fromRowPosition : fromRowPositions) {
				final int fromRowPositionInt = fromRowPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
				moveRow(fromRowPositionInt, targetRowPosition++, reorderToTopEdge);
			}
		}
Solution content
		} 
		else if (toRowPosition < fromRowPositions.get(fromRowPositionsCount - 1)) {
			// Moving from bottom to top
			int targetRowPosition = (int) toRowPosition;
			for (Long fromRowPosition : fromRowPositions) {
				final int fromRowPositionInt = fromRowPosition.intValue();
				moveRow(fromRowPositionInt, targetRowPosition++, reorderToTopEdge);
			}
		}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Cast expression
For statement
Method invocation
Variable
Chunk
Conflicting content
	/**
	 * @return Local cached position of the row that is currently reordered.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public long getReorderFromRowPosition() {
=======
	public int getReorderFromRowPosition() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		return reorderFromRowPosition;
	}
	
Solution content
	/**
	 * @return Local cached position of the row that is currently reordered.
	 */
	public long getReorderFromRowPosition() {
		return reorderFromRowPosition;
	}
	
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * Locally cache the position of the row that is currently reordered.
	 * @param fromRowPosition Position of the row that is currently reordered.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
	public void setReorderFromRowPosition(long fromRowPosition) {
=======
	public void setReorderFromRowPosition(int fromRowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/RowReorderLayer.java
		this.reorderFromRowPosition = fromRowPosition;
	}
Solution content
	 * Locally cache the position of the row that is currently reordered.
	 * @param fromRowPosition Position of the row that is currently reordered.
	 */
	public void setReorderFromRowPosition(long fromRowPosition) {
		this.reorderFromRowPosition = fromRowPosition;
	}
File
RowReorderLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		Collection beforeFromColumnPositionRanges = getBeforeFromColumnPositionRanges();

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/ColumnReorderEvent.java
		long afterAddColumnPosition = beforeToColumnPosition;
=======
		final int beforeToColumnPosition = (this.reorderToLeftEdge) ?
				this.beforeToColumnPosition : (this.beforeToColumnPosition + 1);
		int afterAddColumnPosition = beforeToColumnPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/ColumnReorderEvent.java
		for (Range beforeFromColumnPositionRange : beforeFromColumnPositionRanges) {
			if (beforeFromColumnPositionRange.start < beforeToColumnPosition) {
				afterAddColumnPosition -= Math.min(beforeFromColumnPositionRange.end, beforeToColumnPosition) - beforeFromColumnPositionRange.start;
Solution content
		Collection beforeFromColumnPositionRanges = getBeforeFromColumnPositionRanges();

		final long beforeToColumnPosition = (this.reorderToLeftEdge) ?
				this.beforeToColumnPosition : (this.beforeToColumnPosition + 1);
		long afterAddColumnPosition = beforeToColumnPosition;
		for (Range beforeFromColumnPositionRange : beforeFromColumnPositionRanges) {
			if (beforeFromColumnPositionRange.start < beforeToColumnPosition) {
				afterAddColumnPosition -= Math.min(beforeFromColumnPositionRange.end, beforeToColumnPosition) - beforeFromColumnPositionRange.start;
File
ColumnReorderEvent.java
Developer's decision
Manual
Kind of conflict
Attribute
Variable
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff.DiffTypeEnum;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/RowReorderEvent.java
=======
/**
 * Event indicating that one or multiple rows are moved to a new position.
 */
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/RowReorderEvent.java
public class RowReorderEvent extends RowStructuralChangeEvent {

	private Collection beforeFromRowPositionRanges;
Solution content
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff.DiffTypeEnum;

public class RowReorderEvent extends RowStructuralChangeEvent {

	private Collection beforeFromRowPositionRanges;
File
RowReorderEvent.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
		Collection beforeFromRowPositionRanges = getBeforeFromRowPositionRanges();

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/RowReorderEvent.java
		long afterAddRowPosition = beforeToRowPosition;
=======
		final int beforeToRowPosition = (this.reorderToTopEdge) ?
				this.beforeToRowPosition : (this.beforeToRowPosition + 1);
		int afterAddRowPosition = beforeToRowPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/reorder/event/RowReorderEvent.java
		for (Range beforeFromRowPositionRange : beforeFromRowPositionRanges) {
			if (beforeFromRowPositionRange.start < beforeToRowPosition) {
				afterAddRowPosition -= Math.min(beforeFromRowPositionRange.end, beforeToRowPosition) - beforeFromRowPositionRange.start;
Solution content
		Collection beforeFromRowPositionRanges = getBeforeFromRowPositionRanges();

		final long beforeToRowPosition = (this.reorderToTopEdge) ?
				this.beforeToRowPosition : (this.beforeToRowPosition + 1);
		long afterAddRowPosition = beforeToRowPosition;
		for (Range beforeFromRowPositionRange : beforeFromRowPositionRanges) {
			if (beforeFromRowPositionRange.start < beforeToRowPosition) {
				afterAddRowPosition -= Math.min(beforeFromRowPositionRange.end, beforeToRowPosition) - beforeFromRowPositionRange.start;
File
RowReorderEvent.java
Developer's decision
Manual
Kind of conflict
Attribute
Variable
Chunk
Conflicting content
 * Note: The {@link InitializeAutoResizeColumnsCommand} has to be fired first
 * when autoresizing columns.
 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/AutoResizeColumnsCommand.java

public class AutoResizeColumnsCommand extends AbstractMultiColumnCommand {


	public AutoResizeColumnsCommand(InitializeAutoResizeColumnsCommand initCommand) {
		super(initCommand.getLayer(), RangeList.listRanges(initCommand.getColumnPositions()));
=======
public class AutoResizeColumnsCommand extends AbstractDimPositionsCommand {
	
	private final IConfigRegistry configRegistry;
	private final GCFactory gcFactory;
	
	
	public AutoResizeColumnsCommand(InitializeAutoResizeColumnsCommand initCommand) {
		super(initCommand.getSourceLayer().getDim(HORIZONTAL), initCommand.getColumnPositions());
		this.configRegistry = initCommand.getConfigRegistry();
		this.gcFactory = initCommand.getGCFactory();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/AutoResizeColumnsCommand.java
	}
	
	protected AutoResizeColumnsCommand(AutoResizeColumnsCommand command) {
Solution content
 * Note: The {@link InitializeAutoResizeColumnsCommand} has to be fired first
 * when autoresizing columns.
 */

public class AutoResizeColumnsCommand extends AbstractDimPositionsCommand {


	public AutoResizeColumnsCommand(InitializeAutoResizeColumnsCommand initCommand) {
		super(initCommand.getSourceLayer().getDim(HORIZONTAL), initCommand.getColumnPositions());
	}
	
	protected AutoResizeColumnsCommand(AutoResizeColumnsCommand command) {
File
AutoResizeColumnsCommand.java
Developer's decision
Combination
Kind of conflict
Attribute
Class signature
Method invocation
Method signature
Chunk
Conflicting content
	
	
	public AutoResizeRowsCommand(InitializeAutoResizeRowsCommand initCommand) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/AutoResizeRowsCommand.java
		super(initCommand.getSourceLayer(), RangeList.listRanges(initCommand.getRowPositions()));
=======
		super(initCommand.getSourceLayer().getDim(VERTICAL), initCommand.getRowPositions());
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/AutoResizeRowsCommand.java
		this.configRegistry = initCommand.getConfigRegistry();
		this.gcFactory = initCommand.getGCFactory();
	}
Solution content
	
	public AutoResizeRowsCommand(InitializeAutoResizeRowsCommand initCommand) {
		super(initCommand.getSourceLayer().getDim(VERTICAL), initCommand.getRowPositions());
	}
File
AutoResizeRowsCommand.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
// -GC
package org.eclipse.nebula.widgets.nattable.resize.command;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java
import java.util.Collections;
import java.util.List;

import org.eclipse.nebula.widgets.nattable.command.AbstractColumnCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
=======
import java.util.Collection;
import java.util.Collections;

import org.eclipse.nebula.widgets.nattable.command.AbstractColumnCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java
import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
Solution content
// -GC
package org.eclipse.nebula.widgets.nattable.resize.command;

import java.util.Collection;
import java.util.Collections;

import org.eclipse.nebula.widgets.nattable.command.AbstractColumnCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
File
InitializeAutoResizeColumnsCommand.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
public class InitializeAutoResizeColumnsCommand extends AbstractColumnCommand {

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java

	private final ILayer sourceLayer;
	private List selectedColumnPositions = Collections.emptyList();


	public InitializeAutoResizeColumnsCommand(ILayer layer, long columnPosition) {
=======
	private final IConfigRegistry configRegistry;
	private final GCFactory gcFactory;
	
	private final ILayer sourceLayer;
	private Collection selectedColumnPositions = Collections.emptyList();
	
	
	public InitializeAutoResizeColumnsCommand(ILayer layer, int columnPosition, IConfigRegistry configRegistry, GCFactory gcFactory) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java
		super(layer, columnPosition);

		this.sourceLayer = layer;
Solution content
public class InitializeAutoResizeColumnsCommand extends AbstractColumnCommand {


	private final ILayer sourceLayer;
	private Collection selectedColumnPositions = Collections.emptyList();
	
	
	public InitializeAutoResizeColumnsCommand(ILayer layer, long columnPosition) {
		super(layer, columnPosition);

		this.sourceLayer = layer;
File
InitializeAutoResizeColumnsCommand.java
Developer's decision
Combination
Kind of conflict
Attribute
Method invocation
Method signature
Chunk
Conflicting content
		return sourceLayer;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java
	public void setSelectedColumnPositions(List selectedColumnPositions) {
		this.selectedColumnPositions = selectedColumnPositions;
	}

	public List getColumnPositions() {
=======
	public void setSelectedColumnPositions(final Collection selectedColumnPositions) {
		this.selectedColumnPositions = selectedColumnPositions;
	}

	public Collection getColumnPositions() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeColumnsCommand.java
		return selectedColumnPositions;
	}
Solution content
		return sourceLayer;
	}

	public void setSelectedColumnPositions(final Collection selectedColumnPositions) {
		this.selectedColumnPositions = selectedColumnPositions;
	}

	public Collection getColumnPositions() {
		return selectedColumnPositions;
	}
File
InitializeAutoResizeColumnsCommand.java
Developer's decision
Version 2
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.resize.command;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
import java.util.Collections;
import java.util.List;
=======
import java.util.Collection;
import java.util.Collections;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java

import org.eclipse.nebula.widgets.nattable.command.AbstractRowCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
Solution content
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.resize.command;

import java.util.Collection;
import java.util.Collections;

import org.eclipse.nebula.widgets.nattable.command.AbstractRowCommand;
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
File
InitializeAutoResizeRowsCommand.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
=======
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.util.GCFactory;
Solution content
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
File
InitializeAutoResizeRowsCommand.java
Developer's decision
Manual
Kind of conflict
Import
Chunk
Conflicting content
	private final GCFactory gcFactory;
	
	private final ILayer sourceLayer;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
	private List selectedRowPositions = Collections.emptyList();

	public InitializeAutoResizeRowsCommand(ILayer layer, long rowPosition, IConfigRegistry configRegistry, GCFactory gcFactory) {
=======
	private Collection selectedRowPositions = Collections.emptyList();
	
	
	public InitializeAutoResizeRowsCommand(ILayer layer, int rowPosition, IConfigRegistry configRegistry, GCFactory gcFactory) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
		super(layer, rowPosition);
		this.configRegistry = configRegistry;
		this.gcFactory = gcFactory;
Solution content
	private final ILayer sourceLayer;
	private Collection selectedRowPositions = Collections.emptyList();
	
	
	public InitializeAutoResizeRowsCommand(ILayer layer, long rowPosition) {
		super(layer, rowPosition);
File
InitializeAutoResizeRowsCommand.java
Developer's decision
Manual
Kind of conflict
Attribute
Method invocation
Method signature
Chunk
Conflicting content
		return sourceLayer;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
	public void setSelectedRowPositions(List selectedRowPositions) {
		this.selectedRowPositions = selectedRowPositions;
	}

	public List getRowPositions() {
=======
	public void setSelectedRowPositions(final Collection selectedRowPositions) {
		this.selectedRowPositions = selectedRowPositions;
	}

	public Collection getRowPositions() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/InitializeAutoResizeRowsCommand.java
		return selectedRowPositions;
	}
Solution content
		return sourceLayer;
	}

	public void setSelectedRowPositions(final Collection selectedRowPositions) {
		this.selectedRowPositions = selectedRowPositions;
	}

	public Collection getRowPositions() {
		return selectedRowPositions;
	}
File
InitializeAutoResizeRowsCommand.java
Developer's decision
Version 2
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
	/**
	 * All columns are being resized to the same width e.g. during a drag resize
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
	public MultiColumnResizeCommand(ILayer layer, long[] columnPositions, int commonColumnWidth) {
		super(layer, columnPositions);
=======
	public MultiColumnResizeCommand(ILayer layer, Collection columnPositions, int commonColumnWidth) {
		super(layer.getDim(HORIZONTAL), columnPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
		this.commonColumnWidth = commonColumnWidth;
	}
	
Solution content
	/**
	 * All columns are being resized to the same width e.g. during a drag resize
	 */
	public MultiColumnResizeCommand(ILayer layer, Collection columnPositions, int commonColumnWidth) {
		super(layer.getDim(HORIZONTAL), columnPositions);
		this.commonColumnWidth = commonColumnWidth;
	}
	
File
MultiColumnResizeCommand.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Method signature
Chunk
Conflicting content
	/**
	 * Each column is being resized to a different size e.g. during auto resize
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
	public MultiColumnResizeCommand(ILayer layer, long[] columnPositions, int[] columnWidths) {
		super(layer, columnPositions);
=======
	public MultiColumnResizeCommand(ILayer layer, int[] columnPositions, int[] columnWidths) {
		super(layer.getDim(HORIZONTAL), new RangeList(columnPositions));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
		for (int i = 0; i < columnPositions.length; i++) {
			colPositionToWidth.put(new ColumnPositionCoordinate(layer, columnPositions[i]), Integer.valueOf(columnWidths[i]));
		}
Solution content
	/**
	 * Each column is being resized to a different size e.g. during auto resize
	 */
	public MultiColumnResizeCommand(ILayer layer, long[] columnPositions, int[] columnWidths) {
		super(layer.getDim(HORIZONTAL), new RangeList(columnPositions));
		for (int i = 0; i < columnPositions.length; i++) {
			colPositionToWidth.put(new ColumnPositionCoordinate(layer, columnPositions[i]), Integer.valueOf(columnWidths[i]));
		}
File
MultiColumnResizeCommand.java
Developer's decision
Combination
Kind of conflict
Method invocation
Method signature
Chunk
Conflicting content
		this.commonColumnWidth = command.commonColumnWidth;
		this.colPositionToWidth = new HashMap(command.colPositionToWidth);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java

	public long getCommonColumnWidth() {
=======
	
	@Override
	public MultiColumnResizeCommand cloneCommand() {
		return new MultiColumnResizeCommand(this);
	}
	
	
	public int getCommonColumnWidth() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
		return commonColumnWidth;
	}
	
Solution content
		this.commonColumnWidth = command.commonColumnWidth;
		this.colPositionToWidth = new HashMap(command.colPositionToWidth);
	}
	
	@Override
	public MultiColumnResizeCommand cloneCommand() {
		return new MultiColumnResizeCommand(this);
	}
	
	
	public long getCommonColumnWidth() {
		return commonColumnWidth;
	}
	
File
MultiColumnResizeCommand.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	
	@Override
	public boolean convertToTargetLayer(ILayer targetLayer) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
=======
		// Ensure that the width associated with the column is now associated with the converted 
		// column position.
		Map newColPositionToWidth = new HashMap();
		
		for (ColumnPositionCoordinate columnPositionCoordinate : colPositionToWidth.keySet()) {
			ColumnPositionCoordinate convertedColumnPositionCoordinate = LayerCommandUtil.convertColumnPositionToTargetContext(columnPositionCoordinate, targetLayer);
			if (convertedColumnPositionCoordinate != null) {
				newColPositionToWidth.put(convertedColumnPositionCoordinate, colPositionToWidth.get(columnPositionCoordinate));
			}
		}
		
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommand.java
		if (super.convertToTargetLayer(targetLayer)) {
			Map targetColPositionToWidth = new HashMap();
			
Solution content
	@Override
	
	public boolean convertToTargetLayer(ILayer targetLayer) {
		if (super.convertToTargetLayer(targetLayer)) {
			// Ensure that the width associated with the column is now associated with the converted 
			// column position.
			Map targetColPositionToWidth = new HashMap();
			
File
MultiColumnResizeCommand.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
Method invocation
Variable
Chunk
Conflicting content
	@Override
	protected boolean doCommand(MultiColumnResizeCommand command) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommandHandler.java
		for (long columnPosition : command.getColumnPositions()) {
			dataLayer.setColumnWidthByPosition(columnPosition,
					command.getColumnWidth(columnPosition));
=======
		for (final IValueIterator columnIter = new ValueIterator(command.getPositions()); columnIter.hasNext(); ) {
			final int columnPosition = columnIter.nextValue();
			dataLayer.setColumnWidthByPosition(columnPosition, command.getColumnWidth(columnPosition));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiColumnResizeCommandHandler.java
		}
		return true;
	}
Solution content
	@Override
	protected boolean doCommand(MultiColumnResizeCommand command) {
		for (final IValueIterator columnIter = new ValueIterator(command.getPositions()); columnIter.hasNext(); ) {
			final long columnPosition = columnIter.nextValue();
			dataLayer.setColumnWidthByPosition(columnPosition, command.getColumnWidth(columnPosition));
		}
		return true;
	}
File
MultiColumnResizeCommandHandler.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	/**
	 * All rows are being resized to the same height e.g. during a drag resize
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
	public MultiRowResizeCommand(ILayer layer, long[] rowPositions, int commonRowHeight) {
		super(layer, rowPositions);
=======
	public MultiRowResizeCommand(ILayer layer, Collection rowPositions, int commonRowHeight) {
		super(layer.getDim(VERTICAL), rowPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
		this.commonRowHeight = commonRowHeight;
	}
	
Solution content
	/**
	 * All rows are being resized to the same height e.g. during a drag resize
	 */
	public MultiRowResizeCommand(ILayer layer, Collection rowPositions, int commonRowHeight) {
		super(layer.getDim(VERTICAL), rowPositions);
		this.commonRowHeight = commonRowHeight;
	}
	
File
MultiRowResizeCommand.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Method signature
Chunk
Conflicting content
	/**
	 * Each row is being resized to a different size e.g. during auto resize
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
	public MultiRowResizeCommand(ILayer layer, long[] rowPositions, int[] rowHeights) {
		super(layer, rowPositions);
=======
	public MultiRowResizeCommand(ILayer layer, int[] rowPositions, int[] rowHeights) {
		super(layer.getDim(VERTICAL), new RangeList(rowPositions));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
		for (int i = 0; i < rowPositions.length; i++) {
			rowPositionToHeight.put(new RowPositionCoordinate(layer, rowPositions[i]), Integer.valueOf(rowHeights[i]));
		}
Solution content
	/**
	 * Each row is being resized to a different size e.g. during auto resize
	 */
	public MultiRowResizeCommand(ILayer layer, long[] rowPositions, int[] rowHeights) {
		super(layer.getDim(VERTICAL), new RangeList(rowPositions));
		for (int i = 0; i < rowPositions.length; i++) {
			rowPositionToHeight.put(new RowPositionCoordinate(layer, rowPositions[i]), Integer.valueOf(rowHeights[i]));
		}
File
MultiRowResizeCommand.java
Developer's decision
Combination
Kind of conflict
Method invocation
Method signature
Chunk
Conflicting content
		this.commonRowHeight = command.commonRowHeight;
		this.rowPositionToHeight = new HashMap(command.rowPositionToHeight);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java

	public long getCommonRowHeight() {
=======
	
	@Override
	public MultiRowResizeCommand cloneCommand() {
		return new MultiRowResizeCommand(this);
	}
	
	
	public int getCommonRowHeight() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
		return commonRowHeight;
	}
	
Solution content
		this.commonRowHeight = command.commonRowHeight;
		this.rowPositionToHeight = new HashMap(command.rowPositionToHeight);
	}
	
	@Override
	public MultiRowResizeCommand cloneCommand() {
		return new MultiRowResizeCommand(this);
	}
	
	
	public long getCommonRowHeight() {
		return commonRowHeight;
	}
	
File
MultiRowResizeCommand.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	
	@Override
	public boolean convertToTargetLayer(ILayer targetLayer) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
=======
		// Ensure that the height associated with the row is now associated with the converted 
		// row position.
		Map newRowPositionToHeight = new HashMap();
		
		for (RowPositionCoordinate rowPositionCoordinate : rowPositionToHeight.keySet()) {
			RowPositionCoordinate convertedRowPositionCoordinate = LayerCommandUtil.convertRowPositionToTargetContext(rowPositionCoordinate, targetLayer);
			if (convertedRowPositionCoordinate != null) {
				newRowPositionToHeight.put(convertedRowPositionCoordinate, rowPositionToHeight.get(rowPositionCoordinate));
			}
		}
		
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommand.java
		if (super.convertToTargetLayer(targetLayer)) {
			Map targetRowPositionToHeight = new HashMap();
			
Solution content
	
	@Override
	public boolean convertToTargetLayer(ILayer targetLayer) {
		if (super.convertToTargetLayer(targetLayer)) {
			// Ensure that the height associated with the row is now associated with the converted 
			// row position.
			Map targetRowPositionToHeight = new HashMap();
			
File
MultiRowResizeCommand.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
Method invocation
Variable
Chunk
Conflicting content
	@Override
	protected boolean doCommand(MultiRowResizeCommand command) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommandHandler.java
		for (long rowPosition : command.getRowPositions()) {
=======
		for (final IValueIterator rowIter = new ValueIterator(command.getPositions()); rowIter.hasNext(); ) {
			final int rowPosition = rowIter.nextValue();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/resize/command/MultiRowResizeCommandHandler.java
			dataLayer.setRowHeightByPosition(rowPosition, command.getRowHeight(rowPosition));
		}
		return true;
Solution content
	@Override
	protected boolean doCommand(MultiRowResizeCommand command) {
		for (final IValueIterator rowIter = new ValueIterator(command.getPositions()); rowIter.hasNext(); ) {
			final long rowPosition = rowIter.nextValue();
			dataLayer.setRowHeightByPosition(rowPosition, command.getRowHeight(rowPosition));
		}
		return true;
File
MultiRowResizeCommandHandler.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	
	
	@SuppressWarnings("unchecked")
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/CellDisplayValueSearchUtil.java
	static PositionCoordinate findCell(final ILayer layer, final IConfigRegistry configRegistry, final List cellsToSearch, final Object valueToMatch, final Comparator comparator, final boolean caseSensitive) {	
		final List cellCoordinates = cellsToSearch;
=======
	static PositionCoordinate findCell(final ILayer layer, final IConfigRegistry configRegistry, List cellsToSearch, final Object valueToMatch, final Comparator comparator, final boolean caseSensitive) {	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/CellDisplayValueSearchUtil.java
		// Find cell
		PositionCoordinate targetCoordinate = null;
		
Solution content
	
	
	@SuppressWarnings("unchecked")
	static PositionCoordinate findCell(final ILayer layer, final IConfigRegistry configRegistry, final List cellsToSearch, final Object valueToMatch, final Comparator comparator, final boolean caseSensitive) {
		// Find cell
		PositionCoordinate targetCoordinate = null;
		
File
CellDisplayValueSearchUtil.java
Developer's decision
Combination
Kind of conflict
Method signature
Variable
Chunk
Conflicting content
		PositionCoordinate targetCoordinate = null;
		
		String stringValue = caseSensitive ? valueToMatch.toString() : valueToMatch.toString().toLowerCase();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/CellDisplayValueSearchUtil.java
		for (int cellIndex = 0; cellIndex < cellCoordinates.size(); cellIndex++) {
			final PositionCoordinate cellCoordinate = cellCoordinates.get(cellIndex);
			final long columnPosition = cellCoordinate.columnPosition;
			final long rowPosition = cellCoordinate.rowPosition;
=======
		for (int cellIndex = 0; cellIndex < cellsToSearch.size(); cellIndex++) {
			final PositionCoordinate cellCoordinate = cellsToSearch.get(cellIndex);
			final int columnPosition = cellCoordinate.columnPosition;
			final int rowPosition = cellCoordinate.rowPosition;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/CellDisplayValueSearchUtil.java
			
			// Convert cell's data
			final IDisplayConverter displayConverter = configRegistry.getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.NORMAL, layer.getConfigLabelsByPosition(columnPosition, rowPosition).getLabels());
Solution content
		PositionCoordinate targetCoordinate = null;
		
		String stringValue = caseSensitive ? valueToMatch.toString() : valueToMatch.toString().toLowerCase();
		for (int cellIndex = 0; cellIndex < cellsToSearch.size(); cellIndex++) {
			final PositionCoordinate cellCoordinate = cellsToSearch.get(cellIndex);
			final long columnPosition = cellCoordinate.columnPosition;
			final long rowPosition = cellCoordinate.rowPosition;
			
			// Convert cell's data
			final IDisplayConverter displayConverter = configRegistry.getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.NORMAL, layer.getConfigLabelsByPosition(columnPosition, rowPosition).getLabels());
File
CellDisplayValueSearchUtil.java
Developer's decision
Combination
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	}

	protected List getSelectedCells(SelectionLayer selectionLayer) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/SelectionSearchStrategy.java
		List selectedCells = null;
		if (searchDirection.equals(ISearchDirection.SEARCH_BACKWARDS)) {
			selectedCells = selectionLayer.getSelectedCellPositions();
			Collections.reverse(selectedCells);
		} else {
			selectedCells = selectionLayer.getSelectedCellPositions();
=======
		List selectedCells = selectionLayer.getSelectedCellPositions();
		if (searchDirection.equals(ISearchDirection.SEARCH_BACKWARDS)) {
			Collections.reverse(selectedCells);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/strategy/SelectionSearchStrategy.java
		}
		return selectedCells;
	}
Solution content
	}

	protected List getSelectedCells(SelectionLayer selectionLayer) {
		List selectedCells = selectionLayer.getSelectedCellPositions();
		if (searchDirection.equals(ISearchDirection.SEARCH_BACKWARDS)) {
			Collections.reverse(selectedCells);
		}
		return selectedCells;
	}
File
SelectionSearchStrategy.java
Developer's decision
Version 2
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/ISelectionModel.java
// ~Selection
package org.eclipse.nebula.widgets.nattable.selection;

import java.util.List;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
=======

package org.eclipse.nebula.widgets.nattable.selection;

import java.util.List;

import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/ISelectionModel.java

/**
 * Tracks the selections made in the table.
Solution content
// ~
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.selection;

import java.util.List;

import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;


/**
 * Tracks the selections made in the table.
File
ISelectionModel.java
Developer's decision
Manual
Kind of conflict
Import
Package declaration
Chunk
Conflicting content
public interface ISelectionModel {
	
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/ISelectionModel.java

	public void addSelection(long columnPosition, long rowPosition);

	public void addSelection(final Rectangle range);

	public void clearSelection();

	public void clearSelection(long columnPosition, long rowPosition);

	public void clearSelection(Rectangle removedSelection);

	public boolean isEmpty();

	public List getSelections();
	
	// Cell features

	public boolean isCellPositionSelected(ILayerCell cell);
	
	// Column features

	public List getSelectedColumnPositions();

	public boolean isColumnPositionSelected(long columnPosition);

	public List getFullySelectedColumnPositions();

	public boolean isColumnPositionFullySelected(long columnPosition);

	// Row features

	public long getSelectedRowCount();
	
	public List getSelectedRowPositions();
	
	public boolean isRowPositionSelected(long rowPosition);

	public List getFullySelectedRowPositions();

	public boolean isRowPositionFullySelected(long rowPosition);
=======
	boolean isMultipleSelectionAllowed();
	
	void setMultipleSelectionAllowed(boolean multipleSelectionAllowed);
	
	
	/**
	 * Adds the specified position to the selection.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 */
	void addSelection(int columnPosition, int rowPosition);
	
	/**
	 * Adds the specified position rectangle to the selection.
	 * 
	 * @param rect the position rectangle in the selection layer
	 */
	void addSelection(Rectangle positions);
	
	/**
	 * Clears the selection completely.
	 */
	void clearSelection();
	
	/**
	 * Removes the specified position from the selection.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 */
	void clearSelection(int columnPosition, int rowPosition);
	
	/**
	 * Removes the specified position rectangle from the selection.
	 * 
	 * @param rect the position rectangle in the selection layer
	 */
	void clearSelection(Rectangle positions);
	
	/**
	 * Returns if the selection is empty.
	 * 
	 * @return true if the selection is empty, otherwise false
	 */
	boolean isEmpty();
	
	/**
	 * Returns a collection of rectangles of selected positions. If a position is inside a
	 * rectangle of the list, it is selected, otherwise it is not selected.
	 * 
	 * @return a list of position rectangles
	 */
	List getSelections();
	
	//-- Cell features --//
	
	/**
	 * Returns if the specified position is selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 * @return true if the position is selected, otherwise false
	 */
	boolean isCellPositionSelected(int columnPosition, int rowPosition);
	
	//-- Column features --//
	
	/**
	 * Returns the positions of all selected columns. 
	 * 
	 * @return the positions of selected columns as ordered and disjoint list of position ranges
	 */
	RangeList getSelectedColumnPositions();
	
	/**
	 * Returns if the specified column position is selected. A column is selected, if any cell in 
	 * the column is selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @return true if the column is selected, otherwise false
	 */
	boolean isColumnPositionSelected(int columnPosition);
	
	/**
	 * Returns the positions of all fully selected columns. 
	 * 
	 * @return the positions of fully selected columns as ordered and disjoint list of position ranges
	 */
	RangeList getFullySelectedColumnPositions();
	
	/**
	 * Returns if the specified column position is fully selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @return true if the column is fully selected, otherwise false
	 */
	boolean isColumnPositionFullySelected(int columnPosition);
	
	//-- Row features --//
	
	int getSelectedRowCount();
	
	/**
	 * Returns the positions of all selected rows. 
	 * 
	 * @return the positions of selected rows as ordered and disjoint list of position ranges
	 */
	RangeList getSelectedRowPositions();
	
	/**
	 * Returns if the specified row position is selected.
	 * 
	 * @param rowPosition the row position in the selection layer
	 * @return true if the row is selected, otherwise false
	 */
	boolean isRowPositionSelected(int rowPosition);
	
	/**
	 * Returns the positions of all fully selected rows. 
	 * 
	 * @return the positions of fully selected rows as ordered and disjoint list of position ranges
	 */
	RangeList getFullySelectedRowPositions();
	
	/**
	 * Returns if the specified row position is fully selected.
	 * 
	 * @param rowPosition the row position in the selection layer
	 * @return true if the row is fully selected, otherwise false
	 */
	boolean isRowPositionFullySelected(int rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/ISelectionModel.java
	
}
Solution content
public interface ISelectionModel {
	
	
	boolean isMultipleSelectionAllowed();
	
	
	/**
	 * Adds the specified position to the selection.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 */
	void addSelection(long columnPosition, long rowPosition);
	
	/**
	 * Adds the specified position rectangle to the selection.
	 * 
	 * @param rect the position rectangle in the selection layer
	 */
	void addSelection(Rectangle positions);
	
	/**
	 * Clears the selection completely.
	 */
	void clearSelection();
	
	/**
	 * Removes the specified position from the selection.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 */
	void clearSelection(long columnPosition, long rowPosition);
	
	/**
	 * Removes the specified position rectangle from the selection.
	 * 
	 * @param rect the position rectangle in the selection layer
	 */
	void clearSelection(Rectangle positions);
	
	/**
	 * Returns if the selection is empty.
	 * 
	 * @return true if the selection is empty, otherwise false
	 */
	boolean isEmpty();
	
	/**
	 * Returns a collection of rectangles of selected positions. If a position is inside a
	 * rectangle of the list, it is selected, otherwise it is not selected.
	 * 
	 * @return a list of position rectangles
	 */
	List getSelections();
	
	//-- Cell features --//
	
	/**
	 * Returns if the specified position is selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @param rowPosition the row position in the selection layer
	 * @return true if the position is selected, otherwise false
	 */
	boolean isCellPositionSelected(ILayerCell cell);
	
	//-- Column features --//
	
	/**
	 * Returns the positions of all selected columns. 
	 * 
	 * @return the positions of selected columns as ordered and disjoint list of position ranges
	 */
	RangeList getSelectedColumnPositions();
	
	/**
	 * Returns if the specified column position is selected. A column is selected, if any cell in 
	 * the column is selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @return true if the column is selected, otherwise false
	 */
	boolean isColumnPositionSelected(long columnPosition);
	
	/**
	 * Returns the positions of all fully selected columns. 
	 * 
	 * @return the positions of fully selected columns as ordered and disjoint list of position ranges
	 */
	RangeList getFullySelectedColumnPositions();
	
	/**
	 * Returns if the specified column position is fully selected.
	 * 
	 * @param columnPosition the column position in the selection layer
	 * @return true if the column is fully selected, otherwise false
	 */
	boolean isColumnPositionFullySelected(long columnPosition);
	
	//-- Row features --//
	
	long getSelectedRowCount();
	
	/**
	 * Returns the positions of all selected rows. 
	 * 
	 * @return the positions of selected rows as ordered and disjoint list of position ranges
	 */
	RangeList getSelectedRowPositions();
	
	/**
	 * Returns if the specified row position is selected.
	 * 
	 * @param rowPosition the row position in the selection layer
	 * @return true if the row is selected, otherwise false
	 */
	boolean isRowPositionSelected(long rowPosition);
	
	/**
	 * Returns the positions of all fully selected rows. 
	 * 
	 * @return the positions of fully selected rows as ordered and disjoint list of position ranges
	 */
	RangeList getFullySelectedRowPositions();
	
	/**
	 * Returns if the specified row position is fully selected.
	 * 
	 * @param rowPosition the row position in the selection layer
	 * @return true if the row is fully selected, otherwise false
	 */
	boolean isRowPositionFullySelected(long rowPosition);
	
}
File
ISelectionModel.java
Developer's decision
Manual
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
	public void setMultipleSelectionAllowed(final boolean multipleSelectionAllowed) {
		this.multipleSelectionAllowed = multipleSelectionAllowed;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public void addSelection(long columnPosition, long rowPosition) {
		selectionsLock.writeLock().lock();
		
=======
	
	
	@Override
	public void addSelection(final int columnPosition, final int rowPosition) {
		this.selectionsLock.writeLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		try {
			if (!this.multipleSelectionAllowed) {
				this.selectedRows.clear();
Solution content
	public void setMultipleSelectionAllowed(final boolean multipleSelectionAllowed) {
		this.multipleSelectionAllowed = multipleSelectionAllowed;
	}
	
	
	@Override
	public void addSelection(final long columnPosition, final long rowPosition) {
		this.selectionsLock.writeLock().lock();
		try {
			if (!this.multipleSelectionAllowed) {
				this.selectedRows.clear();
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method invocation
Method signature
Chunk
Conflicting content
			
			final Map rowsToSelect = new HashMap();
			
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			long maxY = Math.min(range.y + range.height, selectionLayer.getRowCount());
			for (long rowPosition = range.y; rowPosition < maxY; rowPosition++) {
				R rowObject = getRowObjectByPosition(rowPosition);
=======
			final int maxY = Math.min(positions.y + positions.height, this.selectionLayer.getRowCount());
			for (int rowPosition = positions.y; rowPosition < maxY; rowPosition++) {
				final R rowObject = getRowObjectByPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
				if (rowObject != null) {
					final Serializable rowId = this.rowIdAccessor.getRowId(rowObject);
					rowsToSelect.put(rowId, rowObject);
Solution content
			
			final Map rowsToSelect = new HashMap();
			
			final long maxY = Math.min(positions.y + positions.height, this.selectionLayer.getRowCount());
			for (long rowPosition = positions.y; rowPosition < maxY; rowPosition++) {
				final R rowObject = getRowObjectByPosition(rowPosition);
				if (rowObject != null) {
					final Serializable rowId = this.rowIdAccessor.getRowId(rowObject);
					rowsToSelect.put(rowId, rowObject);
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
			this.selectionsLock.writeLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public void clearSelection(long columnPosition, long rowPosition) {
		selectionsLock.writeLock().lock();
		
=======
	
	@Override
	public void clearSelection(final int columnPosition, final int rowPosition) {
		this.selectionsLock.writeLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		try {
			final Serializable rowId = getRowIdByPosition(rowPosition);
			this.selectedRows.remove(rowId);
Solution content
			this.selectionsLock.writeLock().unlock();
		}
	}
	
	@Override
	public void clearSelection(final long columnPosition, final long rowPosition) {
		this.selectionsLock.writeLock().lock();
		try {
			final Serializable rowId = getRowIdByPosition(rowPosition);
			this.selectedRows.remove(rowId);
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method invocation
Method signature
Chunk
Conflicting content
	public void clearSelection(final Rectangle positions) {
		this.selectionsLock.writeLock().lock();
		try {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			long maxY = Math.min(removedSelection.y + removedSelection.height, selectionLayer.getRowCount());
			for (long rowPosition = removedSelection.y; rowPosition < maxY; rowPosition++) {
=======
			final int maxY = Math.min(positions.y + positions.height, this.selectionLayer.getRowCount());
			for (int rowPosition = positions.y; rowPosition < maxY; rowPosition++) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
				clearSelection(0, rowPosition);
			}
		} finally {
Solution content
	public void clearSelection(final Rectangle positions) {
		this.selectionsLock.writeLock().lock();
		try {
			long maxY = Math.min(positions.y + positions.height, this.selectionLayer.getRowCount());
			for (long rowPosition = positions.y; rowPosition < maxY; rowPosition++) {
				clearSelection(0, rowPosition);
			}
		} finally {
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	public List getSelections() {
		this.selectionsLock.readLock().lock();
		try {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			long width = selectionLayer.getColumnCount();
			for (Serializable rowId : selectedRows.keySet()) {
				long rowPosition = getRowPositionById(rowId);
=======
			final List selectionRectangles = new ArrayList();
			final int width = this.selectionLayer.getColumnCount();
			
			for (final Serializable rowId : this.selectedRows.keySet()) {
				final int rowPosition = getRowPositionById(rowId);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
				selectionRectangles.add(new Rectangle(0, rowPosition, width, 1));
			}
			
Solution content
	public List getSelections() {
		this.selectionsLock.readLock().lock();
		try {
			final List selectionRectangles = new ArrayList();
			final long width = this.selectionLayer.getColumnCount();
			
			for (final Serializable rowId : this.selectedRows.keySet()) {
				final long rowPosition = getRowPositionById(rowId);
				selectionRectangles.add(new Rectangle(0, rowPosition, width, 1));
			}
			
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
	}
	
	// Cell features
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public boolean isCellPositionSelected(final ILayerCell cell) {
		long cellOriginRowPosition = cell.getOriginRowPosition();
		for (long testRowPosition = cellOriginRowPosition; testRowPosition < cellOriginRowPosition + cell.getRowSpan(); testRowPosition++) {
=======
	
	@Override
	public boolean isCellPositionSelected(final int columnPosition, final int rowPosition) {
		final ILayerCell cell = this.selectionLayer.getCellByPosition(columnPosition, rowPosition);
		final int cellOriginRowPosition = cell.getOriginRowPosition();
		for (int testRowPosition = cellOriginRowPosition; testRowPosition < cellOriginRowPosition + cell.getRowSpan(); testRowPosition++) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			if (isRowPositionSelected(testRowPosition)) {
				return true;
			}
Solution content
	}
	
	// Cell features
	
	public boolean isCellPositionSelected(final ILayerCell cell) {
		long cellOriginRowPosition = cell.getOriginRowPosition();
		for (long testRowPosition = cellOriginRowPosition; testRowPosition < cellOriginRowPosition + cell.getRowSpan(); testRowPosition++) {
			if (isRowPositionSelected(testRowPosition)) {
				return true;
			}
File
RowSelectionModel.java
Developer's decision
Version 1
Kind of conflict
Annotation
For statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
	}
	
	// Column features
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public List getSelectedColumnPositions() {
		selectionsLock.readLock().lock();
		
		try {
			RangeList selected = new RangeList();
			if (!selectedRows.isEmpty()) {
				selected.add(new Range(0, selectionLayer.getColumnCount()));
			}
			return selected;
		}
		finally {
			selectionsLock.readLock().unlock();
		}
	}
	
	public boolean isColumnPositionSelected(long columnPosition) {
		selectionsLock.readLock().lock();
		
=======
	
	@Override
	public RangeList getSelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			if (!this.selectedRows.isEmpty()) {
				selected.add(new Range(0, this.selectionLayer.getColumnCount()));
			}
			
			return selected;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isColumnPositionSelected(final int columnPosition) {
		this.selectionsLock.readLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		try {
			return !this.selectedRows.isEmpty();
		} finally {
Solution content
	}
	
	// Column features
	
	@Override
	public RangeList getSelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			if (!this.selectedRows.isEmpty()) {
				selected.add(new Range(0, this.selectionLayer.getColumnCount()));
			}
			
			return selected;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isColumnPositionSelected(final long columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			return !this.selectedRows.isEmpty();
		} finally {
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
			this.selectionsLock.readLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public List getFullySelectedColumnPositions() {
		selectionsLock.readLock().lock();
		
		try {
			if (isColumnPositionFullySelected(0)) {
				return getSelectedColumnPositions();
=======
	
	@Override
	public RangeList getFullySelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			if (isFullySelected()) {
				selected.add(new Range(0, this.selectionLayer.getColumnCount()));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			}
			
			return selected;
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public RangeList getFullySelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			if (isFullySelected()) {
				selected.add(new Range(0, this.selectionLayer.getColumnCount()));
			}
			
			return selected;
File
RowSelectionModel.java
Developer's decision
Version 2
Kind of conflict
Annotation
If statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		
		return Collections.emptyList();
	}

	public boolean isColumnPositionFullySelected(long columnPosition) {
		selectionsLock.readLock().lock();
		long fullySelectedColumnRowCount = selectionLayer.getRowCount();
		try {
			long selectedRowCount = selectedRows.size();
			
			if (selectedRowCount == 0) {
				return false;
			}
			
			return selectedRowCount == fullySelectedColumnRowCount;
=======
	}
	
	@Override
	public boolean isColumnPositionFullySelected(final int columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			return isFullySelected();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		} finally {
			this.selectionsLock.readLock().unlock();
		}
Solution content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isColumnPositionFullySelected(final long columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			return isFullySelected();
		} finally {
			this.selectionsLock.readLock().unlock();
		}
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
If statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
			this.selectionsLock.readLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public long getSelectedRowCount() {
		selectionsLock.readLock().lock();
		
=======
	
	@Override
	public int getSelectedRowCount() {
		this.selectionsLock.readLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		try {
			return this.selectedRows.size();
		} finally {
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public long getSelectedRowCount() {
		this.selectionsLock.readLock().lock();
		try {
			return this.selectedRows.size();
		} finally {
File
RowSelectionModel.java
Developer's decision
Combination
Kind of conflict
Annotation
Method invocation
Method signature
Chunk
Conflicting content
			this.selectionsLock.readLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public List getSelectedRowPositions() {
		
		selectionsLock.readLock().lock();
		
		try {
			RangeList selected = new RangeList();
			
			for (Serializable rowId : selectedRows.keySet()) {
				long rowPosition = getRowPositionById(rowId);
				selected.addValue(rowPosition);
=======
	
	@Override
	public RangeList getSelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			for (final Serializable rowId : this.selectedRows.keySet()) {
				selected.values().add(getRowPositionById(rowId));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			}
			
			return selected;
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public RangeList getSelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			for (final Serializable rowId : this.selectedRows.keySet()) {
				selected.values().add(getRowPositionById(rowId));
			}
			
			return selected;
File
RowSelectionModel.java
Developer's decision
Version 2
Kind of conflict
Annotation
For statement
Method invocation
Method signature
Try statement
Variable
Chunk
Conflicting content
			this.selectionsLock.readLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public boolean isRowPositionSelected(long rowPosition) {
		selectionsLock.readLock().lock();
		
=======
	
	@Override
	public boolean isRowPositionSelected(final int rowPosition) {
		this.selectionsLock.readLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		try {
			final Serializable rowId = getRowIdByPosition(rowPosition);
			
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isRowPositionSelected(final long rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final Serializable rowId = getRowIdByPosition(rowPosition);
			
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method invocation
Method signature
Chunk
Conflicting content
	}
	}
			this.selectionsLock.readLock().unlock();
		}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	public List getFullySelectedRowPositions() {
		return getSelectedRowPositions();
	public boolean isRowPositionFullySelected(long rowPosition) {
		return isRowPositionSelected(rowPosition);
	}

	private Serializable getRowIdByPosition(long rowPosition) {
		R rowObject = getRowObjectByPosition(rowPosition);
=======
	
	@Override
	public RangeList getFullySelectedRowPositions() {
		return getSelectedRowPositions();
	}
	
	@Override
	public boolean isRowPositionFullySelected(final int rowPosition) {
		return isRowPositionSelected(rowPosition);
	}
	
	private Serializable getRowIdByPosition(final int rowPosition) {
		final R rowObject = getRowObjectByPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		if (rowObject != null) {
			final Serializable rowId = this.rowIdAccessor.getRowId(rowObject);
			return rowId;
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public RangeList getFullySelectedRowPositions() {
		return getSelectedRowPositions();
	}
	
	@Override
	public boolean isRowPositionFullySelected(final long rowPosition) {
		return isRowPositionSelected(rowPosition);
	}
	
	private Serializable getRowIdByPosition(final long rowPosition) {
		final R rowObject = getRowObjectByPosition(rowPosition);
		if (rowObject != null) {
			final Serializable rowId = this.rowIdAccessor.getRowId(rowObject);
			return rowId;
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
		}
		return null;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java

	private R getRowObjectByPosition(long rowPosition) {
		selectionsLock.readLock().lock();
		
		try {
			long rowIndex = selectionLayer.getRowIndexByPosition(rowPosition);
=======
	
	private R getRowObjectByPosition(final int rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final int rowIndex = this.selectionLayer.getRowIndexByPosition(rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
			if (rowIndex >= 0) {
				try {
					final R rowObject = this.rowDataProvider.getRowObject(rowIndex);
Solution content
	}
	
		}
		return null;
	private R getRowObjectByPosition(final long rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final long rowIndex = this.selectionLayer.getRowIndexByPosition(rowPosition);
			if (rowIndex >= 0) {
				try {
					final R rowObject = this.rowDataProvider.getRowObject(rowIndex);
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
Method invocation
Method signature
Try statement
Variable
Chunk
Conflicting content
		return null;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
	private long getRowPositionById(Serializable rowId) {
		selectionsLock.readLock().lock();
		
		try {
			R rowObject = selectedRows.get(rowId);
			long rowIndex = rowDataProvider.indexOfRowObject(rowObject);
			if(rowIndex < 0){
				return Long.MIN_VALUE;
			}
			long rowPosition = selectionLayer.getRowPositionByIndex(rowIndex);
			return rowPosition;
=======
	private int getRowPositionById(final Serializable rowId) {
		this.selectionsLock.readLock().lock();
		try {
			final R rowObject = this.selectedRows.get(rowId);
			final int rowIndex = this.rowDataProvider.indexOfRowObject(rowObject);
			if (rowIndex < 0) {
				return -1;
			}
			
			return this.selectionLayer.getRowPositionByIndex(rowIndex);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionModel.java
		} finally {
			this.selectionsLock.readLock().unlock();
		}
Solution content
		return null;
	}
	
	private long getRowPositionById(final Serializable rowId) {
		this.selectionsLock.readLock().lock();
		try {
			final R rowObject = this.selectedRows.get(rowId);
			final long rowIndex = this.rowDataProvider.indexOfRowObject(rowObject);
			if (rowIndex < 0) {
				return -1;
			}
			
			return this.selectionLayer.getRowPositionByIndex(rowIndex);
		} finally {
			this.selectionsLock.readLock().unlock();
		}
File
RowSelectionModel.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
import org.eclipse.swt.SWT;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
=======

import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
import org.eclipse.nebula.widgets.nattable.data.IRowDataProvider;
import org.eclipse.nebula.widgets.nattable.layer.ILayerListener;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
Solution content
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;

import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.data.IRowDataProvider;
import org.eclipse.nebula.widgets.nattable.layer.ILayerListener;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
File
RowSelectionProvider.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
			}
			if (!selection.isEmpty()) {
				selectionLayer.clear(false);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
    			List rowObjects = ((IStructuredSelection) selection).toList();
    			Set rowPositions = new HashSet();
    			for (T rowObject : rowObjects) {
    				long rowIndex = rowDataProvider.indexOfRowObject(rowObject);
    				long rowPosition = selectionLayer.getRowPositionByIndex(rowIndex);
    				rowPositions.add(Long.valueOf(rowPosition));
    			}
				long intValue = -1;
				if (!rowPositions.isEmpty()) {
					Long max = Collections.max(rowPositions);
					intValue = max.longValue();
				}
				if (intValue >= 0) {
					selectionLayer.doCommand(new SelectRowsCommand(selectionLayer,
							0, ObjectUtils.asLongArray(rowPositions), SWT.NONE, intValue));
=======
				List rowObjects = ((IStructuredSelection) selection).toList();
				final RangeList rowPositions = new RangeList();
				for (T rowObject : rowObjects) {
					int rowIndex = rowDataProvider.indexOfRowObject(rowObject);
					int rowPosition = selectionLayer.getRowPositionByIndex(rowIndex);
					rowPositions.values().add(rowPosition);
				}
				if (!rowPositions.isEmpty()) {
					final int max = rowPositions.values().last();
					if (max >= 0) {
						selectionLayer.doCommand(new SelectRowsCommand(selectionLayer,
								0, rowPositions, false, true, max ));
					}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
				}
			}
		}
Solution content
			}
			if (!selection.isEmpty()) {
				List rowObjects = ((IStructuredSelection) selection).toList();
				final RangeList rowPositions = new RangeList();
				for (T rowObject : rowObjects) {
					long rowIndex = rowDataProvider.indexOfRowObject(rowObject);
					long rowPosition = selectionLayer.getRowPositionByIndex(rowIndex);
					rowPositions.values().add(rowPosition);
				}
				if (!rowPositions.isEmpty()) {
					final long max = rowPositions.values().last();
					if (max >= 0) {
						selectionLayer.doCommand(new SelectRowsCommand(selectionLayer,
								0, rowPositions, SWT.NONE, max ));
					}
				}
			}
		}
File
RowSelectionProvider.java
Developer's decision
Manual
Kind of conflict
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
		List> rows = new ArrayList>();

		if (selectionLayer != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
			if (fullySelectedRowsOnly) {
				List ranges = selectionLayer.getFullySelectedRowPositions();
				for (Range range : ranges) {
					for (long rowPosition = range.start; rowPosition < range.end; rowPosition++) {
						addToSelection(rows, rowPosition, selectionLayer, rowDataProvider);
					}
				}
			} else {
				List ranges = selectionLayer.getSelectedRowPositions();
				for (Range range : ranges) {
					for (long rowPosition = range.start; rowPosition < range.end; rowPosition++) {
						addToSelection(rows, rowPosition, selectionLayer, rowDataProvider);
					}
				}
=======
			final RangeList selectedRows = (fullySelectedRowsOnly) ?
					selectionLayer.getFullySelectedRowPositions() : selectionLayer.getSelectedRowPositions();
			for (final IValueIterator rowIter = selectedRows.values().iterator(); rowIter.hasNext(); ) {
				addToSelection(rows, rowIter.nextValue(), selectionLayer, rowDataProvider);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/RowSelectionProvider.java
			}
		}
		Collections.sort(rows);
Solution content
		List> rows = new ArrayList>();

		if (selectionLayer != null) {
			final RangeList selectedRows = (fullySelectedRowsOnly) ?
					selectionLayer.getFullySelectedRowPositions() : selectionLayer.getSelectedRowPositions();
			for (final IValueIterator rowIter = selectedRows.values().iterator(); rowIter.hasNext(); ) {
				addToSelection(rows, rowIter.nextValue(), selectionLayer, rowDataProvider);
			}
		}
		Collections.sort(rows);
File
RowSelectionProvider.java
Developer's decision
Version 2
Kind of conflict
Attribute
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
=======
import java.util.Set;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java

import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
Solution content
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
		this.selectionLayer = selectionLayer;
		this.rowGroupHeaderLayer = rowGroupHeaderLayer;
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java


=======
	
	@Override
	}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
	public Class getCommandClass() {
		return SelectRowGroupsCommand.class;
Solution content
		this.selectionLayer = selectionLayer;
		this.rowGroupHeaderLayer = rowGroupHeaderLayer;
	}


	public Class getCommandClass() {
		return SelectRowGroupsCommand.class;
	}
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Annotation
Chunk
Conflicting content
		return true;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
	protected void selectRows(long columnPosition, List rowPositions, int selectionFlags, long rowPositionToMoveIntoViewport, boolean moveAnchorToTopOfGroup) {
		final RangeList changedRowRanges = new RangeList();
		
		if( rowPositions.size() > 0 ) {
			internalSelectRow(columnPosition, rowPositions.get(0), rowPositions.size(),
					selectionFlags, moveAnchorToTopOfGroup, changedRowRanges );
		}
		
		selectionLayer.fireLayerEvent(new RowSelectionEvent(selectionLayer, changedRowRanges, rowPositionToMoveIntoViewport));
=======
	protected void selectRows(int columnPosition, List rowPositions, boolean withShiftMask, boolean withControlMask, int rowPositionToMoveIntoViewport, boolean moveAnchorToTopOfGroup) {
		RangeList changedRows = new RangeList();
		
		if (rowPositions.size() > 0) {
			changedRows.addAll(internalSelectRow(columnPosition, rowPositions.get(0), rowPositions.size(), withShiftMask, withControlMask, moveAnchorToTopOfGroup));
		}
		
		selectionLayer.fireLayerEvent(new RowSelectionEvent(selectionLayer, changedRows, rowPositionToMoveIntoViewport));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
	}
	
	private void internalSelectRow(long columnPosition, long rowPosition, long rowCount,
Solution content
		return true;
	}
	
	protected void selectRows(long columnPosition, List rowPositions, int selectionFlags, long rowPositionToMoveIntoViewport, boolean moveAnchorToTopOfGroup) {
		final RangeList changedRowRanges = new RangeList();
		
		if( rowPositions.size() > 0 ) {
			internalSelectRow(columnPosition, rowPositions.get(0), rowPositions.size(),
					selectionFlags, moveAnchorToTopOfGroup, changedRowRanges );
		}
		
		selectionLayer.fireLayerEvent(new RowSelectionEvent(selectionLayer, changedRowRanges, rowPositionToMoveIntoViewport));
	}
	
	private void internalSelectRow(long columnPosition, long rowPosition, long rowCount,
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
			int selectionFlags, boolean moveAnchorToTopOfGroup, final RangeList changedRowRanges) {
		if ((selectionFlags & (SelectionFlags.RETAIN_SELECTION | SelectionFlags.RANGE_SELECTION)) == 0) {
			changedRowRanges.addAll(selectionLayer.getSelectedRowPositions());
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
			selectionLayer.clear();
			selectionLayer.selectCell(0, rowPosition, selectionFlags);
			selectionLayer.selectRegion(0, rowPosition, selectionLayer.getColumnCount(), rowCount);
			
=======
			selectionLayer.clear(false);
			selectionLayer.selectCell(0, rowPosition, withShiftMask, withControlMask);
			selectionLayer.selectRegion(0, rowPosition, selectionLayer.getColumnCount(), rowCount);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
			changedRowRanges.add(new Range(rowPosition, rowPosition + rowCount));
		} else if ((selectionFlags & (SelectionFlags.RETAIN_SELECTION | SelectionFlags.RANGE_SELECTION)) == SelectionFlags.RETAIN_SELECTION) {
			changedRowRanges.add(selectRowWithCtrlKey(columnPosition, rowPosition, rowCount));
Solution content
			int selectionFlags, boolean moveAnchorToTopOfGroup, final RangeList changedRowRanges) {
		if ((selectionFlags & (SelectionFlags.RETAIN_SELECTION | SelectionFlags.RANGE_SELECTION)) == 0) {
			changedRowRanges.addAll(selectionLayer.getSelectedRowPositions());
			selectionLayer.clear();
			selectionLayer.selectCell(0, rowPosition, selectionFlags);
			selectionLayer.selectRegion(0, rowPosition, selectionLayer.getColumnCount(), rowCount);
			
			changedRowRanges.add(new Range(rowPosition, rowPosition + rowCount));
		} else if ((selectionFlags & (SelectionFlags.RETAIN_SELECTION | SelectionFlags.RANGE_SELECTION)) == SelectionFlags.RETAIN_SELECTION) {
			changedRowRanges.add(selectRowWithCtrlKey(columnPosition, rowPosition, rowCount));
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	private Range selectRowWithShiftKey(long columnPosition, long rowPosition, long rowCount) {
		if (selectionLayer.lastSelectedRegion != null) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
			long start = Math.min(selectionLayer.lastSelectedRegion.y, rowPosition);
			long end = Math.max(selectionLayer.lastSelectedRegion.y, rowPosition);
		
			for(long i = start; i <= end; i++){
				long index = selectionLayer.getRowIndexByPosition(i);
				if(RowGroupUtils.isPartOfAGroup(model, index) && !selectionLayer.isRowPositionFullySelected(i)){
					List  rowPositions = new ArrayList(RowGroupUtils.getRowPositionsInGroup(selectionLayer, RowGroupUtils.getRowIndexesInGroup(model, index)));
=======
			int start = Math.min(selectionLayer.lastSelectedRegion.y, rowPosition);
			int end = Math.max(selectionLayer.lastSelectedRegion.y, rowPosition);
			
			for (int i = start; i <= end; i++){
				int index = selectionLayer.getRowIndexByPosition(i);
				if (RowGroupUtils.isPartOfAGroup(model, index) && !selectionLayer.isRowPositionFullySelected(i)){
					List rowPositions = new ArrayList(RowGroupUtils.getRowPositionsInGroup(selectionLayer, RowGroupUtils.getRowIndexesInGroup(model, index)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
					Collections.sort(rowPositions);
					selectionLayer.selectRegion(0, rowPositions.get(0), selectionLayer.getColumnCount(), rowPositions.size());
					i=ObjectUtils.getLastElement(rowPositions);
Solution content
	private Range selectRowWithShiftKey(long columnPosition, long rowPosition, long rowCount) {
		if (selectionLayer.lastSelectedRegion != null) {
			long start = Math.min(selectionLayer.lastSelectedRegion.y, rowPosition);
			long end = Math.max(selectionLayer.lastSelectedRegion.y, rowPosition);
		
			for(long i = start; i <= end; i++){
				long index = selectionLayer.getRowIndexByPosition(i);
				if(RowGroupUtils.isPartOfAGroup(model, index) && !selectionLayer.isRowPositionFullySelected(i)){
					List  rowPositions = new ArrayList(RowGroupUtils.getRowPositionsInGroup(selectionLayer, RowGroupUtils.getRowIndexesInGroup(model, index)));
					Collections.sort(rowPositions);
					selectionLayer.selectRegion(0, rowPositions.get(0), selectionLayer.getColumnCount(), rowPositions.size());
					i=ObjectUtils.getLastElement(rowPositions);
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
		}
		return new Range(rowPosition);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java

=======
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectRowGroupCommandHandler.java
}
Solution content
		}
		return new Range(rowPosition);
	}

}
File
SelectRowGroupCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
import java.util.HashMap;
import java.util.Map;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionLayerPainter.java
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;

=======
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionLayerPainter.java
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
Solution content
import java.util.HashMap;
import java.util.Map;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;

import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
File
SelectionLayerPainter.java
Developer's decision
Concatenation
Kind of conflict
Import
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.selection;

import java.util.ArrayList;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
import java.util.Collections;
import java.util.Comparator;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.locks.ReadWriteLock;
Solution content
package org.eclipse.nebula.widgets.nattable.selection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.locks.ReadWriteLock;
File
SelectionModel.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
 * @see SelectionLayer
 */
public class SelectionModel implements ISelectionModel {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java


	private final ILayer selectionLayer;

=======
	
	
	//-- Utility --//
	
	private static final Rectangle getLeftSelection(final Rectangle intersection, final Rectangle selection) {
		if (intersection.x > selection.x) {
			return new Rectangle(selection.x, selection.y,
					intersection.x - selection.x, selection.height);
		}
		return null;
	}
	
	private static final Rectangle getRightSelection(final Rectangle intersection, final Rectangle selection) {
		final int newX = intersection.x + intersection.width;
		if (newX < selection.x + selection.width) {
			return new Rectangle(newX, selection.y,
					selection.x + selection.width - newX, selection.height);
		}
		return null;
	}
	
	private static final Rectangle getTopSelection(final Rectangle intersection, final Rectangle selection) {
		if (intersection.y > selection.y) {
			return new Rectangle(selection.x, selection.y,
					selection.width, intersection.y - selection.y);
		}
		return null;
	}
	
	private static final Rectangle getBottomSelection(final Rectangle intersection, final Rectangle selection) {
		final int newY = intersection.y + intersection.height;
		if (newY < selection.y + selection.height) {
			return new Rectangle(selection.x, newY,
					selection.width, selection.y + selection.height - newY);
		}
		return null;
	}
	
	
	private final ILayer selectionLayer;
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	private boolean multipleSelectionAllowed;
	
	private final List selections;
Solution content
 * @see SelectionLayer
 */
public class SelectionModel implements ISelectionModel {
	
	
	//-- Utility --//
	
	private static final Rectangle getLeftSelection(final Rectangle intersection, final Rectangle selection) {
		if (intersection.x > selection.x) {
			return new Rectangle(selection.x, selection.y,
					intersection.x - selection.x, selection.height);
		}
		return null;
	}
	
	private static final Rectangle getRightSelection(final Rectangle intersection, final Rectangle selection) {
		final long newX = intersection.x + intersection.width;
		if (newX < selection.x + selection.width) {
			return new Rectangle(newX, selection.y,
					selection.x + selection.width - newX, selection.height);
		}
		return null;
	}
	
	private static final Rectangle getTopSelection(final Rectangle intersection, final Rectangle selection) {
		if (intersection.y > selection.y) {
			return new Rectangle(selection.x, selection.y,
					selection.width, intersection.y - selection.y);
		}
		return null;
	}
	
	private static final Rectangle getBottomSelection(final Rectangle intersection, final Rectangle selection) {
		final long newY = intersection.y + intersection.height;
		if (newY < selection.y + selection.height) {
			return new Rectangle(selection.x, newY,
					selection.width, selection.y + selection.height - newY);
		}
		return null;
	}
	
	
	private final ILayer selectionLayer;
	
	private boolean multipleSelectionAllowed;
	
	private final List selections;
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Attribute
Comment
Method declaration
Chunk
Conflicting content
	private final List selections;

	private final ReadWriteLock selectionsLock;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java


	public SelectionModel(ILayer selectionLayer) {
		this(selectionLayer, true);
	}

	public SelectionModel(ILayer selectionLayer, boolean multipleSelectionAllowed) {
=======
	
	
	public SelectionModel(/*@NotNull*/ final ILayer selectionLayer) {
		this(selectionLayer, true);
	}
	
	public SelectionModel(/*@NotNull*/ final ILayer selectionLayer, final boolean multipleSelectionAllowed) {
		if (selectionLayer == null) {
			throw new NullPointerException("selectionLayer"); //$NON-NLS-1$
		}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		this.selectionLayer = selectionLayer;
		this.multipleSelectionAllowed = multipleSelectionAllowed;
		
Solution content
	private final List selections;
	
	private final ReadWriteLock selectionsLock;
	
	public SelectionModel(/*@NotNull*/ final ILayer selectionLayer) {
		this(selectionLayer, true);
	}
	
	public SelectionModel(/*@NotNull*/ final ILayer selectionLayer, final boolean multipleSelectionAllowed) {
		if (selectionLayer == null) {
			throw new NullPointerException("selectionLayer"); //$NON-NLS-1$
		}
		this.selectionLayer = selectionLayer;
		this.multipleSelectionAllowed = multipleSelectionAllowed;
		
File
SelectionModel.java
Developer's decision
Version 2
Kind of conflict
If statement
Method declaration
Method signature
Chunk
Conflicting content
		this.selections = new LinkedList();
		this.selectionsLock = new ReentrantReadWriteLock();
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java


=======
	
	
	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	public boolean isMultipleSelectionAllowed() {
		return this.multipleSelectionAllowed;
	}
Solution content
		this.selections = new LinkedList();
		this.selectionsLock = new ReentrantReadWriteLock();
	}
	
	
	@Override
	public boolean isMultipleSelectionAllowed() {
		return this.multipleSelectionAllowed;
	}
File
SelectionModel.java
Developer's decision
Version 2
Kind of conflict
Annotation
Chunk
Conflicting content
		this.multipleSelectionAllowed = multipleSelectionAllowed;
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	public void addSelection(long columnPosition, long rowPosition) {
=======
	
	@Override
	public void addSelection(final int columnPosition, final int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		addSelectionIntoList(new Rectangle(columnPosition, rowPosition, 1, 1));
	}
	
Solution content
		this.multipleSelectionAllowed = multipleSelectionAllowed;
	}
	
	
	@Override
	public void addSelection(final long columnPosition, final long rowPosition) {
		addSelectionIntoList(new Rectangle(columnPosition, rowPosition, 1, 1));
	}
	
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
							break;
						}
						
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
						Rectangle intersection = selection.intersection(r);
=======
						final Rectangle intersection = selection.intersection(r);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
						if (intersection.equals(r)) {
							// r is a subset of intersection
							if (itemsToRemove == null) {
Solution content
							break;
						}
						
						final Rectangle intersection = selection.intersection(r);
						if (intersection.equals(r)) {
							// r is a subset of intersection
							if (itemsToRemove == null) {
File
SelectionModel.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
			this.selectionsLock.writeLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java

	public void clearSelection(long columnPosition, long rowPosition) {
=======
	
	@Override
	public void clearSelection(final int columnPosition, final int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		clearSelection(new Rectangle(columnPosition, rowPosition, 1, 1));
	}
	
Solution content
			this.selectionsLock.writeLock().unlock();
		}
	}
	
	@Override
	public void clearSelection(final long columnPosition, final long rowPosition) {
		clearSelection(new Rectangle(columnPosition, rowPosition, 1, 1));
	}
	
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	}
	
	// Cell features
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java

	public boolean isCellPositionSelected(final ILayerCell cell) {
		selectionsLock.readLock().lock();
		try {
=======
	
	@Override
	public boolean isCellPositionSelected(final int columnPosition, final int rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final ILayerCell cell = this.selectionLayer.getCellByPosition(columnPosition, rowPosition);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
			final Rectangle cellRectangle = new Rectangle(
					cell.getOriginColumnPosition(),
					cell.getOriginRowPosition(),
Solution content
	}
	
	// Cell features
	
	@Override
	public boolean isCellPositionSelected(final ILayerCell cell) {
		this.selectionsLock.readLock().lock();
		try {
			final Rectangle cellRectangle = new Rectangle(
					cell.getOriginColumnPosition(),
					cell.getOriginRowPosition(),
File
SelectionModel.java
Developer's decision
Combination
Kind of conflict
Annotation
Method invocation
Method signature
Try statement
Variable
Chunk
Conflicting content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		
		return false;
	}
	
	// Column features

	public RangeList getSelectedColumnPositions() {
		selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			final long columnCount = selectionLayer.getColumnCount();
			for (final Rectangle r : selections) {
=======
	}
	
	// Column features
	
	@Override
	public RangeList getSelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final int columnCount = this.selectionLayer.getColumnCount();
			
			for (final Rectangle r : this.selections) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
				if (r.x < columnCount) {
					selected.add(new Range(r.x, Math.min(r.x + r.width, columnCount)));
				}
Solution content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	// Column features
	
	@Override
	public RangeList getSelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final long columnCount = this.selectionLayer.getColumnCount();
			
			for (final Rectangle r : this.selections) {
				if (r.x < columnCount) {
					selected.add(new Range(r.x, Math.min(r.x + r.width, columnCount)));
				}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Comment
For statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
		}
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	public boolean isColumnPositionSelected(long columnPosition) {
		selectionsLock.readLock().lock();
		try {
			long columnCount = selectionLayer.getColumnCount();
			if (columnPosition < 0 || columnPosition >= columnCount) {
				return false;
			}
			
			for (final Rectangle r : selections) {
				if (columnPosition >= r.x && columnPosition < r.x + r.width) {
					return true;
=======
	@Override
	public boolean isColumnPositionSelected(final int columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final int columnCount = this.selectionLayer.getColumnCount();
			
			if (columnPosition >= 0 && columnPosition < columnCount) {
				for (final Rectangle r : this.selections) {
					if (columnPosition >= r.x && columnPosition < r.x + r.width) {
						return true;
					}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
				}
			}
			
Solution content
		}
	}
	
	@Override
	public boolean isColumnPositionSelected(final long columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final long columnCount = this.selectionLayer.getColumnCount();
			
			if (columnPosition >= 0 && columnPosition < columnCount) {
				for (final Rectangle r : this.selections) {
					if (columnPosition >= r.x && columnPosition < r.x + r.width) {
						return true;
					}
				}
			}
			
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
For statement
If statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
			final long rowCount = selectionLayer.getRowCount();
			this.selectionsLock.readLock().unlock();
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java

	public List getFullySelectedColumnPositions() {
		selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			final RangeList selectedColumns = getSelectedColumnPositions();
			final long rowCount = selectionLayer.getRowCount();
			for (final Range range : selectedColumns) {
				for (long position = range.start; position < range.end; position++) {
					if (isColumnPositionFullySelected(position, rowCount)) {
						selected.addValue(position);
					}
				}
			}
			
			return selected;
		} finally {
			selectionsLock.readLock().unlock();
		}
	}

	/**
	 * Are all cells in this column selected?
	 * Different selection rectangles might aggregate to cover the entire column.
	 * We need to take into account any overlapping selections or any selection rectangles
	 * contained within each other.
	 * 
	 * See the related tests for a better understanding.
	 */
	public boolean isColumnPositionFullySelected(final long columnPosition) {
		selectionsLock.readLock().lock();
		try {
			return isColumnPositionFullySelected(columnPosition, rowCount);
=======
	
	@Override
	public RangeList getFullySelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final int rowCount = this.selectionLayer.getRowCount();
			
			if (rowCount > 0) {
				final RangeList selectedColumns = getSelectedColumnPositions();
				for (final Range range : selectedColumns) {
					for (int position = range.start; position < range.end; position++) {
						if (isColumnPositionFullySelected(position, rowCount)) {
							selected.values().add(position);
						}
					}
				}
			}
			
			return selected;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		} finally {
			this.selectionsLock.readLock().unlock();
		}
Solution content
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public RangeList getFullySelectedColumnPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final long rowCount = this.selectionLayer.getRowCount();
			
			if (rowCount > 0) {
				final RangeList selectedColumns = getSelectedColumnPositions();
				for (final Range range : selectedColumns) {
					for (long position = range.start; position < range.end; position++) {
						if (isColumnPositionFullySelected(position, rowCount)) {
							selected.values().add(position);
						}
					}
				}
			}
			
			return selected;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Comment
If statement
Method declaration
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
		}
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	private boolean isColumnPositionFullySelected(final long columnPosition, final long rowCount) {
		// Aggregate all rows of selection rectangles including the column
		final RangeList selectedRangesInColumn = new RangeList();
		
		for (final Rectangle r : selections) {
			if (columnPosition >= r.x && columnPosition < r.x + r.width) {
				selectedRangesInColumn.add(new Range(r.y, r.y + r.height));
			}
		}
		
		final Range range = selectedRangesInColumn.getRange(0);
		return (range != null && range.end >= rowCount);
	}
	
	// Row features

	public long getSelectedRowCount() {
		List selectedRows = getSelectedRowPositions();
		long count = 0;
		for (Range range : selectedRows) {
			count += range.size();
		}
		return count;
	}

	public RangeList getSelectedRowPositions() {
		selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			
			final long rowCount = selectionLayer.getRowCount();
			for (Rectangle r : selections) {
				if (r.y < rowCount) {
					selected.add(new Range(r.y, Math.min(r.y + r.height, rowCount)));
				}
			}
			
			return selected;
=======
	@Override
	public boolean isColumnPositionFullySelected(final int columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final int rowCount = this.selectionLayer.getRowCount();
			
			return ((rowCount > 0)
					&& isColumnPositionFullySelected(columnPosition, rowCount) );
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		} finally {
			this.selectionsLock.readLock().unlock();
		}
Solution content
		}
	}
	
	@Override
	public boolean isColumnPositionFullySelected(final long columnPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final long rowCount = this.selectionLayer.getRowCount();
			
			return ((rowCount > 0)
					&& isColumnPositionFullySelected(columnPosition, rowCount) );
		} finally {
			this.selectionsLock.readLock().unlock();
		}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Comment
For statement
Method declaration
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	}

	public boolean isRowPositionSelected(final long rowPosition) {
		selectionsLock.readLock().lock();
		try {
			final long rowCount = selectionLayer.getRowCount();
			if (rowPosition < 0 || rowPosition >= rowCount) {
				return false;
			}
			
			for (final Rectangle r : selections) {
				if (rowPosition >= r.y && rowPosition < r.y + r.height) {
					return true;
				}
			}
			
			return false;
		} finally {
		try {
			selectionsLock.readLock().unlock();
		}
	}

	public List getFullySelectedRowPositions() {
		selectionsLock.readLock().lock();
			final RangeList selected = new RangeList();
			
			final RangeList selectedRows = getSelectedRowPositions();
			long columnCount = selectionLayer.getColumnCount();
			for (final Range range : selectedRows) {
				for (long position = range.start; position < range.end; position++) {
					if (isRowPositionFullySelected(position, columnCount)) {
						selected.addValue(position);
					}
				}
			}
			
			return selected;
		}
		finally {
			selectionsLock.readLock().unlock();
		}
	}

	public boolean isRowPositionFullySelected(final long rowPosition) {
		selectionsLock.readLock().lock();
		try {
			final long columnCount = selectionLayer.getColumnCount();
			return isRowPositionFullySelected(rowPosition, columnCount);
=======
	}
	
	private boolean isColumnPositionFullySelected(final int columnPosition, final int rowCount) {
		// Aggregate all rows of selection rectangles including the column
		final RangeList selectedRowsInColumn = new RangeList();
		
		for (final Rectangle r : this.selections) {
			if (columnPosition >= r.x && columnPosition < r.x + r.width) {
				selectedRowsInColumn.add(new Range(r.y, r.y + r.height));
			}
		}
		
		final Range range = selectedRowsInColumn.values().getRangeOf(0);
		return (range != null && range.end >= rowCount);
	}
	
	// Row features
	
	@Override
	public int getSelectedRowCount() {
		return getSelectedRowPositions().values().size();
	}
	
	@Override
	public RangeList getSelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final int rowCount = this.selectionLayer.getRowCount();
			
			for (final Rectangle r : this.selections) {
				if (r.y < rowCount) {
					selected.add(new Range(r.y, Math.min(r.y + r.height, rowCount)));
				}
			}
			
			return selected;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isRowPositionSelected(final int rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final int rowCount = this.selectionLayer.getRowCount();
			
			if (rowPosition >= 0 && rowPosition < rowCount) {
				for (final Rectangle r : this.selections) {
					if (rowPosition >= r.y && rowPosition < r.y + r.height) {
						return true;
					}
				}
			}
			
			return false;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		} finally {
			this.selectionsLock.readLock().unlock();
		}
Solution content
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	private boolean isColumnPositionFullySelected(final long columnPosition, final long rowCount) {
		// Aggregate all rows of selection rectangles including the column
		final RangeList selectedRowsInColumn = new RangeList();
		
		for (final Rectangle r : this.selections) {
			if (columnPosition >= r.x && columnPosition < r.x + r.width) {
				selectedRowsInColumn.add(new Range(r.y, r.y + r.height));
			}
		}
		
		final Range range = selectedRowsInColumn.values().getRangeOf(0);
		return (range != null && range.end >= rowCount);
	}
	
	// Row features
	
	@Override
	public long getSelectedRowCount() {
		return getSelectedRowPositions().values().size();
	}
	
	@Override
	public RangeList getSelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final long rowCount = this.selectionLayer.getRowCount();
			
			for (final Rectangle r : this.selections) {
				if (r.y < rowCount) {
					selected.add(new Range(r.y, Math.min(r.y + r.height, rowCount)));
				}
			}
			
			return selected;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
	
	@Override
	public boolean isRowPositionSelected(final long rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final long rowCount = this.selectionLayer.getRowCount();
			
			if (rowPosition >= 0 && rowPosition < rowCount) {
				for (final Rectangle r : this.selections) {
					if (rowPosition >= r.y && rowPosition < r.y + r.height) {
						return true;
					}
				}
			}
			
			return false;
		} finally {
			this.selectionsLock.readLock().unlock();
		}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
Comment
If statement
Method declaration
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
		}
		}
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
	private boolean isRowPositionFullySelected(final long rowPosition, final long columnCount) {
		// Aggregate all rows of selection rectangles including the column
		final RangeList selectedRangesInRow = new RangeList();
		
		for (final Rectangle r : selections) {
			if (rowPosition >= r.y && rowPosition < r.y + r.height) {
				selectedRangesInRow.add(new Range(r.x, r.x + r.width));
			}
		
		final Range range = selectedRangesInRow.getRange(0);
		return (range != null && range.end >= columnCount);
	}


	protected static final boolean contains(Rectangle containerRectangle, Rectangle rectangle) {
		Rectangle union = containerRectangle.union(rectangle);
		return union.equals(containerRectangle);
	}

	protected static final void sortByX(List selectionRectanglesInRow) {
		Collections.sort(selectionRectanglesInRow, new Comparator(){
			public int compare(Rectangle rectangle1, Rectangle rectangle2) {
				return (rectangle1.x < rectangle2.x) ? -1 :
						((rectangle1.x == rectangle2.x) ? 0 : 1);
			}
		});
	}

	protected static final void sortByY(List selectionRectanglesInColumn) {
		Collections.sort(selectionRectanglesInColumn, new Comparator(){
			public int compare(Rectangle rectangle1, Rectangle rectangle2) {
				return (rectangle1.y < rectangle2.y) ? -1 :
					((rectangle1.y == rectangle2.y) ? 0 : 1);
			}
		});
	}
	private static final Rectangle getLeftSelection(Rectangle intersection, Rectangle selection) {
		if (intersection.x > selection.x) {
			Rectangle leftSelection = new Rectangle(selection.x, selection.y,
					intersection.x - selection.x, selection.height);
			return leftSelection;
		}

		return null;
	}

	private static final Rectangle getRightSelection(Rectangle intersection, Rectangle selection) {
		long newX = intersection.x + intersection.width;

		if (newX < selection.x + selection.width) {
			Rectangle rightSelection = new Rectangle(newX, selection.y,
					selection.x + selection.width - newX, selection.height);

			return rightSelection;
=======
	@Override
	public RangeList getFullySelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final int columnCount = this.selectionLayer.getColumnCount();
			
			if (columnCount > 0) {
				final RangeList selectedRows = getSelectedRowPositions();
				for (final Range range : selectedRows) {
					for (int position = range.start; position < range.end; position++) {
						if (isRowPositionFullySelected(position, columnCount)) {
							selected.values().add(position);
						}
					}
				}
			}
			
			return selected;
		}
		finally {
			this.selectionsLock.readLock().unlock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
Solution content
			this.selectionsLock.readLock().unlock();
			return selected;
		}
		finally {
		}
	}
	
	@Override
	public RangeList getFullySelectedRowPositions() {
		this.selectionsLock.readLock().lock();
		try {
			final RangeList selected = new RangeList();
			final long columnCount = this.selectionLayer.getColumnCount();
			
			if (columnCount > 0) {
				final RangeList selectedRows = getSelectedRowPositions();
				for (final Range range : selectedRows) {
					for (long position = range.start; position < range.end; position++) {
						if (isRowPositionFullySelected(position, columnCount)) {
							selected.values().add(position);
						}
					}
				}
			}
			
		}
	}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
If statement
Method declaration
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java

	private static final Rectangle getTopSelection(Rectangle intersection,
			Rectangle selectoin) {
		if (intersection.y > selectoin.y) {
			Rectangle topSelection = new Rectangle(selectoin.x, selectoin.y,
					selectoin.width, intersection.y - selectoin.y);
			return topSelection;
=======
	
	@Override
	public boolean isRowPositionFullySelected(final int rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final int columnCount = this.selectionLayer.getColumnCount();
			
			return ((columnCount > 0)
					&& isRowPositionFullySelected(rowPosition, columnCount) );
		} finally {
			this.selectionsLock.readLock().unlock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
Solution content
		}
	}
	
	@Override
	public boolean isRowPositionFullySelected(final long rowPosition) {
		this.selectionsLock.readLock().lock();
		try {
			final long columnCount = this.selectionLayer.getColumnCount();
			
			return ((columnCount > 0)
					&& isRowPositionFullySelected(rowPosition, columnCount) );
		} finally {
			this.selectionsLock.readLock().unlock();
		}
	}
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Annotation
If statement
Method invocation
Method signature
Return statement
Try statement
Variable
Chunk
Conflicting content
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java

	private static final Rectangle getBottomSelection(Rectangle intersection,
			Rectangle selection) {
		long newY = intersection.y + intersection.height;

		if (newY < selection.y + selection.height) {
			Rectangle bottomSelection = new Rectangle(selection.x, newY,
					selection.width, selection.y + selection.height - newY);
			return bottomSelection;
=======
	
	private boolean isRowPositionFullySelected(final int rowPosition, final int columnCount) {
		// Aggregate all columns of selection rectangles including the row
		final RangeList selectedColumnsInRow = new RangeList();
		
		for (final Rectangle r : this.selections) {
			if (rowPosition >= r.y && rowPosition < r.y + r.height) {
				selectedColumnsInRow.add(new Range(r.x, r.x + r.width));
			}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		}
		
		final Range range = selectedColumnsInRow.values().getRangeOf(0);
Solution content
		}
	}
	
	private boolean isRowPositionFullySelected(final long rowPosition, final long columnCount) {
		// Aggregate all columns of selection rectangles including the row
		final RangeList selectedColumnsInRow = new RangeList();
		
		for (final Rectangle r : this.selections) {
			if (rowPosition >= r.y && rowPosition < r.y + r.height) {
				selectedColumnsInRow.add(new Range(r.x, r.x + r.width));
			}
		}
		
		final Range range = selectedColumnsInRow.values().getRangeOf(0);
File
SelectionModel.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
If statement
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
	
	@Override
	public String toString() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		selectionsLock.readLock().lock();
=======
		this.selectionsLock.readLock().lock();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/SelectionModel.java
		try {
			return this.selections.toString();
		} finally {
Solution content
	
	@Override
	public String toString() {
		this.selectionsLock.readLock().lock();
		try {
			return this.selections.toString();
		} finally {
File
SelectionModel.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.selection.action;

import org.eclipse.swt.events.MouseEvent;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/action/CellSelectionDragMode.java
=======
import org.eclipse.swt.graphics.Point;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/action/CellSelectionDragMode.java

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
Solution content
package org.eclipse.nebula.widgets.nattable.selection.action;

import org.eclipse.swt.events.MouseEvent;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
File
CellSelectionDragMode.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 */
public class CellSelectionDragMode implements IDragMode {

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/action/CellSelectionDragMode.java

	private Point lastDragInCellPosition = null;


	public CellSelectionDragMode() {
	}


	public void mouseDown(NatTable natTable, MouseEvent event) {
		natTable.forceFocus();

		fireSelectionCommand(natTable,
				natTable.getColumnPositionByX(event.x),
				natTable.getRowPositionByY(event.y),
				SelectionFlags.swt2Flags(event.stateMask) );
=======
	private Point lastDragInCellPosition = null;

	@Override
	public void mouseDown(NatTable natTable, MouseEvent event) {
		natTable.forceFocus();
		lastDragInCellPosition = new Point(natTable.getColumnPositionByX(event.x), natTable.getRowPositionByY(event.y));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/action/CellSelectionDragMode.java
	}

	@Override
Solution content
 */
public class CellSelectionDragMode implements IDragMode {


	private Point lastDragInCellPosition = null;


	public CellSelectionDragMode() {
	}


	@Override
	public void mouseDown(NatTable natTable, MouseEvent event) {
		natTable.forceFocus();
		lastDragInCellPosition = new Point(natTable.getColumnPositionByX(event.x), natTable.getRowPositionByY(event.y));
	}

	@Override
File
CellSelectionDragMode.java
Developer's decision
Combination
Kind of conflict
Annotation
Attribute
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
// ~Selection
package org.eclipse.nebula.widgets.nattable.selection.command;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
import static org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.NO_SELECTION;
import java.util.Collection;

import org.eclipse.nebula.widgets.nattable.command.AbstractMultiRowCommand;
=======
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.Collection;

import org.eclipse.nebula.widgets.nattable.command.AbstractDimPositionsCommand;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
import org.eclipse.nebula.widgets.nattable.command.LayerCommandUtil;
import org.eclipse.nebula.widgets.nattable.coordinate.ColumnPositionCoordinate;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
Solution content
// ~Selection
package org.eclipse.nebula.widgets.nattable.selection.command;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;
import static org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.NO_SELECTION;

import java.util.Collection;

import org.eclipse.nebula.widgets.nattable.command.AbstractDimPositionsCommand;
import org.eclipse.nebula.widgets.nattable.command.LayerCommandUtil;
import org.eclipse.nebula.widgets.nattable.coordinate.ColumnPositionCoordinate;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
File
SelectRowsCommand.java
Developer's decision
Combination
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.RowPositionCoordinate;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java


<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
Solution content
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.RowPositionCoordinate;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;


public class SelectRowsCommand extends AbstractDimPositionsCommand {
File
SelectRowsCommand.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java


<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java

	private final int selectionFlags;

	private ColumnPositionCoordinate columnPositionCoordinate;

	private RowPositionCoordinate rowPositionToReveal;


	public SelectRowsCommand(ILayer layer, long columnPosition, long rowPosition,
			final int selectionFlags) {
		super(layer, columnPosition);
		
		this.selectionFlags = selectionFlags;
		init(layer, columnPosition, rowPosition);
	}

	public SelectRowsCommand(final ILayer layer, final long columnPosition, final long[] rowPositions,
			final int selectionFlags, final long rowPositionToReveal) {
		super(layer, rowPositions);
		
		this.selectionFlags = selectionFlags;
		init(layer, columnPosition, rowPositionToReveal);
	}

	public SelectRowsCommand(final ILayer layer, final long columnPosition, final Collection rowPositions,
			final int selectionFlags, final long rowPositionToReveal) {
		super(layer, rowPositions);
		
		this.selectionFlags = selectionFlags;
		init(layer, columnPosition, rowPositionToReveal);
	}

	private void init(final ILayer layer, final long columnPosition, final long rowPositionToReveal) {
=======
public class SelectRowsCommand extends AbstractDimPositionsCommand {
	
	private ColumnPositionCoordinate columnPositionCoordinate;
	
	private final boolean withShiftMask;
	private final boolean withControlMask;
	
	private RowPositionCoordinate rowPositionCoordinateToMoveIntoViewport;
	
	
	public SelectRowsCommand(ILayer layer, int columnPosition, int rowPosition, boolean withShiftMask, boolean withControlMask) {
		this(layer, columnPosition, new RangeList(rowPosition), withShiftMask, withControlMask, rowPosition);
	}
	
	public SelectRowsCommand(ILayer layer, int columnPosition, Collection rowPositions,
			boolean withShiftMask, boolean withControlMask, int rowPositionToMoveIntoViewport) {
		super(layer.getDim(VERTICAL), rowPositions);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
		this.columnPositionCoordinate = new ColumnPositionCoordinate(layer, columnPosition);
		if (rowPositionToReveal != NO_SELECTION) {
			this.rowPositionToReveal = new RowPositionCoordinate(layer, rowPositionToReveal);
Solution content
public class SelectRowsCommand extends AbstractDimPositionsCommand {


	private final int selectionFlags;

	private ColumnPositionCoordinate columnPositionCoordinate;

	private RowPositionCoordinate rowPositionToReveal;


	public SelectRowsCommand(final ILayer layer,
			final long columnPosition, final long rowPosition,
			final int selectionFlags) {
		this(layer, columnPosition, new RangeList(rowPosition), selectionFlags, rowPosition);
	}

	public SelectRowsCommand(final ILayer layer,
			final long columnPosition, final Collection rowPositions,
			final int selectionFlags, final long rowPositionToReveal) {
		super(layer.getDim(VERTICAL), rowPositions);
		
		this.selectionFlags = selectionFlags;
		this.columnPositionCoordinate = new ColumnPositionCoordinate(layer, columnPosition);
		if (rowPositionToReveal != NO_SELECTION) {
			this.rowPositionToReveal = new RowPositionCoordinate(layer, rowPositionToReveal);
File
SelectRowsCommand.java
Developer's decision
Manual
Kind of conflict
Attribute
Class signature
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
=======
	
	public SelectRowsCommand cloneCommand() {
		return new SelectRowsCommand(this);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java


	@Override
	public SelectRowsCommand cloneCommand() {
		return new SelectRowsCommand(this);
	}
	
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
	@Override
	public boolean convertToTargetLayer(ILayer targetLayer) {
		ColumnPositionCoordinate targetColumnPositionCoordinate = LayerCommandUtil.convertColumnPositionToTargetContext(
Solution content
	
	@Override
	public SelectRowsCommand cloneCommand() {
		return new SelectRowsCommand(this);
	}
	
	
	@Override
	public boolean convertToTargetLayer(ILayer targetLayer) {
		ColumnPositionCoordinate targetColumnPositionCoordinate = LayerCommandUtil.convertColumnPositionToTargetContext(
File
SelectRowsCommand.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
			return NO_SELECTION;
		}
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java

=======
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/command/SelectRowsCommand.java
}
Solution content
			return NO_SELECTION;
		}
	}

}
File
SelectRowsCommand.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.style.SelectionStyleLabels;
import org.eclipse.nebula.widgets.nattable.style.Style;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/config/DefaultSelectionStyleConfiguration.java
import org.eclipse.nebula.widgets.nattable.style.BorderStyle.LineStyle;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/config/DefaultSelectionStyleConfiguration.java
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
Solution content
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.style.SelectionStyleLabels;
import org.eclipse.nebula.widgets.nattable.style.Style;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
File
DefaultSelectionStyleConfiguration.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
	public Color selectedHeaderBgColor = GUIHelper.COLOR_GRAY;
	public Color selectedHeaderFgColor = GUIHelper.COLOR_WHITE;
	public Font selectedHeaderFont = GUIHelper.getFont(new FontData("Verdana", 10, SWT.BOLD)); //$NON-NLS-1$
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/config/DefaultSelectionStyleConfiguration.java
	public BorderStyle selectedHeaderBorderStyle = new BorderStyle(-1, selectedHeaderFgColor, LineStyle.SOLID);
=======
	public BorderStyle selectedHeaderBorderStyle = new BorderStyle(-1, selectedHeaderFgColor, LineStyleEnum.SOLID);
	
	public Color fullySelectedHeaderBgColor = GUIHelper.COLOR_WIDGET_NORMAL_SHADOW;

	// Anchor grid line style
	public Color anchorGridBorderColor = GUIHelper.COLOR_BLACK;
	public BorderStyle anchorGridBorderStyle = new BorderStyle(1, anchorGridBorderColor, LineStyleEnum.DOTTED);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/config/DefaultSelectionStyleConfiguration.java

	@Override
	public void configureRegistry(IConfigRegistry configRegistry) {
Solution content
	public Color selectedHeaderBgColor = GUIHelper.COLOR_GRAY;
	public Color selectedHeaderFgColor = GUIHelper.COLOR_WHITE;
	public Font selectedHeaderFont = GUIHelper.getFont(new FontData("Verdana", 10, SWT.BOLD)); //$NON-NLS-1$
	public BorderStyle selectedHeaderBorderStyle = new BorderStyle(-1, selectedHeaderFgColor, LineStyle.SOLID);
	
	// Anchor grid line style
	public Color anchorGridBorderColor = GUIHelper.COLOR_BLACK;
	public BorderStyle anchorGridBorderStyle = new BorderStyle(1, anchorGridBorderColor, LineStyle.DOTTED);


	@Override
	public void configureRegistry(IConfigRegistry configRegistry) {
File
DefaultSelectionStyleConfiguration.java
Developer's decision
Manual
Kind of conflict
Attribute
Comment
Method invocation
Chunk
Conflicting content
	
	
	private final SelectionLayer selectionLayer;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/RowSelectionEvent.java
	
	private long rowPositionToReveal;
	
	
	public RowSelectionEvent(SelectionLayer selectionLayer, long rowPosition, boolean revealRow) {
		super(selectionLayer, new Range(rowPosition));
		this.selectionLayer = selectionLayer;
		this.rowPositionToReveal = (revealRow) ? rowPosition : NO_SELECTION;
	}
	
	public RowSelectionEvent(SelectionLayer selectionLayer, Collection rowPositions, long rowPositionToReveal) {
=======
	private int rowPositionToMoveIntoViewport;
	
	
	public RowSelectionEvent(SelectionLayer selectionLayer, Collection rowPositions, int rowPositionToMoveIntoViewport) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/RowSelectionEvent.java
		super(selectionLayer, rowPositions);
		this.selectionLayer = selectionLayer;
		this.rowPositionToReveal = rowPositionToReveal;
Solution content
	
	
	private final SelectionLayer selectionLayer;
	
	private long rowPositionToReveal;
	
	
	public RowSelectionEvent(final SelectionLayer selectionLayer,
			final long rowPosition, final boolean revealRow) {
		this(selectionLayer, new RangeList(rowPosition),
				(revealRow) ? rowPosition : NO_SELECTION );
	}
	
	public RowSelectionEvent(final SelectionLayer selectionLayer,
			final Collection rowPositions, final long rowPositionToReveal) {
		super(selectionLayer, rowPositions);
		this.selectionLayer = selectionLayer;
		this.rowPositionToReveal = rowPositionToReveal;
File
RowSelectionEvent.java
Developer's decision
Manual
Kind of conflict
Attribute
Method declaration
Method signature
Chunk
Conflicting content
	}
		return new RowSelectionEvent(this);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/RowSelectionEvent.java
=======
	@Override
	public RowSelectionEvent cloneEvent() {
		return new RowSelectionEvent(this);
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/RowSelectionEvent.java
	
	public SelectionLayer getSelectionLayer() {
		return selectionLayer;
Solution content
	@Override
	public RowSelectionEvent cloneEvent() {
		return new RowSelectionEvent(this);
	}
	
	
	@Override
	public SelectionLayer getSelectionLayer() {
		return selectionLayer;
File
RowSelectionEvent.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
package org.eclipse.nebula.widgets.nattable.selection.event;

import java.util.Collection;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java
import java.util.List;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
=======

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEventHandler;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
Solution content
package org.eclipse.nebula.widgets.nattable.selection.event;

import java.util.Collection;
import java.util.List;

import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.coordinate.Rectangle;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEventHandler;
import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff;
File
SelectionLayerStructuralChangeEventHandler.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff.DiffTypeEnum;
import org.eclipse.nebula.widgets.nattable.selection.ISelectionModel;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java
=======

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java

public class SelectionLayerStructuralChangeEventHandler implements ILayerEventHandler {
Solution content
import org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff.DiffTypeEnum;
import org.eclipse.nebula.widgets.nattable.selection.ISelectionModel;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;

public class SelectionLayerStructuralChangeEventHandler implements ILayerEventHandler {
File
SelectionLayerStructuralChangeEventHandler.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
	}
	
	private boolean selectedRowModified(Range changedRange){
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java
		List selectedRows = selectionModel.getSelectedRowPositions();
		for (Range rowRange : selectedRows) {
=======
		final RangeList selectedRows = selectionModel.getSelectedRowPositions();
		for (final Range rowRange : selectedRows) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/selection/event/SelectionLayerStructuralChangeEventHandler.java
			if (rowRange.overlap(changedRange)){
				return true;
			}
Solution content
	}
	
	private boolean selectedRowModified(Range changedRange){
		List selectedRows = selectionModel.getSelectedRowPositions();
		for (Range rowRange : selectedRows) {
			if (rowRange.overlap(changedRange)){
				return true;
			}
File
SelectionLayerStructuralChangeEventHandler.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Variable
Chunk
Conflicting content
public class SortColumnEvent extends ColumnVisualChangeEvent {

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/sort/event/SortColumnEvent.java

	public SortColumnEvent(final ILayer layer, final long columnPosition) {
=======
	public SortColumnEvent(ILayer layer, int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/event/SortColumnEvent.java
		super(layer, new Range(columnPosition));
	}
Solution content
public class SortColumnEvent extends ColumnVisualChangeEvent {


	public SortColumnEvent(final ILayer layer, final long columnPosition) {
		super(layer, new Range(columnPosition));
	}
File
SortColumnEvent.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	protected SortColumnEvent(final SortColumnEvent event) {
		super(event);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/sort/event/SortColumnEvent.java

=======
	
	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/event/SortColumnEvent.java
	public SortColumnEvent cloneEvent() {
		return new SortColumnEvent(this);
	}
Solution content
	}
	
	@Override
	protected SortColumnEvent(final SortColumnEvent event) {
		super(event);
	}
	public SortColumnEvent cloneEvent() {
		return new SortColumnEvent(this);
File
SortColumnEvent.java
Developer's decision
Version 2
Kind of conflict
Annotation
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
=======
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
Solution content
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.persistence.IPersistable;
File
DisplayColumnStyleEditorCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
			return true;
		}
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
		applySelectedStyleToColumns(command);
=======
		applySelectedStyleToColumns(command, selectionLayer.getSelectedColumnPositions());
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
		return true;
	}
Solution content
			return true;
		}
		
		applySelectedStyleToColumns(command, selectionLayer.getSelectedColumnPositions());
		return true;
	}
File
DisplayColumnStyleEditorCommandHandler.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
		return DisplayColumnStyleEditorCommand.class;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
	protected void applySelectedStyleToColumns(DisplayColumnStyleEditorCommand command) {
		final List selectedColumnPositions = selectionLayer.getSelectedColumnPositions();
		for (final Range range : selectedColumnPositions) {
			for (long position = range.start; position < range.end; position++) {
				long index = selectionLayer.getColumnIndexByPosition(position);
				if (index >= 0) {
					// Read the edited styles
					Style newColumnCellStyle = dialog.getNewColumnCellStyle(); 
					
					String configLabel = getConfigLabel(index);
					if (newColumnCellStyle == null) {
						stylesToPersist.remove(configLabel);
					} else {
						newColumnCellStyle.setAttributeValue(CellStyleAttributes.BORDER_STYLE, dialog.getNewColumnBorderStyle());
						stylesToPersist.put(configLabel, newColumnCellStyle);
					}
					configRegistry.registerConfigAttribute(CELL_STYLE, newColumnCellStyle, NORMAL, configLabel);
					columnLabelAccumulator.registerColumnOverridesOnTop(index, configLabel);
				}
=======
	protected void applySelectedStyleToColumns(DisplayColumnStyleEditorCommand command,
			final RangeList columnPositions) {
		for (final IValueIterator columnIter = columnPositions.values().iterator(); columnIter.hasNext(); ) {
			final int columnIndex = selectionLayer.getColumnIndexByPosition(columnIter.nextValue());
			// Read the edited styles
			Style newColumnCellStyle = dialog.getNewColumnCellStyle(); 
			
			String configLabel = getConfigLabel(columnIndex);
			if (newColumnCellStyle == null) {
				stylesToPersist.remove(configLabel);
			} else {
				newColumnCellStyle.setAttributeValue(CellStyleAttributes.BORDER_STYLE, dialog.getNewColumnBorderStyle());
				stylesToPersist.put(configLabel, newColumnCellStyle);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
			}
		}
	}
Solution content
		return DisplayColumnStyleEditorCommand.class;
	}

	protected void applySelectedStyleToColumns(DisplayColumnStyleEditorCommand command,
			final RangeList columnPositions) {
		for (final IValueIterator columnIter = columnPositions.values().iterator(); columnIter.hasNext(); ) {
			final long columnIndex = selectionLayer.getColumnIndexByPosition(columnIter.nextValue());
			// Read the edited styles
			Style newColumnCellStyle = dialog.getNewColumnCellStyle(); 
			
			String configLabel = getConfigLabel(columnIndex);
			if (newColumnCellStyle == null) {
				stylesToPersist.remove(configLabel);
			} else {
				newColumnCellStyle.setAttributeValue(CellStyleAttributes.BORDER_STYLE, dialog.getNewColumnBorderStyle());
				stylesToPersist.put(configLabel, newColumnCellStyle);
			}
			configRegistry.registerConfigAttribute(CELL_STYLE, newColumnCellStyle, NORMAL, configLabel);
			columnLabelAccumulator.registerColumnOverridesOnTop(columnIndex, configLabel);
		}
	}
File
DisplayColumnStyleEditorCommandHandler.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
If statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * Doing so avoids calls to the {@link ISummaryProvider} and is a performance tweak.
	 */
	public static final ISummaryProvider NONE = new ISummaryProvider() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/ISummaryProvider.java
		public Object summarize(long columnIndex) {
=======
		@Override
		public Object summarize(int columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/ISummaryProvider.java
			return null;
		}
	};
Solution content
	 * Doing so avoids calls to the {@link ISummaryProvider} and is a performance tweak.
	 */
	public static final ISummaryProvider NONE = new ISummaryProvider() {
		@Override
		public Object summarize(long columnIndex) {
			return null;
		}
	};
File
ISummaryProvider.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	 * and does not perform a calculation.
	 */
	public static final ISummaryProvider DEFAULT = new ISummaryProvider() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/ISummaryProvider.java
		public Object summarize(long columnIndex) {
=======
		@Override
		public Object summarize(int columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/ISummaryProvider.java
			return DEFAULT_SUMMARY_VALUE;
		}
	};
Solution content
	 * and does not perform a calculation.
	 */
	public static final ISummaryProvider DEFAULT = new ISummaryProvider() {
		@Override
		public Object summarize(long columnIndex) {
			return DEFAULT_SUMMARY_VALUE;
		}
	};
File
ISummaryProvider.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
	private final IConfigRegistry configRegistry;
	private int summaryRowHeight = DataLayer.DEFAULT_ROW_HEIGHT;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	/** Cache the calculated summary value, since its CPU intensive */
	protected Map summaryCache = new HashMap();
	/** Use a cache-copy which does not get cleared, as using an Entry type object with stale flag per instance 
	 *  would require traversal of full set of entries in clearSummaryCache()
=======
	/** 
	 * Cache that contains the calculated summary value.
	 * Introduced for performance reasons since the calculation could be CPU intensive. 
	 */
	protected Map summaryCache = new HashMap();
	/** 
	 * Use a cache-copy which does not get cleared, as using an Entry type object with stale flag per 
	 * instance would require traversal of full set of entries in clearSummaryCache()
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	 */
	protected Map summaryCacheIncludingStaleValues = new HashMap();
	
Solution content
	private final IConfigRegistry configRegistry;
	private int summaryRowHeight = DataLayer.DEFAULT_ROW_HEIGHT;

	/** 
	 * Cache that contains the calculated summary value.
	 * Introduced for performance reasons since the calculation could be CPU intensive. 
	 */
	protected Map summaryCache = new HashMap();
	/** 
	 * Use a cache-copy which does not get cleared, as using an Entry type object with stale flag per 
	 * instance would require traversal of full set of entries in clearSummaryCache()
	 */
	protected Map summaryCacheIncludingStaleValues = new HashMap();
	
File
SummaryRowLayer.java
Developer's decision
Combination
Kind of conflict
Attribute
Comment
Method invocation
Chunk
Conflicting content
	 * 		 columnPosition == columnIndex
	 */
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	public Object getDataValueByPosition(final long columnPosition, final long rowPosition) {
		
=======
	public Object getDataValueByPosition(final int columnPosition, final int rowPosition) { 
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		if (isSummaryRowPosition(rowPosition)) {
			final Object potentiallyStaleSummaryValue = getPotentiallyStaleSummaryFromCache(columnPosition);
			if (potentiallyStaleSummaryValue == null || !hasNonStaleSummaryFor(columnPosition)) {
Solution content
	 * 		 columnPosition == columnIndex
	 */
	@Override
	public Object getDataValueByPosition(final long columnPosition, final long rowPosition) {
		if (isSummaryRowPosition(rowPosition)) {
			final Object potentiallyStaleSummaryValue = getPotentiallyStaleSummaryFromCache(columnPosition);
			if (potentiallyStaleSummaryValue == null || !hasNonStaleSummaryFor(columnPosition)) {
File
SummaryRowLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		return super.getDataValueByPosition(columnPosition, rowPosition);
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	private void calculateNewSummaryValue(final Object potentiallyStaleSummaryValue, final long columnPosition, final long rowPosition) {
=======
	private void calculateNewSummaryValue(
			final Object potentiallyStaleSummaryValue, 
			final int columnPosition,  
			boolean calculateInBackground) {
		
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		// Get the summary provider from the configuration registry
		LabelStack labelStack = getConfigLabelsByPosition(columnPosition, getSummaryRowPosition());
		String[] configLabels = labelStack.getLabels().toArray(ArrayUtil.STRING_TYPE_ARRAY);
Solution content
		return super.getDataValueByPosition(columnPosition, rowPosition);
	}

	private void calculateNewSummaryValue(
			final Object potentiallyStaleSummaryValue, 
			final long columnPosition,
			boolean calculateInBackground) {
		// Get the summary provider from the configuration registry
		LabelStack labelStack = getConfigLabelsByPosition(columnPosition, getSummaryRowPosition());
		String[] configLabels = labelStack.getLabels().toArray(ArrayUtil.STRING_TYPE_ARRAY);
File
SummaryRowLayer.java
Developer's decision
Manual
Kind of conflict
Method signature
Chunk
Conflicting content
			return;
		}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		// Start thread to calculate summary
		new Thread() {
			@Override
			public void run() {
				Object summaryValue = calculateColumnSummary(columnPosition, summaryProvider);
				addToCache(columnPosition, summaryValue);
				if (!((potentiallyStaleSummaryValue != null) ? potentiallyStaleSummaryValue.equals(summaryValue) : null == summaryValue)) {
					fireLayerEvent(new RowUpdateEvent(SummaryRowLayer.this, rowPosition));
=======
		if (calculateInBackground) {
			// Start thread to calculate summary
			new Thread() {
				@Override
				public void run() {
					Object summaryValue = calculateColumnSummary(columnPosition, summaryProvider);
					addToCache(columnPosition, summaryValue);
					if (!ObjectUtils.equals(potentiallyStaleSummaryValue, summaryValue)) {
						fireLayerEvent(new RowUpdateEvent(SummaryRowLayer.this, getSummaryRowPosition()));
					}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
				}
			}.start();
		}
Solution content
			return;
		}

		if (calculateInBackground) {
			// Start thread to calculate summary
			new Thread() {
				@Override
				public void run() {
					Object summaryValue = calculateColumnSummary(columnPosition, summaryProvider);
					addToCache(columnPosition, summaryValue);
					if (!((potentiallyStaleSummaryValue != null) ? potentiallyStaleSummaryValue.equals(summaryValue) : null == summaryValue)) {
						fireLayerEvent(new RowUpdateEvent(SummaryRowLayer.this, getSummaryRowPosition()));
					}
				}
			}.start();
		}
File
SummaryRowLayer.java
Developer's decision
Combination
Kind of conflict
Comment
If statement
Method invocation
Chunk
Conflicting content
		return summaryCacheIncludingStaleValues.get(columnIndex);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	public boolean hasNonStaleSummaryFor(Long columnIndex)
	{
=======
	public boolean hasNonStaleSummaryFor(Integer columnIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		return summaryCache.containsKey(columnIndex);
	}
	
Solution content
		return summaryCacheIncludingStaleValues.get(columnIndex);
	}
	
	public boolean hasNonStaleSummaryFor(Long columnIndex) {
		return summaryCache.containsKey(columnIndex);
	}
	
File
SummaryRowLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

		return LayerUtil.getRowPositionByY(this, y);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	private boolean isSummaryRowPosition(long rowPosition) {
		return rowPosition == getSummaryRowPosition();
	}

	/**
	 * @return the position of the summary row. In most 
	 * cases rowCount - 1. 
	 */
	private long getSummaryRowPosition() {
		return getRowCount() - 1;
	}

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	@Override
	public int getRowHeightByPosition(long rowPosition) {
		if (isSummaryRowPosition(rowPosition)) {
Solution content
		return LayerUtil.getRowPositionByY(this, y);
	}

	@Override
	public int getRowHeightByPosition(long rowPosition) {
		if (isSummaryRowPosition(rowPosition)) {
File
SummaryRowLayer.java
Developer's decision
Version 2
Kind of conflict
Comment
Method declaration
Chunk
Conflicting content
		return super.getRowHeightByPosition(rowPosition);
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	public long getRowPositionByIndex(long rowIndex) {
		if (rowIndex < 0 || rowIndex >= getRowCount()) {
			return Long.MIN_VALUE;
=======
	@Override
	public int getRowPositionByIndex(int rowIndex) {
		if (rowIndex >= 0 && rowIndex < getRowCount()) {
			return rowIndex;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		}
		return rowIndex;
	}
Solution content
		return super.getRowHeightByPosition(rowPosition);
	}

}
File
SummaryRowLayer.java
Developer's decision
Manual
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
		return rowIndex;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
	public long getColumnPositionByIndex(long columnIndex) {
		if (columnIndex < 0 || columnIndex >= getColumnCount()) {
			return Long.MIN_VALUE;
=======
	@Override
	public int getColumnPositionByIndex(int columnIndex) {
		if (columnIndex >= 0 && columnIndex < getColumnCount()) {
			return columnIndex;
		} else {
			return -1;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummaryRowLayer.java
		}
		return columnIndex;
	}
Solution content
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// -depend
package org.eclipse.nebula.widgets.nattable.summaryrow;

import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.HORIZONTAL;
import static org.eclipse.nebula.widgets.nattable.coordinate.Orientation.VERTICAL;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.layer.AbstractLayerTransform;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.LayerUtil;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.LayerCellDim;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.IVisualChangeEvent;
import org.eclipse.nebula.widgets.nattable.layer.event.RowUpdateEvent;
import org.eclipse.nebula.widgets.nattable.resize.command.RowResizeCommand;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.summaryrow.command.CalculateSummaryRowValuesCommand;
import org.eclipse.nebula.widgets.nattable.util.ArrayUtil;


/**
 * Adds a summary row at the end. Uses {@link ISummaryProvider} to calculate the summaries for all columns.
 * 

This layer also adds the following labels: *

    *
  1. {@link SummaryRowLayer#DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX} + column index
  2. *
  3. {@link SummaryRowLayer#DEFAULT_SUMMARY_ROW_CONFIG_LABEL} to all cells in the row
  4. *
* * Example: column with index 1 will have the DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX + 1 label applied. * Styling and {@link ISummaryProvider} can be hooked up to these labels. * * @see DefaultSummaryRowConfiguration */ public class SummaryRowLayer extends AbstractLayerTransform { /** * Label that gets attached to the LabelStack for every cell in the summary row. */ public static final String DEFAULT_SUMMARY_ROW_CONFIG_LABEL = "SummaryRow"; //$NON-NLS-1$ /** * Prefix of the labels that get attached to cells in the summary row. * The complete label will consist of this prefix and the column index at the end of * the label. This way every cell in the summary row can be accessed directly via * label mechanism. */ public LabelStack getConfigLabelsByPosition(long columnPosition, long rowPosition) { public static final String DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX = "SummaryColumn_"; //$NON-NLS-1$ private final IConfigRegistry configRegistry; private int summaryRowHeight = DataLayer.DEFAULT_ROW_HEIGHT; /** * Cache that contains the calculated summary value. * Introduced for performance reasons since the calculation could be CPU intensive. */ protected Map summaryCache = new HashMap(); /** * Use a cache-copy which does not get cleared, as using an Entry type object with stale flag per * instance would require traversal of full set of entries in clearSummaryCache() */ protected Map summaryCacheIncludingStaleValues = new HashMap(); /** * Creates a SummaryRowLayer on top of the given underlying layer. *

* Note: This constructor will create the SummaryRowLayer by using the default configuration. * The default configuration doesn't fit the needs so you usually will use your custom * summary row configuration. * * @param underlyingDataLayer The underlying layer on which the SummaryRowLayer should be build. * @param configRegistry The ConfigRegistry for retrieving the ISummaryProvider per column. * * @see DefaultSummaryRowConfiguration */ public SummaryRowLayer(IUniqueIndexLayer underlyingDataLayer, IConfigRegistry configRegistry) { this(underlyingDataLayer, configRegistry, true); } /** * Creates a SummaryRowLayer on top of the given underlying layer. *

* Note: This constructor will create the SummaryRowLayer by using the default configuration * if the autoConfig parameter is set to true. * The default configuration doesn't fit the needs so you usually will use your custom * summary row configuration. When using a custom configuration you should use this * constructor setting autoConfig to false. Otherwise you might get strange * behaviour as the default configuration will be set additionally to your configuration. * * @param underlyingDataLayer The underlying layer on which the SummaryRowLayer should be build. * @param configRegistry The ConfigRegistry for retrieving the ISummaryProvider per column. * @param autoConfigure true to use the DefaultSummaryRowConfiguration, * false if a custom configuration will be set after the creation. * * @see DefaultSummaryRowConfiguration */ public SummaryRowLayer(IUniqueIndexLayer underlyingDataLayer, IConfigRegistry configRegistry, boolean autoConfigure) { super(underlyingDataLayer); this.configRegistry = configRegistry; if(autoConfigure){ addConfiguration(new DefaultSummaryRowConfiguration()); } } /** * Calculates the summary for the column using the {@link ISummaryProvider} from the {@link IConfigRegistry}. * In order to prevent the table from freezing (for large data sets), the summary is calculated in a separate * Thread. While summary is being calculated {@link ISummaryProvider#DEFAULT_SUMMARY_VALUE} is returned. *

* NOTE: Since this is a {@link IUniqueIndexLayer} sitting close to the {@link DataLayer}, * columnPosition == columnIndex */ @Override public Object getDataValueByPosition(final long columnPosition, final long rowPosition) { if (isSummaryRowPosition(rowPosition)) { final Object potentiallyStaleSummaryValue = getPotentiallyStaleSummaryFromCache(columnPosition); if (potentiallyStaleSummaryValue == null || !hasNonStaleSummaryFor(columnPosition)) { calculateNewSummaryValue(potentiallyStaleSummaryValue, columnPosition, true); } if (potentiallyStaleSummaryValue != null) { return potentiallyStaleSummaryValue; } return null; } return super.getDataValueByPosition(columnPosition, rowPosition); } private void calculateNewSummaryValue( final Object potentiallyStaleSummaryValue, final long columnPosition, boolean calculateInBackground) { // Get the summary provider from the configuration registry LabelStack labelStack = getConfigLabelsByPosition(columnPosition, getSummaryRowPosition()); String[] configLabels = labelStack.getLabels().toArray(ArrayUtil.STRING_TYPE_ARRAY); final ISummaryProvider summaryProvider = configRegistry.getConfigAttribute( SummaryRowConfigAttributes.SUMMARY_PROVIDER, DisplayMode.NORMAL, configLabels); // If there is no Summary provider - skip processing if(summaryProvider == ISummaryProvider.NONE){ return; } if (calculateInBackground) { // Start thread to calculate summary new Thread() { @Override public void run() { Object summaryValue = calculateColumnSummary(columnPosition, summaryProvider); addToCache(columnPosition, summaryValue); if (!((potentiallyStaleSummaryValue != null) ? potentiallyStaleSummaryValue.equals(summaryValue) : null == summaryValue)) { fireLayerEvent(new RowUpdateEvent(SummaryRowLayer.this, getSummaryRowPosition())); } } }.start(); } else { //calculate in same thread to make printing and exporting work //Note: this could cause a performance leak and should be used carefully Object summaryValue = calculateColumnSummary(columnPosition, summaryProvider); addToCache(columnPosition, summaryValue); } } private Object calculateColumnSummary(long columnIndex, ISummaryProvider summaryProvider) { Object summaryValue = null; if (summaryProvider != null) { summaryValue = summaryProvider.summarize(columnIndex); } return summaryValue; } public Object getSummaryFromCache(Long columnIndex) { return summaryCache.get(columnIndex); } public Object getPotentiallyStaleSummaryFromCache(Long columnIndex) { return summaryCacheIncludingStaleValues.get(columnIndex); } public boolean hasNonStaleSummaryFor(Long columnIndex) { return summaryCache.containsKey(columnIndex); } protected boolean addToCache(Long columnIndex, Object summaryValue) { Object oldSummaryValue = summaryCache.put(columnIndex, summaryValue); summaryCacheIncludingStaleValues.put(columnIndex,summaryValue); return (!((oldSummaryValue != null) ? oldSummaryValue.equals(summaryValue) : null == summaryValue)); } protected void clearSummaryCache() { summaryCache.clear(); } private boolean isSummaryRowPosition(long rowPosition) { return rowPosition == getSummaryRowPosition(); } /** * @return The position of the summary row. * In most cases rowCount - 1. */ private long getSummaryRowPosition() { return getRowCount() - 1; } @Override public boolean doCommand(ILayerCommand command) { if (command instanceof RowResizeCommand) { RowResizeCommand rowResizeCommand = (RowResizeCommand) command; if (isSummaryRowPosition(rowResizeCommand.getRowPosition())) { summaryRowHeight = rowResizeCommand.getNewHeight(); return true; } } else if (command instanceof CalculateSummaryRowValuesCommand) { for (int i = 0; i < getColumnCount(); i++) { calculateNewSummaryValue(null, i, false); } return true; } return super.doCommand(command); } @Override public void handleLayerEvent(ILayerEvent event) { if (event instanceof IVisualChangeEvent) { clearSummaryCache(); } super.handleLayerEvent(event); } @Override if (isSummaryRowPosition(rowPosition)) { //create a new LabelStack that takes the config labels into account LabelStack labelStack = new LabelStack(); if (getConfigLabelAccumulator() != null) { getConfigLabelAccumulator().accumulateConfigLabels(labelStack, columnPosition, rowPosition); } labelStack.addLabelOnTop(DEFAULT_SUMMARY_ROW_CONFIG_LABEL); labelStack.addLabelOnTop(DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX + columnPosition); return labelStack; } return super.getConfigLabelsByPosition(columnPosition, rowPosition); } @Override public ILayerCell getCellByPosition(long columnPosition, long rowPosition) { if (isSummaryRowPosition(rowPosition)) { return new LayerCell(this, new LayerCellDim(HORIZONTAL, getColumnIndexByPosition(columnPosition), columnPosition ), new LayerCellDim(VERTICAL, getRowIndexByPosition(rowPosition), rowPosition ) ); } return super.getCellByPosition(columnPosition, rowPosition); } @Override public long getHeight() { return super.getHeight() + getRowHeightByPosition(getSummaryRowPosition()); } @Override public long getPreferredHeight() { return super.getPreferredHeight() + getRowHeightByPosition(getSummaryRowPosition()); } @Override public long getRowCount() { return super.getRowCount() + 1; } @Override public long getPreferredRowCount() { return getRowCount(); } @Override public long getRowIndexByPosition(long rowPosition) { if (isSummaryRowPosition(rowPosition)) { return rowPosition; } return super.getRowIndexByPosition(rowPosition); } @Override public long getRowPositionByY(long y) { return LayerUtil.getRowPositionByY(this, y); } @Override public int getRowHeightByPosition(long rowPosition) { if (isSummaryRowPosition(rowPosition)) { return summaryRowHeight; } return super.getRowHeightByPosition(rowPosition); } }

File
SummaryRowLayer.java
Developer's decision
Manual
Kind of conflict
Annotation
If statement
Method signature
Return statement
Variable
Chunk
Conflicting content
	 * 			{@link ISummaryProvider#DEFAULT_SUMMARY_VALUE} if the column contains non
	 * 			Number values and this SummationSummaryProvider is configured to be strict.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummationSummaryProvider.java
	public Object summarize(long columnIndex) {
		long rowCount = dataProvider.getRowCount();
=======
	@Override
	public Object summarize(int columnIndex) {
		int rowCount = dataProvider.getRowCount();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/summaryrow/SummationSummaryProvider.java
		float summaryValue = 0;
		
		for (long rowIndex = 0; rowIndex < rowCount; rowIndex++) {
Solution content
	 * 			{@link ISummaryProvider#DEFAULT_SUMMARY_VALUE} if the column contains non
	 * 			Number values and this SummationSummaryProvider is configured to be strict.
	 */
	@Override
	public Object summarize(long columnIndex) {
		long rowCount = dataProvider.getRowCount();
		float summaryValue = 0;
		
		for (long rowIndex = 0; rowIndex < rowCount; rowIndex++) {
File
SummationSummaryProvider.java
Developer's decision
Combination
Kind of conflict
Annotation
Method invocation
Method signature
Variable
Chunk
Conflicting content
import java.util.List;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tickupdate/command/TickUpdateCommandHandler.java
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
=======
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tickupdate/command/TickUpdateCommandHandler.java

import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
Solution content
import java.util.List;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;

import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
File
TickUpdateCommandHandler.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.jface.window.DefaultToolTip;
import org.eclipse.jface.window.ToolTip;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
import org.eclipse.swt.widgets.Event;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
=======
import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.CellDisplayConversionUtils;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
Solution content
import org.eclipse.jface.window.DefaultToolTip;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.widgets.Event;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.coordinate.Point;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.CellDisplayConversionUtils;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.PasswordTextPainter;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
=======
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Event;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java

/**
 * {@link ToolTip} implementation for the {@link NatTable} which will show the display
Solution content
/**
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.PasswordTextPainter;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;

 * {@link ToolTip} implementation for the {@link NatTable} which will show the display
File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 * 

It is possible to configure for which regions the tooltips should be activated. * If none are configured, the tooltips are active for every region of the {@link NatTable}. * <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java ======= * @author Dirk Fauth >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java * @version 1.0.0 */ public class NatTableContentTooltip extends DefaultToolTip {

Solution content
 * 

It is possible to configure for which regions the tooltips should be activated. * If none are configured, the tooltips are active for every region of the {@link NatTable}. * * @version 1.0.0 */ public class NatTableContentTooltip extends DefaultToolTip {

File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	public NatTableContentTooltip(NatTable natTable, String... tooltipRegions) {
		super(natTable, ToolTip.NO_RECREATE, false);
		setPopupDelay(500);
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		setShift(new org.eclipse.swt.graphics.Point(10, 10));
=======
		setShift(new Point(10, 10));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		activate();
		this.natTable = natTable;
		this.tooltipRegions = tooltipRegions;
Solution content
	public NatTableContentTooltip(NatTable natTable, String... tooltipRegions) {
		super(natTable, ToolTip.NO_RECREATE, false);
		setPopupDelay(500);
		setShift(new org.eclipse.swt.graphics.Point(10, 10));
		activate();
		this.natTable = natTable;
		this.tooltipRegions = tooltipRegions;
File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * current cell (the combination of ToolTip.NO_RECREATE style and override of this method).
	 */
	protected Object getToolTipArea(Event event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		long col = natTable.getColumnPositionByX(event.x);
		long row = natTable.getRowPositionByY(event.y);
=======
		int col = natTable.getColumnPositionByX(event.x);
		int row = natTable.getRowPositionByY(event.y);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		
		return new Point(col, row);
	}
Solution content
	 * current cell (the combination of ToolTip.NO_RECREATE style and override of this method).
	 */
	protected Object getToolTipArea(Event event) {
		long col = natTable.getColumnPositionByX(event.x);
		long row = natTable.getRowPositionByY(event.y);
		
		return new Point(col, row);
	}
File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
	 */
	@Override
	protected String getText(Event event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		long col = natTable.getColumnPositionByX(event.x);
		long row = natTable.getRowPositionByY(event.y);
=======
		int col = natTable.getColumnPositionByX(event.x);
		int row = natTable.getRowPositionByY(event.y);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tooltip/NatTableContentTooltip.java
		
		ILayerCell cell = natTable.getCellByPosition(col, row);
		if (cell != null) {
Solution content
	 */
	@Override
	protected String getText(Event event) {
		long col = natTable.getColumnPositionByX(event.x);
		long row = natTable.getRowPositionByY(event.y);
		
		ILayerCell cell = natTable.getCellByPosition(col, row);
		if (cell != null) {
File
NatTableContentTooltip.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
public interface ITreeData  {
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/ITreeData.java
	public String formatDataForDepth(long depth, T object);
	
	public T getDataAtIndex(long index);

	public long getDepthOfData(T object);

	public long indexOf(T child);
=======
	String formatDataForDepth(int depth, T object);
	
	String formatDataForDepth(int depth, int index);

	int getDepthOfData(T object);

	int getDepthOfData(int index);

	/**
	 * @param index The index for which the corresponding object in the tree
	 * 			structure is requested.
	 * @return The object at the given index in the tree structure.
	 */
	T getDataAtIndex(int index);

	/**
	 * @param child The child whose index is requested.
	 * @return The index of the given child object in the tree structure.
	 */
	int indexOf(T child);
	
	/**
	 * @param object The object which should be checked for children.
	 * @return true if the object has children in the tree structure,
	 * 			false if it is a leaf.
	 */
	boolean hasChildren(T object);
	
	/**
	 * @param index The index of the object in the tree structure which should be checked for children.
	 * @return true if the object has children in the tree structure,
	 * 			false if it is a leaf.
	 */
	boolean hasChildren(int index);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/ITreeData.java
	
	/**
	 * Return the child objects below the given object if the object
Solution content
public interface ITreeData  {
	
	String formatDataForDepth(int depth, T object);
	
	String formatDataForDepth(int depth, long index);

	int getDepthOfData(T object);

	int getDepthOfData(long index);

	/**
	 * @param index The index for which the corresponding object in the tree
	 * 			structure is requested.
	 * @return The object at the given index in the tree structure.
	 */
	T getDataAtIndex(long index);

	/**
	 * @param child The child whose index is requested.
	 * @return The index of the given child object in the tree structure.
	 */
	long indexOf(T child);
	
	/**
	 * @param object The object which should be checked for children.
	 * @return true if the object has children in the tree structure,
	 * 			false if it is a leaf.
	 */
	boolean hasChildren(T object);
	
	/**
	 * @param index The index of the object in the tree structure which should be checked for children.
	 * @return true if the object has children in the tree structure,
	 * 			false if it is a leaf.
	 */
	boolean hasChildren(long index);
	
	/**
	 * Return the child objects below the given object if the object
File
ITreeData.java
Developer's decision
Manual
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
public interface ITreeRowModel {

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/ITreeRowModel.java
	long depth(long index);

	boolean isLeaf(long index);

	String getObjectAtIndexAndDepth(long index, long depth);

	boolean hasChildren(long index);

	boolean isCollapsed(long index);

	List collapse(long parentIndex);

	List expand(long parentIndex);

	List getChildIndexes(long parentIndex);
=======
	int depth(int index);

	boolean isLeaf(int index);

	String getObjectAtIndexAndDepth(int index, int depth);

	boolean hasChildren(int index);

	boolean isCollapsed(int index);

	boolean isCollapseable(int index);
	
	List collapse(int parentIndex);

	List expand(int parentIndex);

	/**
	 * This method returns all visible child indexes below the node at the given index.
	 * It search all the way down the tree structure to find every child, even the
	 * sub children, sub sub children and so on.
	 * 

* If you only need to get the direct child indexes of the node at the given index * you need to use {@link ITreeRowModel#getDirectChildIndexes(int)} instead. * @param parentIndex The index for which the child indexes are requested. * @return The list of all child indexes for the node at the given index. */ List getChildIndexes(int parentIndex); /** * This method returns only the direct visible child indexes of the node at the given index. * It does not search all the way down for further sub children. *

* If you need to get all child indexes of the node at the given index * you need to use {@link ITreeRowModel#getChildIndexes(int)} instead. * @param parentIndex The index for which the direct child indexes are requested. * @return The list of the direct child indexes for the node at the given index. */ List getDirectChildIndexes(int parentIndex); /** * @return The indexes of the root nodes in the tree. */ *

List getRootIndexes(); /** * This method returns all children below the node at the given index. * It search all the way down the tree structure to find every child, even the * sub children, sub sub children and so on. * If you only need to get the direct children of the node at the given index * you need to use {@link ITreeRowModel#getDirectChildren(int)} instead. * @param parentIndex The index for which the children are requested. * @return The list of all children for the node at the given index. */ public List getChildren(int parentIndex); /** * This method returns only the direct children of the node at the given index. * It does not search all the way down for further sub children. *

* If you need to get all children of the node at the given index * you need to use {@link ITreeRowModel#getChildren(int)} instead. * @param parentIndex The index for which the direct children are requested. * @return The list of the direct children for the node at the given index. */ public List getDirectChildren(int parentIndex); >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/ITreeRowModel.java }

Solution content
public interface ITreeRowModel {

	int depth(long index);

	boolean isLeaf(long index);

	String getObjectAtIndexAndDepth(long index, int depth);

	boolean hasChildren(long index);

	boolean isCollapsed(long index);

	boolean isCollapseable(long index);
	
	List collapse(long parentIndex);

	List expand(long parentIndex);

	/**
	 * This method returns all visible child indexes below the node at the given index.
	 * It search all the way down the tree structure to find every child, even the
	 * sub children, sub sub children and so on.
	 * 

* If you only need to get the direct child indexes of the node at the given index * you need to use {@link ITreeRowModel#getDirectChildIndexes(int)} instead. * @param parentIndex The index for which the child indexes are requested. * @return The list of all child indexes for the node at the given index. */ List getChildIndexes(long parentIndex); /** * This method returns only the direct visible child indexes of the node at the given index. * It does not search all the way down for further sub children. *

* If you need to get all child indexes of the node at the given index * you need to use {@link ITreeRowModel#getChildIndexes(int)} instead. * @param parentIndex The index for which the direct child indexes are requested. * @return The list of the direct child indexes for the node at the given index. */ List getDirectChildIndexes(long parentIndex); /** * @return The indexes of the root nodes in the tree. */ List getRootIndexes(); /** * This method returns all children below the node at the given index. * It search all the way down the tree structure to find every child, even the * sub children, sub sub children and so on. *

* If you only need to get the direct children of the node at the given index * you need to use {@link ITreeRowModel#getDirectChildren(int)} instead. * @param parentIndex The index for which the children are requested. * @return The list of all children for the node at the given index. */ public List getChildren(long parentIndex); /** * This method returns only the direct children of the node at the given index. * It does not search all the way down for further sub children. *

* If you need to get all children of the node at the given index * you need to use {@link ITreeRowModel#getChildren(int)} instead. * @param parentIndex The index for which the direct children are requested. * @return The list of the direct children for the node at the given index. */ public List getDirectChildren(long parentIndex); }

File
ITreeRowModel.java
Developer's decision
Manual
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
=======
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList.ValueIterator;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
import org.eclipse.nebula.widgets.nattable.hideshow.AbstractRowHideShowLayer;
import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowHideCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommand;
Solution content
import org.eclipse.nebula.widgets.nattable.command.ILayerCommand;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.IValueIterator;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList;
import org.eclipse.nebula.widgets.nattable.coordinate.RangeList.ValueIterator;
import org.eclipse.nebula.widgets.nattable.hideshow.AbstractRowHideShowLayer;
import org.eclipse.nebula.widgets.nattable.hideshow.command.MultiRowHideCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommand;
File
TreeLayer.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.painter.cell.BackgroundPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.decorator.CellPainterDecorator;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
=======
import org.eclipse.nebula.widgets.nattable.tree.command.TreeCollapseAllCommandHandler;
import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandAllCommandHandler;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandCollapseCommandHandler;
import org.eclipse.nebula.widgets.nattable.tree.config.DefaultTreeLayerConfiguration;
import org.eclipse.nebula.widgets.nattable.tree.painter.IndentedTreeImagePainter;
Solution content
import org.eclipse.nebula.widgets.nattable.painter.cell.BackgroundPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.decorator.CellPainterDecorator;
import org.eclipse.nebula.widgets.nattable.tree.command.TreeCollapseAllCommandHandler;
import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandAllCommandHandler;
import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandCollapseCommandHandler;
import org.eclipse.nebula.widgets.nattable.tree.config.DefaultTreeLayerConfiguration;
import org.eclipse.nebula.widgets.nattable.tree.painter.IndentedTreeImagePainter;
File
TreeLayer.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
	public static final String TREE_COLUMN_CELL = "TREE_COLUMN_CELL"; //$NON-NLS-1$

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public static final long TREE_COLUMN_NUMBER = 0;
=======
	public static final int TREE_COLUMN_NUMBER = 0;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java

	/**
	 * The ITreeRowModelListener that is used to get information about the tree structure.
Solution content
	public static final String TREE_COLUMN_CELL = "TREE_COLUMN_CELL"; //$NON-NLS-1$

	public static final long TREE_COLUMN_NUMBER = 0;

	/**
	 * The ITreeRowModelListener that is used to get information about the tree structure.
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Chunk
Conflicting content
	 */
	private final ITreeRowModel treeRowModel;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	private final Set hiddenRowIndexes;
=======
	private final Set hiddenRowIndexes;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java

	/**
	 * The IndentedTreeImagePainter that paints indentation to the left of the configured base painter
Solution content
	 */
	private final ITreeRowModel treeRowModel;

	private final Set hiddenRowIndexes;

	/**
	 * The IndentedTreeImagePainter that paints indentation to the left of the configured base painter
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Chunk
Conflicting content
		super(underlyingLayer);
		this.treeRowModel = treeRowModel;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		this.hiddenRowIndexes = new TreeSet();
=======
		this.hiddenRowIndexes = new TreeSet();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		
		if (useDefaultConfiguration) {
			addConfiguration(new DefaultTreeLayerConfiguration(this));
Solution content
		super(underlyingLayer);
		this.treeRowModel = treeRowModel;

		this.hiddenRowIndexes = new TreeSet();
		
		if (useDefaultConfiguration) {
			addConfiguration(new DefaultTreeLayerConfiguration(this));
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
		
		setConfigLabelAccumulator(new IConfigLabelAccumulator() {
			@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			public void accumulateConfigLabels(LabelStack configLabels, long columnPosition, long rowPosition) {
=======
			public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
				if (isTreeColumn(columnPosition)) {
					configLabels.addLabelOnTop(TREE_COLUMN_CELL);
				}
Solution content
		
		setConfigLabelAccumulator(new IConfigLabelAccumulator() {
			@Override
			public void accumulateConfigLabels(LabelStack configLabels, long columnPosition, long rowPosition) {
				if (isTreeColumn(columnPosition)) {
					configLabels.addLabelOnTop(TREE_COLUMN_CELL);
				}
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
		this.indentedTreeImagePainter = indentedTreeImagePainter;

		registerCommandHandler(new TreeExpandCollapseCommandHandler(this));
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
=======
		registerCommandHandler(new TreeCollapseAllCommandHandler(this));
		registerCommandHandler(new TreeExpandAllCommandHandler(this));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	}

	/**
Solution content
		this.indentedTreeImagePainter = indentedTreeImagePainter;

		registerCommandHandler(new TreeExpandCollapseCommandHandler(this));
		registerCommandHandler(new TreeCollapseAllCommandHandler(this));
		registerCommandHandler(new TreeExpandAllCommandHandler(this));
	}

	/**
File
TreeLayer.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * @return true if the given column position is the tree column, false
	 * 			if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	private boolean isTreeColumn(long columnPosition) {
=======
	private boolean isTreeColumn(int columnPosition) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		return columnPosition == TREE_COLUMN_NUMBER;
	}
	
Solution content
	 * @return true if the given column position is the tree column, false
	 * 			if not.
	 */
	private boolean isTreeColumn(long columnPosition) {
		return columnPosition == TREE_COLUMN_NUMBER;
	}
	
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}
	
	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
=======
	public ICellPainter getCellPainter(int columnPosition, int rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		ICellPainter cellPainter = super.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
		
		if (cell.getConfigLabels().hasLabel(TREE_COLUMN_CELL)) {
Solution content
	}
	
	@Override
	public ICellPainter getCellPainter(long columnPosition, long rowPosition, ILayerCell cell, IConfigRegistry configRegistry) {
		ICellPainter cellPainter = super.getCellPainter(columnPosition, rowPosition, cell, configRegistry);
		
		if (cell.getConfigLabels().hasLabel(TREE_COLUMN_CELL)) {
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public boolean isRowIndexHidden(long rowIndex) {
		return this.hiddenRowIndexes.contains(Long.valueOf(rowIndex)) || isHiddenInUnderlyingLayer(rowIndex);
	}

	@Override
	public Collection getHiddenRowIndexes() {
=======
	public boolean isRowIndexHidden(int rowIndex) {
		return this.hiddenRowIndexes.contains(Integer.valueOf(rowIndex)) || isHiddenInUnderlyingLayer(rowIndex);
	}

	@Override
	public Collection getHiddenRowIndexes() {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		return this.hiddenRowIndexes;
	}
Solution content
	}

	@Override
	public boolean isRowIndexHidden(long rowIndex) {
		return this.hiddenRowIndexes.contains(Long.valueOf(rowIndex)) || isHiddenInUnderlyingLayer(rowIndex);
	}

	@Override
	public Collection getHiddenRowIndexes() {
		return this.hiddenRowIndexes;
	}
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Method signature
Chunk
Conflicting content
	 * @param parentIndex The index of the row that shows the tree node for which the
	 * 			expand/collapse action should be performed.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public void expandOrCollapseIndex(long parentIndex) {
=======
	public void expandOrCollapseIndex(int parentIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		if (this.treeRowModel.isCollapsed(parentIndex)) {
			expandTreeRow(parentIndex);
		} else {
Solution content
	 * @param parentIndex The index of the row that shows the tree node for which the
	 * 			expand/collapse action should be performed.
	 */
	public void expandOrCollapseIndex(long parentIndex) {
		if (this.treeRowModel.isCollapsed(parentIndex)) {
			expandTreeRow(parentIndex);
		} else {
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	 * Collapses the tree node for the given row index.
	 * @param parentIndex The index of the row that shows the node that should be collapsed
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public void collapseTreeRow(long parentIndex) {
		List rowIndexes = this.treeRowModel.collapse(parentIndex);
		List rowPositions = new ArrayList();
		for (Long rowIndex : rowIndexes) {
			long rowPos = getRowPositionByIndex(rowIndex);
=======
	public void collapseTreeRow(int parentIndex) {
		List rowIndexes = this.treeRowModel.collapse(parentIndex);
		List rowPositions = new ArrayList();
		for (Integer rowIndex : rowIndexes) {
			int rowPos = getRowPositionByIndex(rowIndex);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			//if the rowPos is negative, it is not visible because of hidden state in an underlying layer
			if (rowPos >= 0) {
				rowPositions.add(rowPos);
Solution content
	 * Collapses the tree node for the given row index.
	 * @param parentIndex The index of the row that shows the node that should be collapsed
	 */
	public void collapseTreeRow(long parentIndex) {
		List rowIndexes = this.treeRowModel.collapse(parentIndex);
		List rowPositions = new ArrayList();
		for (Long rowIndex : rowIndexes) {
			long rowPos = getRowPositionByIndex(rowIndex);
			//if the rowPos is negative, it is not visible because of hidden state in an underlying layer
			if (rowPos >= 0) {
				rowPositions.add(rowPos);
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
For statement
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * Expands the tree node for the given row index.
	 * @param parentIndex The index of the row that shows the node that should be expanded
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	public void expandTreeRow(long parentIndex) {
		List rowIndexes = 	this.treeRowModel.expand(parentIndex);
=======
	public void expandTreeRow(int parentIndex) {
		List rowIndexes = 	this.treeRowModel.expand(parentIndex);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		this.hiddenRowIndexes.removeAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, rowIndexes));
Solution content
	 * Expands the tree node for the given row index.
	 * @param parentIndex The index of the row that shows the node that should be expanded
	 */
	public void expandTreeRow(long parentIndex) {
		List rowIndexes = 	this.treeRowModel.expand(parentIndex);
		this.hiddenRowIndexes.removeAll(rowIndexes);
		invalidateCache();
		fireLayerEvent(new ShowRowPositionsEvent(this, rowIndexes));
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Method signature
Variable
Chunk
Conflicting content
	 * @return true if the row at the given index is hidden in the underlying layer
	 * 			false if not.
	 */
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
	private boolean isHiddenInUnderlyingLayer(long rowIndex) {
=======
	private boolean isHiddenInUnderlyingLayer(int rowIndex) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		return (underlyingLayer.getRowPositionByIndex(rowIndex) == -1);
	}
Solution content
	 * @return true if the row at the given index is hidden in the underlying layer
	 * 			false if not.
	 */
	private boolean isHiddenInUnderlyingLayer(long rowIndex) {
		IUniqueIndexLayer underlyingLayer = (IUniqueIndexLayer) getUnderlyingLayer();
		return (underlyingLayer.getRowPositionByIndex(rowIndex) == -1);
	}
File
TreeLayer.java
Developer's decision
Version 1
Kind of conflict
Method signature
Chunk
Conflicting content
	protected boolean handleRowHideCommand(RowHideCommand command) {
		//transform position to index
		if (command.convertToTargetLayer(this)) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			long rowIndex = getRowIndexByPosition(command.getRowPosition());
			if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
				List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
				long[] childPositions = new long[childIndexes.size()+1];
				childPositions[0] = command.getRowPosition();
				for (int i = 1; i < childIndexes.size()+1; i++) {
					long childPos = getRowPositionByIndex(childIndexes.get(i-1));
					childPositions[i] = childPos;
				}
				return super.doCommand(new MultiRowHideCommand(this, childPositions));
=======
			int rowIndex = getRowIndexByPosition(command.getRowPosition());
			if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
				List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
				final RangeList rowPositionsToHide = new RangeList();
				rowPositionsToHide.values().add(command.getRowPosition());
				for (int i = 1; i < childIndexes.size()+1; i++) {
					rowPositionsToHide.values().add(getRowPositionByIndex(childIndexes.get(i-1)));
				}
				return super.doCommand(new MultiRowHideCommand(this, rowPositionsToHide));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			}
		}
		return super.doCommand(command);
Solution content
	protected boolean handleRowHideCommand(RowHideCommand command) {
		//transform position to index
		if (command.convertToTargetLayer(this)) {
			long rowIndex = getRowIndexByPosition(command.getRowPosition());
			if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
				List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
				final RangeList rowPositionsToHide = new RangeList();
				rowPositionsToHide.values().add(command.getRowPosition());
				for (int i = 1; i < childIndexes.size()+1; i++) {
					rowPositionsToHide.values().add(getRowPositionByIndex(childIndexes.get(i-1)));
				}
				return super.doCommand(new MultiRowHideCommand(this, rowPositionsToHide));
			}
		}
		return super.doCommand(command);
File
TreeLayer.java
Developer's decision
Combination
Kind of conflict
Array access
For statement
If statement
Method invocation
Return statement
Variable
Chunk
Conflicting content
	protected boolean handleMultiRowHideCommand(MultiRowHideCommand command) {
		//transform position to index
		if (command.convertToTargetLayer(this)) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			List rowPositionsToHide = new ArrayList();
			for (Long rowPos : command.getRowPositions()) {
				rowPositionsToHide.add(rowPos);
				long rowIndex = getRowIndexByPosition(rowPos);
				if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
					List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
					for (Long childIndex : childIndexes) {
						rowPositionsToHide.add(getRowPositionByIndex(childIndex));
=======
			final RangeList rowPositionsToHide = new RangeList();
			for (final IValueIterator rowIter = new ValueIterator(command.getPositions()); rowIter.hasNext(); ) {
				final int rowPos = rowIter.nextValue();
				rowPositionsToHide.values().add(rowPos);
				int rowIndex = getRowIndexByPosition(rowPos);
				if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
					List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
					for (Integer childIndex : childIndexes) {
						rowPositionsToHide.values().add(getRowPositionByIndex(childIndex));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
					}
				}
			}
Solution content
	protected boolean handleMultiRowHideCommand(MultiRowHideCommand command) {
		//transform position to index
		if (command.convertToTargetLayer(this)) {
			final RangeList rowPositionsToHide = new RangeList();
			for (final IValueIterator rowIter = new ValueIterator(command.getPositions()); rowIter.hasNext(); ) {
				final long rowPos = rowIter.nextValue();
				rowPositionsToHide.values().add(rowPos);
				long rowIndex = getRowIndexByPosition(rowPos);
				if (this.treeRowModel.hasChildren(rowIndex) && !this.treeRowModel.isCollapsed(rowIndex)) {
					List childIndexes = this.treeRowModel.getChildIndexes(rowIndex);
					for (Long childIndex : childIndexes) {
						rowPositionsToHide.values().add(getRowPositionByIndex(childIndex));
					}
				}
			}
File
TreeLayer.java
Developer's decision
Manual
Kind of conflict
For statement
If statement
Method invocation
Variable
Chunk
Conflicting content
				}
			}
			
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
			long[] childPositions = new long[rowPositionsToHide.size()];
			for (int i = 0; i < rowPositionsToHide.size(); i++) {
				childPositions[i] = rowPositionsToHide.get(i);
			}
			return super.doCommand(new MultiRowHideCommand(this, childPositions));
=======
			return super.doCommand(new MultiRowHideCommand(this, rowPositionsToHide));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeLayer.java
		}
		return super.doCommand(command);
	}
Solution content
				}
			}
			
			return super.doCommand(new MultiRowHideCommand(this, rowPositionsToHide));
		}
		return super.doCommand(command);
	}
File
TreeLayer.java
Developer's decision
Version 2
Kind of conflict
For statement
Method invocation
Return statement
Variable
Chunk
Conflicting content
	private final HashSet parentIndexes = new HashSet();

	public TreeRowModel(ITreeData treeData) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
		this.treeData = treeData;
	}

	public void registerRowGroupModelListener(ITreeRowModelListener listener) {
		this.listeners.add(listener);
	}

	public void notifyListeners() {
		for (ITreeRowModelListener listener : this.listeners) {
			listener.treeRowModelChanged();
		}
	}

	public long depth(long index) {
		return this.treeData
				.getDepthOfData(this.treeData.getDataAtIndex(index));
	}

	public boolean isLeaf(long index) {
		return !hasChildren(index);
	}

	public String getObjectAtIndexAndDepth(long index, long depth) {
		return this.treeData.formatDataForDepth(depth,this.treeData.getDataAtIndex(index));
	}

	public boolean hasChildren(long index) {
		return this.treeData.hasChildren(this.treeData.getDataAtIndex(index));
	}

	public boolean isCollapsed(long index) {
=======
		super(treeData);
	}

	@Override
	public boolean isCollapsed(int index) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
		return this.parentIndexes.contains(index);
	}
Solution content
	private final HashSet parentIndexes = new HashSet();

	public TreeRowModel(ITreeData treeData) {
		super(treeData);
	}

	@Override
	public boolean isCollapsed(long index) {
		return this.parentIndexes.contains(index);
	}
File
TreeRowModel.java
Developer's decision
Combination
Kind of conflict
Annotation
Attribute
Method declaration
Method invocation
Method signature
Chunk
Conflicting content
		this.parentIndexes.clear();
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
	/**
	 * @return TRUE if the row group this index is collapseable
	 */
	public boolean isCollapseable(long index) {
		return hasChildren(index);
	}

	public List collapse(long index) {
=======
	@Override
	public List collapse(int index) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
		this.parentIndexes.add(index);
		notifyListeners();
		return getChildIndexes(index);
Solution content
		this.parentIndexes.clear();
	}

	@Override
	public List collapse(long index) {
		this.parentIndexes.add(index);
		notifyListeners();
		return getChildIndexes(index);
File
TreeRowModel.java
Developer's decision
Combination
Kind of conflict
Annotation
Comment
Method declaration
Method signature
Chunk
Conflicting content
		return getChildIndexes(index);
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
	public List expand(long index) {
=======
	@Override
	public List expand(int index) {
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
		this.parentIndexes.remove(index);
		notifyListeners();
		List children = getChildIndexes(index);
Solution content
		return getChildIndexes(index);
	}

	@Override
	public List expand(long index) {
		this.parentIndexes.remove(index);
		notifyListeners();
		List children = getChildIndexes(index);
File
TreeRowModel.java
Developer's decision
Combination
Kind of conflict
Annotation
Method signature
Chunk
Conflicting content
		return children;
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
	public List getChildIndexes(long parentIndex) {
		List result = new ArrayList();
		List children = this.treeData.getChildren(this.treeData
				.getDataAtIndex(parentIndex));
		for (T child : children) {
			long index = this.treeData.indexOf(child);
			result.add(index);
			result.addAll(getChildIndexes(index));
		}
		return result;
	}

=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/tree/TreeRowModel.java
}
Solution content
		return children;
	}

}
File
TreeRowModel.java
Developer's decision
Version 2
Kind of conflict
Method declaration
Chunk
Conflicting content
/*******************************************************************************
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
 * Copyright (c) 2012, 2013 Original authors and others.
=======
 * Copyright (c) 2013 Dirk Fauth and others.
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
 * 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
Solution content
/*******************************************************************************
 * Copyright (c) 2012, 2013 Original authors 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
File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
 * 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
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
 * 
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.ui.matcher;

import org.eclipse.swt.events.MouseEvent;

=======
 *
 * Contributors:
 *    Dirk Fauth  - initial API and implementation
 *******************************************************************************/
package org.eclipse.nebula.widgets.nattable.ui.matcher;

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes;
import org.eclipse.nebula.widgets.nattable.edit.editor.ICellEditor;
Solution content
 * 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:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
package org.eclipse.nebula.widgets.nattable.ui.matcher;

import org.eclipse.swt.events.MouseEvent;

import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes;
import org.eclipse.nebula.widgets.nattable.edit.editor.ICellEditor;
File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Comment
Import
Package declaration
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java

=======
import org.eclipse.swt.events.MouseEvent;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java

/**
 * Implementation of {@link IMouseEventMatcher} that will check if editing should be
Solution content
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;


/**
 * Implementation of {@link IMouseEventMatcher} that will check if editing should be
File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
 *
 * the mouse button and the presence of a cell editor is evaluated. 
 * 

* If not specified, this matcher will react on the left mouse button. <<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java ======= * * @author Dirk Fauth >>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java */ public class CellEditorMouseEventMatcher implements IMouseEventMatcher {

Solution content
 * the mouse button and the presence of a cell editor is evaluated. 
 * 

* If not specified, this matcher will react on the left mouse button. */ public class CellEditorMouseEventMatcher implements IMouseEventMatcher {

File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
	 * the presence of a cell editor and the mouse left click.
	 */
	public CellEditorMouseEventMatcher() {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
		this(null, IMouseEventMatcher.LEFT_BUTTON);
=======
		this(null, MouseEventMatcher.LEFT_BUTTON);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
	}
	
	/**
Solution content
	 * the presence of a cell editor and the mouse left click.
	 */
	public CellEditorMouseEventMatcher() {
		this(null, IMouseEventMatcher.LEFT_BUTTON);
	}
	
	/**
File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
	 * 			be attached.
	 */
	public CellEditorMouseEventMatcher(String regionLabel) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
		this(regionLabel, IMouseEventMatcher.LEFT_BUTTON);
=======
		this(regionLabel, MouseEventMatcher.LEFT_BUTTON);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/matcher/CellEditorMouseEventMatcher.java
	}

	/**
Solution content
	 * 			be attached.
	 */
	public CellEditorMouseEventMatcher(String regionLabel) {
		this(regionLabel, IMouseEventMatcher.LEFT_BUTTON);
	}

	/**
File
CellEditorMouseEventMatcher.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Chunk
Conflicting content
 * 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
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/AbstractHeaderMenuConfiguration.java
 * 
=======
 *
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/AbstractHeaderMenuConfiguration.java
 * Contributors:
 *    Dirk Fauth  - initial API and implementation
 *******************************************************************************/
Solution content
 * 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:
 *    Dirk Fauth  - initial API and implementation
 *******************************************************************************/
File
AbstractHeaderMenuConfiguration.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
 * and the corner region. By default empty menus will be attached, which will
 * result in not showing a menu. On creating a specialized header menu configuration
 * you can choose for which header region you want to add a menu.
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/AbstractHeaderMenuConfiguration.java
=======
 * 
 * @author Dirk Fauth
 *
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/AbstractHeaderMenuConfiguration.java
 */
public class AbstractHeaderMenuConfiguration extends AbstractUiBindingConfiguration {
Solution content
 * and the corner region. By default empty menus will be attached, which will
 * result in not showing a menu. On creating a specialized header menu configuration
 * you can choose for which header region you want to add a menu.
 */
public class AbstractHeaderMenuConfiguration extends AbstractUiBindingConfiguration {
File
AbstractHeaderMenuConfiguration.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
// ~
package org.eclipse.nebula.widgets.nattable.ui.menu;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Widget;
=======
package org.eclipse.nebula.widgets.nattable.ui.menu;

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java

import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.NatTable;
Solution content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// ~
package org.eclipse.nebula.widgets.nattable.ui.menu;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Widget;

import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.NatTable;
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Import
Package declaration
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.columnCategories.ChooseColumnsFromCategoriesCommand;
import org.eclipse.nebula.widgets.nattable.columnChooser.command.DisplayColumnChooserCommand;
import org.eclipse.nebula.widgets.nattable.columnRename.DisplayColumnRenameDialogCommand;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
=======
import org.eclipse.nebula.widgets.nattable.filterrow.command.ClearAllFiltersCommand;
import org.eclipse.nebula.widgets.nattable.filterrow.command.ToggleFilterRowCommand;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
import org.eclipse.nebula.widgets.nattable.group.command.OpenCreateColumnGroupDialog;
import org.eclipse.nebula.widgets.nattable.group.command.UngroupColumnCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ColumnHideCommand;
Solution content
import org.eclipse.nebula.widgets.nattable.columnCategories.ChooseColumnsFromCategoriesCommand;
import org.eclipse.nebula.widgets.nattable.columnChooser.command.DisplayColumnChooserCommand;
import org.eclipse.nebula.widgets.nattable.columnRename.DisplayColumnRenameDialogCommand;
import org.eclipse.nebula.widgets.nattable.group.command.OpenCreateColumnGroupDialog;
import org.eclipse.nebula.widgets.nattable.group.command.UngroupColumnCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ColumnHideCommand;
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllColumnsCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllRowsCommand;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
import org.eclipse.nebula.widgets.nattable.persistence.command.DisplayPersistenceDialogCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.InitializeAutoResizeColumnsCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.InitializeAutoResizeRowsCommand;
Solution content
import org.eclipse.nebula.widgets.nattable.hideshow.command.RowHideCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllColumnsCommand;
import org.eclipse.nebula.widgets.nattable.hideshow.command.ShowAllRowsCommand;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.persistence.command.DisplayPersistenceDialogCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.InitializeAutoResizeColumnsCommand;
import org.eclipse.nebula.widgets.nattable.resize.command.InitializeAutoResizeRowsCommand;
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.nebula.widgets.nattable.ui.NatEventData;
import org.eclipse.nebula.widgets.nattable.util.GCFactory;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java

=======
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Widget;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java

/**
 * Helper class that provides several {@link IMenuItemProvider} for menu items that can be
Solution content
import org.eclipse.nebula.widgets.nattable.ui.NatEventData;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;


/**
 * Helper class that provides several {@link IMenuItemProvider} for menu items that can be
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long columnPosition = getNatEventData(event).getColumnPosition();
=======
						int columnPosition = getNatEventData(event).getColumnPosition();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						natTable.doCommand(new ColumnHideCommand(natTable, columnPosition));
					}
				});
Solution content
				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new ColumnHideCommand(natTable, columnPosition));
					}
				});
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long rowPosition = getNatEventData(event).getRowPosition();
=======
						int rowPosition = getNatEventData(event).getRowPosition();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						natTable.doCommand(new RowHideCommand(natTable, rowPosition));
					}
				});
Solution content
				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long rowPosition = getNatEventData(event).getRowPosition();
						natTable.doCommand(new RowHideCommand(natTable, rowPosition));
					}
				});
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				autoResizeColumns.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition));
=======
						int columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition, natTable.getConfigRegistry(), new GCFactory(natTable)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
					}
				});
			}
Solution content
				autoResizeColumns.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition));
					}
				});
			}
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				autoResizeRows.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long rowPosition = getNatEventData(event).getRowPosition();
=======
						int rowPosition = getNatEventData(event).getRowPosition();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						natTable.doCommand(new InitializeAutoResizeRowsCommand(natTable, rowPosition, natTable.getConfigRegistry(), new GCFactory(natTable)));
					}
				});
Solution content
				autoResizeRows.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long rowPosition = getNatEventData(event).getRowPosition();
						natTable.doCommand(new InitializeAutoResizeRowsCommand(natTable, rowPosition));
					}
				});
File
MenuItemProviders.java
Developer's decision
Manual
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				autoResizeColumns.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition));
=======
						int columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition, natTable.getConfigRegistry(), new GCFactory(natTable)));
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
					}
				});
			}
Solution content
				autoResizeColumns.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new InitializeAutoResizeColumnsCommand(natTable, columnPosition));
					}
				});
			}
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
				columnStyleEditor.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long rowPosition = getNatEventData(event).getRowPosition();
						long columnPosition = getNatEventData(event).getColumnPosition();
=======
						int rowPosition = getNatEventData(event).getRowPosition();
						int columnPosition = getNatEventData(event).getColumnPosition();
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						natTable.doCommand(new DisplayColumnStyleEditorCommand(natTable, natTable.getConfigRegistry(), columnPosition, rowPosition));
					}
				});
Solution content
				columnStyleEditor.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent event) {
						long rowPosition = getNatEventData(event).getRowPosition();
						long columnPosition = getNatEventData(event).getColumnPosition();
						natTable.doCommand(new DisplayColumnStyleEditorCommand(natTable, natTable.getConfigRegistry(), columnPosition, rowPosition));
					}
				});
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
					public void widgetSelected(SelectionEvent e) {
						NatEventData natEventData = getNatEventData(e);
						NatTable natTable = natEventData.getNatTable();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
						long columnPosition = natEventData.getColumnPosition();
						long rowPosition = natEventData.getRowPosition();
						
						ILayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition);
						
						String msg = "Display mode: " + cell.getDisplayMode() + "\nConfig labels: " //$NON-NLS-1$ //$NON-NLS-2$
=======
						int columnPosition = natEventData.getColumnPosition();
						int rowPosition = natEventData.getRowPosition();

						String msg = "Display mode: " + natTable.getDisplayModeByPosition(columnPosition, rowPosition) + "\nConfig labels: " //$NON-NLS-1$ //$NON-NLS-2$
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
								+ natTable.getConfigLabelsByPosition(columnPosition, rowPosition) + "\nData value: " //$NON-NLS-1$
								+ natTable.getDataValueByPosition(columnPosition, rowPosition) + "\n\nColumn position: " + columnPosition + "\nColumn index: " //$NON-NLS-1$ //$NON-NLS-2$
								+ natTable.getColumnIndexByPosition(columnPosition) + "\n\nRow position: " + rowPosition + "\nRow index: " //$NON-NLS-1$ //$NON-NLS-2$
Solution content
					public void widgetSelected(SelectionEvent e) {
						NatEventData natEventData = getNatEventData(e);
						NatTable natTable = natEventData.getNatTable();
						long columnPosition = natEventData.getColumnPosition();
						long rowPosition = natEventData.getRowPosition();
						
						ILayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition);
						
						String msg = "Display mode: " + cell.getDisplayMode() + "\nConfig labels: " //$NON-NLS-1$ //$NON-NLS-2$
								+ natTable.getConfigLabelsByPosition(columnPosition, rowPosition) + "\nData value: " //$NON-NLS-1$
								+ natTable.getDataValueByPosition(columnPosition, rowPosition) + "\n\nColumn position: " + columnPosition + "\nColumn index: " //$NON-NLS-1$ //$NON-NLS-2$
								+ natTable.getColumnIndexByPosition(columnPosition) + "\n\nRow position: " + rowPosition + "\nRow index: " //$NON-NLS-1$ //$NON-NLS-2$
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Variable
Chunk
Conflicting content
		};
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
=======
	public static IMenuItemProvider clearAllFiltersMenuItemProvider() {
		return clearAllFiltersMenuItemProvider(Messages.getString("MenuItemProviders.clearAllFilters")); //$NON-NLS-1$
	}

	public static IMenuItemProvider clearAllFiltersMenuItemProvider(final String menuLabel) {
		return new IMenuItemProvider() {

			public void addMenuItem(final NatTable natTable, final Menu popupMenu) {
				MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
				menuItem.setText(menuLabel);
				menuItem.setImage(GUIHelper.getImage("remove_filter")); //$NON-NLS-1$
				menuItem.setEnabled(true);

				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent e) {
						natTable.doCommand(new ClearAllFiltersCommand());
					}
				});
			}
		};
	}

	public static IMenuItemProvider clearToggleFilterRowMenuItemProvider() {
		return clearToggleFilterRowMenuItemProvider(Messages.getString("MenuItemProviders.toggleFilterRow")); //$NON-NLS-1$
	}

	public static IMenuItemProvider clearToggleFilterRowMenuItemProvider(final String menuLabel) {
		return new IMenuItemProvider() {

			public void addMenuItem(final NatTable natTable, final Menu popupMenu) {
				MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
				menuItem.setText(menuLabel);
				menuItem.setImage(GUIHelper.getImage("toggle_filter")); //$NON-NLS-1$
				menuItem.setEnabled(true);

				menuItem.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent e) {
						natTable.doCommand(new ToggleFilterRowCommand());
					}
				});
			}
		};
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/MenuItemProviders.java
	/**
	 * Will create and return the {@link IMenuItemProvider} that adds the action for executing the
	 * {@link DisplayPersistenceDialogCommand} to a popup menu. This command is intended to open the 
Solution content
		};
	}

	/**
	 * Will create and return the {@link IMenuItemProvider} that adds the action for executing the
	 * {@link DisplayPersistenceDialogCommand} to a popup menu. This command is intended to open the 
File
MenuItemProviders.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
		return withMenuItemProvider(MenuItemProviders.categoriesBasedColumnChooserMenuItemProvider(menuLabel));
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/PopupMenuBuilder.java
=======
	public PopupMenuBuilder withClearAllFilters() {
		return withMenuItemProvider(MenuItemProviders.clearAllFiltersMenuItemProvider());
	}

	public PopupMenuBuilder withClearAllFilters(String menuLabel) {
		return withMenuItemProvider(MenuItemProviders.clearAllFiltersMenuItemProvider(menuLabel));
	}

	public PopupMenuBuilder withToggleFilterRow() {
		return withMenuItemProvider(MenuItemProviders.clearToggleFilterRowMenuItemProvider());
	}

	public PopupMenuBuilder withToggleFilterRow(String menuLabel) {
		return withMenuItemProvider(MenuItemProviders.clearToggleFilterRowMenuItemProvider(menuLabel));
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/menu/PopupMenuBuilder.java
	/**
	 * Adds the menu item for opening the view management dialog to the popup menu. Uses the default text
	 * localized in NatTable core resource bundles. Uses the given String as label for the menu item.
Solution content
		return withMenuItemProvider(MenuItemProviders.categoriesBasedColumnChooserMenuItemProvider(menuLabel));
	}

	/**
	 * Adds the menu item for opening the view management dialog to the popup menu. Uses the default text
	 * localized in NatTable core resource bundles. Uses the given String as label for the menu item.
File
PopupMenuBuilder.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Chunk
Conflicting content
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/util/Scheduler.java
import java.util.concurrent.atomic.AtomicLong;
=======
import java.util.concurrent.atomic.AtomicInteger;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/util/Scheduler.java

public class Scheduler implements ThreadFactory  {
    
Solution content
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;

public class Scheduler implements ThreadFactory  {
    
File
Scheduler.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
public class Scheduler implements ThreadFactory  {
    
	private final String threadNamePrefix;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/util/Scheduler.java
	private final AtomicLong counter = new AtomicLong();
	private long scheduledTasks;
=======
	private final AtomicInteger counter = new AtomicInteger();
	private int scheduledTasks;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/util/Scheduler.java
	private ScheduledExecutorService threadPool;
	
	public Scheduler(String threadNamePrefix) {
Solution content
public class Scheduler implements ThreadFactory  {
    
	private final String threadNamePrefix;
	private final AtomicLong counter = new AtomicLong();
	private long scheduledTasks;
	private ScheduledExecutorService threadPool;
	
	public Scheduler(String threadNamePrefix) {
File
Scheduler.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Chunk
Conflicting content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
// ~
package org.eclipse.nebula.widgets.nattable.widget;

import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import java.util.ArrayList;
import java.util.Arrays;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
=======
package org.eclipse.nebula.widgets.nattable.widget;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.ui.matcher.LetterOrDigitKeyEventMatcher;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
Solution content
 * Contributors:
 *     Original authors and others - initial API and implementation
 ******************************************************************************/
// ~
package org.eclipse.nebula.widgets.nattable.widget;

import static org.eclipse.nebula.widgets.nattable.painter.cell.GraphicsUtils.safe;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
File
NatCombo.java
Developer's decision
Combination
Kind of conflict
Import
Package declaration
Chunk
Conflicting content
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
import org.eclipse.swt.widgets.Display;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
Solution content
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignment;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.ui.matcher.LetterOrDigitKeyEventMatcher;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;


=======
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
/**
 * Customized combobox control that supports editing directly in the text field 
 * and selecting items from the dropdown.
Solution content
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.CellStyleUtil;
import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignment;
import org.eclipse.nebula.widgets.nattable.style.IStyle;
import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.ui.matcher.LetterOrDigitKeyEventMatcher;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;


/**
 * Customized combobox control that supports editing directly in the text field 
 * and selecting items from the dropdown.
File
NatCombo.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	 * multiselection to the user. 
	 */
	protected String multiselectTextSuffix = DEFAULT_MULTI_SELECT_SUFFIX;
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	
	/**
	 * Flag to determine whether the dropdown was hidden on focus lost.
	 * Is only interpreted by the dropdown icon mouse listener, as it shouldn't
	 * show the dropdown again when it is clicked with an open dropdown.
	 */
	private boolean hideByFocusLost = false;
	
=======

	/**
	 * Flag that tells whether the NatCombo has focus or not.
	 * The flag is set by the FocusListenerWrapper that is set as focus listener
	 * on both, the Text control and the dropdown table control.
	 * This flag is necessary as the NatCombo has focus if either of both
	 * controls have focus.
	 */
	private boolean hasFocus = false;
	/**
	 * Flag to determine whether the focus lost runnable is currently active or not.
	 * Necessary in case the FocusListener is removing itself on focusLost().
	 * Quite unusual in normal cases, but for NatTable editing this appears because
	 * if the control looses focus it gets destroyed in AbstractCellEditor.close()
	 * Introducing and handling this flag ensures concurrency safety.
	 */
	private boolean focusLostRunnableActive = false;
	/**
	 * The list of FocusListener that contains the listeners that will be informed
	 * if the NatCombo control gains or looses focus. We keep our own list of
	 * listeners because the two controls that are combined in this control share
	 * the same focus.
	 */
	private List focusListener = new ArrayList();

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	/**
	 * Creates a new NatCombo using the given IStyle for rendering, showing the default number
	 * of items at once in the dropdown. Creating the NatCombo with this constructor, there is
Solution content
	 * multiselection to the user. 
	 */
	protected String multiselectTextSuffix = DEFAULT_MULTI_SELECT_SUFFIX;

	/**
	 * Flag that tells whether the NatCombo has focus or not.
	 * The flag is set by the FocusListenerWrapper that is set as focus listener
	 * on both, the Text control and the dropdown table control.
	 * This flag is necessary as the NatCombo has focus if either of both
	 * controls have focus.
	 */
	private boolean hasFocus = false;
	/**
	 * Flag to determine whether the focus lost runnable is currently active or not.
	 * Necessary in case the FocusListener is removing itself on focusLost().
	 * Quite unusual in normal cases, but for NatTable editing this appears because
	 * if the control looses focus it gets destroyed in AbstractCellEditor.close()
	 * Introducing and handling this flag ensures concurrency safety.
	 */
	private boolean focusLostRunnableActive = false;
	/**
	 * The list of FocusListener that contains the listeners that will be informed
	 * if the NatCombo control gains or looses focus. We keep our own list of
	 * listeners because the two controls that are combined in this control share
	 * the same focus.
	 */
	private List focusListener = new ArrayList();

	/**
	 * Creates a new NatCombo using the given IStyle for rendering, showing the default number
	 * of items at once in the dropdown. Creating the NatCombo with this constructor, there is
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Attribute
Comment
Method invocation
Chunk
Conflicting content
	 * 			adding internal styles via ConfigRegistry.
	 */
	protected void createTextControl(int style) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		int widgetStyle = style | CellStyleUtil.getHorizontalAlignmentSWT(cellStyle, SWT.NONE);
=======
		int widgetStyle = style | HorizontalAlignmentEnum.getSWTStyle(cellStyle);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		text = new Text(this, widgetStyle);
		text.setBackground(cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR));
		text.setForeground(cellStyle.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR));
Solution content
	 * 			adding internal styles via ConfigRegistry.
	 */
	protected void createTextControl(int style) {
		int widgetStyle = style | CellStyleUtil.getHorizontalAlignmentSWT(cellStyle, SWT.NONE);
		text = new Text(this, widgetStyle);
		text.setBackground(cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR));
		text.setForeground(cellStyle.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR));
File
NatCombo.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Variable
Chunk
Conflicting content
			}
		});
		
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
		text.addFocusListener(new FocusListenerWrapper());

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		final Canvas iconCanvas = new Canvas(this, SWT.NONE) {

			@Override
Solution content
			}
		});
		
		text.addFocusListener(new FocusListenerWrapper());

		final Canvas iconCanvas = new Canvas(this, SWT.NONE) {

			@Override
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
				Rectangle iconCanvasBounds = iconCanvas.getBounds();
				Rectangle iconImageBounds = iconImage.getBounds();
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
				long horizontalAlignmentPadding = CellStyleUtil.getHorizontalAlignmentPadding(HorizontalAlignment.CENTER, iconCanvasBounds.width, iconImageBounds.width);
				long verticalAlignmentPadding = CellStyleUtil.getVerticalAlignmentPadding(VerticalAlignmentEnum.MIDDLE, iconCanvasBounds.height, iconImageBounds.height);
				gc.drawImage(iconImage, safe(horizontalAlignmentPadding), safe(verticalAlignmentPadding));
=======
				int horizontalAlignmentPadding = CellStyleUtil.getHorizontalAlignmentPadding(HorizontalAlignmentEnum.CENTER, iconCanvasBounds, iconImageBounds.width);
				int verticalAlignmentPadding = CellStyleUtil.getVerticalAlignmentPadding(VerticalAlignmentEnum.MIDDLE, iconCanvasBounds, iconImageBounds.height);
				gc.drawImage(iconImage, horizontalAlignmentPadding, verticalAlignmentPadding);
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java

				Color originalFg = gc.getForeground();
				gc.setForeground(GUIHelper.COLOR_WIDGET_BORDER);
Solution content
				Rectangle iconCanvasBounds = iconCanvas.getBounds();
				Rectangle iconImageBounds = iconImage.getBounds();
				long horizontalAlignmentPadding = CellStyleUtil.getHorizontalAlignmentPadding(HorizontalAlignment.CENTER, iconCanvasBounds.width, iconImageBounds.width);
				long verticalAlignmentPadding = CellStyleUtil.getVerticalAlignmentPadding(VerticalAlignmentEnum.MIDDLE, iconCanvasBounds.height, iconImageBounds.height);
				gc.drawImage(iconImage, safe(horizontalAlignmentPadding), safe(verticalAlignmentPadding));

				Color originalFg = gc.getForeground();
				gc.setForeground(GUIHelper.COLOR_WIDGET_BORDER);
File
NatCombo.java
Developer's decision
Version 1
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
			@Override
			public void mouseDown(MouseEvent e) {
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
				if (!hideByFocusLost) {
					showDropdownControl();
				} else {
					hideByFocusLost = false;
				}
			}

=======
				if (dropdownShell != null && !dropdownShell.isDisposed()) {
					if (dropdownShell.isVisible()) {
						text.forceFocus();
						hideDropdownControl();
					}
					else {
						showDropdownControl();
					}
				}
			}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		});
	}
	
Solution content
			@Override
			public void mouseDown(MouseEvent e) {
				if (dropdownShell != null && !dropdownShell.isDisposed()) {
					if (dropdownShell.isVisible()) {
						text.forceFocus();
						hideDropdownControl();
					}
					else {
						showDropdownControl();
					}
				}
			}
		});
	}
	
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
If statement
Chunk
Conflicting content
		dropdownShell = new Shell(getShell(), SWT.MODELESS);
		dropdownShell.setLayout(new FillLayout());

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		int dropdownListStyle = style | SWT.V_SCROLL | SWT.FULL_SELECTION
				| CellStyleUtil.getHorizontalAlignmentSWT(cellStyle, SWT.NONE);
=======
		int dropdownListStyle = style | SWT.V_SCROLL | HorizontalAlignmentEnum.getSWTStyle(cellStyle) | SWT.FULL_SELECTION;
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java

		dropdownTable = new Table(dropdownShell, dropdownListStyle);
		dropdownTable.setBackground(cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR));
Solution content
		dropdownShell = new Shell(getShell(), SWT.MODELESS);
		dropdownShell.setLayout(new FillLayout());

		int dropdownListStyle = style | SWT.V_SCROLL | SWT.FULL_SELECTION
				| CellStyleUtil.getHorizontalAlignmentSWT(cellStyle, SWT.NONE);

		dropdownTable = new Table(dropdownShell, dropdownListStyle);
		dropdownTable.setBackground(cellStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR));
File
NatCombo.java
Developer's decision
Version 1
Kind of conflict
Attribute
Method invocation
Variable
Chunk
Conflicting content
				}
			}
		});
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		
		dropdownTable.addFocusListener(new FocusAdapter() {
			
			@Override
			public void focusLost(FocusEvent e) {
				hideDropdownControl();
				hideByFocusLost = true;
				if (freeEdit) {
					text.forceFocus();
				}
			}
		});
=======

		dropdownTable.addFocusListener(new FocusListenerWrapper());
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
		
		if (this.itemList != null) {
			setItems(this.itemList.toArray(new String[] {}));
Solution content
				}
			}
		});

		dropdownTable.addFocusListener(new FocusListenerWrapper());
		
		if (this.itemList != null) {
			setItems(this.itemList.toArray(new String[] {}));
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Chunk
Conflicting content
			
			Point textPosition = text.toDisplay(text.getLocation());
			
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
			dropdownShell.setBounds(
					textPosition.x, 
					textPosition.y + text.getBounds().height, 
=======
			//by default the dropdown shell will be created below the cell in the table
			int dropdownShellStartingY = textPosition.y + text.getBounds().height;
			int shellBottomY = textPosition.y + text.getBounds().height + listHeight;
			//if the bottom of the drowdown is below the display, render it above the cell
			if (shellBottomY > Display.getCurrent().getBounds().height) {
				dropdownShellStartingY = textPosition.y - listHeight;
			}
			
			dropdownShell.setBounds(
					textPosition.x, 
					dropdownShellStartingY, 
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
					listWidth, 
					listHeight);
		}
Solution content
			
			Point textPosition = text.toDisplay(text.getLocation());
			
			//by default the dropdown shell will be created below the cell in the table
			int dropdownShellStartingY = textPosition.y + text.getBounds().height;
			int shellBottomY = textPosition.y + text.getBounds().height + listHeight;
			//if the bottom of the drowdown is below the display, render it above the cell
			if (shellBottomY > Display.getCurrent().getBounds().height) {
				dropdownShellStartingY = textPosition.y - listHeight;
			}
			
			dropdownShell.setBounds(
					textPosition.x, 
					dropdownShellStartingY, 
					listWidth, 
					listHeight);
		}
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Comment
If statement
Method invocation
Variable
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
	public void removeKeyListener(KeyListener listener) {
		this.text.removeKeyListener(listener);
		this.dropdownTable.removeKeyListener(listener);
	}

	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	public void addTraverseListener(TraverseListener listener) {
		this.text.addTraverseListener(listener);
		this.dropdownTable.addTraverseListener(listener);
Solution content
	}

	@Override
	public void removeKeyListener(KeyListener listener) {
		this.text.removeKeyListener(listener);
		this.dropdownTable.removeKeyListener(listener);
	}

	@Override
	public void addTraverseListener(TraverseListener listener) {
		this.text.addTraverseListener(listener);
		this.dropdownTable.addTraverseListener(listener);
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
	}

	@Override
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
	public void removeTraverseListener(TraverseListener listener) {
		this.text.removeTraverseListener(listener);
		this.dropdownTable.removeTraverseListener(listener);
	}

	@Override
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	public void addMouseListener(MouseListener listener) {
		//only add the mouse listener to the dropdown, as clicking in the text control
		//should not trigger anything else than it is handled by the text control itself.
Solution content
	}

	@Override
	public void removeTraverseListener(TraverseListener listener) {
		this.text.removeTraverseListener(listener);
		this.dropdownTable.removeTraverseListener(listener);
	}

	@Override
	public void addMouseListener(MouseListener listener) {
		//only add the mouse listener to the dropdown, as clicking in the text control
		//should not trigger anything else than it is handled by the text control itself.
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
		//should not trigger anything else than it is handled by the text control itself.
		this.dropdownTable.addMouseListener(listener);
	}
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======

	@Override
	public void removeMouseListener(MouseListener listener) {
		this.dropdownTable.removeMouseListener(listener);
	}
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	
	@Override
	public void notifyListeners(int eventType, Event event) {
Solution content
		//should not trigger anything else than it is handled by the text control itself.
		this.dropdownTable.addMouseListener(listener);
	}

	@Override
	public void removeMouseListener(MouseListener listener) {
		this.dropdownTable.removeMouseListener(listener);
	}
	
	@Override
	public void notifyListeners(int eventType, Event event) {
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
		this.dropdownTable.addSelectionListener(listener);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
	public void removeSelectionListener(SelectionListener listener) {
		this.dropdownTable.removeSelectionListener(listener);
	}
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	public void addShellListener(ShellListener listener) {
		this.dropdownShell.addShellListener(listener);
	}
Solution content
		this.dropdownTable.addSelectionListener(listener);
	}
	
	public void removeSelectionListener(SelectionListener listener) {
		this.dropdownTable.removeSelectionListener(listener);
	}
	
	public void addShellListener(ShellListener listener) {
		this.dropdownShell.addShellListener(listener);
	}
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Method declaration
Chunk
Conflicting content
		this.dropdownShell.addShellListener(listener);
	}
	
<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
	public void removeShellListener(ShellListener listener) {
		this.dropdownShell.removeShellListener(listener);
	}
	
	@Override
	public boolean isFocusControl() {
		return hasFocus;
	}
	
	@Override
	public boolean forceFocus() {
		return text.forceFocus();
	}
	
	@Override
	public void addFocusListener(FocusListener listener) {
		this.focusListener.add(listener);
	}
	
	@Override
	public void removeFocusListener(final FocusListener listener) {
		//The FocusListenerWrapper is executing the focusLost event
		//in a separate thread with 100ms delay to ensure that the NatComboe
		//lost focus. This is necessary because the NatCombo is a combination
		//of a text field and a table as dropdown which do not share the
		//same focus by default.
		//To avoid concurrent modifications, in case the focus lost runnable
		//is active, the removal of the focus listener is processed in a
		//new thread after the focus lost runnable is done.
		if (focusLostRunnableActive) {
			try {
				new Thread() {
					@Override
					public void run() {
						focusListener.remove(listener);
					};
				}.join();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		else {
			focusListener.remove(listener);
		}
	}
	
>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
	/**
	 * Transforms the selection in the Table control dropdown into a String[].
	 * Doing this is necessary to provide a SWT List like interface regarding 
Solution content
		this.dropdownShell.addShellListener(listener);
	}
	
	public void removeShellListener(ShellListener listener) {
		this.dropdownShell.removeShellListener(listener);
	}
	
	@Override
	public boolean isFocusControl() {
		return hasFocus;
	}
	
	@Override
	public boolean forceFocus() {
		return text.forceFocus();
	}
	
	@Override
	public void addFocusListener(FocusListener listener) {
		this.focusListener.add(listener);
	}
	
	@Override
	public void removeFocusListener(final FocusListener listener) {
		//The FocusListenerWrapper is executing the focusLost event
		//in a separate thread with 100ms delay to ensure that the NatComboe
		//lost focus. This is necessary because the NatCombo is a combination
		//of a text field and a table as dropdown which do not share the
		//same focus by default.
		//To avoid concurrent modifications, in case the focus lost runnable
		//is active, the removal of the focus listener is processed in a
		//new thread after the focus lost runnable is done.
		if (focusLostRunnableActive) {
			try {
				new Thread() {
					@Override
					public void run() {
						focusListener.remove(listener);
					};
				}.join();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		else {
			focusListener.remove(listener);
		}
	}
	
	/**
	 * Transforms the selection in the Table control dropdown into a String[].
	 * Doing this is necessary to provide a SWT List like interface regarding 
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
						for (FocusListener f : focusListener) {
		}
	}

<<<<<<< HEAD:de.walware.ecommons.inatable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
=======
	
	/**
	 * FocusListener that is used to ensure that the Text control and the dropdown
	 * table control are sharing the same focus. If either of both controls looses
	 * focus, the local focus flag is set to false and a delayed background thread 
	 * for focus lost is started. If the other control gains focus, the local focus
	 * flag is set to true which skips the execution of the delayed background thread.
	 * This means the NatCombo hasn't lost focus.
	 *  
	 * @author Dirk Fauth
	 *
	 */
	class FocusListenerWrapper implements FocusListener {
		
		@Override
		public void focusLost(final FocusEvent e) {
			hasFocus = false;
			Display.getCurrent().timerExec(100, new Runnable() {
				@Override
				public void run() {
					if (!hasFocus) {
						focusLostRunnableActive = true;
							f.focusLost(e);
						}
						focusLostRunnableActive = false;
					}
				}
			});
		}
		
		@Override
		public void focusGained(FocusEvent e) {
			hasFocus = true;
			for (FocusListener f : focusListener) {
				f.focusGained(e);
			}
		}
	}

>>>>>>> 39bc4895996d0f2a45e36d65784d9285278d4eb6:org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/widget/NatCombo.java
}
Solution content
		}
	}

	
	/**
	 * FocusListener that is used to ensure that the Text control and the dropdown
	 * table control are sharing the same focus. If either of both controls looses
	 * focus, the local focus flag is set to false and a delayed background thread 
	 * for focus lost is started. If the other control gains focus, the local focus
	 * flag is set to true which skips the execution of the delayed background thread.
	 * This means the NatCombo hasn't lost focus.
	 *  
	 * @author Dirk Fauth
	 *
	 */
	class FocusListenerWrapper implements FocusListener {
		
		@Override
		public void focusLost(final FocusEvent e) {
			hasFocus = false;
			Display.getCurrent().timerExec(100, new Runnable() {
				@Override
				public void run() {
					if (!hasFocus) {
						focusLostRunnableActive = true;
						for (FocusListener f : focusListener) {
							f.focusLost(e);
						}
						focusLostRunnableActive = false;
					}
				}
			});
		}
		
		@Override
		public void focusGained(FocusEvent e) {
			hasFocus = true;
			for (FocusListener f : focusListener) {
				f.focusGained(e);
			}
		}
	}

}
File
NatCombo.java
Developer's decision
Version 2
Kind of conflict
Class declaration
Comment