blob: 23802375f5ef661fef8cd59d3cd513aa211cdf83 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Edwin Park 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:
* Edwin Park - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.layer;
import java.util.Collection;
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.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.coordinate.Range;
import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
import org.eclipse.nebula.widgets.nattable.layer.cell.InvertedLayerCell;
import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
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;
import org.eclipse.swt.graphics.Rectangle;
public class InvertedLayer implements IUniqueIndexLayer {
private IUniqueIndexLayer underlyingLayer;
public InvertedLayer(IUniqueIndexLayer underlyingLayer) {
this.underlyingLayer = underlyingLayer;
}
// ILayerListener
@Override
public void handleLayerEvent(ILayerEvent event) {
this.underlyingLayer.handleLayerEvent(event);
}
// IPersistable
@Override
public void saveState(String prefix, Properties properties) {
this.underlyingLayer.saveState(prefix, properties);
}
@Override
public void loadState(String prefix, Properties properties) {
this.underlyingLayer.loadState(prefix, properties);
}
// Dispose
@Override
public void dispose() {
this.underlyingLayer.dispose();
}
// Persistence
@Override
public void registerPersistable(IPersistable persistable) {
this.underlyingLayer.registerPersistable(persistable);
}
@Override
public void unregisterPersistable(IPersistable persistable) {
this.underlyingLayer.unregisterPersistable(persistable);
}
// Configuration
@Override
public void configure(IConfigRegistry configRegistry, UiBindingRegistry uiBindingRegistry) {
this.underlyingLayer.configure(configRegistry, uiBindingRegistry);
}
// Region
@Override
public LabelStack getRegionLabelsByXY(int x, int y) {
return this.underlyingLayer.getRegionLabelsByXY(y, x);
}
// Commands
@Override
public boolean doCommand(ILayerCommand command) {
return this.underlyingLayer.doCommand(command);
}
@Override
public void registerCommandHandler(ILayerCommandHandler<?> commandHandler) {
this.underlyingLayer.registerCommandHandler(commandHandler);
}
@Override
public void unregisterCommandHandler(
Class<? extends ILayerCommand> commandClass) {
this.underlyingLayer.unregisterCommandHandler(commandClass);
}
// Events
@Override
public void fireLayerEvent(ILayerEvent event) {
this.underlyingLayer.fireLayerEvent(event);
}
@Override
public void addLayerListener(ILayerListener listener) {
this.underlyingLayer.addLayerListener(listener);
}
@Override
public void removeLayerListener(ILayerListener listener) {
this.underlyingLayer.removeLayerListener(listener);
}
@Override
public boolean hasLayerListener(
Class<? extends ILayerListener> layerListenerClass) {
return this.underlyingLayer.hasLayerListener(layerListenerClass);
}
@Override
public ILayerPainter getLayerPainter() {
return this.underlyingLayer.getLayerPainter();
}
// Client area
@Override
public IClientAreaProvider getClientAreaProvider() {
return this.underlyingLayer.getClientAreaProvider();
}
@Override
public void setClientAreaProvider(
final IClientAreaProvider clientAreaProvider) {
this.underlyingLayer.setClientAreaProvider(new IClientAreaProvider() {
@Override
public Rectangle getClientArea() {
return InvertUtil.invertRectangle(clientAreaProvider
.getClientArea());
}
});
}
// Horizontal features
// Columns
@Override
public int getColumnCount() {
return this.underlyingLayer.getRowCount();
}
@Override
public int getPreferredColumnCount() {
return this.underlyingLayer.getPreferredRowCount();
}
@Override
public int getColumnIndexByPosition(int columnPosition) {
return this.underlyingLayer.getRowIndexByPosition(columnPosition);
}
@Override
public int localToUnderlyingColumnPosition(int localColumnPosition) {
return this.underlyingLayer
.localToUnderlyingRowPosition(localColumnPosition);
}
@Override
public int underlyingToLocalColumnPosition(ILayer sourceUnderlyingLayer,
int underlyingColumnPosition) {
return this.underlyingLayer.underlyingToLocalRowPosition(
sourceUnderlyingLayer, underlyingColumnPosition);
}
@Override
public Collection<Range> underlyingToLocalColumnPositions(
ILayer sourceUnderlyingLayer,
Collection<Range> underlyingColumnPositionRanges) {
return this.underlyingLayer.underlyingToLocalRowPositions(
sourceUnderlyingLayer, underlyingColumnPositionRanges);
}
// Width
@Override
public int getWidth() {
return this.underlyingLayer.getHeight();
}
@Override
public int getPreferredWidth() {
return this.underlyingLayer.getPreferredHeight();
}
@Override
public int getColumnWidthByPosition(int columnPosition) {
return this.underlyingLayer.getRowHeightByPosition(columnPosition);
}
// Column resize
@Override
public boolean isColumnPositionResizable(int columnPosition) {
return this.underlyingLayer.isRowPositionResizable(columnPosition);
}
// X
@Override
public int getColumnPositionByX(int x) {
return this.underlyingLayer.getRowPositionByY(x);
}
@Override
public int getStartXOfColumnPosition(int columnPosition) {
return this.underlyingLayer.getStartYOfRowPosition(columnPosition);
}
// Underlying
@Override
public Collection<ILayer> getUnderlyingLayersByColumnPosition(
int columnPosition) {
return this.underlyingLayer.getUnderlyingLayersByRowPosition(columnPosition);
}
// Unique index
@Override
public int getColumnPositionByIndex(int columnIndex) {
return this.underlyingLayer.getRowPositionByIndex(columnIndex);
}
// Vertical features
// Rows
@Override
public int getRowCount() {
return this.underlyingLayer.getColumnCount();
}
@Override
public int getPreferredRowCount() {
return this.underlyingLayer.getPreferredColumnCount();
}
@Override
public int getRowIndexByPosition(int rowPosition) {
return this.underlyingLayer.getColumnIndexByPosition(rowPosition);
}
@Override
public int localToUnderlyingRowPosition(int localRowPosition) {
return this.underlyingLayer
.localToUnderlyingColumnPosition(localRowPosition);
}
@Override
public int underlyingToLocalRowPosition(ILayer sourceUnderlyingLayer,
int underlyingRowPosition) {
return this.underlyingLayer.underlyingToLocalColumnPosition(
sourceUnderlyingLayer, underlyingRowPosition);
}
@Override
public Collection<Range> underlyingToLocalRowPositions(
ILayer sourceUnderlyingLayer,
Collection<Range> underlyingRowPositionRanges) {
return this.underlyingLayer.underlyingToLocalColumnPositions(
sourceUnderlyingLayer, underlyingRowPositionRanges);
}
// Height
@Override
public int getHeight() {
return this.underlyingLayer.getWidth();
}
@Override
public int getPreferredHeight() {
return this.underlyingLayer.getPreferredWidth();
}
@Override
public int getRowHeightByPosition(int rowPosition) {
return this.underlyingLayer.getColumnWidthByPosition(rowPosition);
}
// Row resize
@Override
public boolean isRowPositionResizable(int rowPosition) {
return this.underlyingLayer.isColumnPositionResizable(rowPosition);
}
// Y
@Override
public int getRowPositionByY(int y) {
return this.underlyingLayer.getColumnPositionByX(y);
}
@Override
public int getStartYOfRowPosition(int rowPosition) {
return this.underlyingLayer.getStartXOfColumnPosition(rowPosition);
}
// Underlying
@Override
public Collection<ILayer> getUnderlyingLayersByRowPosition(int rowPosition) {
return this.underlyingLayer.getUnderlyingLayersByColumnPosition(rowPosition);
}
// Unique index
@Override
public int getRowPositionByIndex(int rowIndex) {
return this.underlyingLayer.getColumnPositionByIndex(rowIndex);
}
// Cell features
@Override
public ILayerCell getCellByPosition(int columnPosition, int rowPosition) {
ILayerCell cell = this.underlyingLayer.getCellByPosition(rowPosition,
columnPosition);
if (cell != null)
return new InvertedLayerCell(cell);
else
return null;
// return underlyingLayer.getCellByPosition(rowPosition,
// columnPosition);
}
@Override
public Rectangle getBoundsByPosition(int columnPosition, int rowPosition) {
return InvertUtil.invertRectangle(this.underlyingLayer.getBoundsByPosition(
rowPosition, columnPosition));
}
@Override
public String getDisplayModeByPosition(int columnPosition, int rowPosition) {
return this.underlyingLayer.getDisplayModeByPosition(rowPosition,
columnPosition);
}
@Override
public LabelStack getConfigLabelsByPosition(int columnPosition,
int rowPosition) {
return this.underlyingLayer.getConfigLabelsByPosition(rowPosition,
columnPosition);
}
@Override
public Object getDataValueByPosition(int columnPosition, int rowPosition) {
return this.underlyingLayer.getDataValueByPosition(rowPosition,
columnPosition);
}
@Override
public ILayer getUnderlyingLayerByPosition(int columnPosition,
int rowPosition) {
return this.underlyingLayer.getUnderlyingLayerByPosition(rowPosition,
columnPosition);
}
@Override
public ICellPainter getCellPainter(int columnPosition, int rowPosition,
ILayerCell cell, IConfigRegistry configRegistry) {
return this.underlyingLayer.getCellPainter(rowPosition, columnPosition,
cell, configRegistry);
}
}