// Copyright 2012 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.collide.client.search.awesomebox.host; /** * Defines a component which is hosted by the {@link AwesomeBoxComponentHost}. * */ public abstract class AbstractAwesomeBoxComponent implements AwesomeBoxComponent { private final HideMode hideMode; private final String placeHolderText; private final HiddenBehavior hiddenBehavior; private ComponentHost host; /** * Creates a new {@link AbstractAwesomeBoxComponent} with * {@link AwesomeBoxComponent.HideMode#AUTOHIDE}, * {@link AwesomeBoxComponent.HiddenBehavior#STAY_ACTIVE} and a default * placeholder text of 'Actions...'. */ public AbstractAwesomeBoxComponent() { this(HideMode.AUTOHIDE, HiddenBehavior.REVERT_TO_DEFAULT, "Actions..."); } public AbstractAwesomeBoxComponent( HideMode hideMode, HiddenBehavior hideBehavior, String placeHolderText) { this.hideMode = hideMode; this.hiddenBehavior = hideBehavior; this.placeHolderText = placeHolderText; } @Override public HideMode getHideMode() { return hideMode; } @Override public HiddenBehavior getHiddenBehavior() { return hiddenBehavior; } @Override public String getPlaceHolderText() { return placeHolderText; } @Override public String getTooltipText() { // no tooltip by default return null; } public void hide() { // Component is already hidden if (host == null) { return; } // request that our host hide us host.requestHide(); host = null; } /** * @return true if this component is active. */ public boolean isActive() { return host != null; } /** * Notifies the component that the component has been hidden and its base * element has been removed from the DOM. */ @Override public void onHide() { host = null; } /** * Notifies the component that it has been added to the DOM and is visible. */ @Override public void onShow(ComponentHost host, ShowReason reason) { this.host = host; } }