| Index: chrome/browser/cocoa/translate/translate_infobar_base.h
|
| diff --git a/chrome/browser/cocoa/translate/translate_infobar_base.h b/chrome/browser/cocoa/translate/translate_infobar_base.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e475be98444c05b5eade84f4017b21f6bdf78e20
|
| --- /dev/null
|
| +++ b/chrome/browser/cocoa/translate/translate_infobar_base.h
|
| @@ -0,0 +1,143 @@
|
| +// 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_TRANSLATE_INFOBAR_BASE_H_
|
| +#define CHROME_BROWSER_COCOA_TRANSLATE_INFOBAR_BASE_H_
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +#import "chrome/browser/cocoa/infobar_controller.h"
|
| +
|
| +#import "base/cocoa_protocols_mac.h"
|
| +#import "base/scoped_nsobject.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "chrome/browser/translate/languages_menu_model2.h"
|
| +#include "chrome/browser/translate/options_menu_model2.h"
|
| +#include "chrome/browser/translate/translate_infobar_delegate2.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| +#include "chrome/common/translate_errors.h"
|
| +
|
| +class TranslateInfoBarMenuModel;
|
| +
|
| +#pragma mark TranslateInfoBarUtilities helper functions.
|
| +namespace TranslateInfoBarUtilities {
|
| +
|
| +// Move the |toMove| view |spacing| pixels before/after the |anchor| view.
|
| +// |after| signifies the side of |anchor| on which to place |toMove|.
|
| +void MoveControl(NSView* anchor, NSView* toMove, int spacing, bool after);
|
| +
|
| +// Vertically center |toMove| in its container.
|
| +void VerticallyCenterView(NSView *toMove);
|
| +// Check that the control |before| is ordered visually before the |after|
|
| +// control.
|
| +// Also, check that there is space between them.
|
| +bool VerifyControlOrderAndSpacing(id before, id after);
|
| +
|
| +// Creates a label control in the style we need for the translate infobar's
|
| +// labels within |bounds|.
|
| +NSTextField* CreateLabel(NSRect bounds);
|
| +
|
| +// Adds an item with the specified properties to |menu|.
|
| +void AddMenuItem(NSMenu *menu, id target, SEL selector, NSString* title,
|
| + int tag, bool enabled, bool checked);
|
| +
|
| +} // namespace
|
| +
|
| +// The base class for the three translate infobars. This class does all of the
|
| +// heavy UI lifting, while deferring to the subclass to tell it what views
|
| +// should be shown and where. Subclasses need to implement:
|
| +// - (void)layout;
|
| +// - (void)loadLabelText;
|
| +// - (void)visibleControls;
|
| +// - (bool)verifyLayout; // For testing.
|
| +@interface TranslateInfoBarControllerBase : InfoBarController<NSMenuDelegate> {
|
| + @protected
|
| + scoped_nsobject<NSTextField> label1_;
|
| + scoped_nsobject<NSTextField> label2_;
|
| + scoped_nsobject<NSTextField> label3_;
|
| + scoped_nsobject<NSPopUpButton> fromLanguagePopUp_;
|
| + scoped_nsobject<NSPopUpButton> toLanguagePopUp_;
|
| + scoped_nsobject<NSPopUpButton> optionsPopUp_;
|
| + scoped_nsobject<NSButton> showOriginalButton_;
|
| + scoped_nsobject<NSButton> tryAgainButton_;
|
| +
|
| + // In the current locale, are the "from" and "to" language popup menu
|
| + // flipped from what they'd appear in English.
|
| + bool swappedLanguagePlaceholders_;
|
| +
|
| + // Space between controls in pixels - read from the NIB.
|
| + CGFloat spaceBetweenControls_;
|
| +
|
| + scoped_ptr<LanguagesMenuModel2> originalLanguageMenuModel_;
|
| + scoped_ptr<LanguagesMenuModel2> targetLanguageMenuModel_;
|
| + scoped_ptr<OptionsMenuModel2> optionsMenuModel_;
|
| +}
|
| +
|
| +// Returns the delegate as a TranslateInfoBarDelegate.
|
| +- (TranslateInfoBarDelegate2*)delegate;
|
| +
|
| +// Called when the "Show Original" button is pressed.
|
| +- (IBAction)showOriginal:(id)sender;
|
| +
|
| +@end
|
| +
|
| +@interface TranslateInfoBarControllerBase (ProtectedAPI)
|
| +
|
| +// Move all the currently visible views into the correct place for the
|
| +// current mode.
|
| +// Must be implemented by the subclass.
|
| +- (void)layout;
|
| +
|
| +// Loads the text for the 3 labels. There is only one message, but since
|
| +// it has controls separating parts of it, it is separated into 3 separate
|
| +// labels.
|
| +// Must be implemented by the subclass.
|
| +- (void)loadLabelText;
|
| +
|
| +// Returns the controls that are visible in the subclasses infobar. The
|
| +// default implementation returns an empty array. The controls should
|
| +// be returned in the order they are displayed, otherwise the layout test
|
| +// will fail.
|
| +// Must be implemented by the subclass.
|
| +- (NSArray*)visibleControls;
|
| +
|
| +// Shows the array of controls provided by the subclass.
|
| +- (void)showVisibleControls:(NSArray*)visibleControls;
|
| +
|
| +// Hides the OK and Cancel buttons.
|
| +- (void)removeOkCancelButtons;
|
| +
|
| +// Called when the source or target language selection changes in a menu.
|
| +// |newLanguageIdx| is the index of the newly selected item in the appropriate
|
| +// menu.
|
| +- (void)sourceLanguageModified:(NSInteger)newLanguageIdx;
|
| +- (void)targetLanguageModified:(NSInteger)newLanguageIdx;
|
| +
|
| +// Called when an item in one of the toolbar's language or options
|
| +// menus is selected.
|
| +- (void)languageMenuChanged:(id)item;
|
| +- (void)optionsMenuChanged:(id)item;
|
| +
|
| +// Teardown and rebuild the options menu.
|
| +- (void)rebuildOptionsMenu;
|
| +
|
| +@end // TranslateInfoBarControllerBase (ProtectedAPI)
|
| +
|
| +#pragma mark TestingAPI
|
| +
|
| +@interface TranslateInfoBarControllerBase (TestingAPI)
|
| +
|
| +// Verifies that the layout of the infobar is correct.
|
| +// Must be implmented by the subclass.
|
| +- (bool)verifyLayout;
|
| +
|
| +// Returns the underlying options menu.
|
| +- (NSMenu*)optionsMenu;
|
| +
|
| +// Returns the "try again" button.
|
| +- (NSButton*)tryAgainButton;
|
| +
|
| +@end // TranslateInfoBarControllerBase (TestingAPI)
|
| +
|
| +
|
| +#endif // CHROME_BROWSER_COCOA_TRANSLATE_INFOBAR_BASE_H_
|
|
|