summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/ui/PopupView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/ui/PopupView.java')
-rw-r--r--src/com/vaadin/ui/PopupView.java453
1 files changed, 0 insertions, 453 deletions
diff --git a/src/com/vaadin/ui/PopupView.java b/src/com/vaadin/ui/PopupView.java
deleted file mode 100644
index 766181b50f..0000000000
--- a/src/com/vaadin/ui/PopupView.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
-@VaadinApache2LicenseForJavaFiles@
- */
-package com.vaadin.ui;
-
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.Map;
-
-import com.vaadin.terminal.LegacyPaint;
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
-import com.vaadin.terminal.Vaadin6Component;
-
-/**
- *
- * A component for displaying a two different views to data. The minimized view
- * is normally used to render the component, and when it is clicked the full
- * view is displayed on a popup. The inner class {@link PopupView.Content} is
- * used to deliver contents to this component.
- *
- * @author Vaadin Ltd.
- */
-@SuppressWarnings("serial")
-public class PopupView extends AbstractComponentContainer implements
- Vaadin6Component {
-
- private Content content;
- private boolean hideOnMouseOut;
- private Component visibleComponent;
-
- private static final Method POPUP_VISIBILITY_METHOD;
- static {
- try {
- POPUP_VISIBILITY_METHOD = PopupVisibilityListener.class
- .getDeclaredMethod("popupVisibilityChange",
- new Class[] { PopupVisibilityEvent.class });
- } catch (final java.lang.NoSuchMethodException e) {
- // This should never happen
- throw new java.lang.RuntimeException(
- "Internal error finding methods in PopupView");
- }
- }
-
- /**
- * Iterator for the visible components (zero or one components), used by
- * {@link PopupView#getComponentIterator()}.
- */
- private static class SingleComponentIterator implements
- Iterator<Component>, Serializable {
-
- private final Component component;
- private boolean first;
-
- public SingleComponentIterator(Component component) {
- this.component = component;
- first = (component == null);
- }
-
- @Override
- public boolean hasNext() {
- return !first;
- }
-
- @Override
- public Component next() {
- if (!first) {
- first = true;
- return component;
- } else {
- return null;
- }
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
- }
-
- /* Constructors */
-
- /**
- * A simple way to create a PopupPanel. Note that the minimal representation
- * may not be dynamically updated, in order to achieve this create your own
- * Content object and use {@link PopupView#PopupView(Content)}.
- *
- * @param small
- * the minimal textual representation as HTML
- * @param large
- * the full, Component-type representation
- */
- public PopupView(final java.lang.String small, final Component large) {
- this(new PopupView.Content() {
- @Override
- public java.lang.String getMinimizedValueAsHTML() {
- return small;
- }
-
- @Override
- public Component getPopupComponent() {
- return large;
- }
- });
-
- }
-
- /**
- * Creates a PopupView through the PopupView.Content interface. This allows
- * the creator to dynamically change the contents of the PopupView.
- *
- * @param content
- * the PopupView.Content that contains the information for this
- */
- public PopupView(PopupView.Content content) {
- super();
- hideOnMouseOut = true;
- setContent(content);
- }
-
- /**
- * This method will replace the current content of the panel with a new one.
- *
- * @param newContent
- * PopupView.Content object containing new information for the
- * PopupView
- * @throws IllegalArgumentException
- * if the method is passed a null value, or if one of the
- * content methods returns null
- */
- public void setContent(PopupView.Content newContent)
- throws IllegalArgumentException {
- if (newContent == null) {
- throw new IllegalArgumentException("Content must not be null");
- }
- content = newContent;
- requestRepaint();
- }
-
- /**
- * Returns the content-package for this PopupView.
- *
- * @return the PopupView.Content for this object or null
- */
- public PopupView.Content getContent() {
- return content;
- }
-
- /**
- * @deprecated Use {@link #setPopupVisible()} instead.
- */
- @Deprecated
- public void setPopupVisibility(boolean visible) {
- setPopupVisible(visible);
- }
-
- /**
- * @deprecated Use {@link #isPopupVisible()} instead.
- */
- @Deprecated
- public boolean getPopupVisibility() {
- return isPopupVisible();
- }
-
- /**
- * Set the visibility of the popup. Does not hide the minimal
- * representation.
- *
- * @param visible
- */
- public void setPopupVisible(boolean visible) {
- if (isPopupVisible() != visible) {
- if (visible) {
- visibleComponent = content.getPopupComponent();
- if (visibleComponent == null) {
- throw new java.lang.IllegalStateException(
- "PopupView.Content did not return Component to set visible");
- }
- super.addComponent(visibleComponent);
- } else {
- super.removeComponent(visibleComponent);
- visibleComponent = null;
- }
- fireEvent(new PopupVisibilityEvent(this));
- requestRepaint();
- }
- }
-
- /**
- * Return whether the popup is visible.
- *
- * @return true if the popup is showing
- */
- public boolean isPopupVisible() {
- return visibleComponent != null;
- }
-
- /**
- * Check if this popup will be hidden when the user takes the mouse cursor
- * out of the popup area.
- *
- * @return true if the popup is hidden on mouse out, false otherwise
- */
- public boolean isHideOnMouseOut() {
- return hideOnMouseOut;
- }
-
- /**
- * Should the popup automatically hide when the user takes the mouse cursor
- * out of the popup area? If this is false, the user must click outside the
- * popup to close it. The default is true.
- *
- * @param hideOnMouseOut
- *
- */
- public void setHideOnMouseOut(boolean hideOnMouseOut) {
- this.hideOnMouseOut = hideOnMouseOut;
- }
-
- /*
- * Methods inherited from AbstractComponentContainer. These are unnecessary
- * (but mandatory). Most of them are not supported in this implementation.
- */
-
- /**
- * This class only contains other components when the popup is showing.
- *
- * @see com.vaadin.ui.ComponentContainer#getComponentIterator()
- */
- @Override
- public Iterator<Component> getComponentIterator() {
- return new SingleComponentIterator(visibleComponent);
- }
-
- /**
- * Gets the number of contained components. Consistent with the iterator
- * returned by {@link #getComponentIterator()}.
- *
- * @return the number of contained components (zero or one)
- */
- @Override
- public int getComponentCount() {
- return (visibleComponent != null ? 1 : 0);
- }
-
- /**
- * Not supported in this implementation.
- *
- * @see com.vaadin.ui.AbstractComponentContainer#removeAllComponents()
- * @throws UnsupportedOperationException
- */
- @Override
- public void removeAllComponents() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Not supported in this implementation.
- *
- * @see com.vaadin.ui.AbstractComponentContainer#moveComponentsFrom(com.vaadin.ui.ComponentContainer)
- * @throws UnsupportedOperationException
- */
- @Override
- public void moveComponentsFrom(ComponentContainer source)
- throws UnsupportedOperationException {
-
- throw new UnsupportedOperationException();
- }
-
- /**
- * Not supported in this implementation.
- *
- * @see com.vaadin.ui.AbstractComponentContainer#addComponent(com.vaadin.ui.Component)
- * @throws UnsupportedOperationException
- */
- @Override
- public void addComponent(Component c) throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
-
- }
-
- /**
- * Not supported in this implementation.
- *
- * @see com.vaadin.ui.ComponentContainer#replaceComponent(com.vaadin.ui.Component,
- * com.vaadin.ui.Component)
- * @throws UnsupportedOperationException
- */
- @Override
- public void replaceComponent(Component oldComponent, Component newComponent)
- throws UnsupportedOperationException {
-
- throw new UnsupportedOperationException();
- }
-
- /**
- * Not supported in this implementation
- *
- * @see com.vaadin.ui.AbstractComponentContainer#removeComponent(com.vaadin.ui.Component)
- */
- @Override
- public void removeComponent(Component c)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
-
- }
-
- /*
- * Methods for server-client communications.
- */
-
- /**
- * Paint (serialize) the component for the client.
- *
- * @see com.vaadin.ui.AbstractComponent#paintContent(com.vaadin.terminal.PaintTarget)
- */
- @Override
- public void paintContent(PaintTarget target) throws PaintException {
- String html = content.getMinimizedValueAsHTML();
- if (html == null) {
- html = "";
- }
- target.addAttribute("html", html);
- target.addAttribute("hideOnMouseOut", hideOnMouseOut);
-
- // Only paint component to client if we know that the popup is showing
- if (isPopupVisible()) {
- target.startTag("popupComponent");
- LegacyPaint.paint(visibleComponent, target);
- target.endTag("popupComponent");
- }
-
- target.addVariable(this, "popupVisibility", isPopupVisible());
- }
-
- /**
- * Deserialize changes received from client.
- *
- * @see com.vaadin.ui.AbstractComponent#changeVariables(java.lang.Object,
- * java.util.Map)
- */
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
- if (variables.containsKey("popupVisibility")) {
- setPopupVisible(((Boolean) variables.get("popupVisibility"))
- .booleanValue());
- }
- }
-
- /**
- * Used to deliver customized content-packages to the PopupView. These are
- * dynamically loaded when they are redrawn. The user must take care that
- * neither of these methods ever return null.
- */
- public interface Content extends Serializable {
-
- /**
- * This should return a small view of the full data.
- *
- * @return value in HTML format
- */
- public String getMinimizedValueAsHTML();
-
- /**
- * This should return the full Component representing the data
- *
- * @return a Component for the value
- */
- public Component getPopupComponent();
- }
-
- /**
- * Add a listener that is called whenever the visibility of the popup is
- * changed.
- *
- * @param listener
- * the listener to add
- * @see PopupVisibilityListener
- * @see PopupVisibilityEvent
- * @see #removeListener(PopupVisibilityListener)
- *
- */
- public void addListener(PopupVisibilityListener listener) {
- addListener(PopupVisibilityEvent.class, listener,
- POPUP_VISIBILITY_METHOD);
- }
-
- /**
- * Removes a previously added listener, so that it no longer receives events
- * when the visibility of the popup changes.
- *
- * @param listener
- * the listener to remove
- * @see PopupVisibilityListener
- * @see #addListener(PopupVisibilityListener)
- */
- public void removeListener(PopupVisibilityListener listener) {
- removeListener(PopupVisibilityEvent.class, listener,
- POPUP_VISIBILITY_METHOD);
- }
-
- /**
- * This event is received by the PopupVisibilityListeners when the
- * visibility of the popup changes. You can get the new visibility directly
- * with {@link #isPopupVisible()}, or get the PopupView that produced the
- * event with {@link #getPopupView()}.
- *
- */
- public class PopupVisibilityEvent extends Event {
-
- public PopupVisibilityEvent(PopupView source) {
- super(source);
- }
-
- /**
- * Get the PopupView instance that is the source of this event.
- *
- * @return the source PopupView
- */
- public PopupView getPopupView() {
- return (PopupView) getSource();
- }
-
- /**
- * Returns the current visibility of the popup.
- *
- * @return true if the popup is visible
- */
- public boolean isPopupVisible() {
- return getPopupView().isPopupVisible();
- }
- }
-
- /**
- * Defines a listener that can receive a PopupVisibilityEvent when the
- * visibility of the popup changes.
- *
- */
- public interface PopupVisibilityListener extends Serializable {
- /**
- * Pass to {@link PopupView#PopupVisibilityEvent} to start listening for
- * popup visibility changes.
- *
- * @param event
- * the event
- *
- * @see {@link PopupVisibilityEvent}
- * @see {@link PopupView#addListener(PopupVisibilityListener)}
- */
- public void popupVisibilityChange(PopupVisibilityEvent event);
- }
-}