/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.execute; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.StyledCellLabelProvider; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.custom.TreeEditor; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Button; /** * {@link CellLabelProvider} class providing a Check box for each row. * * @author Goekhan Guerkan */ public class CheckboxLabelProvider extends StyledCellLabelProvider { private static final String COLOR = "COLOR"; private Updatable updater; private List<Button> btnList; private boolean isSet; public CheckboxLabelProvider() { btnList = new ArrayList<Button>(); isSet = false; } @Override public void update(ViewerCell cell) { setRowColor(cell); updater.updateCheckBoxColumn(cell); } void clearButtonList() { for (Button btn : btnList) { if (btn.getData(TableBehaviour.EDITOR) instanceof TableEditor) { TableEditor editor = (TableEditor) btn.getData(TableBehaviour.EDITOR); editor.dispose(); } else { TreeEditor editor = (TreeEditor) btn.getData(TableBehaviour.EDITOR); editor.dispose(); } btn.dispose(); } btnList.clear(); } /** * Sets the color for the current row. * * @param cell the row to set the color * @param isSet flag value to switch the color. */ private void setRowColor(ViewerCell cell) { Color color; if (!isSet) { if (cell.getViewerRow().getItem().getData(COLOR) == null) { Color firstrow = ColorPalette.getInstance().getFirstRowColor(); cell.getViewerRow().setBackground(0, firstrow); cell.getViewerRow().setBackground(1, firstrow); cell.getViewerRow().setBackground(2, firstrow); color = firstrow; cell.getViewerRow().getItem().setData(COLOR, color); } else { Color c = (Color) cell.getViewerRow().getItem().getData(COLOR); cell.getViewerRow().setBackground(0, c); cell.getViewerRow().setBackground(1, c); cell.getViewerRow().setBackground(2, c); color = (Color) cell.getViewerRow().getItem().getData(COLOR); } isSet = true; } else { if (cell.getViewerRow().getItem().getData(COLOR) == null) { Color secondRow = ColorPalette.getInstance().getSecondRowColor(); cell.getViewerRow().setBackground(0, secondRow); cell.getViewerRow().setBackground(1, secondRow); cell.getViewerRow().setBackground(2, secondRow); color = secondRow; cell.getViewerRow().getItem().setData(COLOR, color); } else { Color c = (Color) cell.getViewerRow().getItem().getData(COLOR); cell.getViewerRow().setBackground(0, c); cell.getViewerRow().setBackground(1, c); cell.getViewerRow().setBackground(2, c); color = (Color) cell.getViewerRow().getItem().getData(COLOR); } isSet = false; } updater.setComboColor(color); } public void setUpdater(Updatable updater) { this.updater = updater; } public List<Button> getBtnList() { return btnList; } }