/*******************************************************************************
* Copyright (c) 2012, 2014 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
* Roman Flueckiger <roman.flueckiger@mac.com> - Bug 451486
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.columnChooser.command;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.nebula.widgets.nattable.columnChooser.ColumnChooser;
import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupHeaderLayer;
import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel;
import org.eclipse.nebula.widgets.nattable.hideshow.ColumnHideShowLayer;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
public class DisplayColumnChooserCommandHandler extends AbstractLayerCommandHandler<DisplayColumnChooserCommand> {
private final ColumnHideShowLayer columnHideShowLayer;
private final ColumnGroupHeaderLayer columnGroupHeaderLayer;
private final ColumnGroupModel columnGroupModel;
private final SelectionLayer selectionLayer;
private final DataLayer columnHeaderDataLayer;
private final ColumnHeaderLayer columnHeaderLayer;
private final boolean sortAvailableColumns;
private final boolean preventHidingAllColumns;
private IDialogSettings dialogSettings;
private List<Integer> nonModifiableColumns = new ArrayList<Integer>();
public DisplayColumnChooserCommandHandler(SelectionLayer selectionLayer,
ColumnHideShowLayer columnHideShowLayer,
ColumnHeaderLayer columnHeaderLayer,
DataLayer columnHeaderDataLayer,
ColumnGroupHeaderLayer cgHeader,
ColumnGroupModel columnGroupModel) {
this(selectionLayer, columnHideShowLayer, columnHeaderLayer, columnHeaderDataLayer, cgHeader, columnGroupModel, false, false);
}
public DisplayColumnChooserCommandHandler(SelectionLayer selectionLayer,
ColumnHideShowLayer columnHideShowLayer,
ColumnHeaderLayer columnHeaderLayer,
DataLayer columnHeaderDataLayer, ColumnGroupHeaderLayer cgHeader,
ColumnGroupModel columnGroupModel, boolean sortAvailableColumns) {
this(selectionLayer, columnHideShowLayer, columnHeaderLayer, columnHeaderDataLayer, cgHeader, columnGroupModel, sortAvailableColumns, false);
}
public DisplayColumnChooserCommandHandler(SelectionLayer selectionLayer,
ColumnHideShowLayer columnHideShowLayer,
ColumnHeaderLayer columnHeaderLayer,
DataLayer columnHeaderDataLayer,
ColumnGroupHeaderLayer cgHeader,
ColumnGroupModel columnGroupModel,
boolean sortAvalableColumns,
boolean preventHidingAllColumns) {
this.selectionLayer = selectionLayer;
this.columnHideShowLayer = columnHideShowLayer;
this.columnHeaderLayer = columnHeaderLayer;
this.columnHeaderDataLayer = columnHeaderDataLayer;
this.columnGroupHeaderLayer = cgHeader;
this.columnGroupModel = columnGroupModel;
this.sortAvailableColumns = sortAvalableColumns;
this.preventHidingAllColumns = preventHidingAllColumns;
}
@Override
public boolean doCommand(DisplayColumnChooserCommand command) {
ColumnChooser columnChooser = new ColumnChooser(command.getNatTable()
.getShell(), this.selectionLayer, this.columnHideShowLayer,
this.columnHeaderLayer, this.columnHeaderDataLayer,
this.columnGroupHeaderLayer, this.columnGroupModel,
this.sortAvailableColumns, this.preventHidingAllColumns);
columnChooser.setDialogSettings(this.dialogSettings);
columnChooser.addNonModifiableColumn(this.nonModifiableColumns.toArray(new Integer[] {}));
columnChooser.openDialog();
return true;
}
public void setDialogSettings(IDialogSettings dialogSettings) {
this.dialogSettings = dialogSettings;
}
public void addNonModifiableColumn(Integer... columnIndexes) {
for (Integer column : columnIndexes) {
this.nonModifiableColumns.add(column);
}
}
public void removeNonModifiableColumn(Integer... columnIndexes) {
for (Integer column : columnIndexes) {
this.nonModifiableColumns.remove(column);
}
}
@Override
public Class<DisplayColumnChooserCommand> getCommandClass() {
return DisplayColumnChooserCommand.class;
}
}