Hello James,<div><br></div><div>    Thanks!<br><br><div class="gmail_quote">On Thu, Apr 22, 2010 at 12:58 PM, James Clancey <span dir="ltr">&lt;<a href="mailto:james.clancey@gmail.com">james.clancey@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Sorry I forgot to include the enums. Here they are. I will start working on correcting my errors today.<div><br></div>
<div>Thanks</div><div><div><br></div><div><div>public enum NSTableViewColumnAutoresizingStyle {</div><div>
<span style="white-space:pre">                </span>NSTableViewNoColumnAutoresizing = 0,</div><div><span style="white-space:pre">                </span>NSTableViewUniformColumnAutoresizingStyle,</div><div>
<span style="white-space:pre">                </span>NSTableViewSequentialColumnAutoresizingStyle,</div><div><span style="white-space:pre">                </span>NSTableViewReverseSequentialColumnAutoresizingStyle,</div>
<div><span style="white-space:pre">                </span>NSTableViewLastColumnOnlyAutoresizingStyle,</div><div><span style="white-space:pre">                </span>NSTableViewFirstColumnOnlyAutoresizingStyle</div>
<div><span style="white-space:pre">        </span>}</div><div><span style="white-space:pre">        </span></div><div><span style="white-space:pre">        </span>public enum NSTableViewSelectionHighlightStyle {</div>
<div><span style="white-space:pre">                </span>NSTableViewSelectionHighlightStyleNone = -1,</div><div><span style="white-space:pre">                </span>NSTableViewSelectionHighlightStyleRegular = 0,</div>
<div><span style="white-space:pre">                </span>NSTableViewSelectionHighlightStyleSourceList = 1,</div><div><span style="white-space:pre">        </span>}</div><div><span style="white-space:pre">        </span></div>
<div><span style="white-space:pre">        </span>public enum NSTableViewDraggingDestinationFeedbackStyle {</div><div><span style="white-space:pre">                </span>NSTableViewDraggingDestinationFeedbackStyleNone = -1,</div>
<div><span style="white-space:pre">                </span>NSTableViewDraggingDestinationFeedbackStyleRegular = 0,</div><div><span style="white-space:pre">                </span>NSTableViewDraggingDestinationFeedbackStyleSourceList = 1,</div>
<div><span style="white-space:pre">        </span>}</div><div><span style="white-space:pre">        </span></div><div><span style="white-space:pre">        </span>public enum NSTableViewDropOperation {</div>
<div><span style="white-space:pre">                </span>NSTableViewDropOn,</div><div><span style="white-space:pre">                </span>NSTableViewDropAbove</div><div><div></div><div class="h5"><div><span style="white-space:pre">        </span>}</div>

<br><div class="gmail_quote">On Thu, Apr 22, 2010 at 5:43 AM, Miguel de Icaza <span dir="ltr">&lt;<a href="mailto:miguel@novell.com" target="_blank">miguel@novell.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello James,<br><br><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Here is a build-able copy of the NSTableview with the associated  classes</div>


</div></blockquote><div><br></div></div><div>Some feedback on the file:</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
[BaseType (typeof (NSObject))]</div>
<div><span style="white-space:pre">        </span>interface NSTableColumn {</div>
<div><span style="white-space:pre">                </span>[Export (&quot;initWithIdentifier:&quot;)]</div><div><span style="white-space:pre">                </span>IntPtr InitWithIdentifier (NSObject identifier);</div></div></blockquote><div><br></div>


</div><div>All constructors need to become &quot;IntPtr Constructor&quot;, the name of the constructor is erased, that will become:</div><div><br></div><div>public NSTableColumn (NSObject identifier)</div><div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;headerCell&quot;)]</div><div><span style="white-space:pre">                </span>NSObject HeaderCell { get; set; }</div></div></blockquote><div><br></div></div><div>This should be an NSCell.</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<div><span style="white-space:pre">                </span>[Export (&quot;dataCell&quot;)]</div><div><span style="white-space:pre">                </span>NSObject DataCell { get; set; }</div></div></blockquote><div><br></div></div><div>So is this.</div>

<div><div>
<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>//[Export (&quot;sortDescriptorPrototype&quot;)]</div><div>


