13aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn/*
23aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * Copyright (C) 2013 The Android Open Source Project
33aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn *
43aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
53aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * you may not use this file except in compliance with the License.
63aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * You may obtain a copy of the License at
73aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn *
83aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
93aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn *
103aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * Unless required by applicable law or agreed to in writing, software
113aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
123aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * See the License for the specific language governing permissions and
143aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * limitations under the License.
153aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn */
163aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
173aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackbornpackage android.content;
183aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
193aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn/**
203aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn * Representation of an owner of {@link UndoOperation} objects in an {@link UndoManager}.
21b811e64cb325c8b9c46a2e8e97ef1aa86ac8664bDianne Hackborn *
22b811e64cb325c8b9c46a2e8e97ef1aa86ac8664bDianne Hackborn * @hide
233aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn */
243aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackbornpublic class UndoOwner {
253aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    final String mTag;
26f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook    final UndoManager mManager;
273aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
283aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    Object mData;
293aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    int mOpCount;
303aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
313aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    // For saving/restoring state.
323aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    int mStateSeq;
333aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    int mSavedIdx;
343aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
35f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook    UndoOwner(String tag, UndoManager manager) {
36f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook        if (tag == null) {
37f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook            throw new NullPointerException("tag can't be null");
38f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook        }
39f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook        if (manager == null) {
40f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook            throw new NullPointerException("manager can't be null");
41f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook        }
423aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn        mTag = tag;
43f59152cf00520d1bd36949b44faca2e1fcf6d28fJames Cook        mManager = manager;
443aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    }
453aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
463aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    /**
473aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * Return the unique tag name identifying this owner.  This is the tag
483aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * supplied to {@link UndoManager#getOwner(String, Object) UndoManager.getOwner}
493aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * and is immutable.
503aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     */
513aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    public String getTag() {
523aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn        return mTag;
533aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    }
543aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn
553aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    /**
563aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * Return the actual data object of the owner.  This is the data object
573aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * supplied to {@link UndoManager#getOwner(String, Object) UndoManager.getOwner}.  An
583aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * owner may have a null data if it was restored from a previously saved state with
593aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     * no getOwner call to associate it with its data.
603aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn     */
613aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    public Object getData() {
623aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn        return mData;
633aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn    }
64f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook
65f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook    @Override
66f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook    public String toString() {
67f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook        return "UndoOwner:[mTag=" + mTag +
68f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mManager=" + mManager +
69f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mData=" + mData +
70f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mData=" + mData +
71f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mOpCount=" + mOpCount +
72f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mStateSeq=" + mStateSeq +
73f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook                " mSavedIdx=" + mSavedIdx + "]";
74f143ace3aa80227b7612c0a9428b2de996c4920aJames Cook    }
753aa49b6fece334ace7525d42c1f6d0b7cdc1fbfbDianne Hackborn}
76