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