Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 55449 Details for
Bug 167325
[Viewers]ViewerCell and ViewerRow should provide API to find neighbors
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
I banged my head against it now for a while but finally it's working ;-)
167325.patch (text/plain), 21.55 KB, created by
Thomas Schindl
on 2006-12-11 17:41:47 EST
(
hide
)
Description:
I banged my head against it now for a while but finally it's working ;-)
Filename:
MIME Type:
Creator:
Thomas Schindl
Created:
2006-12-11 17:41:47 EST
Size:
21.55 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jface.snippets >Index: Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet010OwnerDraw.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet010OwnerDraw.java,v >retrieving revision 1.3 >diff -u -r1.3 Snippet010OwnerDraw.java >--- Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet010OwnerDraw.java 25 Oct 2006 18:30:34 -0000 1.3 >+++ Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet010OwnerDraw.java 11 Dec 2006 22:37:52 -0000 >@@ -17,6 +17,7 @@ > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.jface.viewers.TableLayout; > import org.eclipse.jface.viewers.TableViewer; >+import org.eclipse.jface.viewers.TableViewerColumn; > import org.eclipse.swt.SWT; > import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.graphics.Rectangle; >@@ -28,7 +29,6 @@ > import org.eclipse.swt.widgets.Display; > import org.eclipse.swt.widgets.Event; > import org.eclipse.swt.widgets.Shell; >-import org.eclipse.swt.widgets.TableColumn; > > public class Snippet010OwnerDraw { > >@@ -350,8 +350,29 @@ > > }); > createColumns(); >+ >+ OwnerDrawLabelProvider.setUpOwnerDraw(viewer); >+ viewer.setInput(this); >+ GridData data = new GridData(GridData.GRAB_HORIZONTAL >+ | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); > >- viewer.setLabelProvider(new OwnerDrawLabelProvider() { >+ viewer.getControl().setLayoutData(data); >+ >+ viewer.setSelection(new StructuredSelection(entries[1])); >+ } >+ >+ /** >+ * Create the columns to be used in the tree. >+ */ >+ private void createColumns() { >+ TableLayout layout = new TableLayout(); >+ viewer.getTable().setLayout(layout); >+ viewer.getTable().setHeaderVisible(true); >+ viewer.getTable().setLinesVisible(true); >+ >+ for (int i = 0; i < COLUMN_COUNT; i++) { >+ TableViewerColumn tc = new TableViewerColumn(viewer, SWT.NONE, i); >+ tc.setLabelProvider(new OwnerDrawLabelProvider() { > /* > * (non-Javadoc) > * >@@ -399,30 +420,8 @@ > > } > }); >- >- OwnerDrawLabelProvider.setUpOwnerDraw(viewer); >- viewer.setInput(this); >- GridData data = new GridData(GridData.GRAB_HORIZONTAL >- | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); >- >- viewer.getControl().setLayoutData(data); >- >- viewer.setSelection(new StructuredSelection(entries[1])); >- } >- >- /** >- * Create the columns to be used in the tree. >- */ >- private void createColumns() { >- TableLayout layout = new TableLayout(); >- viewer.getTable().setLayout(layout); >- viewer.getTable().setHeaderVisible(true); >- viewer.getTable().setLinesVisible(true); >- >- for (int i = 0; i < COLUMN_COUNT; i++) { >- TableColumn tc = new TableColumn(viewer.getTable(), SWT.NONE, i); > layout.addColumnData(new ColumnPixelData(100)); >- tc.setText(getTitleFor(i)); >+ tc.getColumn().setText(getTitleFor(i)); > } > ; > } >Index: Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet026TreeViewerTabEditing.java >=================================================================== >RCS file: Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet026TreeViewerTabEditing.java >diff -N Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet026TreeViewerTabEditing.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet026TreeViewerTabEditing.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,222 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 Tom Schindl 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: >+ * Tom Schindl - initial API and implementation >+ *******************************************************************************/ >+ >+package org.eclipse.jface.snippets.viewers; >+ >+import java.util.ArrayList; >+ >+import org.eclipse.jface.resource.FontRegistry; >+import org.eclipse.jface.viewers.CellEditor; >+import org.eclipse.jface.viewers.EditingSupport; >+import org.eclipse.jface.viewers.ICellModifier; >+import org.eclipse.jface.viewers.ITableLabelProvider; >+import org.eclipse.jface.viewers.ITreeContentProvider; >+import org.eclipse.jface.viewers.LabelProvider; >+import org.eclipse.jface.viewers.TextCellEditor; >+import org.eclipse.jface.viewers.TreeViewer; >+import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.layout.FillLayout; >+import org.eclipse.swt.widgets.Display; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.TreeColumn; >+import org.eclipse.swt.widgets.TreeItem; >+ >+/** >+ * A simple TreeViewer to demonstrate usage >+ * >+ * @author Tom Schindl <tom.schindl@bestsolution.at> >+ * >+ */ >+public class Snippet026TreeViewerTabEditing { >+ private class MyContentProvider implements ITreeContentProvider { >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) >+ */ >+ public Object[] getElements(Object inputElement) { >+ return ((MyModel) inputElement).child.toArray(); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.IContentProvider#dispose() >+ */ >+ public void dispose() { >+ >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, >+ * java.lang.Object, java.lang.Object) >+ */ >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) >+ */ >+ public Object[] getChildren(Object parentElement) { >+ return getElements(parentElement); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) >+ */ >+ public Object getParent(Object element) { >+ if (element == null) { >+ return null; >+ } >+ >+ return ((MyModel) element).parent; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) >+ */ >+ public boolean hasChildren(Object element) { >+ return ((MyModel) element).child.size() > 0; >+ } >+ >+ } >+ >+ public class MyModel { >+ public MyModel parent; >+ >+ public ArrayList child = new ArrayList(); >+ >+ public int counter; >+ >+ public MyModel(int counter, MyModel parent) { >+ this.parent = parent; >+ this.counter = counter; >+ } >+ >+ public String toString() { >+ String rv = "Item "; >+ if (parent != null) { >+ rv = parent.toString() + "."; >+ } >+ >+ rv += counter; >+ >+ return rv; >+ } >+ } >+ >+ public class MyLabelProvider extends LabelProvider implements >+ ITableLabelProvider { >+ FontRegistry registry = new FontRegistry(); >+ >+ public Image getColumnImage(Object element, int columnIndex) { >+ return null; >+ } >+ >+ public String getColumnText(Object element, int columnIndex) { >+ return "Column " + columnIndex + " => " + element.toString(); >+ } >+ } >+ >+ public Snippet026TreeViewerTabEditing(Shell shell) { >+ final TreeViewer v = new TreeViewer(shell,SWT.BORDER|SWT.FULL_SELECTION); >+ >+ TreeColumn column = new TreeColumn(v.getTree(),SWT.NONE); >+ column.setWidth(200); >+ column.setText("Column 1"); >+ >+ column = new TreeColumn(v.getTree(),SWT.NONE); >+ column.setWidth(200); >+ column.setText("Column 2"); >+ >+ v.setLabelProvider(new MyLabelProvider()); >+ v.setContentProvider(new MyContentProvider()); >+ v.setCellModifier(new ICellModifier() { >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String) >+ */ >+ public boolean canModify(Object element, String property) { >+ return true; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String) >+ */ >+ public Object getValue(Object element, String property) { >+ return ((MyModel)element).counter + ""; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object) >+ */ >+ public void modify(Object element, String property, Object value) { >+ TreeItem item = (TreeItem)element; >+ ((MyModel)item.getData()).counter = Integer.parseInt(value.toString()); >+ v.update(item.getData(), null); >+ } >+ >+ }); >+ >+ v.setColumnProperties(new String[] { "column1", "column2" }); >+ v.setCellEditors(new CellEditor[] { new TextCellEditor(v.getTree()), new TextCellEditor(v.getTree()) }); >+ v.setTabEditingStyle(EditingSupport.TABING_HORIZONTAL|EditingSupport.TABING_MOVE_TO_ROW_NEIGHBOR|EditingSupport.TABING_VERTICAL); >+ >+ v.setInput(createModel()); >+ } >+ >+ private MyModel createModel() { >+ >+ MyModel root = new MyModel(0, null); >+ root.counter = 0; >+ >+ MyModel tmp; >+ MyModel subItem; >+ for (int i = 1; i < 10; i++) { >+ tmp = new MyModel(i, root); >+ root.child.add(tmp); >+ for (int j = 1; j < i; j++) { >+ subItem = new MyModel(j, tmp); >+ subItem.child.add(new MyModel(j*100,subItem)); >+ tmp.child.add(subItem); >+ } >+ } >+ >+ return root; >+ } >+ >+ public static void main(String[] args) { >+ Display display = new Display(); >+ Shell shell = new Shell(display); >+ shell.setLayout(new FillLayout()); >+ new Snippet026TreeViewerTabEditing(shell); >+ shell.open(); >+ >+ while (!shell.isDisposed()) { >+ if (!display.readAndDispatch()) >+ display.sleep(); >+ } >+ >+ display.dispose(); >+ } >+} >#P org.eclipse.jface >Index: src/org/eclipse/jface/viewers/TableViewerRow.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/viewers/TableViewerRow.java,v >retrieving revision 1.3 >diff -u -r1.3 TableViewerRow.java >--- src/org/eclipse/jface/viewers/TableViewerRow.java 5 Sep 2006 20:51:25 -0000 1.3 >+++ src/org/eclipse/jface/viewers/TableViewerRow.java 11 Dec 2006 22:37:55 -0000 >@@ -146,4 +146,34 @@ > return item.getParent(); > } > >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ViewerRow#getRowAbove(boolean) >+ */ >+ public ViewerRow getRowAbove(boolean sameLevel) { >+ int index = item.getParent().indexOf(item) - 1; >+ >+ if( index >= 0 ) { >+ return (ViewerRow)item.getParent().getItem(index).getData(ViewerRow.ROWPART_KEY); >+ } >+ >+ return null; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ViewerRow#getRowBelow(boolean) >+ */ >+ public ViewerRow getRowBelow(boolean sameLevel) { >+ 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 != null ) { >+ return (ViewerRow)tmp.getData(ViewerRow.ROWPART_KEY); >+ } >+ } >+ >+ return null; >+ } >+ > } >Index: src/org/eclipse/jface/viewers/EditingSupport.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/viewers/EditingSupport.java,v >retrieving revision 1.4 >diff -u -r1.4 EditingSupport.java >--- src/org/eclipse/jface/viewers/EditingSupport.java 30 Nov 2006 18:53:06 -0000 1.4 >+++ src/org/eclipse/jface/viewers/EditingSupport.java 11 Dec 2006 22:37:55 -0000 >@@ -16,8 +16,6 @@ > import org.eclipse.core.runtime.Assert; > import org.eclipse.swt.SWT; > import org.eclipse.swt.events.TraverseEvent; >-import org.eclipse.swt.graphics.Point; >-import org.eclipse.swt.graphics.Rectangle; > > /** > * EditingSupport is the abstract superclass of the support for cell editing. >@@ -184,9 +182,9 @@ > ViewerRow newRow = null; > > if (above) { >- newRow = getRowAbove(row, viewer); >+ newRow = row.getRowAbove(false); > } else { >- newRow = getRowBelow(row, viewer); >+ newRow = row.getRowBelow(false); > } > > if (newRow != null) { >@@ -228,7 +226,7 @@ > startIndex); > } > } else if ((getTabingStyle() & TABING_MOVE_TO_ROW_NEIGHBOR) == TABING_MOVE_TO_ROW_NEIGHBOR) { >- ViewerRow rowAbove = getRowAbove(row, viewer); >+ ViewerRow rowAbove = row.getRowAbove(false); > if (rowAbove != null) { > rv = searchPreviousCell(rowAbove, viewer, rowAbove > .getColumnCount(), startIndex); >@@ -261,7 +259,7 @@ > rv = searchNextCell(row, viewer, -1, startIndex); > } > } else if ((getTabingStyle() & TABING_MOVE_TO_ROW_NEIGHBOR) == TABING_MOVE_TO_ROW_NEIGHBOR) { >- ViewerRow rowBelow = getRowBelow(row, viewer); >+ ViewerRow rowBelow = row.getRowBelow(false); > if (rowBelow != null) { > rv = searchNextCell(rowBelow, viewer, -1, startIndex); > } >@@ -270,23 +268,6 @@ > > return rv; > } >- >- private ViewerRow getRowAbove(ViewerRow row, ColumnViewer viewer) { >- // TODO maybe there's a better solution maybe we should provide an >- // API in ViewerColumn >- // to find row above/below itself? >- Rectangle r = row.getBounds(); >- return viewer.getViewerRow(new Point(r.x, r.y - 2)); >- } >- >- private ViewerRow getRowBelow(ViewerRow row, ColumnViewer viewer) { >- // TODO maybe there's a better solution maybe we should provide an >- // API in ViewerColumn >- // to find row above/below itself? >- Rectangle r = row.getBounds(); >- return viewer.getViewerRow(new Point(r.x, >- r.y + r.height + 2)); >- } > > /** > * @return the viewer this editing support works for >Index: src/org/eclipse/jface/viewers/TreeViewerRow.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewerRow.java,v >retrieving revision 1.3 >diff -u -r1.3 TreeViewerRow.java >--- src/org/eclipse/jface/viewers/TreeViewerRow.java 5 Sep 2006 20:51:25 -0000 1.3 >+++ src/org/eclipse/jface/viewers/TreeViewerRow.java 11 Dec 2006 22:37:56 -0000 >@@ -18,6 +18,7 @@ > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.widgets.Control; > import org.eclipse.swt.widgets.Item; >+import org.eclipse.swt.widgets.Tree; > import org.eclipse.swt.widgets.TreeItem; > > /** >@@ -144,4 +145,151 @@ > public Control getControl() { > return item.getParent(); > } >+ >+ private TreeItem findLastVisibleItem(TreeItem parentItem) { >+ TreeItem rv = parentItem; >+ >+ if( rv.getExpanded() && rv.getItemCount() > 0 ) { >+ rv = findLastVisibleItem(rv.getItem(rv.getItemCount()-1)); >+ } >+ >+ return rv; >+ } >+ >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ViewerRow#getRowAbove(boolean) >+ */ >+ public ViewerRow getRowAbove(boolean sameLevel) { >+ Tree tree = item.getParent(); >+ >+ // This means we have top-level item >+ if( item.getParentItem() == null ) { >+ int index = tree.indexOf(item) - 1; >+ TreeItem nextTopItem = null; >+ >+ if( index >= 0 ) { >+ nextTopItem = tree.getItem(index); >+ } >+ >+ if( nextTopItem != null ) { >+ if( sameLevel ) { >+ return (ViewerRow)nextTopItem.getData(ViewerRow.ROWPART_KEY); >+ } >+ >+ return (ViewerRow) findLastVisibleItem(nextTopItem).getData(ViewerRow.ROWPART_KEY); >+ } >+ } else { >+ TreeItem[] neighbours = item.getParentItem().getItems(); >+ TreeItem itemBefore = null; >+ for( int i = 0; i < neighbours.length; i++ ) { >+ if( neighbours[i] != item ) { >+ itemBefore = neighbours[i]; >+ } else { >+ break; >+ } >+ } >+ >+ // This means that this was the first child >+ if( itemBefore == null ) { >+ itemBefore = item.getParentItem(); >+ } else { >+ itemBefore = findLowestLeave(itemBefore); >+ } >+ >+ if( itemBefore != null ) { >+ return (ViewerRow) itemBefore.getData(ViewerRow.ROWPART_KEY); >+ } >+ } >+ >+ return null; >+ } >+ >+ private TreeItem findLowestLeave(TreeItem item) { >+ TreeItem rv = item; >+ >+ if( rv.getExpanded() && rv.getItemCount() > 0 ) { >+ rv = findLowestLeave(rv.getItem(rv.getItemCount()-1)); >+ } >+ >+ return rv; >+ } >+ >+ private TreeItem findNextItem(TreeItem item) { >+ TreeItem rv = null; >+ TreeItem parent = item.getParentItem(); >+ TreeItem[] neighbours; >+ >+ if( parent == null ) { >+ neighbours = item.getParent().getItems(); >+ } else { >+ neighbours = parent.getItems(); >+ } >+ >+ int i = 0; >+ for( i = 0; i < neighbours.length; i++ ) { >+ if( neighbours[i] == item ) { >+ break; >+ } >+ } >+ >+ // This is once more the last item in the tree >+ // Search on >+ if( i == neighbours.length - 1 ) { >+ if( item.getParentItem() != null ) { >+ rv = findNextItem(item.getParentItem()); >+ } >+ } else { >+ rv = neighbours[i+1]; >+ } >+ >+ return rv; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jface.viewers.ViewerRow#getRowBelow(boolean) >+ */ >+ public ViewerRow getRowBelow(boolean sameLevel) { >+ Tree tree = item.getParent(); >+ >+ // This means we have top-level item >+ if( item.getParentItem() == null ) { >+ if( sameLevel || ! item.getExpanded() ) { >+ int index = tree.indexOf(item) + 1; >+ >+ if( index < tree.getItemCount() ) { >+ return (ViewerRow)tree.getItem(index).getData(ViewerRow.ROWPART_KEY); >+ } >+ } else if( item.getExpanded() && item.getItemCount() > 0 ) { >+ return (ViewerRow)item.getItem(0).getData(ViewerRow.ROWPART_KEY); >+ } >+ } else { >+ if( sameLevel || ! item.getExpanded() ) { >+ TreeItem[] neighbours = item.getParentItem().getItems(); >+ TreeItem itemAfter = null; >+ int i = 0; >+ for( i = 0; i < neighbours.length; i++ ) { >+ if( neighbours[i] == item ) { >+ break; >+ } >+ } >+ >+ // This would mean that it was the last item >+ if( i == neighbours.length - 1 ) { >+ itemAfter = findNextItem( item.getParentItem() ); >+ } else { >+ itemAfter = neighbours[i+1]; >+ } >+ >+ if( itemAfter != null ) { >+ return (ViewerRow) itemAfter.getData(ViewerRow.ROWPART_KEY); >+ } >+ >+ } else if( item.getExpanded() && item.getItemCount() > 0 ) { >+ return (ViewerRow)item.getItem(0).getData(ViewerRow.ROWPART_KEY); >+ } >+ } >+ >+ return null; >+ } > } >Index: src/org/eclipse/jface/viewers/ViewerRow.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerRow.java,v >retrieving revision 1.5 >diff -u -r1.5 ViewerRow.java >--- src/org/eclipse/jface/viewers/ViewerRow.java 6 Dec 2006 15:57:04 -0000 1.5 >+++ src/org/eclipse/jface/viewers/ViewerRow.java 11 Dec 2006 22:37:57 -0000 >@@ -190,12 +190,12 @@ > */ > public int getColumnIndex(Point point) { > int count = getColumnCount(); >- >+ > // If there are no columns the column-index is 0 >- if( count == 0 ) { >+ if (count == 0) { > return 0; > } >- >+ > for (int i = 0; i < count; i++) { > if (getBounds(i).contains(point)) { > return i; >@@ -226,4 +226,21 @@ > */ > public abstract Control getControl(); > >+ /** >+ * Find the row above this row >+ * >+ * @param sameLevel >+ * search at the samelevel >+ * @return the row above or <code>null</code> >+ */ >+ public abstract ViewerRow getRowAbove(boolean sameLevel); >+ >+ /** >+ * Find the row below this row >+ * >+ * @param sameLevel >+ * search at the samelevel >+ * @return the row below or <code>null</code> >+ */ >+ public abstract ViewerRow getRowBelow(boolean sameLevel); > } >Index: src/org/eclipse/jface/viewers/ViewerCell.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/viewers/ViewerCell.java,v >retrieving revision 1.4 >diff -u -r1.4 ViewerCell.java >--- src/org/eclipse/jface/viewers/ViewerCell.java 6 Sep 2006 19:16:09 -0000 1.4 >+++ src/org/eclipse/jface/viewers/ViewerCell.java 11 Dec 2006 22:37:56 -0000 >@@ -177,4 +177,62 @@ > public Control getControl() { > return row.getControl(); > } >+ >+ /** >+ * @param sameLevel >+ * should the cell be at the same hirarchie level than this cell >+ * @return the {@link ViewerCell} or <code>null</code> if no cell above >+ * can be found >+ */ >+ public ViewerCell getCellAbove(boolean sameLevel) { >+ ViewerRow rowAbove = row.getRowAbove(sameLevel); >+ >+ if (rowAbove != null) { >+ return rowAbove.getCell(getColumnIndex()); >+ } >+ >+ return null; >+ } >+ >+ /** >+ * @param sameLevel >+ * should the cell be at the same hirarchie level than this cell >+ * @return the {@link ViewerCell} or <code>null</code> if no cell below >+ * can be found >+ */ >+ public ViewerCell getCellBelow(boolean sameLevel) { >+ ViewerRow rowBelow = row.getRowBelow(sameLevel); >+ if (rowBelow != null) { >+ rowBelow.getCell(getColumnIndex()); >+ } >+ return null; >+ } >+ >+ /** >+ * @return the {@link ViewerCell} to the left of this cell or >+ * <code>null</code> if no cell below can be found >+ */ >+ public ViewerCell getCellLeft() { >+ int index = getColumnIndex() - 1; >+ >+ if (index >= 0) { >+ return row.getCell(index); >+ } >+ >+ return null; >+ } >+ >+ /** >+ * @return the {@link ViewerCell} to the right of this cell or >+ * <code>null</code> if no cell below can be found >+ */ >+ public ViewerCell getCellRight() { >+ int index = getColumnIndex() + 1; >+ >+ if (index < row.getColumnCount()) { >+ return row.getCell(index); >+ } >+ >+ return null; >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 167325
:
55449
|
55916
|
56191
|
57078