<span style="white-space:pre">                </span>//NSSortDescriptor SortDescriptorPrototype { get; set; }</div></div></blockquote><div><br></div></div><div>Could you also send your NSSortDescriptor?</div><div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;resizingMask&quot;)]</div><div><span style="white-space:pre">                </span>uint ResizingMask { get; set; }</div></div></blockquote><div><br></div></div><div>We tend not to expose uint or ints for masks.   In this case, notice that the docs point to the possible values:</div>


<div><br></div><div><a href="http://developer.apple.com/mac/library/documentation/cocoa/reference/ApplicationKit/Classes/NSTableColumn_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Resizing_Modes" target="_blank">http://developer.apple.com/mac/library/documentation/cocoa/reference/ApplicationKit/Classes/NSTableColumn_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Resizing_Modes</a></div>


<div><br></div><div>You need to edit AppKit/Enums.cs to add the following:</div><div><br></div><div>[Flags]</div><div>public enum NSTableResizingMask {</div><div>   // The actual values.</div><div>}</div><div><br></div><div>


Then replace the int or uint value with this enum.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableColumns&quot;)]</div>



<div><span style="white-space:pre">                </span>NSArray TableColumns ();</div></div></blockquote><div><br></div><div>You need to lookup the actual type  of tableColumns in the documentation, and make this strongly typed.  I looked this up and the array contains NSTableColumn elements, so you have to change that to:</div>


<div><br></div><div>NSTableColumn [] TableColumns </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;numberOfColumns&quot;)]</div>



<div><span style="white-space:pre">                </span>int NumberOfColumns ();</div></div></blockquote><div><br></div><div>Per the framework design guidelines, rename this to  ColumnCount and make it a property:</div><div><br></div>


<div>int ColumnCount { get; }</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;numberOfRows&quot;)]</div>


<div>
<span style="white-space:pre">                </span>int NumberOfRows ();</div></div></blockquote><div><br></div><div>same here:</div><div><br></div><div>    int RowCount { get;  }</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;addTableColumn:&quot;)]</div><div><span style="white-space:pre">                </span>void AddTableColumn (NSTableColumn tableColumn);</div>
<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;removeTableColumn:&quot;)]</div><div><span style="white-space:pre">                </span>void RemoveTableColumn (NSTableColumn tableColumn);</div>
<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;moveColumn:toColumn:&quot;)]</div><div><span style="white-space:pre">                </span>void MoveColumntoColumn (int oldIndex, int newIndex);</div></div></blockquote>


<div><br></div></div><div>The identifier is a bad choice from the FDG perspective, use instead:</div><div><br></div><div>void MoveColumn</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;columnWithIdentifier:&quot;)]</div><div><span style="white-space:pre">                </span>int ColumnWithIdentifier (NSObject identifier);</div></div></blockquote><div>

<br>
</div></div><div>Since C# supports method overloads there is no need to distinguish functionality based on the method name, so we need to group this and the next one into the same method, I suggest FindColumn.</div><div>

<div>  </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableColumnWithIdentifier:&quot;)]</div><div><span style="white-space:pre">                </span>NSTableColumn TableColumnWithIdentifier (NSObject identifier);</div>


</div></blockquote><div><br></div></div><div>Per above, rename FindColumn.</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
<span style="white-space:pre">                </span>[Export (&quot;reloadDataForRowIndexes:columnIndexes:&quot;)]</div>

<div><span style="white-space:pre">                </span>void ReloadDataForRowIndexescolumnIndexes (NSIndexSet rowIndexes, NSIndexSet columnIndexes );</div></div></blockquote><div><br></div></div><div>Notice that the name generated by the parser here is terrible.   The name contains the second part of the selector, but C# has no need for it.</div>


<div><br></div><div>So this method should be renamed &quot;ReloadData&quot;, it is just an overload that is more specific than the general one.</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;editedColumn&quot;)]</div>
<div><span style="white-space:pre">                </span>int EditedColumn ();</div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;editedRow&quot;)]</div><div><span style="white-space:pre">                </span>int EditedRow ();</div>



<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;clickedColumn&quot;)]</div><div><span style="white-space:pre">                </span>int ClickedColumn ();</div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div>
<br></div><div><span style="white-space:pre">                </span>[Export (&quot;clickedRow&quot;)]</div><div><span style="white-space:pre">                </span>int ClickedRow ();</div></div></blockquote><div><br></div></div><div>All those four need to become read-only properties.</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<div><span style="white-space:pre">                </span>[Export (&quot;setIndicatorImage:inTableColumn:&quot;)]</div><div><span style="white-space:pre">                </span>void SetIndicatorImageinTableColumn (NSImage anImage, NSTableColumn tableColumn);</div>


