Browse Source

Mini tutorial code update

tags/7.0.0.beta6
Leif Åstrand 11 years ago
parent
commit
6f485e39df

+ 25
- 35
uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java View File

@@ -2,56 +2,36 @@ package com.vaadin.tests.minitutorials.v7a1;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.HashMap;

import javax.imageio.ImageIO;

import com.vaadin.server.ExternalResource;
import com.vaadin.server.RequestHandler;
import com.vaadin.server.DynamicConnectorResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinResponse;
import com.vaadin.server.VaadinServiceSession;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.Image;

public class DynamicImageUI extends AbstractTestUI {
public static final String IMAGE_URL = "myimage.png";

@Override
public void setup(VaadinRequest request) {
// Add the request handler that handles our dynamic image
getSession().addRequestHandler(new DynamicImageRequestHandler());

// Create a URL that we can handle in DynamicImageRequestHandler
String imageUrl = "app://" + DynamicImageRequestHandler.IMAGE_URL
+ "?text=Hello!";
HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("text", "Hello!");
DynamicConnectorResource resource = new DynamicConnectorResource(this,
IMAGE_URL, parameters);

// Add an embedded using the created URL
Embedded embedded = new Embedded("A dynamically generated image",
new ExternalResource(imageUrl));
embedded.setType(Embedded.TYPE_IMAGE);
getContent().addComponent(embedded);

}
// Add an image using the resource
Image image = new Image("A dynamically generated image", resource);

@Override
protected String getTestDescription() {
return "Mini tutorial for https://vaadin.com/wiki/-/wiki/Main/Generating%20dynamic%20resources%20based%20on%20URI%20or%20parameters";
getContent().addComponent(image);
}

@Override
protected Integer getTicketNumber() {
return null;
}
}

