/* February 13, 2000 by Erica Andrews (cylikon@hotmail.com) - Electronic Valentine's Day card */ /* ***************************************************************************** Copyright 2000 by Erica Andrews (cylikon@hotmail.com). All rights reserved. ./ButchWhipAppeal/ ./IcedPinky/ NO portion of this software may be used in ANY way by anyone other than myself without my express written consent. If it is downloaded for testing, it must be deleted from your system within 24 hours. Any other use constitutes piracy and fraudulent misuse of this software, punishable in a court of law. Copyright 2000 by Erica Andrews. All rights reserved. ***************************************************************************** */ import java.net.*; import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; import javax.media.*; import javax.media.Manager; import javax.media.renderer.VideoRenderer; import javax.media.bean.playerbean.*; import java.applet.Applet; import java.applet.AudioClip; import java.applet.AppletContext; import java.awt.image.*; import javax.swing.ImageIcon; import java.awt.Font; public class Vday extends Frame implements WindowListener,ControllerListener { // Instance variables public JTabbedPane jtabbedpane0; public JPanel Welcome; public JPanel Poem; public JPanel Kiss; public JPanel Memories; public JPanel Gift; public JPanel About; Player play; Player movie; Player moviesm; JTextArea box; JPanel blank1; JPanel blank11; JPanel kisspanel; public Icon muoff = new ImageIcon("musicoff.gif"); public Icon muhover = new ImageIcon("musichover.gif"); public JPanel ControlBar; JToggleButton music; JToggleButton exit; public JButton musico = new JButton(muoff); public JButton musich = new JButton(muhover); public final JFrame popup = new JFrame(); public final JFrame popup2 = new JFrame(); public final JButton kissbutton = new JButton("Click Me!"); Component comp2; Component comp1; Component comp3; public final JButton mystery = new JButton("Mystery Button!"); /* *** The Custon Cursor ***** */ ImageIcon cursor = new ImageIcon("cursor.gif"); Image curs = cursor.getImage(); Toolkit tk = getToolkit(); Point click = new Point(21,2); Cursor cur = tk.createCustomCursor(curs, click, "cursor"); public Vday() { try { // Setup GUI addWindowListener (this); setTitle("Happy Valentines Day!"); setLayout(new BorderLayout()); setSize(new Dimension(471,436)); setName("this"); setBounds(new Rectangle(9,7,471,436)); setForeground(new Color(200,84,255)); setBackground(new Color(200,84,255)); Icon ban = new ImageIcon("bandad.gif"); JLabel banner = new JLabel(ban); banner.setMaximumSize(new Dimension(460,63)); banner.setName("banner"); banner.setForeground(new Color(255,255,255)); banner.setBackground(new Color(200,84,255)); banner.setMinimumSize(new Dimension(457,63)); banner.setLayout(null); jtabbedpane0 = new JTabbedPane(); jtabbedpane0.setOpaque(true); jtabbedpane0.setPreferredSize(new Dimension(460,295)); Border jtabbedpane0Border1 = new EtchedBorder(); Border jtabbedpane0Border0 = new TitledBorder(jtabbedpane0Border1,""); jtabbedpane0.setBorder(jtabbedpane0Border0); jtabbedpane0.setName("jtabbedpane0"); jtabbedpane0.setMinimumSize(new Dimension(31,161)); jtabbedpane0.setAutoscrolls(true); jtabbedpane0.setToolTipText("Click A Tab"); jtabbedpane0.setForeground(new Color(255,255,255)); jtabbedpane0.setBackground(new Color(125,125,255)); jtabbedpane0.setFont(new java.awt.Font("serif.italic", 2, 18)); jtabbedpane0.setTabPlacement(1); Welcome = new JPanel(); Border WelcomeBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); Welcome.setBorder(WelcomeBorder0); Welcome.setName("Welcome"); Welcome.setToolTipText("Welcome..."); Welcome.setForeground(new Color(140,229,255)); Welcome.setBackground(new Color(255,255,255)); Welcome.setFont(new java.awt.Font("serif.bold", 1, 14)); Welcome.setVisible(true); Icon heart = new ImageIcon("heartsmd.gif"); jtabbedpane0.addTab("Welcome", heart, Welcome); jtabbedpane0.setEnabledAt(0, true); jtabbedpane0.setForegroundAt(0, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(0, new Color(125,125,255)); jtabbedpane0.setSelectedComponent(Welcome); // --- the tab containing the poem Poem = new JPanel(); Border PoemBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); Poem.setBorder(PoemBorder0); Poem.setName("Poem"); Poem.setToolTipText("A Few Words"); Poem.setForeground(new Color(135,214,255)); Poem.setBackground(new Color(200,200,255)); Poem.setFont(new java.awt.Font("serif.bold", 1, 12)); Poem.setVisible(false); Poem.setLayout(new BorderLayout()); jtabbedpane0.addTab("A Few Words", heart, Poem); jtabbedpane0.setEnabledAt(1, true); jtabbedpane0.setForegroundAt(1, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(1, new Color(125,125,255)); // --- A Gift Gift = new JPanel(); Border GiftBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); Gift.setBorder(GiftBorder0); Gift.setName("Gift"); Gift.setToolTipText("A Gift"); Gift.setForeground(new Color(255,255,255)); Gift.setBackground(new Color(0,0,0)); Gift.setFont(new java.awt.Font("serif.bold", 1, 12)); Gift.setVisible(false); Gift.setLayout(new BorderLayout()); jtabbedpane0.addTab("A Gift For You", heart, Gift); jtabbedpane0.setEnabledAt(2, true); jtabbedpane0.setForegroundAt(2, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(2, new Color(125,125,255)); Icon gft = new ImageIcon("vdaykiss.gif"); JLabel gift = new JLabel(gft); gift.setName("gift"); gift.setForeground(new Color(255,255,255)); gift.setBackground(new Color(0,0,0)); gift.setLayout(null); Icon gftside = new ImageIcon("whiterose.gif"); JLabel rose1 = new JLabel(gftside); rose1.setName("rose1"); rose1.setForeground(new Color(0,0,0)); rose1.setBackground(new Color(255,255,255)); rose1.setLayout(null); JLabel rose2 = new JLabel(gftside); rose2.setName("rose2"); rose2.setForeground(new Color(0,0,0)); rose2.setBackground(new Color(255,255,255)); rose2.setLayout(null); Gift.add("West",rose1); Gift.add("East",rose2); Gift.add("Center",gift); // --- A Kiss Kiss = new JPanel(); Border KissBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); Kiss.setBorder(KissBorder0); Kiss.setName("Kiss"); Kiss.setToolTipText("A Kiss For You"); Kiss.setForeground(new Color(0,0,0)); Kiss.setBackground(new Color(0,200,200)); Kiss.setFont(new java.awt.Font("serif.bold", 1, 12)); Kiss.setVisible(false); Kiss.setLayout(new BorderLayout()); jtabbedpane0.addTab("A Kiss 4 You", heart, Kiss); jtabbedpane0.setEnabledAt(3, true); jtabbedpane0.setForegroundAt(3, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(3, new Color(125,125,255)); kissbutton.setForeground(new Color(0,255,255)); kissbutton.setBackground(new Color(125,125,255)); kissbutton.setFont(new Font("serif.bold",1,30)); kissbutton.setSize(20,40); kissbutton.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { moviestart(); dopopup(); } public void mouseEntered(MouseEvent e) { kissbutton.setBackground(new Color(0,255,255)); kissbutton.setForeground(new Color(0,0,0)); } public void mouseExited(MouseEvent e) { kissbutton.setForeground(new Color(0,255,255)); kissbutton.setBackground(new Color(125,125,255)); } } ); kisspanel = new JPanel(); kisspanel.setBackground(new Color(0,200,200)); kisspanel.setLayout(null); blank11 = new JPanel(); blank11.setBackground(new Color(0,200,200)); blank11.setSize(40,40); JPanel blank12 = new JPanel(); blank12.setBackground(new Color(0,200,200)); blank12.setSize(40,40); JPanel blank13 = new JPanel(); blank13.setBackground(new Color(0,200,200)); blank13.setSize(40,40); JPanel blank14 = new JPanel(); blank14.setBackground(new Color(0,200,200)); blank14.setSize(40,40); kisspanel.add(kissbutton); kissbutton.setBounds(new Rectangle(95,45,225,105)); Kiss.add("Center", kisspanel); Kiss.add("West", blank11); Kiss.add("North",blank12); Kiss.add("South", blank13); Kiss.add("East", blank14); // --- Memories Memories = new JPanel(); Border MemoriesBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); Memories.setBorder(MemoriesBorder0); Memories.setName("Memories"); Memories.setToolTipText("Memories"); Memories.setForeground(new Color(0,0,0)); Memories.setBackground(new Color(180,0,0)); Memories.setFont(new java.awt.Font("serif.bold", 1, 12)); Memories.setVisible(false); Memories.setLayout(new BorderLayout()); jtabbedpane0.addTab("Memories", heart, Memories); jtabbedpane0.setEnabledAt(4, true); jtabbedpane0.setForegroundAt(4, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(4, new Color(125,125,255)); Icon mem = new ImageIcon("dadmem.gif"); JLabel memory1 = new JLabel(mem); memory1.setName("memory1"); memory1.setForeground(new Color(255,255,255)); memory1.setBackground(new Color(180,0,0)); memory1.setLayout(null); Icon mem2 = new ImageIcon("kelly2.GIF"); JLabel memory2 = new JLabel(mem2); memory2.setName("memory2"); memory2.setForeground(new Color(255,255,255)); memory2.setBackground(new Color(0,0,0)); memory2.setLayout(null); Memories.add("West",memory1); Memories.add("East",memory2); // --- About About = new JPanel(); Border AboutBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); About.setBorder(AboutBorder0); About.setName("About"); About.setToolTipText("About This Card"); About.setForeground(new Color(0,0,0)); About.setBackground(new Color(255,255,255)); About.setFont(new java.awt.Font("serif.bold", 1, 12)); About.setVisible(false); About.setLayout(new BorderLayout()); jtabbedpane0.addTab("About This Card", heart, About); jtabbedpane0.setEnabledAt(5, true); jtabbedpane0.setForegroundAt(5, new Color(255,255,255)); jtabbedpane0.setBackgroundAt(5, new Color(125,125,255)); Icon abt = new ImageIcon("about.gif"); JLabel about = new JLabel(abt); about.setName("about"); about.setForeground(new Color(0,0,0)); about.setBackground(new Color(255,255,255)); about.setLayout(null); About.add("Center",about); /* ***** Control Panel ******* */ ControlBar = new JPanel(); Border ContBorder0 = new BevelBorder(1, new Color(180,0,180), new Color(255,70,255)); ControlBar.setBorder(ContBorder0); ControlBar.setToolTipText("Control Panel"); ControlBar.setForeground(new Color(135,214,255)); ControlBar.setBackground(new Color(200,84,255)); ControlBar.setFont(new java.awt.Font("serif.bold", 1, 12)); ControlBar.setLayout(new BorderLayout()); add("North",banner); add("Center",jtabbedpane0); add("South",ControlBar); mystery.setBackground(new Color(200,0,200)); mystery.setForeground(new Color(255,255,255)); mystery.setFont(new Font("serif.bold",1,18)); mystery.setSize(40,40); mystery.setToolTipText("Take a chance. Come on, live a little."); ControlBar.add("Center",mystery); mystery.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { moviesmallstart(); dopopup2(); } public void mouseEntered(MouseEvent e) { mystery.setBackground(new Color(255,0,0)); } public void mouseExited(MouseEvent e) { mystery.setBackground(new Color(200,0,200)); } } ); /* START */ Welcome.setLayout(new BorderLayout()); Icon vdaypic = new ImageIcon("vday.gif"); JButton vpic = new JButton(vdaypic); vpic.setBackground(new Color(255,255,255)); Welcome.add("Center", vpic); /* *********** */ box = new JTextArea(" Hey Dad, I decided to try something new this year besides\n the standard Valentine's day stuff. Hope you\n like it - I worked real hard on it. When I was little,\n you always told me that there is knowledge in\n books. You told me that I could master any skill if I just\n read everything I can get my hands on. You were right.\n Hopefully, everything I've been teaching myself will\n help me pay for law school. God knows I'm struggling\n to reach my goals. Anyway, Dad, I love you and thanks\n for teaching me how to teach myself.",6,6); box.setBackground(new Color(200,200,255)); box.setLineWrap(true); box.setEditable(false); blank1 = new JPanel(); blank1.setBackground(new Color(200,200,255)); blank1.setLayout(new BorderLayout()); JPanel blank2 = new JPanel(); blank2.setBackground(new Color(200,200,255)); blank2.setSize(40,40); JPanel blank3 = new JPanel(); blank3.setBackground(new Color(200,200,255)); blank3.setSize(40,40); JPanel blank4 = new JPanel(); blank4.setBackground(new Color(200,200,255)); blank4.setSize(40,40); Poem.add("Center",box); Poem.add("West", blank1); Poem.add("North",blank2); Poem.add("South", blank3); Poem.add("East", blank4); // --- Handling Multimedia (1 Midi and 2 AVIs) with the Java Media Framework URL u = new URL("file://C|/JDK13/bin/BEST4LST2.mid"); play = Manager.createPlayer(u); play.addControllerListener(this); URL u2 = new URL("file://C|/JDK13/bin/flycupid.avi"); movie = Manager.createPlayer(u2); movie.addControllerListener(this); URL u3 = new URL("file://C|/JDK13/bin/kishug.avi"); moviesm = Manager.createPlayer(u3); moviesm.addControllerListener(this); // Creating a control panel on the bottom of the Frame (an Exit button & a sound on/off button) Icon mus = new ImageIcon("musicon.gif"); music = new JToggleButton(mus); music.setRolloverIcon(muhover); music.setPressedIcon(mus); music.setSelectedIcon(muoff); music.setRolloverEnabled(true); music.setBackground(new Color(255,255,255)); music.setSize(80,80); music.setToolTipText("Turn The Music On/Off"); ControlBar.add("East",music); Icon ex = new ImageIcon("exit1.jpg"); exit = new JToggleButton(ex); exit.setRolloverIcon(new ImageIcon("exithover.jpg")); exit.setSelectedIcon(new ImageIcon("exit3.jpg")); exit.setPressedIcon(new ImageIcon("exit2.jpg")); exit.setRolloverEnabled(true); exit.setBackground(new Color(255,255,255)); exit.setSize(80,80); exit.setToolTipText("Close The Card"); ControlBar.add("West",exit); exit.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { leave(); } public void mouseEntered(MouseEvent e) { exit.setBackground(new Color(0,255,255)); } public void mouseExited(MouseEvent e) { exit.setBackground(new Color(255,255,255)); } } ); music.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { music.setBackground(new Color(0,255,255)); } public void mouseExited(MouseEvent e) { music.setBackground(new Color(255,255,255)); } public void mousePressed(MouseEvent e) { music.setBackground(new Color(0,0,0)); } public void mouseClicked(MouseEvent e) { music.setBackground(new Color(0,0,0)); } public void mouseReleased(MouseEvent e) { music.setBackground(new Color(0,0,0)); if (play.getState() == 600 || play.getState() == 500) {stop(); } else start(); } } ); /* END */ // **** Setting the Custom Cursor **** setCursor(cur); setResizable(false); UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); resize (456,449); pack(); show(); } catch (NoPlayerException np) {System.out.print(np+np.getMessage()); } catch (Exception s) { System.out.print(s+s.getMessage()); s.printStackTrace(); } } // ---end of GUI method public void hover() { if (play.getState() == 600 || play.getState() == 500) { music.setIcon(muhover); } } public void leave() { if (play.getState() == 600 || play.getState() == 500) {stop(); } // --stopping the player this.hide (); this.dispose (); System.exit(0); } //**** WindowListener methods public void windowActivated ( WindowEvent e ) { } public void windowDeactivated ( WindowEvent e ) { } public void windowOpened ( WindowEvent e ) { this.resize(468,499); start(); } public void windowClosed ( WindowEvent e ) { } public void windowIconified ( WindowEvent e ) { } public void windowDeiconified ( WindowEvent e ) { } public void windowClosing ( WindowEvent e ) { if (play.getState() == 600 || play.getState() == 500) {stop(); } // -- stopping the player this.hide (); this.dispose (); System.exit(0); } /* ********* Sound Test ******************* */ // Mouse Listener Methods public void mouseClicked ( MouseEvent e ) { } public void mousePressed ( MouseEvent e ) { } public void mouseReleased ( MouseEvent e ) { start(); } public void mouseEntered ( MouseEvent e ) { } public void mouseExited ( MouseEvent e ) { } /* ************************** */ public void start() { play.start(); } public void moviestart() { movie.start(); } public void moviesmallstart() { moviesm.start(); } public void stop() { play.stop(); play.deallocate(); } public void moviestop() { if (movie.getState() == 600 || movie.getState() == 500) { movie.stop(); movie.deallocate(); } // -- stopping the player } public void moviesmallstop() { if (moviesm.getState() == 600 || movie.getState() == 500) { moviesm.stop(); moviesm.deallocate(); } } public void destroy() { play.close(); } public void moviedestroy() { movie.close(); } public void moviesmalldestroy() { moviesm.close(); } public synchronized void controllerUpdate(ControllerEvent event) { if (event instanceof RealizeCompleteEvent) { // ---- handling BEST4LST2.mid realized events if (event.getSource() == play) { if ((comp2 = play.getVisualComponent()) != null) About.add ("North", comp2); if ((comp2 = play.getControlPanelComponent()) != null) About.add ("South", comp2); } // ---- handling flycupid.avi realized events if (event.getSource() == movie) { dopopup(); movie.setRate(0.5f); } // ---- handling kishug.avi realized events if (event.getSource() == moviesm) { dopopup2(); moviesm.setRate(0.125f); } validate(); } // --- looping if (event instanceof EndOfMediaEvent) { // We've reached the end of the media; rewind and // start over if (event.getSource() == play) { // BEST4LST2.mid play.setMediaTime(new Time(0)); play.start(); } if (event.getSource() == movie) { // flycupid.avi movie.setMediaTime(new Time(0)); movie.start(); } if (event.getSource() == moviesm) { // kishug.avi moviesm.setMediaTime(new Time(0)); moviesm.start(); } } } // - end of synchronized media event handler methods /* ************************* THE ANIMATION Method for flycupid.avi *********************** */ public void dopopup () { popup.setTitle("V-Day Kiss"); popup.setSize(230,156); popup.resize(230,156); popup.setBackground(new Color(120,120,255)); popup.setResizable(false); if ((comp1 = movie.getVisualComponent()) != null) { popup.getContentPane().add("Center", comp1); } // **** Setting the Custom Cursor **** popup.setCursor(cur); popup.setLocation(150,200); popup.show(); // Window Opening/Closing handlers popup.addWindowListener(new WindowAdapter() { public void windowOpened ( WindowEvent e ) { popup.resize(230,156); } public void windowClosing ( WindowEvent e ) { moviestop(); popup.hide (); popup.dispose (); } } ); } // end of popup window GUI creation for flycupid.avi /* ************************* THE ANIMATION Method for kishug.avi *********************** */ public void dopopup2 () { popup2.setTitle("Surprise!"); popup2.setSize(100,130); popup2.resize(100,130); popup2.setBackground(new Color(120,120,255)); popup2.setResizable(false); if ((comp3 = moviesm.getVisualComponent()) != null) { popup2.getContentPane().add("Center", comp3); } // **** Setting the Custom Cursor **** popup2.setCursor(cur); popup2.setLocation(150,200); popup2.show(); // Window Opening/Closing handlers popup.addWindowListener(new WindowAdapter() { public void windowOpened ( WindowEvent e ) { popup2.resize(100,130); } public void windowClosing ( WindowEvent e ) { moviesmallstop(); popup2.hide (); popup2.dispose (); } } ); } // end of popup window GUI creation for flycupid.avi /* **************** MAIN BELOW **************** */ public static void main (String args []) { new Vday(); } }