</div></blockquote><div><br></div></div><div>Again: ugly identifier caused by the selector.   It shoudl become:</div><div><br></div><div>SetIndicatorImage (NSImage anImage, NSTableColumn inTableColumn)</div><div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;indicatorImageInTableColumn:&quot;)]</div><div><span style="white-space:pre">                </span>NSImage IndicatorImageInTableColumn (NSTableColumn tableColumn);</div>

</div>
</blockquote><div><br></div></div><div>This should become GetIndicatorImage (...)</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<div><span style="white-space:pre">                </span>[Export (&quot;canDragRowsWithIndexes:atPoint:&quot;)]</div>
<div><span style="white-space:pre">                </span>bool CanDragRowsWithIndexesatPoint (NSIndexSet rowIndexes, PointF mouseDownPoint );</div></div></blockquote><div><br></div></div><div>Same, should become CanDragRows, the indexes: and atPoint: are not relevant to the method name.</div>

<div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;setDraggingSourceOperationMask:forLocal:&quot;)]</div>


<div><span style="white-space:pre">                </span>void SetDraggingSourceOperationMaskforLocal (NSDragOperation mask, bool isLocal );</div></div></blockquote><div><br></div></div><div>Same, should become SetDraggingSourceOperationMask</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;setDropRow:dropOperation:&quot;)]</div><div>


<span style="white-space:pre">                </span>void SetDropRowdropOperation (int row, NSTableViewDropOperation dropOperation);</div></div></blockquote><div><br></div></div><div>Same, should become SetDropRowDropOperation </div><div>

<div><br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;selectAll:&quot;)]</div><div><span style="white-space:pre">                </span>void SelectAll (NSObject sender);</div>



<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;deselectAll:&quot;)]</div><div><span style="white-space:pre">                </span>void DeselectAll (NSObject sender);</div>
<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;selectColumnIndexes:byExtendingSelection:&quot;)]</div><div><span style="white-space:pre">                </span>void SelectColumnIndexesbyExtendingSelection (NSIndexSet indexes, bool extend );</div>


</div></blockquote><div><br></div></div><div>Same, should become SelectColumns (NSIndexSet columnIndexes, bool extendSelection)</div><div><br></div><div>Notice that we can make our parameter names more meaningful in the cases where we drop parts of the method name.</div>


<div><br></div><div>C# 4.0 will take allow developers to take advantage of this, like this:</div><div><br></div><div>SelectColumns (columnIndexes = x, extendSelection  = true)</div><div><div><br></div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;selectRowIndexes:byExtendingSelection:&quot;)]</div><div><span style="white-space:pre">                </span>void SelectRowIndexesbyExtendingSelection (NSIndexSet indexes, bool extend );</div>


</div></blockquote><div><br></div></div><div>Same, now: SelectRows </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;selectedColumnIndexes&quot;)]</div>


<div><span style="white-space:pre">                </span>NSIndexSet SelectedColumnIndexes ();</div></div></blockquote><div><br></div><div>Should become a read-only property.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;selectedRowIndexes&quot;)]</div><div><span style="white-space:pre">                </span>NSIndexSet SelectedRowIndexes ();</div></div></blockquote><div><br></div><div>Should become a read-only property.</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;selectedColumn&quot;)]</div><div><span style="white-space:pre">                </span>int SelectedColumn ();</div>


<div>
<br></div><div><span style="white-space:pre">                </span>[Export (&quot;selectedRow&quot;)]</div><div><span style="white-space:pre">                </span>int SelectedRow ();</div></div></blockquote><div><br></div></div><div>Should become read-only properties.</div>


<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;numberOfSelectedColumns&quot;)]</div><div>


<span style="white-space:pre">                </span>int NumberOfSelectedColumns ();</div></div></blockquote><div><br></div><div>-&gt; SelectedColumnCount</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;numberOfSelectedRows&quot;)]</div><div><span style="white-space:pre">                </span>int NumberOfSelectedRows ();</div></div></blockquote><div><br></div><div>-&gt; SelectedRowCount</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;rectOfColumn:&quot;)]</div><div><span style="white-space:pre">                </span>RectangleF RectOfColumn (int column);</div>


</div></blockquote><div><br></div></div><div>-&gt; RectForColumn</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;rectOfRow:&quot;)]</div>


