/* * $Id: ImageViewerDemo.java,v 1.4 2005/10/31 13:48:47 zfq Exp $ * * Copyright (C) 2001-2003 Extreme Component, Inc. All rights reserved. * Use is subject to license terms. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import java.net.URL; import com.zfqjava.swing.JImageViewer; import com.zfqjava.swing.JBean; import com.zfqjava.swing.JCommonPane; /** * JImageViewer Demo * * @author $Author: zfq $ * @version $Revision: 1.4 $ $Date: 2005/10/31 13:48:47 $ */ public class ImageViewerDemo extends JPanel { private JImageViewer imageViewer; public ImageViewerDemo() { imageViewer = new JImageViewer(); setInstallSideImage(); setLayout(new BorderLayout()); add(new JScrollPane(imageViewer), BorderLayout.CENTER); add(createEasePanel(), BorderLayout.EAST); } private JPanel createEasePanel() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(createPropertyPanel()); return panel; } private JPanel createPropertyPanel() { JPanel panel = new JPanel(); Border titledBorder = BorderFactory.createTitledBorder("Change Property"); Border emptyBorder = BorderFactory.createEmptyBorder(12, 12, 12, 12); panel.setBorder(BorderFactory.createCompoundBorder(titledBorder, emptyBorder)); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); panel.setLayout(gridbag); c.weightx = 0.5; c.weighty = 0.5; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(0, 0, 5, 0); JLabel label = new JLabel("Image: "); addPanel(panel, c, label); Object[] sideImages = { "Install", "Deploy" }; final JComboBox sideImagesCB = new JComboBox(sideImages); sideImagesCB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // side images String img = (String)sideImagesCB.getSelectedItem(); if(img.equals("Install")) { setInstallSideImage(); } else if(img.equals("Deploy")) { setDeploySideImage(); } else { System.out.println("error in side image: " + img); } } }); label.setLabelFor(sideImagesCB); c.gridwidth = GridBagConstraints.REMAINDER; addPanel(panel, c, sideImagesCB); c.gridwidth = GridBagConstraints.RELATIVE; label = new JLabel("Size Mode: "); addPanel(panel, c, label); Object[] sizeMode = { "Auto", "Center Image", "Normal", "Stretch Image" }; final JComboBox sizeModeCB = new JComboBox(sizeMode); sizeModeCB.setSelectedItem("Center Image"); sizeModeCB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // side images String mode = (String)sizeModeCB.getSelectedItem(); if(mode.equals("Auto")) { imageViewer.setSizeMode(JImageViewer.AUTO_SIZE_MODE); } else if(mode.equals("Center Image")) { imageViewer.setSizeMode(JImageViewer.CENTER_IMAGE_SIZE_MODE); } else if(mode.equals("Normal")) { imageViewer.setSizeMode(JImageViewer.NORMAL_SIZE_MODE); } else if(mode.equals("Stretch Image")) { imageViewer.setSizeMode(JImageViewer.STRETCH_IMAGE_SIZE_MODE); } else { System.out.println("error in size mode: " + mode); } } }); label.setLabelFor(sizeModeCB); c.gridwidth = GridBagConstraints.REMAINDER; addPanel(panel, c, sizeModeCB); c.gridwidth = GridBagConstraints.RELATIVE; label = new JLabel("Rotate Mode: "); addPanel(panel, c, label); JPanel rotatePanel = new JPanel(); final JButton rotateLeft = new JButton("Rotate left"); final JButton rotateRight = new JButton("Rotate right"); ActionListener buttonHandler = new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == rotateLeft) { imageViewer.rotate(false); } else if(e.getSource() == rotateRight) { imageViewer.rotate(true); } } }; rotateLeft.addActionListener(buttonHandler); rotateRight.addActionListener(buttonHandler); rotatePanel.add(rotateLeft); rotatePanel.add(rotateRight); c.gridwidth = GridBagConstraints.REMAINDER; addPanel(panel, c, rotatePanel); c.gridwidth = GridBagConstraints.RELATIVE; label = new JLabel("Zoom Factor: "); addPanel(panel, c, label); final JTextField factorField = new JTextField("1.0", 9); factorField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String text = factorField.getText(); double factor = 1.0; try { factor = Double.parseDouble(text); } catch (Exception ex) { ex.printStackTrace(); } imageViewer.setZoomFactor(factor); } }); label.setLabelFor(factorField); c.gridwidth = GridBagConstraints.REMAINDER; addPanel(panel, c, factorField); c.gridwidth = GridBagConstraints.RELATIVE; label = new JLabel("Filp Property: "); addPanel(panel, c, label); Object[] flipStyles = { "None", "Horizontal", "Vertical" }; final JComboBox flipStyleCB = new JComboBox(flipStyles); flipStyleCB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Object item = flipStyleCB.getSelectedItem(); if(item.equals("Horizontal")) { imageViewer.setHorizontalFlipEnabled(true); } else if(item.equals("Vertical")) { imageViewer.setVerticalFlipEnabled(true); } else if(item.equals("None")) { imageViewer.setHorizontalFlipEnabled(false); imageViewer.setVerticalFlipEnabled(false); } } }); label.setLabelFor(flipStyleCB); c.gridwidth = GridBagConstraints.REMAINDER; addPanel(panel, c, flipStyleCB); return panel; } private Image loadImage(String name) { URL url = getResource(name); if(url != null) { return Toolkit.getDefaultToolkit().getImage(url); } else { return null; } } private URL getResource(String name) { URL url = getClass().getResource(name); return url; } private void setInstallSideImage() { Image image = loadImage("resources/install-side.gif"); imageViewer.setImage(image); } private void setDeploySideImage() { Image image = loadImage("resources/deploy-icon.gif"); imageViewer.setImage(image); } private static void addPanel(Container container, GridBagConstraints c, Component component) { GridBagLayout gridbag = (GridBagLayout)container.getLayout(); gridbag.setConstraints(component, c); container.add(component); } public static void main(String[] args) { DemoPanel demoPanel = new DemoPanel(); demoPanel.addDemo(new ImageViewerDemo()); demoPanel.setTitle("JImageViewer Demo"); demoPanel.setDefaultCloseOperation(JBean.EXIT_ON_CLOSE); demoPanel.showFrame(); } }