Create a complex custom nstextfieldcell - objective-c

I'm trying to create a custom NSTextFieldCell for a NSTableView. I want to do something like the email listing provided by Mail (example below).
I found some references here and here, but I'm not able to evolve.
I think that it's not as simple as a multiline text. I think the cell should have predefined places, like the timestamp on the upper right corner, the attchment icon, etc... This "placeholders" should be always at the same place, regardless the text size. I'm thinking about embeeded objects.
Please, could you help me? An example or sample code is very welcome.
EDIT: I'm looking for a MAC OS X Lion (10.7.x) solution.

Based on Monolo comment, I googled view-based table view. I found this excellent tutorial and followed it and I succeeded.
I also found this OS X Developer Library document regarding view-based programming guide. Very good too.

Related

Searchbar in ios 8?

I've seen much of the apple documentation, many examples, and some github projects.
http://www.raywenderlich.com/16873/how-to-add-search-into-a-table-view
and
http://www.appcoda.com/search-bar-tutorial-ios7/
are ios 7 only.
https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html
is confusing with a lot of unnecessary clutter complicating it.
http://www.raywenderlich.com/76519/add-table-view-search-swift is for swift only, but seems to be exactly what I need if it someone could translate it to objective c.
I don't get it at all.
If someone could just tell me step by step the differences, or maybe a simple breakdown, that would help.
It seemed to be a lot easier in ios 7, why did they change it?
Even when I drag a search bar controller in the storyboard editor, and link it to my header, the default property and name is uisearchdisplaycontroller which is deprecated.
I also have another question that can't easily be googled:
If I have a table view, it's easy to know what was selected.
But when I select or edit the search results,
how do I know what to do to the table view array, if the index paths will be different?

Image processing - How detect array similar colors from a image on ios

I want to create a area of similar colors when user touches into a point on imageview. Who knows library or technique to resolve problems for ios.
Original image link:
http://cannshine.com/images/1.jpg
After touched by user, link:
http://cannshine.com/images/2.jpg
Please helping, thanks!
It looks to me like you want to create a magic wand tool, correct? I can't help you come up with a way to handle this and I don't know of any libraries that can select a group of like-colored pixels based on tolerance, but there is this article here I found. It covers implementing a magic wand tool using Objective-C. I found it in the answer to this similar question on SO.

How to display multiple images in Cocoa for OSX?

What I'm trying to achieve sounds pretty simple: regular simple window with a text field, view ,and a button.
In the field I'm placing the number (32 for example) and after I hit the button my view should be filled with 32 images. Don't really know how to accomplish this since I'm pretty new to Cocoa development.
So far I was just able to hardcode three NSViews and display 3 images at a time...which is not really what I want. So if anyone have any thoughts or hints I would totally appreciate it!
Thank you
You can use IKImageBrowserView. Take a look at ImageBrowser sample code.

NSMenuItem with Image and text