<div><span style="white-space:pre">                </span>RectangleF RectOfRow (int row);</div></div></blockquote><div><br></div></div><div>-&gt; RectOfRow. </div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;columnIndexesInRect:&quot;)]</div><div><span style="white-space:pre">                </span>NSIndexSet ColumnIndexesInRect (RectangleF rect);</div></div></blockquote><div>


<br></div></div><div>-&gt; GetColumnIndexesInRect </div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;columnAtPoint:&quot;)]</div>


</div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>int ColumnAtPoint (PointF point);</div></div></blockquote>


<div><br></div></div><div>-&gt; GetColumn (PointF atPoint)</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;rowAtPoint:&quot;)]</div>


<div><span style="white-space:pre">                </span>int RowAtPoint (PointF point);</div></div></blockquote><div><br></div></div><div>-&gt; GetRow (PointF atPoint)</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;frameOfCellAtColumn:row:&quot;)]</div><div><span style="white-space:pre">                </span>RectangleF FrameOfCellAtColumnrow (int column, int row);</div></div></blockquote>


<div><br></div></div><div>-&gt;GetCellFrame (int column, int row)</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;preparedCellAtColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>NSCell PreparedCellAtColumnrow (int column, int row );</div></div></blockquote><div><br></div></div><div>-&gt;GetCell (int column, int row) </div><div><div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;shouldFocusCell:atColumn:row:&quot;)]</div><div><span style="white-space:pre">                </span>bool ShouldFocusCellatColumnrow (NSCell cell, int column, int row );</div>


</div></blockquote><div><br></div></div><div>-&gt; ShouldFocusCell </div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;performClickOnCellAtColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>void PerformClickOnCellAtColumnrow (int column, int row );</div></div></blockquote><div><br></div></div><div>-&gt; PerformClick</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;editColumn:row:withEvent:select:&quot;)]</div><div><span style="white-space:pre">                </span>void EditColumnrowwithEventselect (int column, int row, NSEvent theEvent, bool select);</div>


</div></blockquote><div><br></div></div><div>-&gt; EditColumn</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;drawRow:clipRect:&quot;)]</div>


<div><span style="white-space:pre">                </span>void DrawRowclipRect (int row, RectangleF clipRect);</div></div></blockquote><div><br></div></div><div>-&gt; DrawRow  </div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;highlightSelectionInClipRect:&quot;)]</div><div><span style="white-space:pre">                </span>void HighlightSelectionInClipRect (RectangleF clipRect);</div></div></blockquote>


<div><br></div></div><div>-&gt; HighlightSelection (RectangleF inCliprect)</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
<span style="white-space:pre">                </span>[Export (&quot;drawGridInClipRect:&quot;)]</div>
<div><span style="white-space:pre">                </span>void DrawGridInClipRect (RectangleF clipRect);</div></div></blockquote><div><br></div></div><div>-&gt; DrawGrid</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;drawBackgroundInClipRect:&quot;)]</div><div><span style="white-space:pre">                </span>void DrawBackgroundInClipRect (RectangleF clipRect );</div></div></blockquote>


<div><br></div></div><div>-&gt; DrawBackground</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>//Detected properties</div>


<div><span style="white-space:pre">                </span>[Export (&quot;dataSource&quot;)][NullAllowed]</div>
<div><span style="white-space:pre">                </span>NSTableViewDataSource DataSource { get; set; }</div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;delegate&quot;)][NullAllowed]</div>
<div><span style="white-space:pre">                </span>NSTableViewDelegate Delegate { get; set; }</div></div></blockquote><div><br></div></div><div>Apply the standard delegate transformation, make the above weakly typed (replace return value with NSObject) rename it to &quot;WeakDelegate&quot;</div>


<div>and add a new:</div><div><br></div><div>[Wrap (&quot;WeakDelegate&quot;)]</div><div>NSTableViewDelegate Delegate { get; set; }</div><div><br></div><div>This is necessary to allow developers to set delegates in the Objective-C style, when they out out of the strongly typed version that we offer.</div>


<div> </div><div>At this point, you will want to read how to turn the Objective-C delegate into C# events, you will need to decorate the interface with the Events/Delegates property for this.</div><div><div><br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;gridStyleMask&quot;)]</div>
<div><span style="white-space:pre">                </span>uint GridStyleMask { get; set; }</div></div></blockquote><div><br></div></div><div>Needs to become strongly typed, with an enum.</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;sortDescriptors&quot;)]</div>
<div><span style="white-space:pre">                </span>NSArray SortDescriptors { get; set; }</div></div></blockquote><div><br></div></div><div>The NSArray needs to become strongly typed, what are the elements of this?</div><div><br>

