/*
* Copyright (C) 2013-2015 RoboVM AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.robovm.apple.foundation;
/*<imports>*/
import java.io.*;
import java.nio.*;
import java.util.*;
import org.robovm.objc.*;
import org.robovm.objc.annotation.*;
import org.robovm.objc.block.*;
import org.robovm.rt.*;
import org.robovm.rt.annotation.*;
import org.robovm.rt.bro.*;
import org.robovm.rt.bro.annotation.*;
import org.robovm.rt.bro.ptr.*;
import org.robovm.apple.corefoundation.*;
import org.robovm.apple.uikit.*;
import org.robovm.apple.coretext.*;
import org.robovm.apple.coreanimation.*;
import org.robovm.apple.coredata.*;
import org.robovm.apple.coregraphics.*;
import org.robovm.apple.coremedia.*;
import org.robovm.apple.security.*;
import org.robovm.apple.dispatch.*;
/*</imports>*/
/*<javadoc>*/
/**
* @since Available in iOS 3.0 and later.
*/
/*</javadoc>*/
/*<annotations>*/@Library("Foundation") @NativeClass/*</annotations>*/
/*<visibility>*/public/*</visibility>*/ class /*<name>*/NSUndoManager/*</name>*/
extends /*<extends>*/NSObject/*</extends>*/
/*<implements>*//*</implements>*/ {
public static class Notifications {
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeCheckpoint(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(CheckpointNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeWillUndoChange(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(WillUndoChangeNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeWillRedoChange(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(WillRedoChangeNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeDidUndoChange(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(DidUndoChangeNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeDidRedoChange(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(DidRedoChangeNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeDidOpenUndoGroup(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(DidOpenUndoGroupNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
/**
* @since Available in iOS 3.0 and later.
*/
public static NSObject observeWillCloseUndoGroup(NSUndoManager object, final VoidBlock2<NSUndoManager, Boolean> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(WillCloseUndoGroupNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
boolean b = false;
NSDictionary<?, ?> data = a.getUserInfo();
if (data.containsKey(GroupIsDiscardableKey())) {
NSNumber val = (NSNumber)data.get(GroupIsDiscardableKey());
b = val.booleanValue();
}
block.invoke((NSUndoManager) a.getObject(), b);
}
});
}
/**
* @since Available in iOS 5.0 and later.
*/
public static NSObject observeDidCloseUndoGroup(NSUndoManager object, final VoidBlock1<NSUndoManager> block) {
return NSNotificationCenter.getDefaultCenter().addObserver(DidCloseUndoGroupNotification(), object, NSOperationQueue.getMainQueue(), new VoidBlock1<NSNotification>() {
@Override
public void invoke(NSNotification a) {
block.invoke((NSUndoManager) a.getObject());
}
});
}
}
/*<ptr>*/public static class NSUndoManagerPtr extends Ptr<NSUndoManager, NSUndoManagerPtr> {}/*</ptr>*/
/*<bind>*/static { ObjCRuntime.bind(NSUndoManager.class); }/*</bind>*/
/*<constants>*//*</constants>*/
/*<constructors>*/
public NSUndoManager() {}
protected NSUndoManager(SkipInit skipInit) { super(skipInit); }
/*</constructors>*/
public void setRunLoopModes(NSRunLoopMode...modes) {
List<String> list = new ArrayList<>();
for (NSRunLoopMode mode : modes) {
list.add(mode.value().toString());
}
setRunLoopModes(list);
}
/*<properties>*/
@Property(selector = "groupingLevel")
public native @MachineSizedSInt long getGroupingLevel();
@Property(selector = "isUndoRegistrationEnabled")
public native boolean isUndoRegistrationEnabled();
@Property(selector = "groupsByEvent")
public native boolean groupsByEvent();
@Property(selector = "setGroupsByEvent:")
public native void setGroupsByEvent(boolean v);
@Property(selector = "levelsOfUndo")
public native @MachineSizedUInt long getLevelsOfUndo();
@Property(selector = "setLevelsOfUndo:")
public native void setLevelsOfUndo(@MachineSizedUInt long v);
@Property(selector = "runLoopModes")
public native @org.robovm.rt.bro.annotation.Marshaler(NSArray.AsStringListMarshaler.class) List<String> getRunLoopModes();
@Property(selector = "setRunLoopModes:")
public native void setRunLoopModes(@org.robovm.rt.bro.annotation.Marshaler(NSArray.AsStringListMarshaler.class) List<String> v);
@Property(selector = "canUndo")
public native boolean canUndo();
@Property(selector = "canRedo")
public native boolean canRedo();
@Property(selector = "isUndoing")
public native boolean isUndoing();
@Property(selector = "isRedoing")
public native boolean isRedoing();
/**
* @since Available in iOS 5.0 and later.
*/
@Property(selector = "undoActionIsDiscardable")
public native boolean isUndoActionDiscardable();
/**
* @since Available in iOS 5.0 and later.
*/
@Property(selector = "redoActionIsDiscardable")
public native boolean isRedoActionDiscardable();
@Property(selector = "undoActionName")
public native String getUndoActionName();
@Property(selector = "redoActionName")
public native String getRedoActionName();
@Property(selector = "undoMenuItemTitle")
public native String getUndoMenuItemTitle();
@Property(selector = "redoMenuItemTitle")
public native String getRedoMenuItemTitle();
/*</properties>*/
/*<members>*//*</members>*/
/*<methods>*/
@GlobalValue(symbol="NSUndoCloseGroupingRunLoopOrdering", optional=true)
public static native @MachineSizedUInt long getCloseGroupingRunLoopOrdering();
/**
* @since Available in iOS 5.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerGroupIsDiscardableKey", optional=true)
protected static native NSString GroupIsDiscardableKey();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerCheckpointNotification", optional=true)
public static native NSString CheckpointNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerWillUndoChangeNotification", optional=true)
public static native NSString WillUndoChangeNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerWillRedoChangeNotification", optional=true)
public static native NSString WillRedoChangeNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerDidUndoChangeNotification", optional=true)
public static native NSString DidUndoChangeNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerDidRedoChangeNotification", optional=true)
public static native NSString DidRedoChangeNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerDidOpenUndoGroupNotification", optional=true)
public static native NSString DidOpenUndoGroupNotification();
/**
* @since Available in iOS 3.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerWillCloseUndoGroupNotification", optional=true)
public static native NSString WillCloseUndoGroupNotification();
/**
* @since Available in iOS 5.0 and later.
*/
@GlobalValue(symbol="NSUndoManagerDidCloseUndoGroupNotification", optional=true)
public static native NSString DidCloseUndoGroupNotification();
@Method(selector = "beginUndoGrouping")
public native void beginUndoGrouping();
@Method(selector = "endUndoGrouping")
public native void endUndoGrouping();
@Method(selector = "disableUndoRegistration")
public native void disableUndoRegistration();
@Method(selector = "enableUndoRegistration")
public native void enableUndoRegistration();
@Method(selector = "undo")
public native void undo();
@Method(selector = "redo")
public native void redo();
@Method(selector = "undoNestedGroup")
public native void undoNestedGroup();
@Method(selector = "removeAllActions")
public native void removeAllActions();
@Method(selector = "removeAllActionsWithTarget:")
public native void removeAllActions(NSObject target);
@Method(selector = "registerUndoWithTarget:selector:object:")
public native void registerUndo(NSObject target, Selector selector, NSObject anObject);
@Method(selector = "prepareWithInvocationTarget:")
public native NSObject prepareWithInvocation(NSObject target);
/**
* @since Available in iOS 9.0 and later.
*/
@Method(selector = "registerUndoWithTarget:handler:")
public native void registerUndo(NSObject target, @Block VoidBlock1<NSObject> undoHandler);
/**
* @since Available in iOS 5.0 and later.
*/
@Method(selector = "setActionIsDiscardable:")
public native void setActionIsDiscardable(boolean discardable);
@Method(selector = "setActionName:")
public native void setActionName(String actionName);
@Method(selector = "undoMenuTitleForUndoActionName:")
public native String getUndoMenuTitle(String actionName);
@Method(selector = "redoMenuTitleForUndoActionName:")
public native String getRedoMenuTitle(String actionName);
/*</methods>*/
}