blob: e72f5bc33126a255096d58e6796436719a42d74b [file] [log] [blame]
/*
* $Id$ $Revision$
* $Date$
*
* ==============================================================================
* 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 wicket.examples.images;
import java.awt.BasicStroke;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
import wicket.Resource;
import wicket.ResourceReference;
import wicket.examples.WicketExamplePage;
import wicket.markup.html.image.Image;
import wicket.markup.html.image.resource.BufferedDynamicImageResource;
import wicket.markup.html.image.resource.DefaultButtonImageResource;
import wicket.markup.html.image.resource.RenderedDynamicImageResource;
import wicket.model.Model;
/**
* Demonstrates different flavors of wicket.examples.images.
*
* @author Jonathan Locke
*/
public final class Home extends WicketExamplePage
{
/**
* Constructor
*/
public Home()
{
// Get our custom application subclass
final ImagesApplication application = (ImagesApplication)getApplication();
// Image as package resource
add(new Image("image2"));
// Dynamically created image. Will re-render whenever resource is asked
// for.
add(new Image("image3", new RenderedDynamicImageResource(100, 100)
{
protected boolean render(Graphics2D graphics)
{
drawCircle(graphics);
return true;
}
}));
// Simple model
add(new Image("image4", new Model("Image2.gif")));
// Dynamically created buffered image
add(new Image("image5", getImage5Resource()));
// Add okay button image
add(new Image("okButton", getOkButtonImage()));
// Add cancel button image
add(new Image("cancelButton", new ResourceReference("cancelButton")));
}
final ResourceReference getOkButtonImage()
{
return new ResourceReference("okButton")
{
protected Resource newResource()
{
return new DefaultButtonImageResource("Ok");
}
};
}
/**
* @return Gets shared image component
*/
public ResourceReference getImage5Resource()
{
return new ResourceReference(Home.class, "image5")
{
public Resource newResource()
{
final BufferedDynamicImageResource resource = new BufferedDynamicImageResource();
final BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
drawCircle((Graphics2D)image.getGraphics());
resource.setImage(image);
return resource;
}
};
}
/**
* Draws a random circle on a graphics
*
* @param graphics
* The graphics to draw on
*/
void drawCircle(Graphics2D graphics)
{
// Compute random size for circle
final Random random = new Random();
int dx = Math.abs(10 + random.nextInt(80));
int dy = Math.abs(10 + random.nextInt(80));
int x = Math.abs(random.nextInt(100 - dx));
int y = Math.abs(random.nextInt(100 - dy));
// Draw circle with thick stroke width
graphics.setStroke(new BasicStroke(5));
graphics.drawOval(x, y, dx, dy);
}
}