</div>
<div>The NSTableViewDelegate will need plenty of updates by sprinkling the proper EventArgs on each method:</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">        </span>[BaseType (typeof (NSObject))]</div><div><span style="white-space:pre">        </span>[Model]</div>
<div><span style="white-space:pre">        </span>interface NSTableViewDelegate {</div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:willDispayCell:forTableColumn:row:&quot;)]</div>
<div><span style="white-space:pre">                </span>void TableViewwillDisplayCellforTableColumnrow (NSTableView tableView, NSObject cell, NSTableColumn tableColumn, int</div></div></blockquote><div><br></div></div><div>In delegates, the first parameter is usually the sender, so the first part of the selector name is useless, so we need to extract the actual meaning of this method, which is &quot;WillDisplayCell&quot;</div>


<div><br></div><div>So that needs to become &quot;WillDisplayCell&quot;</div><div> </div><div>The following return values, so in addition to the EventArgs that you need to sprinkle, you need to look in the docs what is the default return value if these methods are not implemented, and then do:</div>


<div><br></div><div>[DefaultValue (...)]</div><div><br></div><div>When no docs are available, we need to make an educated guess:</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldEditTableColumn:row:&quot;)]</div>
<div><span style="white-space:pre">                </span>bool TableViewshouldEditTableColumnrow (NSTableView tableView, NSTableColumn tableColumn, int row);</div></div></blockquote><div><br></div></div><div>-&gt; ShouldEditTableColumn</div>


<div><br></div><div>In this case, the docs say nothing about what happens if the user does not implement the method, so we are going to assume that the default should be &quot;no&quot;, so we do: DefaultValoue (false)</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;selectionShouldChangeInTableView:&quot;)]</div>



<div><span style="white-space:pre">                </span>bool SelectionShouldChangeInTableView (NSTableView tableView);</div></div></blockquote><div><br></div></div><div>-&gt; ShouldSelectionChange </div><div><div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldSelectRow:&quot;)]</div>
<div><span style="white-space:pre">                </span>bool TableViewshouldSelectRow (NSTableView tableView, int row);</div></div></blockquote><div><br></div></div><div>-&gt; ShouldSelectRow</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:selectionIndexesForProposedSelection:&quot;)]</div>
<div><span style="white-space:pre">                </span>NSIndexSet TableViewselectionIndexesForProposedSelection (NSTableView tableView, NSIndexSet proposedSelectionIndexes);</div></div></blockquote><div><br></div></div><div>-&gt; GetSelectionIndexes</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldSelectTableColumn:&quot;)]</div>



<div><span style="white-space:pre">                </span>bool TableViewshouldSelectTableColumn (NSTableView tableView, NSTableColumn tableColumn);</div></div></blockquote><div><br></div></div><div>-&gt; ShouldSelectTableColumn</div><div>

<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:mouseDownInHeaderOfTableColumn:&quot;)]</div>



<div><span style="white-space:pre">                </span>void TableViewmouseDownInHeaderOfTableColumn (NSTableView tableView, NSTableColumn tableColumn);</div></div></blockquote><div><br></div></div><div>-&gt; MouseDown </div><div>
<div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:didClickTableColumn:&quot;)]</div>
<div><span style="white-space:pre">                </span>void TableViewdidClickTableColumn (NSTableView tableView, NSTableColumn tableColumn);</div></div></blockquote><div><br></div></div><div>-&gt; DidClickTableColumn </div><div>
<div><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:didDragTableColumn:&quot;)]</div>
<div><span style="white-space:pre">                </span>void TableViewdidDragTableColumn (NSTableView tableView, NSTableColumn tableColumn);</div></div></blockquote><div><br></div></div><div>DidDragTabelColumn</div><div><div>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:heightOfRow:&quot;)]</div><div><span style="white-space:pre">                </span>float TableViewheightOfRow (NSTableView tableView, int row );</div></div></blockquote>


<div><br></div></div><div>-&gt; GetRowHeight</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:typeSelectStringForTableColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>string TableViewtypeSelectStringForTableColumnrow (NSTableView tableView, NSTableColumn tableColumn, int row );</div></div></blockquote><div><br></div></div><div>-&gt; GetSelectString</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:nextTypeSelectMatchFromRow:toRow:forString:&quot;)]</div>


