/* * Copyright 2000-2014 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 java.lang.reflect.Method; import java.util.Collections; import java.util.Iterator; import com.vaadin.shared.ui.popupview.PopupViewServerRpc; import com.vaadin.shared.ui.popupview.PopupViewState; /** * * 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 AbstractComponent implements HasComponents { private Content content; 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"); } } private final PopupViewServerRpc rpc = new PopupViewServerRpc() { @Override public void setPopupVisibility(boolean visible) { setPopupVisible(visible); } }; /* 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(); registerRpc(rpc); setHideOnMouseOut(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; markAsDirty(); } /** * Returns the content-package for this PopupView. * * @return the PopupView.Content for this object or null */ public PopupView.Content getContent() { return content; } /** * 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"); } if (visibleComponent.getParent() != null) { // If the component already has a parent, try to remove it AbstractSingleComponentContainer
<!doctype html>
<html lang="en">
<head>
	<title>jQuery UI Sortable Demos</title>
	<link type="text/css" href="../demos.css" rel="stylesheet" />
</head>
<body>

<div class="demos-nav">
	<h4>Examples</h4>
	<ul>
		<li class="demo-config-on"><a href="default.html">Default Sortable</a></li>
		<li><a href="floating.html">Floating</a></li>
		<li><a href="placeholder.html">Placeholder</a></li>
		<li><a href="delay.html">Delay</a></li>
		<li><a href="distance.html">Distance</a></li>
		<li><a href="items.html">Excluding items</a></li>
		<li><a href="connectwith.html">Connecting two lists</a></li>
		<li><a href="droponempty.html">Dropping on empty lists</a></li>
		<li><a href="droppable.html">Connect to droppables</a></li>
		<li><a href="portlets.html">Portlets</a></li>
		<li><a href="tolerance.html">Tolerance</a></li>
	</ul>
</div>

</body>
</html>