class DynamicImageRequestHandler implements RequestHandler {

public static final String IMAGE_URL = "myimage.png";

@Override
public boolean handleRequest(VaadinServiceSession session,
VaadinRequest request, VaadinResponse response) throws IOException {
String pathInfo = request.getRequestPathInfo();
if (("/" + IMAGE_URL).equals(pathInfo)) {
public boolean handleConnectorRequest(VaadinRequest request,
VaadinResponse response, String path) throws IOException {
if ((IMAGE_URL).equals(path)) {
// Create an image, draw the "text" parameter to it and output it to
// the browser.
String text = request.getParameter("text");
@@ -68,4 +48,14 @@ class DynamicImageRequestHandler implements RequestHandler {
// handlers handle it
return false;
}
}

@Override
protected String getTestDescription() {
return "Mini tutorial for https://vaadin.com/wiki/-/wiki/Main/Generating%20dynamic%20resources%20based%20on%20URI%20or%20parameters";
}

@Override
protected Integer getTicketNumber() {
return null;
}
}

+ 2
- 2
uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java View File

@@ -36,7 +36,7 @@ public class UsingUriFragments extends UI {
@Override
protected void init(VaadinRequest request) {
Label label = new Label("Hello, your fragment is "
+ getPage().getLocation().getFragment());
+ getPage().getFragment());
getContent().addComponent(label);

// React to fragment changes
@@ -48,7 +48,7 @@ public class UsingUriFragments extends UI {
});

// Handle the fragment received in the initial request
handleFragment(getPage().getLocation().getFragment());
handleFragment(getPage().getFragment());

addComponent(new Button("Show and set fragment",
new Button.ClickListener() {

+ 2
- 7
uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateComponent.java View File

@@ -17,20 +17,15 @@
package com.vaadin.tests.minitutorials.v7a2;

import com.vaadin.server.Resource;
import com.vaadin.tests.widgetset.client.minitutorials.v7a2.ResourceInStateState;
import com.vaadin.ui.AbstractComponent;

public class ResourceInStateComponent extends AbstractComponent {
@Override
public ResourceInStateState getState() {
return (ResourceInStateState) super.getState();
}

public void setMyIcon(Resource icon) {
setResource(ResourceInStateState.MY_ICON_RESOURCE, icon);
setResource("myIcon", icon);
}

public Resource getMyIcon() {
return getResource(ResourceInStateState.MY_ICON_RESOURCE);
return getResource("myIcon");
}
}

+ 1
- 1
uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java View File

@@ -35,7 +35,7 @@ public class ResourceInStateUI extends UI {
@Override
protected void init(VaadinRequest request) {
ResourceInStateComponent component = new ResourceInStateComponent();
component.setIcon(new ThemeResource("../runo/icons/32/calendar.png"));
component.setMyIcon(new ThemeResource("../runo/icons/32/calendar.png"));

addComponent(component);
}

+ 61
- 0
uitest/src/com/vaadin/tests/minitutorials/v7a3/Refresher.java View File

@@ -0,0 +1,61 @@
package com.vaadin.tests.minitutorials.v7a3;

import java.util.ArrayList;
import java.util.List;

import com.vaadin.server.AbstractExtension;
import com.vaadin.tests.widgetset.client.minitutorials.v7a3.RefresherRpc;
import com.vaadin.tests.widgetset.client.minitutorials.v7a3.RefresherState;
import com.vaadin.ui.UI;

public class Refresher extends AbstractExtension {
public interface RefreshListener {
public void refresh(Refresher source);
}

private List<RefreshListener> listeners = new ArrayList<RefreshListener>();

public Refresher() {
registerRpc(new RefresherRpc() {
@Override
public void refresh() {
for (RefreshListener listener : listeners) {
listener.refresh(Refresher.this);
}
}
});
}

@Override
public RefresherState getState() {
return (RefresherState) super.getState();
}

public void setInterval(int millis) {
getState().interval = millis;
}

public int getInterval() {
return getState().interval;
}

public void setEnabled(boolean enabled) {
getState().enabled = enabled;
}

public boolean isEnabled() {
return getState().enabled;
}

public void addListener(RefreshListener listener) {
listeners.add(listener);
}

public void removeListener(RefreshListener listener) {
listeners.remove(listener);
}

public void extend(UI target) {
super.extend(target);
}
}

+ 52
- 0
uitest/src/com/vaadin/tests/minitutorials/v7a3/RefresherTestUI.java View File

@@ -0,0 +1,52 @@
/*
* Copyright 2012 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.tests.minitutorials.v7a3;

import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.tests.minitutorials.v7a3.Refresher.RefreshListener;
import com.vaadin.tests.widgetset.TestingWidgetSet;

@Widgetset(TestingWidgetSet.NAME)
public class RefresherTestUI extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
Refresher refresher = new Refresher();
refresher.extend(this);
refresher.addListener(new RefreshListener() {
@Override
public void refresh(Refresher source) {
System.out.println("Got refresh");
}
});
}

@Override
protected String getTestDescription() {
// TODO Auto-generated method stub
return null;
}

@Override
protected Integer getTicketNumber() {
// TODO Auto-generated method stub
return null;
}

}

+ 67
- 0
uitest/src/com/vaadin/tests/minitutorials/v7b1/AxessingWebPageAndBrowserInfoUI.java View File

@@ -0,0 +1,67 @@
/*
* Copyright 2012 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.tests.minitutorials.v7b1;

import com.vaadin.server.Page;
import com.vaadin.server.Page.BrowserWindowResizeEvent;
import com.vaadin.server.Page.BrowserWindowResizeListener;
import com.vaadin.server.Page.FragmentChangedEvent;
import com.vaadin.server.Page.FragmentChangedListener;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Notification;
import com.vaadin.ui.UI;

public class AxessingWebPageAndBrowserInfoUI extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
UI someUI = this;

Page page = someUI.getPage();
page.setBrowserWindowSize(page.getBrowserWindowWidth() + 10,
page.getBrowserWindowHeight() + 10);
page.addBrowserWindowResizeListener(new BrowserWindowResizeListener() {
@Override
public void browserWindowResized(BrowserWindowResizeEvent event) {
Notification.show("Window width=" + event.getWidth()
+ ", height=" + event.getHeight());
}
});

page.setFragment(page.getFragment() + "foo");
page.addFragmentChangedListener(new FragmentChangedListener() {
@Override
public void fragmentChanged(FragmentChangedEvent event) {
Notification.show("Fragment=" + event.getFragment());
}
});
}

@Override
protected String getTestDescription() {
// TODO Auto-generated method stub
return null;
}

@Override
protected Integer getTicketNumber() {
// TODO Auto-generated method stub
return null;
}

}

+ 91
- 0
uitest/src/com/vaadin/tests/minitutorials/v7b1/BootstrapListenerCode.java View File

@@ -0,0 +1,91 @@
/*
* Copyright 2012 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.tests.minitutorials.v7b1;

import java.util.List;

import javax.portlet.PortletException;
import javax.servlet.ServletException;

import org.jsoup.nodes.Comment;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.parser.Tag;

import com.vaadin.server.BootstrapFragmentResponse;
import com.vaadin.server.BootstrapListener;
import com.vaadin.server.BootstrapPageResponse;
import com.vaadin.server.ServiceException;
import com.vaadin.server.SessionInitEvent;
import com.vaadin.server.SessionInitListener;
import com.vaadin.server.VaadinPortlet;
import com.vaadin.server.VaadinServlet;

public class BootstrapListenerCode {
public static BootstrapListener listener = new BootstrapListener() {
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
response.getDocument().body()
.appendChild(new Comment("Powered by Vaadin!", ""));
response.setHeader("X-Powered-By", "Vaadin 7");
}

@Override
public void modifyBootstrapFragment(BootstrapFragmentResponse response) {
// Wrap the fragment in a custom div element
Element myDiv = new Element(Tag.valueOf("div"), "");
List<Node> nodes = response.getFragmentNodes();
for (Node node : nodes) {
myDiv.appendChild(node);
}
nodes.clear();
nodes.add(myDiv);
}
};
}

class MyVaadinServlet extends VaadinServlet {
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
getService().addSessionInitListener(new SessionInitListener() {
@Override
public void sessionInit(SessionInitEvent event)
throws ServiceException {
event.getSession().addBootstrapListener(
BootstrapListenerCode.listener);
}
});
}
}

// Or...

class MyVaadinPortlet extends VaadinPortlet {
@Override
protected void portletInitialized() throws PortletException {
super.portletInitialized();
getService().addSessionInitListener(new SessionInitListener() {
@Override
public void sessionInit(SessionInitEvent event)
throws ServiceException {
event.getSession().addBootstrapListener(
BootstrapListenerCode.listener);
}
});
}
}

+ 47
- 0
uitest/src/com/vaadin/tests/minitutorials/v7b2/CleanupUI.java View File

@@ -0,0 +1,47 @@
/*
* Copyright 2012 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.tests.minitutorials.v7b2;

import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.UI;

public class CleanupUI extends UI implements UI.CleanupListener {
@Override
protected void init(VaadinRequest request) {
addCleanupListener(new UI.CleanupListener() {
@Override
public void cleanup(UI.CleanupEvent event) {
releaseSomeResources();
}
});

// ...
addCleanupListener(this);
}

private void releaseSomeResources() {
// ...
}

@Override
public void cleanup(UI.CleanupEvent event) {
// do cleanup
event.getUI();
// or equivalent:
UI.getCurrent();
}
}

+ 3
- 8
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateConnector.java View File

@@ -27,21 +27,16 @@ public class ResourceInStateConnector extends AbstractComponentConnector {
@Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
String icon = getResourceUrl(ResourceInStateState.MY_ICON_RESOURCE);
String iconUrl = getResourceUrl("myIcon");

if (icon != null) {
getWidget().setUrl(icon);
if (iconUrl != null) {
getWidget().setUrl(iconUrl);
} else {
getWidget().setUrl("");
}

}

@Override
public ResourceInStateState getState() {
return (ResourceInStateState) super.getState();
}

@Override
public Image getWidget() {
return (Image) super.getWidget();

+ 0
- 7
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a2/ResourceInStateState.java View File

@@ -1,7 +0,0 @@
package com.vaadin.tests.widgetset.client.minitutorials.v7a2;

import com.vaadin.shared.ComponentState;

public class ResourceInStateState extends ComponentState {
public static final String MY_ICON_RESOURCE = "myIcon";
}

+ 52
- 0
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/ClientSideModule.java View File

@@ -0,0 +1,52 @@
/*
* Copyright 2012 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.tests.widgetset.client.minitutorials.v7a3;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ClientSideModule implements EntryPoint {

@Override
public void onModuleLoad() {
final TextBox nameField = new TextBox();
nameField.setText("GWT User");
final Button button = new Button("Check");

VerticalPanel vp = new VerticalPanel();
vp.add(nameField);
vp.add(button);
RootPanel.get().add(vp);

button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if ("GWT User".equals(nameField.getText())) {
Window.alert("User OK");
} else {
Window.alert("Unauthorized user");
}
}
});
}
}

+ 40
- 0
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/RefresherConnector.java View File

@@ -0,0 +1,40 @@
package com.vaadin.tests.widgetset.client.minitutorials.v7a3;

import com.google.gwt.user.client.Timer;
import com.vaadin.client.communication.RpcProxy;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.extensions.AbstractExtensionConnector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.tests.minitutorials.v7a3.Refresher;

@Connect(Refresher.class)
public class RefresherConnector extends AbstractExtensionConnector {

private RefresherRpc rpc = RpcProxy.create(RefresherRpc.class, this);

private Timer timer = new Timer() {
@Override
public void run() {
rpc.refresh();
}
};

@Override
public void onStateChanged(StateChangeEvent event) {
super.onStateChanged(event);
timer.cancel();
if (isEnabled()) {
timer.scheduleRepeating(getState().interval);
}
}

@Override
public void onUnregister() {
timer.cancel();
}

@Override
public RefresherState getState() {
return (RefresherState) super.getState();
}
}

+ 7
- 0
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/RefresherRpc.java View File

@@ -0,0 +1,7 @@
package com.vaadin.tests.widgetset.client.minitutorials.v7a3;

import com.vaadin.shared.communication.ServerRpc;

public interface RefresherRpc extends ServerRpc {
public void refresh();
}

+ 7
- 0
uitest/src/com/vaadin/tests/widgetset/client/minitutorials/v7a3/RefresherState.java View File

@@ -0,0 +1,7 @@
package com.vaadin.tests.widgetset.client.minitutorials.v7a3;

import com.vaadin.shared.communication.SharedState;

public class RefresherState extends SharedState {
public int interval = 1000;
}

Loading…
Cancel
Save