<div><span style="white-space:pre">                </span>int TableViewnextTypeSelectMatchFromRowtoRowforString (NSTableView tableView, int startRow, int endRow, string </div></div></blockquote><div><br></div></div><div>-&gt; GetNextTypeSelectMatch </div>

<div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldTypeSelectForEvent:withCurrentSearchString:&quot;)]</div>


<div><span style="white-space:pre">                </span>bool TableViewshouldTypeSelectForEventwithCurrentSearchString (NSTableView tableView, NSEvent theEvent, string searchString );</div></div></blockquote><div><br></div></div><div>

-&gt; ShouldTypeSelect</div><div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldShowCellExpansionForTableColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>bool TableViewshouldShowCellExpansionForTableColumnrow (NSTableView tableView, NSTableColumn tableColumn, int row );</div></div></blockquote><div><br></div></div><div>-&gt; ShouldShowCellExpansion</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldTrackCell:forTableColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>bool TableViewshouldTrackCellforTableColumnrow (NSTableView tableView, NSCell cell, NSTableColumn tableColumn, int row </div></div></blockquote><div><br></div></div><div>-&gt; ShouldTrackCell</div>

<div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:dataCellForTableColumn:row:&quot;)]</div>


<div><span style="white-space:pre">                </span>NSCell TableViewdataCellForTableColumnrow (NSTableView tableView, NSTableColumn tableColumn, int row );</div></div></blockquote><div><br></div></div><div>-&gt; GetCell</div><div>

<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:isGroupRow:&quot;)]</div><div><span style="white-space:pre">                </span>bool TableViewisGroupRow (NSTableView tableView, int row );</div></div>


</blockquote><div><br></div></div><div>-&gt; IsGroupRow</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:sizeToFitWidthOfColumn:&quot;)]</div>


<div><span style="white-space:pre">                </span>float TableViewsizeToFitWidthOfColumn (NSTableView tableView, int column );</div></div></blockquote><div><br></div></div><div>-&gt; GetSizeToFitColumnWidth</div><div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:shouldReorderColumn:toColumn:&quot;)]</div><div><span style="white-space:pre">                </span>bool TableViewshouldReorderColumntoColumn (NSTableView tableView, int columnIndex, int newColumnIndex );</div>


</div></blockquote><div><br></div></div><div>-&gt; ShouldReorder</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableViewSelectionDidChange:&quot;)]</div>


<div><span style="white-space:pre">                </span>void TableViewSelectionDidChange (NSNotification notification);</div></div></blockquote><div><br></div></div><div>-&gt; SelectionDidChange</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;tableViewColumnDidMove:&quot;)]</div><div><span style="white-space:pre">                </span>void TableViewColumnDidMove (NSNotification notification);</div></div></blockquote>


<div><br></div></div><div>-&gt; ColumnDidMove</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableViewColumnDidResize:&quot;)]</div>


<div><span style="white-space:pre">                </span>void TableViewColumnDidResize (NSNotification notification);</div></div></blockquote><div><br></div></div><div>-&gt; ColumnDidResize </div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;tableViewSelectionIsChanging:&quot;)]</div><div><span style="white-space:pre">                </span>void TableViewSelectionIsChanging (NSNotification notification);</div>


</div></blockquote><div><br></div></div><div>-&gt; SelectionIsChanging</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">        </span>[BaseType (typeof (NSObject))]</div>


<div><span style="white-space:pre">        </span>[Model]</div>
<div><span style="white-space:pre">        </span>interface NSTableViewDataSource {</div><div><span style="white-space:pre">                </span>[Export (&quot;numberOfRowsInTableView:&quot;)]</div>
<div><span style="white-space:pre">                </span>int NumberOfRowsInTableView (NSTableView tableView);</div></div></blockquote><div><br></div></div><div>-&gt; GetRowCount</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:objectValueForTableColumn:row:&quot;)]</div>
<div><span style="white-space:pre">                </span>NSObject TableViewobjectValueForTableColumnrow (NSTableView tableView, NSTableColumn tableColumn, int row);</div></div></blockquote><div><br></div></div><div>-&gt; GetObjectValue</div>

<div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:setObjectValue:forTableColumn:row:&quot;)]</div>



