Skip to content

Commit

Permalink
[JBIDE-20095] impl'ed validation for parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
adietish committed Aug 11, 2015
1 parent 45a6aeb commit c3dce5a
Show file tree
Hide file tree
Showing 5 changed files with 289 additions and 64 deletions.
Expand Up @@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.openshift.internal.common.ui.utils;

import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
Expand Down Expand Up @@ -66,6 +67,10 @@ public <E>ColumnBuilder<E> column(IColumnLabelProvider<E> columnLabelProvider) {
return new ColumnBuilder<E>().labelProvider(columnLabelProvider);
}

public <E>ColumnBuilder<E> column(CellLabelProvider cellLabelProvider) {
return new ColumnBuilder<E>().labelProvider(cellLabelProvider);
}

public TableViewer buildViewer() {
return viewer;
}
Expand All @@ -74,6 +79,7 @@ public class ColumnBuilder<E> {

private int alignement;
private IColumnLabelProvider<E> columnLabelProvider;
private CellLabelProvider cellLabelProvider;
private ICellToolTipProvider<E> cellToolTipProvider;
private String name;
private int weight;
Expand All @@ -87,6 +93,11 @@ public ColumnBuilder<E> labelProvider(IColumnLabelProvider<E> labelProvider) {
return this;
}

public ColumnBuilder<E> labelProvider(CellLabelProvider labelProvider) {
this.cellLabelProvider = labelProvider;
return this;
}

public ColumnBuilder<E> cellToolTipProvider(ICellToolTipProvider<E> cellToolTipProvider) {
this.cellToolTipProvider = cellToolTipProvider;
return this;
Expand Down Expand Up @@ -118,36 +129,53 @@ public TableViewerBuilder buildColumn() {
}
TableViewerColumn column = new TableViewerColumn(viewer, alignement);
column.getColumn().setText(name);
column.setLabelProvider(new CellLabelProvider() {
setLabelAndTooltipProviders(columnLabelProvider, cellLabelProvider, cellToolTipProvider, column);
tableLayout.setColumnData(column.getColumn(), new ColumnWeightData(weight, minWidth, true));
return TableViewerBuilder.this;
}

@Override
public void update(ViewerCell cell) {
@SuppressWarnings("unchecked")
String cellValue = columnLabelProvider.getValue((E) cell.getElement());
cell.setText(cellValue);
}

@SuppressWarnings("unchecked")
@Override
public String getToolTipText(Object object) {
if(cellToolTipProvider != null) {
return cellToolTipProvider.getToolTipText((E) object);
private void setLabelAndTooltipProviders(
final IColumnLabelProvider<E> labelProvider, final CellLabelProvider cellLabelProvider, final ICellToolTipProvider<E> tooltipProvider, TableViewerColumn column) {
Assert.isLegal(labelProvider != null
|| cellLabelProvider != null
, "set either IColumnLabelProvider or CellLabelProvider");
Assert.isLegal((cellLabelProvider != null && tooltipProvider == null)
|| cellLabelProvider == null
, "cannot use ITooltipProvider with with CellLabelProvider");
if (labelProvider != null) {
column.setLabelProvider(new CellLabelProvider() {

@Override
public void update(ViewerCell cell) {
if (labelProvider != null) {
String cellValue = labelProvider.getValue((E) cell.getElement());
cell.setText(cellValue);
}
}
return super.getToolTipText(object);
};

@SuppressWarnings("unchecked")
@Override
public int getToolTipDisplayDelayTime(Object element) {
if(cellToolTipProvider != null) {
return cellToolTipProvider.getToolTipDisplayDelayTime((E) element);

@SuppressWarnings("unchecked")
@Override
public String getToolTipText(Object object) {
if (tooltipProvider != null) {
return tooltipProvider.getToolTipText((E) object);
} else {
return super.getToolTipText(object);
}
};

@SuppressWarnings("unchecked")
@Override
public int getToolTipDisplayDelayTime(Object element) {
if (tooltipProvider != null) {
return tooltipProvider.getToolTipDisplayDelayTime((E) element);
} else {
return super.getToolTipDisplayDelayTime(element);
}
}
return super.getToolTipDisplayDelayTime(element);
}

});
tableLayout.setColumnData(column.getColumn(), new ColumnWeightData(weight, minWidth, true));
return TableViewerBuilder.this;
});
} else {
column.setLabelProvider(cellLabelProvider);
}
}
}

Expand Down
@@ -0,0 +1,88 @@
/*******************************************************************************
* Copyright (c) 2015 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.openshift.internal.common.ui.utils;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

/**
* A manager that controls image based decorations for table viewer cells.
*
* @author Andre Dietisheim
*/
public class TableViewerCellDecorationManager {

private Image image;
private Table table;

/**
* @param table
* the table to handle cell decorations for
* @param image
* the image to show as decoration
*/
public TableViewerCellDecorationManager(Table table, Image image) {
this.image = image;
this.table = table;
}

private Map<TableItem, TableEditor> decorationByItem = new HashMap<TableItem, TableEditor>();

public void show(ViewerCell cell) {
Control decoration = createDecoration(image, table);
TableEditor editor = decorationByItem.get((TableItem) cell.getItem());
if (editor == null) {
editor = createTableEditor(image, table);
decorationByItem.put((TableItem) cell.getItem(), editor);
}
editor.setEditor(decoration, (TableItem) cell.getItem(), cell.getColumnIndex());
}

public void hide(ViewerCell cell) {
TableEditor editor = decorationByItem.get((TableItem) cell.getItem());
if (editor != null) {
Control decoration = editor.getEditor();
if (decoration != null) {
decoration.dispose();
}
editor.setEditor(null);
}
}

private Control createDecoration(Image image, Table table) {
Label validationDecoration = new Label(table, SWT.None);
validationDecoration.setImage(image);
return validationDecoration;
}

private TableEditor createTableEditor(Image image, Table table) {
TableEditor tableEditor = new TableEditor(table);
tableEditor.grabHorizontal = false;
tableEditor.grabVertical = false;
Rectangle bounds = image.getBounds();
tableEditor.minimumHeight = bounds.height;
tableEditor.minimumWidth = bounds.width;
tableEditor.verticalAlignment = SWT.BEGINNING;
tableEditor.horizontalAlignment = SWT.LEFT;

return tableEditor;
}
}
Expand Up @@ -18,7 +18,7 @@
* A column provider for template parameters
* @author jeff.cantrill
*/
public class TemplateParameterColumnLabelProvider implements IColumnLabelProvider<IParameter>{
public class TemplateParameterValueColumnLabelProvider implements IColumnLabelProvider<IParameter>{

protected static final String GENERATED = "(generated)";

Expand Down

0 comments on commit c3dce5a

Please sign in to comment.