Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » problem with the height of TableViewerColumn and ComboBoxCellEditor
problem with the height of TableViewerColumn and ComboBoxCellEditor [message #126400] Mon, 30 March 2009 13:57 Go to next message
rollo is currently offline rolloFriend
Messages: 117
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030207050105040003070708
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

i have a little problem with the height of a TableViewerColumn when I'm
using a ComboBoxCellEditor.

When I doubleclick a cell, the value of the cell is not correctly
displayed. Look at the attachment.

The cell seems to be too small, but I can't set another size.

here is a snippet to reproduce:

public class Test implements IEntryPoint {

private TableViewer tableViewer;
private Table table;
private List<String> list;

public int createUI() {
Display display = PlatformUI.createDisplay();
Shell container = new Shell( display, SWT.SHELL_TRIM );
container.setSize( 500, 500 );
container.setLayout( new GridLayout() );

tableViewer = new TableViewer( container, SWT.NONE );
tableViewer.setUseHashlookup( true );
tableViewer.setContentProvider( new ContentProvider() );
tableViewer.setLabelProvider( new LabelProvider() );

table = tableViewer.getTable();
table.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
table.setHeaderVisible( true );
table.setLinesVisible( true );

TableViewerColumn keyColumn = new TableViewerColumn( tableViewer,
SWT.NONE );
keyColumn.setLabelProvider( new LabelProvider() );
keyColumn.setEditingSupport( new CellEditingSupport( tableViewer ) );
TableColumn column = keyColumn.getColumn();
column.setText( "Key" );
column.setWidth( 200 );

list = new ArrayList<String>();
list.add( "key3" );
list.add( "key2" );
list.add( "key1" );

ColumnViewerEditorActivationStrategy activationStrategy = new
ColumnViewerEditorActivationStrategy( tableViewer ) {
protected boolean isEditorActivationEvent(
ColumnViewerEditorActivationEvent event ) {
return event.eventType ==
ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTI ON;
}
};

TableViewerEditor.create( tableViewer, activationStrategy,
ColumnViewerEditor.TABBING_HORIZONTAL |
ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR );

tableViewer.setInput( list );

container.open();

while ( !container.isDisposed() ) {
if ( !display.readAndDispatch() ) {
display.sleep();
}
}
return 0;
}

private static final class ContentProvider implements
IStructuredContentProvider {
private Object[] elements;
public Object[] getElements( Object inputElement ) {
return elements;
}
public void inputChanged( Viewer viewer, Object oldInput, Object
newInput ) {
if ( newInput == null ) {
elements = new Object[0];
} else {
List<String> list = (List<String>) newInput;
elements = list.toArray();
}
}
public void dispose() {}
}

private static final class LabelProvider extends CellLabelProvider {
public void update( final ViewerCell cell ) {
cell.setText( (String) cell.getElement() );
}
}

private final class CellEditingSupport extends EditingSupport {
private final CellEditor cellEditor;
private String[] keys = { "key1", "key2", "key3" };
public CellEditingSupport( TableViewer viewer ) {
super( viewer );
cellEditor = new ComboBoxCellEditor( viewer.getTable(), keys );
}
@Override
protected boolean canEdit( Object element ) {
return true;
}
@Override
protected CellEditor getCellEditor( Object element ) {
return cellEditor;
}
@Override
protected Object getValue( Object element ) {
for ( int i = 0; i < keys.length; i++ ) {
if ( element.equals( keys[i] ) )
return i;
}
return null;
}
@Override
protected void setValue( Object element, Object value ) {
element = keys[((Integer) value).intValue()];
getViewer().update( element, null );
}
}
}

Roland

--------------030207050105040003070708
Content-Type: image/png;
name="tableviewer.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="tableviewer.png"

iVBORw0KGgoAAAANSUhEUgAAATAAAAC2CAMAAABpuyGwAAAAAXNSR0IArs4c 6QAAAARnQU1B
AACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgA ABdwnLpRPAAA
AwBQTFRFAAAAAABIAABSAAB0AAB+RQAASAAATAAAcQAAdAAARQBISABIRQB0 SAB0cQBIdABI
cQB0dAB0RUUAcXF0dHR0AEWcAEicAE2cAHG/AHS/MWrFMWrPMWrZXmrFO6kp AIDABoTBEojE
HI7HKJPKMYfZM5rNPp/QMYfjMaLsTJO7dKa/RZffSJzfSaTSVKrVX6/XXrv2 cbn/dL//l0UA
kU0AnEgApHYAuXEAv3QAl0VInEhIkU1+nEh07x0vhWrFhWrPr5NSsqZ+2ZdI 35xI+Ll0/790
gICAhYeMkbC7kbC/rKiZsrCcp6aqpLSvr7SvpLS7pLS/r7S7r7S/srSvsrS7 srS/hYfFpofF
pofZnN+/hdP/l9n/nN//udn/v9//ufjfv//fpun2pun/ufj/v///xaLF47vP +Nmc/9+c+Nm/
/9+/+Pi///+/wMDA0NDQxdPs3N/kxenjxf/sxf/2xf//0uTz1OXz1eb02Oj0 2ej12+r13er2
3+z22fj/3////9PZ+Pjf///f4ez34u735O744//s5vD44//24///6PH56fL5 6vL67fT6/+nj
///s8PD48Pb78vf88/j89Pj89vr89vr9///2+Pj/+Pr9+vz+//39/P3+/f7+ /v7/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAQVjrmQAAABh0RVh0U29mdHdhcmUAUGFpbnQu TkVUIHYzLjM2
qefiJQAACL9JREFUeF7tnfdj20QUx9VBacqeBTfgDJLQlkK6aBlhpNQFEzYh kJTVQQMZFCiU
3YTV0gJhC0ruf+W9O0m+k2xLZ+li6fS+PyRScj5JH3/v3dOzZDkfk7QIOJ+Q tAg4Z0laBAiY
Fq6zZ31g95HiCSBbH9i9pHgCHNinQrvKKaZoV/vVXQjK+UxouJxid0piw+HV MUlseBhB+cCG
yimV0FB4VQE2NMSBfS40WE6phAZh1R+VsDTIxsYuryI0BktscBBBOV8IDZRT KrABFdgAYFpl
QIzxHwMDCMoH1l9OqcD6EZgIarjUD8CQ2GXkNcb6+2VgfeWUCqxPBdaHwMBe nNcY6+vjwL4U
qpZTKrCqCqyqAqtWERQBa+QVrBkw8JewGPOAfSNUToMhIW9exIUmwDgsEfmr VQTlEDCRSATA
vLyC8wNMPH6tXm4A+1aoxA4LxiR3mDJClcS1WkVQzndCBMwbku2AIaiyA1NO t6vqyXd4tcqB
/SBUUofpHTaCImAazGRgntHoVxwB50eSFgHnIkmLAAHTwnXxonOJpEWAgGnh unTJ+UmSu/aq
y9svwjIB03yXCBgB0ySg2dz5VZLrntoy47pzm3euWTCry9svwnITYHObd68Z L9cCYEt7Oa9x
x1k3447fBosHDBqueMB+k8SHpMAzfstX7qmrj89dO+POXX/cnOPq8vaLsOz8 LgmB3bgB8SAo
d+mBGXQXd5kp1eXtF2HZ+UMSALti5wHwFsR9B7UbXPYmYDOnurz9IiyHgW2Z WdoLjuIOQy3t
vQkBGpMFwERWgTHMffd1130CbGZQxQP2p6QgDwOPwSyJ0yRGfoO83Lq8/SIs O39JakZm3GBO
Adury9svwnIcsCCYGbJZ8YD9I8kQlHbd1uXtF2HZkXey3gUVAZK8j86/krrA qy5vvwjLCrBK
ZWLtxSo51EJIK8F7GQZ2ZK11Op/A1Kssam2AqS2Nr03kFZgyU8nA/pMEQ/KI cUSMyftSFGAB
JYeANQuhC8q76tZWGsBWJXkO44WKlkpvwSI6LKDkELBEDmsLbOsL+ww7zHHA ZfxHzmNYTYyG
2konwLZPTk6+1ONkMiQBFueVc2C1miAmA5OP34thzR22/knw3fanr8wEGODi vPINDHgJYrWV
4KgVw0jAtr74GOCZnHx5n7P9cTi6HbAK2vpsTzbAXMEr18A4L04sHtjG5+/n dkJCG5/b52x8
pocD25GVw/yZMtcxzPNGAmAPIS8E5eBABHdxl61/KrMYFmQWuQYW7GWMw9IP uvY9FDEPaxvD
CFglkul3E5haQcrpybcX8P1frWfJ02uuXJZ3VsJq7rDFRdOjsVn/izlUQmBw OF2ouHbjTYrb
pgawuK5S/j9S+51I2aGZl+cIWLj2S8Dav+WR+brgwGZN7z8B04whlgKbveqo JoikzcsGbP66
lCTLBWy+x1mXEbCg9ms6aCa1vtoucVrhBX0ckrOb7mHsEFxVd5Qduh26Owir LPVY9RzWqP1a
A2y+Zw/wuvVrNnvNCRyI8zecyA6YVPu1BdhryItHrOUHj6K7uMsycphc+7UE 2CYHvMUgZqH2
gMveAmyZAXOl2q8twPago4I5cXn/zQgwK4c1Sq61lYIDY2L/MbYfBGIYw9h7 bzB2GGxGwJBA
+HPZBrDl/UALZkmeSUDkh8Z8iAqrdSrb8jDPYREchzCnyEIL4dpvoYcklD6b 73/qBD9gHckI
J3JYb11cTJy4tnJYFubifUSBZdZ1lh0RME2aBIyAaRLQbJ7YYcYrrrbFMAIm rEgOoyGpSUCz
ua7DUtcJW+6fpTGsBTA8s9yAJ5Wdq1TAlh8GWLyA0bksBta0pu/XLTomZi+w 5jV9qIyRw2S3
BJ8atajpw2dJopLYqWxzmF9xbVnTT8nL1moF+KhpTf9w2s9xrQXWvKZ/OGVO YV09LKi4Yh4W
remLT93SmawsFdfMavqWBv3wHGiypt/pfGv0dYnPJammr1neIWAErKOhqzEk DX+vi31Bn4Bp
lajZBAHLFzD7bp0x7LAFNQZbcH0YBzZyfsoQOPsud2oHbBTs8csjqVCWCti2 t8F3oz/fkYaY
xcBGLrwDeBj7e6oyeg4YTcMqjtbvU1nMXmC9Z04KOwGh3o+mKr0fClDT5DBl 3hJ52Mj5V5EX
gqrgQAR3cZdtO5ZJDLPoOn0vcR25wNBIvWc4zJPgskcxfqHuThf1xZDkxPC7 /QqeVmDFVTjs
wkl0FHcYatux9/2RGPyts9DfuNeIfxciACv6Na5BWjENxPiUeNcr4CuwWaX3 A1gbzcJhQEp8
d2TBHQbDz49hU+AqoIWZF0yT3tw4nWEeJr6V0RZgkeE2KnKK9LI0rQiDSRm4 pO5KAiy9s/we
CJgmS7tunQmCviYFjeb2lajX/NuKOvqQwvSLkn8IYnpPwv135Qu44g+SgMUz UloQMAKmSUCz
OTmMgGkS0GxODiNgmgQ0m5PDzADLZfGzKztFDjPjMM1es2hOp0aaFAkYAdMk oNmcHEbANAlo
Ns+pwyIXSgaHlcFznTQRqc3zCkzdy1YPUUl16J29OLfA5Ce9tHyuUWfHnOpV BEwTHwEjYJoE
NJuTwywCFv8wO82DzaJ5rh0mXShJeVj7dztyoSQBSwSscaFkc2BdKW7mcqPB VVn+hZLksGQO
8/J9OjWKm68SPi4xrhsD/8/1LBn7BFMDQOK6zCuwZM+XjDs6A//PKbCEH7NF ymaR11n6h9b1
wohHlALiQrhsZimfyGFFDrz1WAoBC5XNygOsVb0wzmEETNzQQw5rP1Zap11J HcYfnVYry4hc
8c+1o4l9QmBw92cpgQWP2NMckni7bDmBCWK6MYzfX1xSYF4sIoclCvrejeja DsOb2EvqMP/G
ak2H4S3ZpRySglcHDnPdUgLjR90hsFLmYf55ju4s2XhdWTLXjjP9cNmsNMBa 1gvbZ/pl4RN/
nAlnSQMVVeu67PYViIUDSsA03zICRsA0CWg2J4dpAvsfachI8QOepYQAAAAA SUVORK5CYII=
--------------030207050105040003070708--
Re: problem with the height of TableViewerColumn and ComboBoxCellEditor [message #126414 is a reply to message #126400] Mon, 30 March 2009 15:29 Go to previous message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi Roland,

the current implementation of cell editors uses Combo control. There is
a bug related to this issue:

264225: [Combo] Omit border if used as celleditor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=264225

Since 1.2M6 we have an implementation of CCombo which is originally used
in the Cell Editors (see comment 2).

Best,
Ivan

Roland Siebert wrote:
> Hi,
>
> i have a little problem with the height of a TableViewerColumn when
> I'm using a ComboBoxCellEditor.
>
> When I doubleclick a cell, the value of the cell is not correctly
> displayed. Look at the attachment.
>
> The cell seems to be too small, but I can't set another size.
>
> here is a snippet to reproduce:
>
> public class Test implements IEntryPoint {
>
> private TableViewer tableViewer;
> private Table table;
> private List<String> list;
>
> public int createUI() {
> Display display = PlatformUI.createDisplay();
> Shell container = new Shell( display, SWT.SHELL_TRIM );
> container.setSize( 500, 500 );
> container.setLayout( new GridLayout() );
>
> tableViewer = new TableViewer( container, SWT.NONE );
> tableViewer.setUseHashlookup( true );
> tableViewer.setContentProvider( new ContentProvider() );
> tableViewer.setLabelProvider( new LabelProvider() );
>
> table = tableViewer.getTable();
> table.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true,
> true ) );
> table.setHeaderVisible( true );
> table.setLinesVisible( true );
>
> TableViewerColumn keyColumn = new TableViewerColumn(
> tableViewer, SWT.NONE );
> keyColumn.setLabelProvider( new LabelProvider() );
> keyColumn.setEditingSupport( new CellEditingSupport(
> tableViewer ) );
> TableColumn column = keyColumn.getColumn();
> column.setText( "Key" );
> column.setWidth( 200 );
>
> list = new ArrayList<String>();
> list.add( "key3" );
> list.add( "key2" );
> list.add( "key1" );
>
> ColumnViewerEditorActivationStrategy activationStrategy = new
> ColumnViewerEditorActivationStrategy( tableViewer ) {
> protected boolean isEditorActivationEvent(
> ColumnViewerEditorActivationEvent event ) {
> return event.eventType ==
> ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTI ON;
> }
> };
>
> TableViewerEditor.create( tableViewer, activationStrategy,
> ColumnViewerEditor.TABBING_HORIZONTAL |
> ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR );
>
> tableViewer.setInput( list );
>
> container.open();
>
> while ( !container.isDisposed() ) {
> if ( !display.readAndDispatch() ) {
> display.sleep();
> }
> }
> return 0;
> }
>
> private static final class ContentProvider implements
> IStructuredContentProvider {
> private Object[] elements;
> public Object[] getElements( Object inputElement ) {
> return elements;
> }
> public void inputChanged( Viewer viewer, Object oldInput,
> Object newInput ) {
> if ( newInput == null ) {
> elements = new Object[0];
> } else {
> List<String> list = (List<String>) newInput;
> elements = list.toArray();
> }
> }
> public void dispose() {}
> }
>
> private static final class LabelProvider extends CellLabelProvider {
> public void update( final ViewerCell cell ) {
> cell.setText( (String) cell.getElement() );
> }
> }
>
> private final class CellEditingSupport extends EditingSupport {
> private final CellEditor cellEditor;
> private String[] keys = { "key1", "key2", "key3" };
> public CellEditingSupport( TableViewer viewer ) {
> super( viewer );
> cellEditor = new ComboBoxCellEditor( viewer.getTable(),
> keys );
> }
> @Override
> protected boolean canEdit( Object element ) {
> return true;
> }
> @Override
> protected CellEditor getCellEditor( Object element ) {
> return cellEditor;
> }
> @Override
> protected Object getValue( Object element ) {
> for ( int i = 0; i < keys.length; i++ ) {
> if ( element.equals( keys[i] ) )
> return i;
> }
> return null;
> }
> @Override
> protected void setValue( Object element, Object value ) {
> element = keys[((Integer) value).intValue()];
> getViewer().update( element, null );
> }
> }
> }
>
> Roland
>
> ------------------------------------------------------------ ------------
>
Previous Topic:HTTP Status 404 - ProxyServlet:
Next Topic:Working example of RAP Menu Bar
Goto Forum:
  


Current Time: Thu Apr 25 00:40:25 GMT 2024

Powered by FUDForum. Page generated in 0.02753 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top