<div><span style="white-space:pre">                </span>void TableViewsetObjectValueforTableColumnrow (NSTableView tableView, NSObject theObject, NSTableColumn tableColumn, </div></div></blockquote><div><br></div></div><div>-&gt; SetObjectValue</div>

<div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:sortDescriptorsDidChange:&quot;)]</div>



<div><span style="white-space:pre">                </span>void TableViewsortDescriptorsDidChange (NSTableView tableView, NSArray oldDescriptors );</div></div></blockquote><div><br></div></div><div>-&gt; SortDescriptorChanged</div><div>

<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:writeRowsWithIndexes:toPasteboard:&quot;)]</div>



<div><span style="white-space:pre">                </span>bool TableViewwriteRowsWithIndexestoPasteboard (NSTableView tableView, NSIndexSet rowIndexes, NSPasteboard pboard );</div></div></blockquote><div><br></div></div><div>-&gt; WriteRows </div>

<div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:validateDrop:proposedRow:proposedDropOperation:&quot;)]</div>



<div><span style="white-space:pre">                </span>NSDragOperation TableViewvalidateDropproposedRowproposedDropOperation (NSTableView tableView, NSDraggingInfo info, int row, NSTableViewDropOperation dropOperation);</div></div>


</blockquote><div><br></div></div><div>-&gt; ValidateDrop</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:acceptDrop:row:dropOperation:&quot;)]</div>


<div><span style="white-space:pre">                </span>bool TableViewacceptDroprowdropOperation (NSTableView tableView, NSDraggingInfo info, int row, NSTableViewDropOperation dropOperation);</div></div></blockquote><div><br></div></div>

<div>
-&gt; AcceptDrop</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:&quot;)]</div>


<div><span style="white-space:pre">                </span>NSArray TableViewnamesOfPromisedFilesDroppedAtDestinationforDraggedRowsWithIndexes (NSTableView tableView, NSUrl dropDestination, NSIndexSet indexSet );</div></div></blockquote>


<div><br></div></div><div>-&gt; FilesDropped</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">        </span>[BaseType (typeof (NSTextFieldCell))]</div>


<div><span style="white-space:pre">        </span>interface NSTableHeaderCell {</div>
<div><span style="white-space:pre">                </span>[Export (&quot;drawSortIndicatorWithFrame:inView:ascending:priority:&quot;)]</div><div><span style="white-space:pre">                </span>void DrawSortIndicatorWithFrameinViewascendingpriority (RectangleF cellFrame, NSView controlView, bool ascending, int priority );</div>


</div></blockquote><div><br></div></div><div>-&gt; DrawSortIndicator</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="white-space:pre">                </span>[Export (&quot;sortIndicatorRectForBounds:&quot;)]</div>


<div><span style="white-space:pre">                </span>RectangleF SortIndicatorRectForBounds (RectangleF theRect );</div></div></blockquote><div><br></div></div><div>GetSortIndicatorRect</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">        </span>[BaseType (typeof (NSView))]</div><div><span style="white-space:pre">        </span>interface NSTableHeaderView {</div><div><span style="white-space:pre">                </span>[Export (&quot;draggedColumn&quot;)]</div>



<div><span style="white-space:pre">                </span>int DraggedColumn ();</div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;draggedDistance&quot;)]</div><div>
<span style="white-space:pre">                </span>float DraggedDistance ();</div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;resizedColumn&quot;)]</div><div>
<span style="white-space:pre">                </span>int ResizedColumn ();</div></div></blockquote><div><br></div></div><div>Those three need to become read-only properties</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><span style="white-space:pre">                </span>[Export (&quot;headerRectOfColumn:&quot;)]</div><div>
<span style="white-space:pre">                </span>RectangleF HeaderRectOfColumn (int column);</div></div></blockquote><div><br></div></div><div>-&gt; GetHeaderRect</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><br></div><div><span style="white-space:pre">                </span>[Export (&quot;columnAtPoint:&quot;)]</div>
<div><span style="white-space:pre">                </span>int ColumnAtPoint (PointF point);</div></div></blockquote><div><br></div></div><div>-&gt; GetColumn  </div><div><span style="white-space:pre">        </span></div>
<div><br></div><font color="#888888"><div>Miguel.</div></font></div>
</blockquote></div><br></div></div></div></div>
<br>_______________________________________________<br>
Mono-osx mailing list<br>
<a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-osx" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-osx</a><br>
<br></blockquote></div><br></div>