1 /* 2 * Copyright (C) 2013 Google Inc. 3 * Licensed to The Android Open Source Project. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package com.android.mail.browse; 19 20 /** 21 * Holds an {@link InlineAttachmentViewIntentBuilderCreator} that is used to create 22 * {@link InlineAttachmentViewIntentBuilder}s for the conversation views. <p/> 23 * 24 * Unfortunately, this pattern requires three layers. The holder (the top layer) is created at 25 * application start and should have its creator set in the {@link android.app.Application} 26 * so that each app has a creator that provides app-specific functionality. 27 * Typically, that functionality is creating a different type of 28 * {@link InlineAttachmentViewIntentBuilder} to do app-specific work. <p/> 29 * 30 * The middle layer is the {@link InlineAttachmentViewIntentBuilderCreator}. Only one of 31 * these exist and is created at {@link android.app.Application} start time (usually 32 * in a static block). During conversation view setup, this is used to create 33 * an {@link InlineAttachmentViewIntentBuilder}. The creation needs to be done at this 34 * time so that each conversation view can have its own builder that is passed 35 * conversation-specific data at builder creation time. <p/> 36 * 37 * The bottom layer is the {@link InlineAttachmentViewIntentBuilder}. This builder 38 * is passed into a {@link com.android.mail.browse.WebViewContextMenu} and used 39 * when an image is long-pressed to determine whether "View image" should be a menu 40 * option and what intent should fire when "View image" is selected. 41 */ 42 public class InlineAttachmentViewIntentBuilderCreatorHolder { 43 private static InlineAttachmentViewIntentBuilderCreator sCreator; 44 setInlineAttachmentViewIntentCreator( InlineAttachmentViewIntentBuilderCreator creator)45 public static void setInlineAttachmentViewIntentCreator( 46 InlineAttachmentViewIntentBuilderCreator creator) { 47 sCreator = creator; 48 } 49 getInlineAttachmentViewIntentCreator()50 public static InlineAttachmentViewIntentBuilderCreator getInlineAttachmentViewIntentCreator() { 51 return sCreator; 52 } 53 } 54