I have a question regarding NSMenuItems.
What I'm trying to do is replicate a java GUI using native OS X components, therefore the language I am using is Cocoa. What I am trying to do is to get every menu item to have an image and then, beside it, some text.
I have already done some research into it and my first port of call (as always it seems lol) was the apple docs which had this handy example which illustrates how to embed views inside menuitems:
https://developer.apple.com/library/mac/#samplecode/MenuItemView/Listings/MyWindowController_m.html#//apple_ref/doc/uid/DTS10004136-MyWindowController_m-DontLinkElementID_8
Being relatively new to cocoa, I was thinking I would have to override one of the drawing methods from NSMenuItem. Not really sure though.
Another idea that I was toying with was creating a custom view that held a image and some text.
Any other ideas/validation or discussion would be most appreciated.
Thanks all!
Oh and the GUI creation is being done by hand no interface builder.
Okay, so I now have menu items with icons beside them. For anyone who is interested here it is ( i've not done a leak analysis on it or anything).
First things first, put all of the images you want into the "Resources" folder (thats what its called in xcode 3.1.4).
Now, for example, after we have all the images, we want to use images called "eraser.png" and "eraser_on.png" and I want to attach these to the 3rd menu item. In order to achieve this we do the following :
The code below will get the menu item at position 3 in the menu
NSMenuItem *item = [ nameOfPopUpButton itemAtIndex:2];
The code below will set the image for the menu item to be "eraser.png"
[ item setImage: [ NSImage imageNamed:#"eraser"] ];
That's you set the image for the menu item (which will be on the left hand side of the text aka before the text).
If you want different images for the different states, eg when the user presses it, use this method (not tested myself but its sounds sensible :D and the function is straight out the api)
[item setOnStateImage: [ NSImage imageNamed:#"eraser_on" ] ]
You can however leave it nil or not set it at all and it will go the default color
Hope this helps someone.
Pieced this together from: https://developer.apple.com/library/mac/#samplecode/MenuMadness/Listings/Controller_m.html#//apple_ref/doc/uid/DTS40008870-Controller_m-DontLinkElementID_4
Thanks :)
If you need to do this you have the right idea in creating a view with image and label subviews.
BUT: don't do this. Creating a "native" application is not primarily about your choice of language (which is Objective-C, btw, not Cocoa; the latter is a collection of development frameworks implemented in Objective-C). It's about conforming to the platform.
On OS X (and iOS), more than probably any other platform, consistency in UI design is paramount. Users know when an application looks strange, and having icons next to each menu item (something I certainly have seen in Java apps) is definitely strange and unnatural on OS X. Users will be irritated at best, confused at worst.
So my advice is to either follow the Human Interface Guidelines (and save yourself a lot of work as a nice side effect) or just stick with your existing Java application.
If you want to provide quick iconic access to common functions, the recommended approach on OS X is to use a toolbar.

Cocoa: How to morph a drag image while dragging

In Interface Builder.app (and some other cocoa apps), image dragging has a very nice/sexy effect of morphing the drag image while you drag a draggable item out of its window.
For example in Interface Buildler.app:
Show the Library Palette (⇧⌘L, or Tools Menu -> Library)
Drag an item out of the Library palette
NOTE: as you drag the item out of the Library Palette window, it morphs from an image of the original list item to an image of the icon of the dragged item.
I have fully implemented drag and drop in my Application using the normal Cocoa NSDragSource/NSDragDestination facilities.
However, I can't find a hook for doing this image morph while dragging. I'm returning the initial drag image by overriding
-[NSView dragImage:at:offset:event:pasteboard:source:slideBack:]
But this is only called at the beginning of the drag.
How do you signal that you would like to replace the current drag image (ideally using the sexy morph effect).
You guys beat me to it. :-)
Yes, JLNDragEffectManager is open source (with attribution in your apps, please) and available on my blog. It should work fine as-is with no modification back to 10.5, but I'm not sure back any further. Others linked to it (and it's easily googleable), so to avoid self-congratulatory blog linking, I'll leave it at that.
Issues: One developer commented on (and submitted code to fix) the lack of dragging offset support. I've just not gotten around to posting the update. That's the only outstanding issue I'm aware of.
Improvements: I'd like to add multiple "zones" (say, one per document, so dragging from doc to doc keeps table rows looking like table rows, but anywhere outside doc windows turns them into a file icon a la HFS Promise Drag). Some day ...
Design: The post itself details the reasoning behind the design and the relatively simple morphing effect (cross-fade plus size are animated using basic NSAnimation, etc.). The code (the class as well as the demo app) is thoroughly blocked out and commented.
Won't link to my own post but would love the karma of upvotes for my effort. ;-)
UPDATE: Similar (but better-integrated) functionality is available as of 10.7. If you are targeting 10.7 or higher, it's best to use the new API. JLNDragEffectManager works fine on 10.7, so it can be used for earlier-targeted versions.
JNLDragEffectManager does exactly that. :)
The API does not support this well. Joshua Nozzi gives a method that looks reasonable in this weblog post.
IB's effect isn't that fancy. It's a crossfade and scale. Hold down shift to see it more clearly.
As of 10.7+ the current approach is to use the
enumerateDraggingItemsWithOptions:
forView:
classes:
searchOptions:
usingBlock:
API on NSDraggingInfo. The documentation is really poor but the ADC samples like MultiPhotoFrame or TableViewPlayground can give a good idea on how to use the new mechanism.