summaryrefslogtreecommitdiffstats
path: root/src/com/android/mail/browse/InlineAttachmentViewIntentBuilderCreatorHolder.java
blob: eba609da44fc0ac1c5e1c387a1478cd6ccd1ad67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
 * Copyright (C) 2013 Google Inc.
 * Licensed to The Android Open Source Project.
 *
 * 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 com.android.mail.browse;

/**
 * Holds an {@link InlineAttachmentViewIntentBuilderCreator} that is used to create
 * {@link InlineAttachmentViewIntentBuilder}s for the conversation views. <p/>
 *
 * Unfortunately, this pattern requires three layers. The holder (the top layer) is created at
 * application start and should have its creator set in the {@link android.app.Application}
 * so that each app has a creator that provides app-specific functionality.
 * Typically, that functionality is creating a different type of
 * {@link InlineAttachmentViewIntentBuilder} to do app-specific work. <p/>
 *
 * The middle layer is the {@link InlineAttachmentViewIntentBuilderCreator}. Only one of
 * these exist and is created at {@link android.app.Application} start time (usually
 * in a static block). During conversation view setup, this is used to create
 * an {@link InlineAttachmentViewIntentBuilder}. The creation needs to be done at this
 * time so that each conversation view can have its own builder that is passed
 * conversation-specific data at builder creation time. <p/>
 *
 * The bottom layer is the {@link InlineAttachmentViewIntentBuilder}. This builder
 * is passed into a {@link com.android.mail.browse.WebViewContextMenu} and used
 * when an image is long-pressed to determine whether "View image" should be a menu
 * option and what intent should fire when "View image" is selected.
 */
public class InlineAttachmentViewIntentBuilderCreatorHolder {
    private static InlineAttachmentViewIntentBuilderCreator sCreator;

    public static void setInlineAttachmentViewIntentCreator(
            InlineAttachmentViewIntentBuilderCreator creator) {
        sCreator = creator;
    }

    public static InlineAttachmentViewIntentBuilderCreator getInlineAttachmentViewIntentCreator() {
        return sCreator;
    }
}