i need develop native cocoa (Objective-C) frontend for some C command line tool.
This tool should be run from cocoa app and will wait input in stdin. It accepts two command: "exit" and "update"
Exit will terminate app and update will return some xml in stdout.
I need cocoa frontend to show xml data in presentation shown in uploaded picture.
Top part contains list of top level objects and selecting row in table view should change details view in right pane.
Bottom part contains tab view with few tabs for each kind of nested to top objects. It behaves like top part and selecting one of nested object should show details in right part of tab view page.
Also important moment there is one objects tree for whole application instance, i.e. "New Window" should open new same window showing same data.
I'll provide emulator project which behaves like real command line tool providing some fake data. It ships static data but real tool will update xml tree, so i need update info and add/remove objects corresponding with new xml. Following is data provided by emulator:
<someinfo>
<topdatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1">
<nestedonedatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedtwodatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="2" />
<nestedtwodatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="1" />
<nestedtwodatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="3" />
<nestedtwodatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="4" />
<nestedthreedatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="5" />
<nestedthreedatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="7" />
<nestedthreedatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="11" />
<nestedthreedatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="2" />
</topdatablock>
<topdatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1">
<nestedonedatablock id="5" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="6" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="7" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="8" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedtwodatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="2" />
<nestedtwodatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="1" />
<nestedtwodatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="3" />
<nestedtwodatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="4" />
<nestedthreedatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="4" />
<nestedthreedatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="1" />
<nestedthreedatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="2" />
<nestedthreedatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="15" />
</topdatablock>
<topdatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1">
<nestedonedatablock id="9" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="10" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="11" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="12" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedtwodatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="2" />
<nestedtwodatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="1" />
<nestedtwodatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="3" />
<nestedtwodatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="4" />
<nestedthreedatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="5" />
<nestedthreedatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="16" />
<nestedthreedatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="7" />
<nestedthreedatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="6" />
</topdatablock>
<topdatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1">
<nestedonedatablock id="13" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="14" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="15" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedonedatablock id="16" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" />
<nestedtwodatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="2" />
<nestedtwodatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="1" />
<nestedtwodatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="3" />
<nestedtwodatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" topreference="4" />
<nestedthreedatablock id="1" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="3" />
<nestedthreedatablock id="2" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="8" />
<nestedthreedatablock id="3" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="11" />
<nestedthreedatablock id="4" fieldone="fieldone 1" fieldtwo="fieldtwo 1" fieldthree="fieldthree 1" nestedonereference="12" />
</topdatablock>
</someinfo>
Draw attention to "topreference" attributes in "nestedtwodatablock" node and "nestedonereference" in "nestedthreedatablock". THis data contains references to particular xml nodes identifying by id. Clicking on data in these columns (as in detail view pane) should select referenced object in corresponding table view.
Also it should have menu item "New Window" which allows open new window and show same information (note: it should use single instance of command line tool and should show same data in all open windows). Also it should have "Save" and "Print" (as in menu as in toolbar). Both these commands should generate some HTML (any which you like - i will change it myself later)