Mercurial > projects > dwt-addons
diff dwtx/jface/viewers/TableViewerRow.d @ 10:b6c35faf97c8
Viewers
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 31 Mar 2008 00:47:19 +0200 |
parents | |
children | ea8ff534f622 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/jface/viewers/TableViewerRow.d Mon Mar 31 00:47:19 2008 +0200 @@ -0,0 +1,205 @@ +/******************************************************************************* + * Copyright (c) 2006, 2007 IBM Corporation 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: + * IBM Corporation - initial API and implementation + * Tom Shindl <tom.schindl@bestsolution.at> - initial API and implementation + * - Fix for bug 174355 + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ + +module dwtx.jface.viewers.TableViewerRow; + +import dwtx.jface.viewers.ViewerRow; +import dwtx.jface.viewers.TreePath; + +import dwt.graphics.Color; +import dwt.graphics.Font; +import dwt.graphics.Image; +import dwt.graphics.Rectangle; +import dwt.widgets.Control; +import dwt.widgets.TableItem; +import dwt.widgets.Widget; + +import dwt.dwthelper.utils; + +/** + * TableViewerRow is the Table specific implementation of ViewerRow + * @since 3.3 + * + */ +public class TableViewerRow : ViewerRow { + private TableItem item; + + /** + * Create a new instance of the receiver from item. + * @param item + */ + this(TableItem item) { + this.item = item; + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getBounds(int) + */ + public Rectangle getBounds(int columnIndex) { + return item.getBounds(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getBounds() + */ + public Rectangle getBounds() { + return item.getBounds(); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getItem() + */ + public Widget getItem() { + return item; + } + + void setItem(TableItem item) { + this.item = item; + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getColumnCount() + */ + public int getColumnCount() { + return item.getParent().getColumnCount(); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getBackground(int) + */ + public Color getBackground(int columnIndex) { + return item.getBackground(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getFont(int) + */ + public Font getFont(int columnIndex) { + return item.getFont(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getForeground(int) + */ + public Color getForeground(int columnIndex) { + return item.getForeground(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getImage(int) + */ + public Image getImage(int columnIndex) { + return item.getImage(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getText(int) + */ + public String getText(int columnIndex) { + return item.getText(columnIndex); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#setBackground(int, dwt.graphics.Color) + */ + public void setBackground(int columnIndex, Color color) { + item.setBackground(columnIndex, color); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#setFont(int, dwt.graphics.Font) + */ + public void setFont(int columnIndex, Font font) { + item.setFont(columnIndex, font); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#setForeground(int, dwt.graphics.Color) + */ + public void setForeground(int columnIndex, Color color) { + item.setForeground(columnIndex, color); + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#setImage(int, dwt.graphics.Image) + */ + public void setImage(int columnIndex, Image image) { + Image oldImage = item.getImage(columnIndex); + if (oldImage !is image) { + item.setImage(columnIndex,image); + } + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#setText(int, java.lang.String) + */ + public void setText(int columnIndex, String text) { + item.setText(columnIndex, text is null ? "" : text); //$NON-NLS-1$ + } + + /* (non-Javadoc) + * @see dwtx.jface.viewers.ViewerRow#getControl() + */ + public Control getControl() { + return item.getParent(); + } + + public ViewerRow getNeighbor(int direction, bool sameLevel) { + if( direction is ViewerRow.ABOVE ) { + return getRowAbove(); + } else if( direction is ViewerRow.BELOW ) { + return getRowBelow(); + } else { + throw new IllegalArgumentException("Illegal value of direction argument."); //$NON-NLS-1$ + } + } + + + private ViewerRow getRowAbove() { + int index = item.getParent().indexOf(item) - 1; + + if( index >= 0 ) { + return new TableViewerRow(item.getParent().getItem(index)); + } + + return null; + } + + private ViewerRow getRowBelow() { + int index = item.getParent().indexOf(item) + 1; + + if( index < item.getParent().getItemCount() ) { + TableItem tmp = item.getParent().getItem(index); + //TODO NULL can happen in case of VIRTUAL => How do we deal with that + if( tmp !is null ) { + return new TableViewerRow(tmp); + } + } + + return null; + } + + public TreePath getTreePath() { + return new TreePath([item.getData()]); + } + + public Object clone() { + return new TableViewerRow(item); + } + + public Object getElement() { + return item.getData(); + } +}