/*
* Copyright 2000-2016 Vaadin Ltd.
*
* 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.vaadin.ui;
import java.io.Serializable;
import com.vaadin.shared.ui.ui.UIState.TooltipConfigurationState;
/**
* Provides method for configuring the tooltip.
*
* @author Vaadin Ltd
* @since 7.1
*/
public interface TooltipConfiguration extends Serializable {
/**
* Returns the time (in ms) the tooltip should be displayed after an event
* that will cause it to be closed (e.g. mouse click outside the component,
* key down).
*
* @return The close timeout
*/
public int getCloseTimeout();
/**
* Sets the time (in ms) the tooltip should be displayed after an event that
* will cause it to be closed (e.g. mouse click outside the component, key
* down).
*
* @param closeTimeout
* The close timeout
*/
public void setCloseTimeout(int closeTimeout);
/**
* Returns the time (in ms) during which {@link #getQuickOpenDelay()} should
* be used instead of {@link #getOpenDelay()}. The quick open delay is used
* when the tooltip has very recently been shown, is currently hidden but
* about to be shown again.
*
* @return The quick open timeout
*/
public int getQuickOpenTimeout();
/**
* Sets the time (in ms) that determines when {@link #getQuickOpenDelay()}
* should be used instead of {@link #getOpenDelay()}. The quick open delay
* is used when the tooltip has very recently been shown, is currently
* hidden but about to be shown again.
*
* @param quickOpenTimeout
* The quick open timeout
*/
public void setQuickOpenTimeout(int quickOpenTimeout);
/**
* Returns the time (in ms) that should elapse before a tooltip will be
* shown, in the situation when a tooltip has very recently been shown
* (within {@link #getQuickOpenDelay()} ms).
*
* @return The quick open delay
*/
public int getQuickOpenDelay();
/**
* Sets the time (in ms) that should elapse before a tooltip will be shown,
* in the situation when a tooltip has very recently been shown (within
* {@link #getQuickOpenDelay()} ms).
*
* @param quickOpenDelay
* The quick open delay
*/
public void setQuickOpenDelay(int quickOpenDelay);
/**
* Returns the time (in ms) that should elapse after an event triggering
* tooltip showing has occurred (e.g. mouse over) before the tooltip is
* shown. If a tooltip has recently been shown, then
* {@link #getQuickOpenDelay()} is used instead of this.
*
* @return The open delay
*/
public int getOpenDelay();
/**
* Sets the time (in ms) that should elapse after an event triggering
* tooltip showing has occurred (e.g. mouse over) before the tooltip is
* shown. If a tooltip has recently been shown, then
* {@link #getQuickOpenDelay()} is used instead of this.
*
* @param openDelay
* The open delay
*/
public void setOpenDelay(int openDelay);
/**
* Returns the maximum width of the tooltip popup.
*
* @return The maximum width the tooltip popup
*/
public int getMaxWidth();
/**
* Sets the maximum width of the tooltip popup.
*
* @param maxWidth
* The maximum width the tooltip popup
*/
public void setMaxWidth(int maxWidth);
}
class TooltipConfigurationImpl implements TooltipConfiguration {
private final UI ui;
public TooltipConfigurationImpl(UI ui) {
this.ui = ui;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.UI.Tooltip#getCloseTimeout()
*/
@Override
public int getCloseTimeout() {
return getState(false).closeTimeout;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#setCloseTimeout(int)
*/
@Override
public void setCloseTimeout(int closeTimeout) {
getState().closeTimeout = closeTimeout;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#getQuickOpenTimeout()
*/
@Override
public int getQuickOpenTimeout() {
return getState(false).quickOpenTimeout;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#setQuickOpenTimeout(int)
*/
@Override
public void setQuickOpenTimeout(int quickOpenTimeout) {
getState().quickOpenTimeout = quickOpenTimeout;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#getQuickOpenDelay()
*/
@Override
public int getQuickOpenDelay() {
return getState(false).quickOpenDelay;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#setQuickOpenDelay(int)
*/
@Override
public void setQuickOpenDelay(int quickOpenDelay) {
getState().quickOpenDelay = quickOpenDelay;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#getOpenDelay()
*/
@Override
public int getOpenDelay() {
return getState(false).openDelay;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#setOpenDelay(int)
*/
@Override
public void setOpenDelay(int openDelay) {
getState().openDelay = openDelay;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#getMaxWidth()
*/
@Override
public int getMaxWidth() {
return getState(false).maxWidth;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.Tooltip#setMaxWidth(int)
*/
@Override
public void setMaxWidth(int maxWidth) {
getState().maxWidth = maxWidth;
}
private TooltipConfigurationState getState() {
return ui.getState().tooltipConfiguration;
}
private TooltipConfigurationState getState(boolean markAsDirty) {
return ui.getState(markAsDirty).tooltipConfiguration;
}
}