summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/previewable_contents_controller.h
blob: 9b9b7756a723f5af77fc240a408dd466677b7c34 (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) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_COCOA_PREVIEWABLE_CONTENTS_CONTROLLER_H_
#define CHROME_BROWSER_COCOA_PREVIEWABLE_CONTENTS_CONTROLLER_H_
#pragma once

#import <Cocoa/Cocoa.h>

class TabContents;

// PreviewableContentsController manages the display of up to two tab contents
// views.  It is primarily for use with Instant results.  This class supports
// the notion of an "active" view vs. a "preview" tab contents view.
//
// The "active" view is a container view that can be retrieved using
// |-activeContainer|.  Its contents are meant to be managed by an external
// class.
//
// The "preview" can be set using |-showPreview:| and |-hidePreview|.  When a
// preview is set, the active view is hidden (but stays in the view hierarchy).
// When the preview is removed, the active view is reshown.
@interface PreviewableContentsController : NSViewController {
 @private
  // Container view for the "active" contents.
  IBOutlet NSView* activeContainer_;

  // The close preview button.
  IBOutlet NSButton* closeButton_;

  // The preview TabContents.  Will be NULL if no preview is currently showing.
  TabContents* previewContents_;  // weak
}

@property(readonly, nonatomic) NSView* activeContainer;

// Sets the current preview and installs its TabContentsView into the view
// hierarchy.  Hides the active view.  |preview| must not be NULL.
- (void)showPreview:(TabContents*)preview;

// Closes the current preview and shows the active view.
- (void)hidePreview;

// Returns YES if the preview contents is currently showing.
- (BOOL)isShowingPreview;

// Simply calls |-hidePreview|.  Convenience method for use by the close button.
- (IBAction)closePreview:(id)sender;

@end

#endif  // CHROME_BROWSER_COCOA_PREVIEWABLE_CONTENTS_CONTROLLER_H_