This section talks specifically about Java Swing:<br><br><a href="http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/04-JavaUIToolkits/JavaUIToolkits.html">http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/04-JavaUIToolkits/JavaUIToolkits.html</a><br>
<br>Referencing JMenuBar, JTabbedPane, JComboBox, and other GUI controls.<br><br>Expecting every single application developer to rewrite the entire GUI would be a huge waste of effort.  If we have 10,000 people write applications that use Mono GTK#, they should not all write two copies of their GUI&#39;s.  The GUI framework (such as Java Swing, or Mono GTK#, or Qt, etc) should do the 99% of it that is possible (such as the look and feel for Aqua)...  Then the application developers who use the GUI API would only have to do the last 1% that is application-specific (such as  application-specific menu bar / application bar, application-specific app bundle config).  Unless I am completely confused, I think Apple&#39;s &quot;Java Development Guide for Mac OS X&quot; clearly agrees?<br>
<br>Java Swing does the Aqua interface look and feel for you.  This is the responsibility of Mono GTK#, so that every single application developer that wants to use Mono GTK# does not have to reinvent the wheel.  Right?<br>
<br>thank you for the discussion on this<br><br><div class="gmail_quote">On Sun, Apr 4, 2010 at 4:41 PM, Elfen <span dir="ltr">&lt;<a href="mailto:pem.accounts.spam@gmail.com">pem.accounts.spam@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">HIG from Apple for Java found here (Mac OS X Integration for Java) (it seems like these goals should be similar for Mono too):<br>
<br><a href="http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/00-Intro/JavaDevelopment.html#//apple_ref/doc/uid/TP40001911" target="_blank">http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/00-Intro/JavaDevelopment.html#//apple_ref/doc/uid/TP40001911</a><br>

<br>For example, it says:<br>By default, Swing applications in Mac OS X use the Aqua look and feel 
(LAF).<br><br>For example, it says:<br>Listing 5  Setting JScrollBar  policies to be more like those of Aqua<br>JScrollPane jsp = new JScrollPane();<br>jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);<br>

jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);<br><br>So it doesn&#39;t say &quot;rewrite your entire GUI just for Mac OS X&quot;, and it does say &quot;use the JScrollBar&quot; (Mono&#39;s equivalent of GTK# would be Java Swing - right?).<br>

<br>I didn&#39;t see anything about Interface Builder, or rewriting your entire GUI, in Apple&#39;s (Mac OS X Integration for Java) doc?<br><br>I realize that I may be confused...  But isn&#39;t your suggestion both (impractical / an unreasonable amount of extra work) and (a violation of Apple&#39;s &quot;Mac OS X Integration for Java&quot; guidelines)?<br>

<br>I hope my comments do not sound adversarial...  I am just having trouble understanding how (rewrite the entire GUI using Interface Builder) is consistent with Apple&#39;s &quot;Mac OS X Integration for Java&quot; doc?<br>

<br>thank you<div><div></div><div class="h5"><br><br><div class="gmail_quote">On Sun, Apr 4, 2010 at 4:52 AM, Joanna Carter <span dir="ltr">&lt;<a href="mailto:cocoasharp@carterconsulting.org.uk" target="_blank">cocoasharp@carterconsulting.org.uk</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Elfen<br>
<div><br>
&gt; So you&#39;re saying I should have something like: if platform is windows or linux then use winforms, else if platform is mac os x then use interface builder?  I think the correct thing to do for cross-platform development is only use platform conditional on the minimum amount of code.  Yes I am asking about System.Windows.Forms.  For example, it sounds like you are saying:<br>


&gt;<br>
&gt; if (platform is windows or linux )<br>
&gt; {<br>
&gt; this.menuItem_File = new System.Windows.Forms.ToolStripMenuItem();<br>
&gt; this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();<br>
&gt; }<br>
&gt; else if (platform is mac os x)<br>
&gt; {<br>
&gt; do some crazy interface builder stuff<br>
&gt; }<br>
&gt;<br>
&gt; Btw, I was hoping for some kind of simple tutorial / doc...  Since I would expect this to be an extremely common thing.  Any application that follows Mac OS X interface guidelines will use the menu bar, rather than the Windows/Linux per-window menu style.<br>


<br>
</div>See my other reply. Cross-platform apps are not something that can be created without a lot of effort, especially if you ever expect MAc users to accept them. Neither Winforms nor GTK UIs are acceptable in the OS X Aqua world.<br>


<br>
Fortunately, Apple have used the MVC design pattern to separate UI design from the business model, thus allowing you to use Mono to create the &quot;backend&quot; code, whilst using the Monobjc bridge to talk to UIs created in Interface Builder. Of course, you will also have to adhere to the same separation of concerns when creating the Winforms and GTK versions.<br>


<div><br>
&gt; I think you are from the context. Joanna has skipped a step in replying if so. Winforms is not the &quot;way to go&quot; and you would have a more Mac alike experience using one of the Cocoa wrappers and Interface Builder. Yes, you will not get straight reuse, but you will otherwise be fitting a square peg into a round hole.<br>


<br>
</div>Matt, see my reply, written whilst you were composing your reply :-)<br>
<div><div></div><div><br>
Joanna<br>
<br>
--<br>
Joanna Carter<br>
Carter Consulting<br>
<br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>