@Override public Selector getDefaultAction() { return Foundation.selector("menuItemClicked:"); } }
/** * Create a Java NSClass representing the Objective-C class with ocClassName */ public static <T extends ObjCClass> T createClass(String ocClassName, Class<T> type) { return wrap(Foundation.getClass(ocClassName), type, false); }
private Object sendOnThisOrMainThread(Method method, final ID id, final String selectorName, final Class<?> returnType, final Object... args) { if (callAcrossToMainThreadFor(method)) { return Foundation.callOnMainThread( new Callable<Object>() { public Object call() { return Foundation.send(id, selectorName, returnType, args); }}); } else { return Foundation.send(id, selectorName, returnType, args); } }
private void release() { if (ocInstance.isNull()) return; if (logging.isTraceEnabled()) { int retainCount = Foundation.cfGetRetainCount(ocInstance); logging.trace("finalizing [{} {}], releasing with retain count = {}", new Object[] {javaClassName, ocInstance, retainCount}); } Foundation.cfRelease(ocInstance); }
private static <T extends ObjCObject> T create(String ocClassName, Class<T> javaClass, String ocFactoryName, boolean retain, Object... args) { if (logging.isTraceEnabled()) { logging.trace("creating [{} ({})].{}({})", new Object[] {ocClassName, javaClass.getName(), ocFactoryName, new VarArgsUnpacker(args)}); } ID ocClass = Foundation.getClass(ocClassName); ID ocInstance = Foundation.send(ocClass, ocFactoryName, ID.class, args); int initialRetainCount = Foundation.cfGetRetainCount(ocInstance); T result = wrap(ocInstance, javaClass, retain); checkRetainCount(ocInstance, retain ? initialRetainCount + 1 : initialRetainCount); return result; }
public ObjCObjectInvocationHandler(final ID ocInstance, Class<? extends ObjCObject> javaClass, boolean retain) { this.ocInstance = ocInstance; javaClassName = javaClass.getSimpleName(); invokeAllMethodsOnMainThread = shouldInvokeMethodsOnMainThread(javaClass); releaseOnFinalize = shouldReleaseInFinalize(javaClass); if (logging.isTraceEnabled()) { int retainCount = Foundation.cfGetRetainCount(ocInstance); logging.trace("Creating NSObjectInvocationHandler for id {}, javaclass {}. retain = {}, retainCount = {}", new Object[] {ocInstance, javaClass, retain, retainCount}); } if (ocInstance.isNull()) { throw new NullPointerException(); } if (retain) { if (callAcrossToMainThread()) { Foundation.runOnMainThread(new Runnable() { public void run() { Foundation.cfRetain(ocInstance); }}); } else { Foundation.cfRetain(ocInstance); } } }
@Override public String toString() { return Foundation.toString(this.id()); }
public void invoke(final Runnable runnable, final Object lock, final boolean wait) { if(NSThread.isMainThread()) { if(log.isDebugEnabled()) { log.debug(String.format("Already on main thread. Invoke %s directly.", runnable)); } runnable.run(); return; } synchronized(lock) { if(log.isTraceEnabled()) { log.trace(String.format("Invoke runnable %s on main thread", runnable)); } try { //Defer to main thread Foundation.runOnMainThread(runnable, wait); } catch(Exception e) { log.error(String.format("Exception %s running task on main thread", e.getMessage()), e); } } } }
public QTMovieView create() { return Foundation.callOnMainThread(new Callable<QTMovieView>() { public QTMovieView call() throws Exception { return Rococoa.create("QTMovieView", QTMovieView.class); //$NON-NLS-1$ }}); } }
private static void checkRetainCount(ID ocInstance, int expected) { int retainCount = Foundation.cfGetRetainCount(ocInstance); if (retainCount != expected) throw new IllegalStateException("Created an object which had a retain count of " + retainCount + " not " + expected); }
@Override public String toString() { return Foundation.toString(id()); }
@Override protected void finalize() throws Throwable { if (finalized || !releaseOnFinalize) return; try { if (callAcrossToMainThread()) { Foundation.runOnMainThread(new Runnable() { public void run() { release(); }}); } else { AutoreleaseBatcher autoreleaseBatcher = AutoreleaseBatcher.forThread(FINALIZE_AUTORELEASE_BATCH_SIZE); release(); autoreleaseBatcher.operate(); } super.finalize(); } finally { finalized = true; } }
@Override public Selector action() { return Foundation.selector("reloadButtonClicked:"); } },
public _Class call() throws Exception { return Rococoa.wrap(Foundation.getClass("QTMovie"), _Class.class); //$NON-NLS-1$ } });
public String fromNative(Object nativeValue, FromNativeContext context) { Number nativeValueAsNumber = (Number) nativeValue; if (nativeValueAsNumber == null) return null; ID id = ID.fromLong(nativeValueAsNumber.longValue()); if (id.isNull()) return null; return Foundation.toString(id); }
@Override public Selector action() { return Foundation.selector("openBrowserButtonClicked:"); } },
@Override public void tableView_willDisplayCell_forTableColumn_row(final NSTableView view, final NSTextFieldCell cell, final NSTableColumn tableColumn, final NSInteger row) { final Path file = browserListModel.get(BrowserController.this.workdir()).get(row.intValue()); if(cell.isKindOfClass(Foundation.getClass(NSTextFieldCell.class.getSimpleName()))) { if(!BrowserController.this.isConnected() || !SearchFilterFactory.HIDDEN_FILTER.accept(file)) { cell.setTextColor(NSColor.disabledControlTextColor()); } else { cell.setTextColor(NSColor.controlTextColor()); } } }
@Override public Object readFrom(Memory buffer, Class<?> type) { ID id = ID.fromLong(buffer.getNativeLong(0).longValue()); if (id.isNull()) return null; return Foundation.toString(id); } @Override public Memory bufferForResult(Object methodCallResult) {
@Override public Selector action() { return Foundation.selector("archiveButtonClicked:"); } },