1731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be 3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file. 4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_TAB_CONTENTS_PREVIEWABLE_CONTENTS_CONTROLLER_H_ 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define CHROME_BROWSER_UI_COCOA_TAB_CONTENTS_PREVIEWABLE_CONTENTS_CONTROLLER_H_ 7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#pragma once 8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#import <Cocoa/Cocoa.h> 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass TabContents; 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// PreviewableContentsController manages the display of up to two tab contents 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// views. It is primarily for use with Instant results. This class supports 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// the notion of an "active" view vs. a "preview" tab contents view. 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// The "active" view is a container view that can be retrieved using 18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// |-activeContainer|. Its contents are meant to be managed by an external 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// class. 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// The "preview" can be set using |-showPreview:| and |-hidePreview|. When a 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// preview is set, the active view is hidden (but stays in the view hierarchy). 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// When the preview is removed, the active view is reshown. 24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick@interface PreviewableContentsController : NSViewController { 25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick @private 26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Container view for the "active" contents. 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick IBOutlet NSView* activeContainer_; 28731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // The preview TabContents. Will be NULL if no preview is currently showing. 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick TabContents* previewContents_; // weak 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick@property(readonly, nonatomic) NSView* activeContainer; 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Sets the current preview and installs its TabContentsView into the view 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// hierarchy. Hides the active view. |preview| must not be NULL. 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick- (void)showPreview:(TabContents*)preview; 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Closes the current preview and shows the active view. 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick- (void)hidePreview; 41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Returns YES if the preview contents is currently showing. 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick- (BOOL)isShowingPreview; 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick@end 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // CHROME_BROWSER_UI_COCOA_TAB_CONTENTS_PREVIEWABLE_CONTENTS_CONTROLLER_H_ 48